Changeset 23088
- Timestamp:
- 08/11/18 13:06:28 (7 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/m/classes/slr.py ¶
r23038 r23088 11 11 12 12 Usage: 13 slr=slr() ;13 slr=slr() 14 14 """ 15 15 … … 17 17 self.deltathickness = float('NaN') 18 18 self.sealevel = float('NaN') 19 self.spcthickness = float('NaN') 19 20 self.maxiter = 0 20 21 self.reltol = 0 … … 23 24 self.love_k = 0 #ideam 24 25 self.love_l = 0 #ideam 25 self.tide_love_ h = 026 self.tide_love_ k = 026 self.tide_love_k = 0 #ideam 27 self.tide_love_h = 0 #ideam 27 28 self.fluid_love = 0 28 29 self.equatorial_moi = 0 … … 51 52 string="%s\n%s"%(string,fielddisplay(self,'deltathickness','thickness change: ice height equivalent [m]')) 52 53 string="%s\n%s"%(string,fielddisplay(self,'sealevel','current sea level (prior to computation) [m]')) 54 string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]')) 53 55 string="%s\n%s"%(string,fielddisplay(self,'reltol','sea level rise relative convergence criterion, (NaN: not applied)')) 54 56 string="%s\n%s"%(string,fielddisplay(self,'abstol','sea level rise absolute convergence criterion, (default, NaN: not applied)')) … … 62 64 string="%s\n%s"%(string,fielddisplay(self,'equatorial_moi','mean equatorial moment of inertia [kg m^2]')) 63 65 string="%s\n%s"%(string,fielddisplay(self,'polar_moi','polar moment of inertia [kg m^2]')) 64 string="%s\n%s"%(string,fielddisplay(self,'angular_velocity','mean rotational velocity of earth [per second]')) ;66 string="%s\n%s"%(string,fielddisplay(self,'angular_velocity','mean rotational velocity of earth [per second]')) 65 67 string="%s\n%s"%(string,fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]')) 66 68 string="%s\n%s"%(string,fielddisplay(self,'steric_rate','rate of steric ocean expansion [mm/yr]')) … … 82 84 83 85 #Convergence criterion: absolute, relative and residual 84 self.reltol= float('NaN')#default85 self.abstol= 0.001#1 mm of sea level rise86 self.reltol=0.01 #default 87 self.abstol=float('NaN') #1 mm of sea level rise 86 88 87 89 #maximum of non-linear iterations. 88 90 self.maxiter=5 89 self.loop_increment=200 ;91 self.loop_increment=200 90 92 91 93 #computational flags: … … 93 95 self.rigid=1 94 96 self.elastic=1 95 self.rotation=096 97 self.ocean_area_scaling=0 98 self.rotation=1 97 99 98 100 #tidal love numbers: 99 self.tide_love_h=0.6149 ;#degree 2100 self.tide_love_k=0.3055 ;#degree 2101 self.tide_love_h=0.6149 #degree 2 102 self.tide_love_k=0.3055 #degree 2 101 103 102 104 #secular fluid love number: 103 self.fluid_love=0.942 ;105 self.fluid_love=0.942 104 106 105 107 #moment of inertia: 106 self.equatorial_moi=8.0077*10**37 ;# [kg m^2]107 self.polar_moi =8.0345*10**37 ;# [kg m^2]108 self.equatorial_moi=8.0077*10**37 # [kg m^2] 109 self.polar_moi =8.0345*10**37 # [kg m^2] 108 110 109 111 #mean rotational velocity of earth 110 self.angular_velocity=7.2921*10**-5 ;# [s^-1]112 self.angular_velocity=7.2921*10**-5 # [s^-1] 111 113 112 114 #numerical discretization accuracy … … 114 116 115 117 #steric: 116 self.steric_rate=0 ;118 self.steric_rate=0 117 119 118 120 #how many time steps we skip before we run SLR solver during transient 119 self.geodetic_run_frequency=1 ;121 self.geodetic_run_frequency=1 120 122 121 123 #output default: … … 125 127 self.transitions=[] 126 128 127 #default output 128 self.requested_outputs=['default'] 129 #horizontal displacement? (not by default) 130 self.horiz=0 131 129 132 return self 130 133 #}}} … … 137 140 md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements]) 138 141 md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices]) 142 md = checkfield(md,'fieldname','slr.spcthickness','Inf',1,'timeseries',1) 139 143 md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1) 140 144 md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1) … … 152 156 md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices]) 153 157 md = checkfield(md,'fieldname','slr.degacc','size',[1,1],'>=',1e-10) 158 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1) 154 159 md = checkfield(md,'fieldname','slr.loop_increment','NaN',1,'Inf',1,'>=',1) 155 160 md = checkfield(md,'fieldname','slr.horiz','NaN',1,'Inf',1,'values',[0,1]) 156 161 md = checkfield(md,'fieldname','slr.Ngia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices]) 157 162 md = checkfield(md,'fieldname','slr.Ugia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices]) 158 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1)159 163 160 164 #check that love numbers are provided at the same level of accuracy: … … 172 176 #a coupler to a planet model is provided. 173 177 if self.geodetic and not md.transient.iscoupler and domaintype(md.mesh)!='mesh3dsurface': 174 178 error('model is requesting geodetic computations without being a mesh3dsurface, or being coupled to one!') 175 179 return md 176 180 # }}} … … 181 185 WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2) 182 186 WriteData(fid,prefix,'object',self,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 187 WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 183 188 WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double') 184 189 WriteData(fid,prefix,'object',self,'fieldname','abstol','format','Double') … … 187 192 WriteData(fid,prefix,'object',self,'fieldname','love_k','format','DoubleMat','mattype',1) 188 193 WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1) 189 WriteData(fid,prefix,'object',self,'fieldname','tide_love_h','format','Double') ;190 WriteData(fid,prefix,'object',self,'fieldname','tide_love_k','format','Double') ;191 WriteData(fid,prefix,'object',self,'fieldname','fluid_love','format','Double') ;192 WriteData(fid,prefix,'object',self,'fieldname','equatorial_moi','format','Double') ;193 WriteData(fid,prefix,'object',self,'fieldname','polar_moi','format','Double') ;194 WriteData(fid,prefix,'object',self,'fieldname','angular_velocity','format','Double') ;194 WriteData(fid,prefix,'object',self,'fieldname','tide_love_h','format','Double') 195 WriteData(fid,prefix,'object',self,'fieldname','tide_love_k','format','Double') 196 WriteData(fid,prefix,'object',self,'fieldname','fluid_love','format','Double') 197 WriteData(fid,prefix,'object',self,'fieldname','equatorial_moi','format','Double') 198 WriteData(fid,prefix,'object',self,'fieldname','polar_moi','format','Double') 199 WriteData(fid,prefix,'object',self,'fieldname','angular_velocity','format','Double') 195 200 WriteData(fid,prefix,'object',self,'fieldname','rigid','format','Boolean') 196 201 WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean') … … 199 204 WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer') 200 205 WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts) 201 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double')202 WriteData(fid,prefix,'object',self,'fieldname','loop_increment','format','Integer');203 WriteData(fid,prefix,'object',self,'fieldname','horiz','format','Integer');204 206 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts) 205 207 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts) 208 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double') 206 209 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray') 210 WriteData(fid,prefix,'object',self,'fieldname','loop_increment','format','Integer') 211 WriteData(fid,prefix,'object',self,'fieldname','horiz','format','Integer') 207 212 WriteData(fid,prefix,'object',self,'fieldname','geodetic','format','Integer') 208 213 -
TabularUnified issm/trunk-jpl/src/m/classes/stressbalance.py ¶
r22576 r23088 185 185 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer') 186 186 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1) 187 188 if isinstance(self.loadingforce, (list, tuple, np.ndarray)): 189 lx=self.loadingforce[:,0]; 190 ly=self.loadingforce[:,1]; 191 lz=self.loadingforce[:,2]; 192 else: 193 lx=float('NaN'); ly=float('NaN'); lz=float('NaN'); 194 195 WriteData(fid,prefix,'data',lx,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex') 196 WriteData(fid,prefix,'data',ly,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey') 197 WriteData(fid,prefix,'data',lz,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez') 187 188 if isinstance(self.loadingforce, (list, tuple, np.ndarray)) and np.size(self.loadingforce,1) == 3: 189 WriteData(fid,prefix,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex') 190 WriteData(fid,prefix,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey') 191 WriteData(fid,prefix,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez') 198 192 199 193 #process requested outputs -
TabularUnified issm/trunk-jpl/test/NightlyRun/test2002.py ¶
r23040 r23088 46 46 icemask[md.mesh.elements[pos,:].astype(int)-1]=-1 47 47 md.mask.ice_levelset=icemask 48 49 48 md.mask.ocean_levelset=np.zeros((md.mesh.numberofvertices)) 50 49 pos=np.where(md.mask.ice_levelset==1) … … 110 109 md.slr.rigid=1 111 110 md.slr.elastic=1 112 md.slr.rotation= 1111 md.slr.rotation=0 113 112 md=solve(md,'Sealevelrise') 114 113 Selastic=md.results.SealevelriseSolution.Sealevel -
TabularUnified issm/trunk-jpl/test/NightlyRun/test2003.py ¶
r23040 r23088 12 12 #mesh earth: 13 13 md = model() 14 md.mesh = gmshplanet('radius',6.371012*1e3,'resolution',1000 ) #500 km resolution mesh14 md.mesh = gmshplanet('radius',6.371012*1e3,'resolution',1000.) #500 km resolution mesh 15 15 16 16 #parameterize slr solution: … … 81 81 md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements,)) 82 82 83 #Miscellaneous 84 md.miscellaneous.name = 'test2003' 85 83 86 #New stuff 84 87 md.slr.spcthickness = np.nan*np.ones((md.mesh.numberofvertices,)); 85 88 md.slr.Ngia = np.zeros((md.mesh.numberofvertices,)) 86 89 md.slr.Ugia = np.zeros((md.mesh.numberofvertices,)) 87 88 #Miscellaneous89 md.miscellaneous.name = 'test2003'90 90 91 91 #Solution parameters -
TabularUnified issm/trunk-jpl/test/NightlyRun/test2010.py ¶
r23040 r23088 99 99 # uncomment following 2 lines for 100 100 md = solve(md,'Sealevelrise') 101 eus = md.results.SealevelriseSolution.Sealevel Eustatic101 eus = md.results.SealevelriseSolution.SealevelRSLEustatic 102 102 slr = md.results.SealevelriseSolution.Sealevel 103 103 moixz = md.results.SealevelriseSolution.SealevelInertiaTensorXZ
Note:
See TracChangeset
for help on using the changeset viewer.