Changeset 25166
- Timestamp:
- 06/26/20 20:45:42 (5 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.m
r25158 r25166 10062 10062 if strcmpi(frame,'CM'), 10063 10063 return; 10064 elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR 10064 elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR 10065 10065 if strcmpi(type,'loadingverticaldisplacement'), 10066 10066 series(2,1) = -0.269; -
issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py
r25161 r25166 10069 10069 elif frame == 'CF': #from Blewitt, 2003, JGR 10070 10070 if type == 'loadingverticaldisplacement': 10071 series[ 1,0] = -0.26910071 series[0] = -0.269 10072 10072 elif type == 'loadinggravitationalpotential': 10073 series[ 1,0] = 0.02110073 series[0] = 0.021 10074 10074 elif type == 'loadinghorizontaldisplacement': 10075 series[ 1,0] = 0.13410075 series[0] = 0.134 10076 10076 else: 10077 10077 raise Exception("love_numbers error message: unknown reference frame: {}".format(frame)) -
issm/trunk-jpl/src/m/classes/lovenumbers.py
r25158 r25166 61 61 62 62 #check that love numbers are provided at the same level of accuracy: 63 if (s ize(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]): 64 64 raise ValueError('lovenumbers error message: love numbers should be provided at the same level of accuracy') 65 65 #}}} -
issm/trunk-jpl/src/m/classes/solidearthsettings.py
r25158 r25166 67 67 return md 68 68 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) 74 74 md = checkfield(md, 'fieldname', 'solidearth.settings.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1]) 75 75 -
issm/trunk-jpl/test/NightlyRun/test2002.m
r25161 r25166 5 5 md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh 6 6 7 %parameterize s lrsolution:8 %s lrloading: {{{7 %parameterize solidearth solution: 8 %solidearth loading: {{{ 9 9 md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1); 10 10 md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1); … … 70 70 71 71 %eustatic + rigid run: 72 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0; 72 md.solidearth.settings.rigid=1; 73 md.solidearth.settings.elastic=0; 74 md.solidearth.settings.rotation=0; 73 75 md=solve(md,'Sealevelrise'); 74 76 Srigid=md.results.SealevelriseSolution.Sealevel; 75 77 76 78 %eustatic + rigid + elastic run: 77 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=0; 79 md.solidearth.settings.rigid=1; 80 md.solidearth.settings.elastic=1; 81 md.solidearth.settings.rotation=0; 78 82 md=solve(md,'Sealevelrise'); 79 83 Selastic=md.results.SealevelriseSolution.Sealevel; 80 84 81 85 %eustatic + rigid + elastic + rotation run: 82 md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1; 86 md.solidearth.settings.rigid=1; 87 md.solidearth.settings.elastic=1; 88 md.solidearth.settings.rotation=1; 83 89 md=solve(md,'Sealevelrise'); 84 90 Srotation=md.results.SealevelriseSolution.Sealevel; 85 91 86 92 %Fields and tolerances to track changes 87 field_names 93 field_names={'Eustatic','Rigid','Elastic','Rotation'}; 88 94 field_tolerances={1e-13,1e-13,1e-13,1e-13}; 89 95 field_values={Seustatic,Srigid,Selastic,Srotation}; -
issm/trunk-jpl/test/NightlyRun/test2002.py
r25159 r25166 1 #Test Name: EarthS olidearth1 #Test Name: EarthSlr 2 2 import numpy as np 3 3 … … 14 14 #mesh earth: 15 15 md = model() 16 md.mesh = gmshplanet('radius', 6.371012 e3, 'resolution', 700.) #500 km resolution mesh16 md.mesh = gmshplanet('radius', 6.371012 * 1e3, 'resolution', 700.) #700 km resolution mesh 17 17 18 18 #parameterize solidearth solution: 19 19 #solidearth loading: 20 md.solidearth.surfaceload.icethicknesschange = np.zeros( md.mesh.numberofelements)21 md.solidearth.sealevel = np.zeros( md.mesh.numberofvertices)20 md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, 1)) 21 md.solidearth.sealevel = np.zeros((md.mesh.numberofvertices, 1)) 22 22 md.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)23 md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1)) 24 md.dsl.sea_water_pressure_change_at_sea_floor = np.zeros((md.mesh.numberofvertices + 1, 1)) 25 25 26 26 #antarctica … … 29 29 pos = np.where(late < -80)[0] 30 30 md.solidearth.surfaceload.icethicknesschange[pos] = -100 31 32 31 #greenland 33 32 pos = np.where(np.logical_and.reduce((late > 70, late < 80, longe > -60, longe < -30)))[0] … … 36 35 #elastic loading from love numbers: 37 36 md.solidearth.lovenumbers = lovenumbers('maxdeg', 100) 37 #}}} 38 38 39 #mask: 39 #mask: {{{ 40 40 mask = gmtmask(md.mesh.lat, md.mesh.long) 41 icemask = np.ones( (md.mesh.numberofvertices))41 icemask = np.ones(md.mesh.numberofvertices) 42 42 pos = np.where(mask == 0)[0] 43 43 icemask[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] = -144 pos = np.where(np.sum(mask[md.mesh.elements - 1], axis=1) < 3) 45 icemask[md.mesh.elements[pos, :] - 1] = -1 46 46 md.mask.ice_levelset = icemask 47 47 md.mask.ocean_levelset = -icemask … … 51 51 md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices)) 52 52 53 #make sure that the elements that have loads are fully grounded :53 #make sure that the elements that have loads are fully grounded 54 54 pos = np.nonzero(md.solidearth.surfaceload.icethicknesschange)[0] 55 55 md.mask.ocean_levelset[md.mesh.elements[pos, :] - 1] = 1 … … 58 58 #pos = np.nonzero(md.solidearth.surfaceload.icethicknesschange)[0] # Do we need to do this twice? 59 59 md.mask.ice_levelset[md.mesh.elements[pos, :] - 1] = 1 60 # }}} 60 61 61 62 md.solidearth.settings.ocean_area_scaling = 0 62 63 63 64 #geometry for the bed, arbitrary 64 md.geometry.bed = -np.ones( md.mesh.numberofvertices)65 md.geometry.bed = -np.ones((md.mesh.numberofvertices, 1)) 65 66 66 67 #materials -
issm/trunk-jpl/test/NightlyRun/test2003.m
r25161 r25166 76 76 %eustatic + rigid + elastic + rotation run: 77 77 md.solidearth.settings.rigid=1; 78 md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1; 78 md.solidearth.settings.elastic=1; 79 md.solidearth.settings.rotation=1; 79 80 md.cluster=generic('name',oshostname(),'np',3); 80 81 %md.verbose=verbose('111111111'); -
issm/trunk-jpl/test/NightlyRun/test2003.py
r25161 r25166 1 #Test Name: EarthS olidearth_rotationalFeedback1 #Test Name: EarthSlr_rotationalFeedback 2 2 import numpy as np 3 3 -
issm/trunk-jpl/test/NightlyRun/test2101.m
r25147 r25166 8 8 % define load 9 9 md.esa.deltathickness=zeros(md.mesh.numberofelements,1); 10 pos=450; md.esa.deltathickness(pos)=-100; % this is the only "icy" element 10 pos=450; 11 md.esa.deltathickness(pos)=-100; % this is the only "icy" element 11 12 12 13 %love numbers: … … 14 15 15 16 %mask: {{{ 16 17 md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long); 17 18 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: 20 md.mask.ice_levelset=ones(md.mesh.numberofvertices,1); 21 pos=find(md.esa.deltathickness); 22 md.mask.ice_levelset(md.mesh.elements(pos,:))=-1; 21 23 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? 25 md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1); 26 pos=find(md.mask.ice_levelset<=0); 27 md.mask.ocean_levelset(pos)=1; 25 28 26 29 % }}} 27 30 %geometry: {{{ 28 29 30 31 32 31 di=md.materials.rho_ice/md.materials.rho_water; 32 md.geometry.thickness=ones(md.mesh.numberofvertices,1); 33 md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1); 34 md.geometry.base=md.geometry.surface-md.geometry.thickness; 35 md.geometry.bed=md.geometry.base; 33 36 % }}} 34 37 %materials: {{{ 35 36 37 38 md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1); 39 md.materials.rheology_B=paterson(md.initialization.temperature); 40 md.materials.rheology_n=3*ones(md.mesh.numberofelements,1); 38 41 % }}} 39 42 %Miscellaneous: {{{ 40 43 md.miscellaneous.name='test2101'; 41 44 % }}} 42 45
Note:
See TracChangeset
for help on using the changeset viewer.