##----------------------------------------------------------------------------
## Name: RotaryBldgResonance.py
##
## Purpose: Compute resonant coupling of the lab at specific drive frequencies
##
##
## Depends on Python SciPy and NumPy
##
## Author: J Park
##
## Created: 5/3/08
##
## Modified:
##----------------------------------------------------------------------------
import sys, getopt, time, glob
Version = sys.argv[0]+" : "+str( time.asctime( ( time.gmtime(time.time()) ) ) )
DEBUG = False
try:
from numpy import * # www.numpy.org numpy.scipy.org
except ImportError:
print "Failed to import numpy."
try:
import pylab as mp # matplotlib.sourceforge.net
except ImportError:
print "Failed to import pylab."
# Global variables
# Default Parameters
f_x = 9.4 # Hz
f_y = 18.7 # Hz
f1 = 2
f2 = 30
df = 0.5
PlotAll = False # -p
WriteOutput = False # -o
##----------------------------------------------------------------------------
## Main module
def main():
print Version
ParseCmdLine()
f = arange( f1,f2,df )
wx = (f/f_x - f_x/f)
ax = 1/sqrt( pow(wx , 2) )
wy = (f/f_y - f_y/f)
ay = 1/sqrt( pow(wy , 2) )
if DEBUG:
print ax
print ay
r1 = 1./sqrt( pow(12/f_x - f_x/12, 2) )
r2 = 1./sqrt( pow(12/f_y - f_y/12, 2) )
r3 = 1./sqrt( pow(16/f_x - f_x/16, 2) )
r4 = 1./sqrt( pow(16/f_y - f_y/16, 2) )
print 'f=12Hz,fx=9.4Hz:',r1,'f=12Hz,fy=18.7Hz:',r2
print 'f=16Hz,fx=9.4Hz:',r3,'f=16Hz,fy=18.7Hz:',r4
# Setup Plots
# ----------------------------------------------------------------------
#mp.figure(1)
mp.subplot(2,1,1)
mp.title ( "" )
mp.ylabel( "" )
mp.xlabel( "Frequency (Hz)" )
#legendFont = FontProperties(size='small')
mp.plot( f, ax )
mp.subplot(2,1,2)
mp.plot( f, ay )
#mp.legend( loc='lower left', prop=legendFont )
# Show the Plot
# ----------------------------------------------------------------------
mp.show()
print "Normal Exit"
## Main module
##----------------------------------------------------------------------------
##----------------------------------------------------------------------------
def usage():
print "Usage: ", sys.argv[0]
print "\t -h (help)"
print "\t -d (debug)"
print "\t -p (PlotAll)"
print "\t -o writeOutput"
##----------------------------------------------------------------------------
def ParseCmdLine():
##
global PlotAll
global WriteOutput
global DEBUG
try:
## Parse the command line arguments in sys.argv via getopt()
opts, args = getopt.getopt(sys.argv[1:], "hdpo")
except getopt.GetoptError, error:
print "ParseCmdLine(): GetoptError: ",error
return
if len(opts) == 0:
usage()
return
argCount = 0
for optElement in opts:
argCount = argCount + 1
if optElement[0] == "-h":
usage()
sys.exit(1)
if optElement[0] == "-d":
DEBUG = True
if DEBUG:
print "opts element %d:" % (argCount), optElement
if optElement[0] == "-o":
WriteOutput = True
if optElement[0] == "-p":
PlotAll = True
if DEBUG:
print "-p", PlotAll
print "-o", WriteOutput
return
##----------------------------------------------------------------------------
def OpenFile(file, mode):
try:
# open() will raise an IOError exception if it fails
print "Opening file:", file
fd = open(file,mode)
except IOError, error:
print "OpenFile(): I/O error:", error
sys.exit("OpenFile()")
except OSError, error:
print "OpenFile(): OS error:", error
sys.exit("OpenFile()")
except:
print "OpenFile(): Unexpected error:", sys.exc_info()[0]
raise
sys.exit("OpenFile()")
else: # executed after the try if no exceptions
return fd
##----------------------------------------------------------------------------
## Provide for cmd line invocation
if __name__ == "__main__":
main()