Changeset 25166


Ignore:
Timestamp:
06/26/20 20:45:42 (5 years ago)
Author:
jdquinn
Message:

CHG: Saving MATLAB -> Python changes; still hunting for implementation bug

Location:
issm/trunk-jpl
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.m

    r25158 r25166  
    1006210062        if strcmpi(frame,'CM'),
    1006310063                return;
    10064         elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR 
     10064        elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR
    1006510065                if strcmpi(type,'loadingverticaldisplacement'),
    1006610066                        series(2,1) = -0.269;
  • issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py

    r25161 r25166  
    1006910069    elif frame == 'CF': #from Blewitt, 2003, JGR
    1007010070        if type == 'loadingverticaldisplacement':
    10071             series[1, 0] = -0.269
     10071            series[0] = -0.269
    1007210072        elif type == 'loadinggravitationalpotential':
    10073             series[1, 0] = 0.021
     10073            series[0] = 0.021
    1007410074        elif type == 'loadinghorizontaldisplacement':
    10075             series[1, 0] = 0.134
     10075            series[0] = 0.134
    1007610076    else:
    1007710077        raise Exception("love_numbers error message: unknown reference frame: {}".format(frame))
  • issm/trunk-jpl/src/m/classes/lovenumbers.py

    r25158 r25166  
    6161
    6262        #check that love numbers are provided at the same level of accuracy:
    63         if (size(self.h, 0) != size(self.k, 0) | size(self.h, 0) != size(self.l, 0)):
     63        if (self.h.shape[0] != self.k.shape[0]) or (self.h.shape[0] != self.l.shape[0]):
    6464            raise ValueError('lovenumbers error message: love numbers should be provided at the same level of accuracy')
    6565    #}}}
  • issm/trunk-jpl/src/m/classes/solidearthsettings.py

    r25158 r25166  
    6767            return md
    6868
    69         md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1, 1])
    70         md = checkfield(md, 'fieldname', 'solidearth.settings.abstol', 'size', [1, 1])
    71         md = checkfield(md, 'fieldname', 'solidearth.settings.maxiter', 'size', [1, 1], '>=', 1)
    72         md = checkfield(md, 'fieldname', 'solidearth.settings.runfrequency', 'size', [1, 1], '>=', 1)
    73         md = checkfield(md, 'fieldname', 'solidearth.settings.degacc', 'size', [1, 1], '>=', 1e-10)
     69        md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1])
     70        md = checkfield(md, 'fieldname', 'solidearth.settings.abstol', 'size', [1])
     71        md = checkfield(md, 'fieldname', 'solidearth.settings.maxiter', 'size', [1], '>=', 1)
     72        md = checkfield(md, 'fieldname', 'solidearth.settings.runfrequency', 'size', [1], '>=', 1)
     73        md = checkfield(md, 'fieldname', 'solidearth.settings.degacc', 'size', [1], '>=', 1e-10)
    7474        md = checkfield(md, 'fieldname', 'solidearth.settings.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
    7575
  • issm/trunk-jpl/test/NightlyRun/test2002.m

    r25161 r25166  
    55md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
    66
    7 %parameterize slr solution:
    8 %slr loading:  {{{
     7%parameterize solidearth solution:
     8%solidearth loading:  {{{
    99md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1);
    1010md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
     
    7070
    7171%eustatic + rigid run:
    72 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0;
     72md.solidearth.settings.rigid=1;
     73md.solidearth.settings.elastic=0;
     74md.solidearth.settings.rotation=0;
    7375md=solve(md,'Sealevelrise');
    7476Srigid=md.results.SealevelriseSolution.Sealevel;
    7577
    7678%eustatic + rigid + elastic run:
    77 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=0;
     79md.solidearth.settings.rigid=1;
     80md.solidearth.settings.elastic=1;
     81md.solidearth.settings.rotation=0;
    7882md=solve(md,'Sealevelrise');
    7983Selastic=md.results.SealevelriseSolution.Sealevel;
    8084
    8185%eustatic + rigid + elastic + rotation run:
    82 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1;
     86md.solidearth.settings.rigid=1;
     87md.solidearth.settings.elastic=1;
     88md.solidearth.settings.rotation=1;
    8389md=solve(md,'Sealevelrise');
    8490Srotation=md.results.SealevelriseSolution.Sealevel;
    8591
    8692%Fields and tolerances to track changes
    87 field_names     ={'Eustatic','Rigid','Elastic','Rotation'};
     93field_names={'Eustatic','Rigid','Elastic','Rotation'};
    8894field_tolerances={1e-13,1e-13,1e-13,1e-13};
    8995field_values={Seustatic,Srigid,Selastic,Srotation};
  • issm/trunk-jpl/test/NightlyRun/test2002.py

    r25159 r25166  
    1 #Test Name: EarthSolidearth
     1#Test Name: EarthSlr
    22import numpy as np
    33
     
    1414#mesh earth:
    1515md = model()
    16 md.mesh = gmshplanet('radius', 6.371012e3, 'resolution', 700.) #500 km resolution mesh
     16md.mesh = gmshplanet('radius', 6.371012 * 1e3, 'resolution', 700.) #700 km resolution mesh
    1717
    1818#parameterize solidearth solution:
    1919#solidearth loading:
    20 md.solidearth.surfaceload.icethicknesschange = np.zeros(md.mesh.numberofelements)
    21 md.solidearth.sealevel = np.zeros(md.mesh.numberofvertices)
     20md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, 1))
     21md.solidearth.sealevel = np.zeros((md.mesh.numberofvertices, 1))
    2222md.dsl.global_average_thermosteric_sea_level_change = np.zeros((1, 1))
    23 md.dsl.sea_surface_height_change_above_geoid = np.zeros(md.mesh.numberofvertices + 1)
    24 md.dsl.sea_water_pressure_change_at_sea_floor = np.zeros(md.mesh.numberofvertices + 1)
     23md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1))
     24md.dsl.sea_water_pressure_change_at_sea_floor = np.zeros((md.mesh.numberofvertices + 1, 1))
    2525
    2626#antarctica
     
    2929pos = np.where(late < -80)[0]
    3030md.solidearth.surfaceload.icethicknesschange[pos] = -100
    31 
    3231#greenland
    3332pos = np.where(np.logical_and.reduce((late > 70, late < 80, longe > -60, longe < -30)))[0]
     
    3635#elastic loading from love numbers:
    3736md.solidearth.lovenumbers = lovenumbers('maxdeg', 100)
     37#}}}
    3838
    39 #mask:
     39#mask:  {{{
    4040mask = gmtmask(md.mesh.lat, md.mesh.long)
    41 icemask = np.ones((md.mesh.numberofvertices))
     41icemask = np.ones(md.mesh.numberofvertices)
    4242pos = np.where(mask == 0)[0]
    4343icemask[pos] = -1
    44 pos = np.where(np.sum(mask[md.mesh.elements.astype(int) - 1], axis=1) < 3)[0]
    45 icemask[md.mesh.elements[pos, :].astype(int) - 1] = -1
     44pos = np.where(np.sum(mask[md.mesh.elements - 1], axis=1) < 3)
     45icemask[md.mesh.elements[pos, :] - 1] = -1
    4646md.mask.ice_levelset = icemask
    4747md.mask.ocean_levelset = -icemask
     
    5151md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices))
    5252
    53 #make sure that the elements that have loads are fully grounded:
     53#make sure that the elements that have loads are fully grounded
    5454pos = np.nonzero(md.solidearth.surfaceload.icethicknesschange)[0]
    5555md.mask.ocean_levelset[md.mesh.elements[pos, :] - 1] = 1
     
    5858#pos = np.nonzero(md.solidearth.surfaceload.icethicknesschange)[0] # Do we need to do this twice?
    5959md.mask.ice_levelset[md.mesh.elements[pos, :] - 1] = 1
     60# }}}
    6061
    6162md.solidearth.settings.ocean_area_scaling = 0
    6263
    6364#geometry for the bed, arbitrary
    64 md.geometry.bed = -np.ones(md.mesh.numberofvertices)
     65md.geometry.bed = -np.ones((md.mesh.numberofvertices, 1))
    6566
    6667#materials
  • issm/trunk-jpl/test/NightlyRun/test2003.m

    r25161 r25166  
    7676%eustatic + rigid + elastic + rotation run:
    7777md.solidearth.settings.rigid=1;
    78 md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1;
     78md.solidearth.settings.elastic=1;
     79md.solidearth.settings.rotation=1;
    7980md.cluster=generic('name',oshostname(),'np',3);
    8081%md.verbose=verbose('111111111');
  • issm/trunk-jpl/test/NightlyRun/test2003.py

    r25161 r25166  
    1 #Test Name: EarthSolidearth_rotationalFeedback
     1#Test Name: EarthSlr_rotationalFeedback
    22import numpy as np
    33
  • issm/trunk-jpl/test/NightlyRun/test2101.m

    r25147 r25166  
    88% define load
    99md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
    10 pos=450;    md.esa.deltathickness(pos)=-100;   % this is the only "icy" element
     10pos=450;
     11md.esa.deltathickness(pos)=-100;   % this is the only "icy" element
    1112
    1213%love numbers:
     
    1415
    1516%mask:  {{{
    16         md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long);
     17md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long);
    1718
    18         %make sure wherever there is an ice load, that the mask is set to ice:
    19         md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
    20         pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
     19%make sure wherever there is an ice load, that the mask is set to ice:
     20md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
     21pos=find(md.esa.deltathickness);
     22md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
    2123
    22         %is ice grounded?
    23         md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
    24         pos=find(md.mask.ice_levelset<=0); md.mask.ocean_levelset(pos)=1;
     24%is ice grounded?
     25md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
     26pos=find(md.mask.ice_levelset<=0);
     27md.mask.ocean_levelset(pos)=1;
    2528
    2629% }}}
    2730%geometry:  {{{
    28         di=md.materials.rho_ice/md.materials.rho_water;
    29         md.geometry.thickness=ones(md.mesh.numberofvertices,1);
    30         md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
    31         md.geometry.base=md.geometry.surface-md.geometry.thickness;
    32         md.geometry.bed=md.geometry.base;
     31di=md.materials.rho_ice/md.materials.rho_water;
     32md.geometry.thickness=ones(md.mesh.numberofvertices,1);
     33md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
     34md.geometry.base=md.geometry.surface-md.geometry.thickness;
     35md.geometry.bed=md.geometry.base;
    3336% }}}
    3437%materials:  {{{
    35         md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
    36         md.materials.rheology_B=paterson(md.initialization.temperature);
    37         md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
     38md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
     39md.materials.rheology_B=paterson(md.initialization.temperature);
     40md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
    3841% }}}
    3942%Miscellaneous: {{{
    40         md.miscellaneous.name='test2101';
     43md.miscellaneous.name='test2101';
    4144% }}}
    4245
Note: See TracChangeset for help on using the changeset viewer.