Changeset 26828
- Timestamp:
- 01/27/22 17:48:26 (3 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/lovenumbers.m
r26800 r26828 16 16 17 17 %tidal love numbers for computing rotational feedback: 18 th 19 tk 20 tl 21 tk2secular 22 pmtf_colinear 23 pmtf_ortho 18 th = []; 19 tk = []; 20 tl = []; 21 tk2secular = 0; %deg 2 secular number. 22 pmtf_colinear = []; 23 pmtf_ortho = []; 24 24 25 25 %time/frequency for visco-elastic love numbers -
issm/trunk-jpl/src/m/classes/lovenumbers.py
r26358 r26828 6 6 from WriteData import WriteData 7 7 8 9 class lovenumbers(object): #{{{ 8 class lovenumbers(object): 10 9 """LOVENUMBERS class definition 11 10 … … 29 28 self.tl = [] 30 29 self.tk2secular = 0 # deg 2 secular number 30 pmtf_colinear = [] 31 pmtf_ortho = [] 31 32 32 33 # Time/frequency for visco-elastic love numbers … … 39 40 self.setdefaultparameters(maxdeg, referenceframe) 40 41 #}}} 41 42 42 def __repr__(self): #{{{ 43 43 s = ' lovenumbers parameters:\n' … … 49 49 s += '{}\n'.format(fielddisplay(self, 'tl', 'tidal load Love number (deg 2)')) 50 50 s += '{}\n'.format(fielddisplay(self, 'tk2secular', 'secular fluid Love number')) 51 s += '{}\n'.format(fielddisplay(self, 'pmtf_colinear', 'Colinear component of the Polar Motion Transfer Function (e.g. x-motion due to x-component perturbation of the inertia tensor)')) 52 s += '{}\n'.format(fielddisplay(self, 'pmtf_ortho', 'Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)')) 51 53 s += '{}\n'.format(fielddisplay(self, 'istime', 'time (default: 1) or frequency love numbers (0)')) 52 54 s += '{}\n'.format(fielddisplay(self, 'timefreq', 'time/frequency vector (yr or 1/yr)')) 53 55 return s 54 56 #}}} 55 56 57 def setdefaultparameters(self, maxdeg, referenceframe): #{{{ 57 58 # Initialize love numbers … … 65 66 # Secular fluid love number 66 67 self.tk2secular = 0.942 68 self.pmtf_colinear=0.0 69 self.pmtf_ortho=0.0 70 if maxdeg>=2: 71 self.pmtf_colinear= (1.0+self.k[3-1,:])/(1.0-self.tk[3-1,:]/self.tk2secular) #valid only for elastic regime, not viscous. Also neglects chandler wobble 72 self.pmtf_ortho= 0.0 67 73 68 74 # Time … … 71 77 return self 72 78 #}}} 73 74 79 def checkconsistency(self, md, solution, analyses): #{{{ 75 80 if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc): … … 83 88 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tl', 'NaN', 1, 'Inf', 1) 84 89 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk2secular', 'NaN', 1, 'Inf', 1) 90 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.pmtf_colinear', 'NaN', 1, 'Inf', 1) 91 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.pmtf_ortho', 'NaN', 1, 'Inf', 1) 85 92 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.timefreq', 'NaN', 1, 'Inf', 1) 86 93 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.istime', 'NaN', 1, 'Inf', 1, 'values', [0, 1]) … … 96 103 return md 97 104 #}}} 98 99 105 def defaultoutputs(self, md): #{{{ 100 106 return[] 101 107 #}}} 102 103 108 def marshall(self, prefix, md, fid): #{{{ 104 109 WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1) … … 110 115 WriteData(fid, prefix, 'object', self, 'fieldname', 'tl', 'name', 'md.solidearth.lovenumbers.tl', 'format', 'DoubleMat', 'mattype', 1) 111 116 WriteData(fid, prefix, 'object', self, 'data', self.tk2secular, 'fieldname', 'lovenumbers.tk2secular', 'format', 'Double') 117 WriteData(fid, prefix, 'object', self, 'fieldname', 'pmtf_colinear','name','md.solidearth.lovenumbers.pmtf_colinear','format','DoubleMat','mattype',1); 118 WriteData(fid, prefix, 'object', self, 'fieldname', 'pmtf_ortho','name','md.solidearth.lovenumbers.pmtf_ortho','format','DoubleMat','mattype',1); 112 119 113 120 if (self.istime): … … 118 125 WriteData(fid, prefix, 'object', self, 'fieldname', 'timefreq', 'name', 'md.solidearth.lovenumbers.timefreq', 'format', 'DoubleMat', 'mattype', 1, 'scale', scale); 119 126 #}}} 120 121 127 def extrude(self, md): #{{{ 122 128 return
Note:
See TracChangeset
for help on using the changeset viewer.