source:
issm/oecreview/Archive/26740-27031/ISSM-26827-26828.diff@
27032
Last change on this file since 27032 was 27032, checked in by , 3 years ago | |
---|---|
File size: 5.9 KB |
-
../trunk-jpl/src/m/classes/lovenumbers.m
15 15 l = []; %idem 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 26 26 timefreq = []; -
../trunk-jpl/src/m/classes/lovenumbers.py
5 5 from pairoptions import pairoptions 6 6 from WriteData import WriteData 7 7 8 9 class lovenumbers(object): #{{{ 8 class lovenumbers(object): 10 9 """LOVENUMBERS class definition 11 10 12 11 Usage: … … 28 27 self.tk = [] 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 33 34 self.timefreq = [] … … 38 39 referenceframe = options.getfieldvalue('referenceframe', 'CM') 39 40 self.setdefaultparameters(maxdeg, referenceframe) 40 41 #}}} 41 42 42 def __repr__(self): #{{{ 43 43 s = ' lovenumbers parameters:\n' 44 44 s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement')) … … 48 48 s += '{}\n'.format(fielddisplay(self, 'tk', 'tidal load Love number (deg 2)')) 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 58 59 self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1) … … 64 65 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 69 75 self.istime = 1 # Temporal love numbers by default … … 70 76 self.timefreq = np.zeros(1) # Elastic case by default 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): 76 81 return … … 82 87 md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk', 'NaN', 1, 'Inf', 1) 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]) 87 94 … … 95 102 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) 105 110 WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1) … … 109 114 WriteData(fid, prefix, 'object', self, 'fieldname', 'tk', 'name', 'md.solidearth.lovenumbers.tk', '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): 114 121 scale = md.constants.yts … … 117 124 WriteData(fid, prefix, 'object', self, 'fieldname', 'istime', 'name', 'md.solidearth.lovenumbers.istime', 'format', 'Boolean') 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 123 129 #}}}
Note:
See TracBrowser
for help on using the repository browser.