Changeset 25688 for issm/trunk-jpl/src/m/classes/lovenumbers.py
- Timestamp:
- 10/19/20 13:31:26 (4 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src
-
issm/trunk-jpl/src/m/classes/lovenumbers.py
r25183 r25688 9 9 10 10 class lovenumbers(object): #{{{ 11 ''' 12 LOVENUMBERS numbers class definition 11 """LOVENUMBERS class definition 13 12 14 15 16 17 '''13 Usage: 14 lovenumbers = lovenumbers() #will setup love numbers deg 1001 by default 15 lovenumbers = lovenumbers('maxdeg', 10001); #supply numbers of degrees required (here, 10001) 16 """ 18 17 19 18 def __init__(self, *args): #{{{ 20 # regular love numbers:21 self.h = [] # provided by PREM model22 self.k = [] # idem23 self.l = [] # idem19 # Regular love numbers 20 self.h = [] # Provided by PREM model 21 self.k = [] # idem 22 self.l = [] # idem 24 23 25 # tidal love numbers for computing rotational feedback:24 # Tidal love numbers for computing rotational feedback 26 25 self.th = [] 27 26 self.tk = [] 28 27 self.tl = [] 29 self.tk2secular = 0 # deg 2 secular number.28 self.tk2secular = 0 # deg 2 secular number 30 29 31 30 options = pairoptions(*args) … … 36 35 37 36 def setdefaultparameters(self, maxdeg, referenceframe): #{{{ 38 # initialize love numbers:37 # Initialize love numbers 39 38 self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg) 40 39 self.k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg) … … 44 43 self.tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg) 45 44 46 # secular fluid love number:45 # Secular fluid love number 47 46 self.tk2secular = 0.942 47 return self 48 48 #}}} 49 49 50 50 def checkconsistency(self, md, solution, analyses): #{{{ 51 if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and md.transient.isslr == 0):51 if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr): 52 52 return 53 54 53 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.h', 'NaN', 1, 'Inf', 1) 55 54 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.k', 'NaN', 1, 'Inf', 1) … … 59 58 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk', 'NaN', 1, 'Inf', 1) 60 59 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk2secular', 'NaN', 1, 'Inf', 1) 61 62 #check that love numbers are provided at the same level of accuracy: 60 # Check that love numbers are provided at the same level of accuracy 63 61 if (self.h.shape[0] != self.k.shape[0]) or (self.h.shape[0] != self.l.shape[0]): 64 62 raise ValueError('lovenumbers error message: love numbers should be provided at the same level of accuracy') 63 return md 65 64 #}}} 66 65 … … 70 69 71 70 def __repr__(self): #{{{ 72 s = ' lovenumbers parameters:' 73 71 s = ' lovenumbers parameters:\n' 74 72 s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement')) 75 73 s += '{}\n'.format(fielddisplay(self, 'k', 'load Love number for gravitational potential perturbation')) … … 78 76 s += '{}\n'.format(fielddisplay(self, 'tk', 'tidal load Love number (deg 2)')) 79 77 s += '{}\n'.format(fielddisplay(self, 'tk2secular', 'secular fluid Love number')) 80 81 78 return s 82 79 #}}}
Note:
See TracChangeset
for help on using the changeset viewer.