source: issm/oecreview/Archive/26740-27031/ISSM-26827-26828.diff@ 27032

Last change on this file since 27032 was 27032, checked in by Mathieu Morlighem, 3 years ago

CHG: added 26740-27031

File size: 5.9 KB
  • ../trunk-jpl/src/m/classes/lovenumbers.m

     
    1515                l               = []; %idem
    1616               
    1717                %tidal love numbers for computing rotational feedback:
    18                 th              = [];
    19                 tk              = [];
    20                 tl              = [];
    21                 tk2secular      = 0; %deg 2 secular number.
    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    = [];
    2424
    2525                %time/frequency for visco-elastic love numbers
    2626                timefreq    = [];
  • ../trunk-jpl/src/m/classes/lovenumbers.py

     
    55from pairoptions import pairoptions
    66from WriteData import WriteData
    77
    8 
    9 class lovenumbers(object):  #{{{
     8class lovenumbers(object):
    109    """LOVENUMBERS class definition
    1110
    1211    Usage:
     
    2827        self.tk = []
    2928        self.tl = []
    3029        self.tk2secular = 0  # deg 2 secular number
     30        pmtf_colinear   = []
     31        pmtf_ortho      = []
    3132
    3233        # Time/frequency for visco-elastic love numbers
    3334        self.timefreq = []
     
    3839        referenceframe = options.getfieldvalue('referenceframe', 'CM')
    3940        self.setdefaultparameters(maxdeg, referenceframe)
    4041    #}}}
    41 
    4242    def __repr__(self):  #{{{
    4343        s = '   lovenumbers parameters:\n'
    4444        s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement'))
     
    4848        s += '{}\n'.format(fielddisplay(self, 'tk', 'tidal load Love number (deg 2)'))
    4949        s += '{}\n'.format(fielddisplay(self, 'tl', 'tidal load Love number (deg 2)'))
    5050        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)'))
    5153        s += '{}\n'.format(fielddisplay(self, 'istime', 'time (default: 1) or frequency love numbers (0)'))
    5254        s += '{}\n'.format(fielddisplay(self, 'timefreq', 'time/frequency vector (yr or 1/yr)'))
    5355        return s
    5456    #}}}
    55 
    5657    def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
    5758        # Initialize love numbers
    5859        self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
     
    6465
    6566        # Secular fluid love number
    6667        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
    6773
    6874        # Time
    6975        self.istime = 1 # Temporal love numbers by default
     
    7076        self.timefreq = np.zeros(1) # Elastic case by default
    7177        return self
    7278    #}}}
    73 
    7479    def checkconsistency(self, md, solution, analyses):  #{{{
    7580        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
    7681            return
     
    8287        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk', 'NaN', 1, 'Inf', 1)
    8388        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tl', 'NaN', 1, 'Inf', 1)
    8489        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)
    8592        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.timefreq', 'NaN', 1, 'Inf', 1)
    8693        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.istime', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
    8794
     
    95102
    96103        return md
    97104    #}}}
    98 
    99105    def defaultoutputs(self, md):  #{{{
    100106        return[]
    101107    #}}}
    102 
    103108    def marshall(self, prefix, md, fid):  #{{{
    104109        WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1)
    105110        WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1)
     
    109114        WriteData(fid, prefix, 'object', self, 'fieldname', 'tk', 'name', 'md.solidearth.lovenumbers.tk', 'format', 'DoubleMat', 'mattype', 1)
    110115        WriteData(fid, prefix, 'object', self, 'fieldname', 'tl', 'name', 'md.solidearth.lovenumbers.tl', 'format', 'DoubleMat', 'mattype', 1)
    111116        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);
    112119
    113120        if (self.istime):
    114121            scale = md.constants.yts
     
    117124        WriteData(fid, prefix, 'object', self, 'fieldname', 'istime', 'name', 'md.solidearth.lovenumbers.istime', 'format', 'Boolean')
    118125        WriteData(fid, prefix, 'object', self, 'fieldname', 'timefreq', 'name', 'md.solidearth.lovenumbers.timefreq', 'format', 'DoubleMat', 'mattype', 1, 'scale', scale);
    119126    #}}}
    120 
    121127    def extrude(self, md):  #{{{
    122128        return
    123129#}}}
Note: See TracBrowser for help on using the repository browser.