source:
issm/oecreview/Archive/25834-26739/ISSM-26554-26555.diff@
26740
Last change on this file since 26740 was 26740, checked in by , 3 years ago | |
---|---|
File size: 41.5 KB |
-
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
20 20 //#define FSANALYTICAL 10 21 21 //#define LATERALFRICTION 1 22 22 //#define DISCSLOPE 1 //testing for SSA 23 #define NOSPCSHEARVEL 1 //MLHO24 23 25 24 /*Model processing*/ 26 25 void StressbalanceAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/ … … 195 194 } 196 195 } 197 196 else{//MLHO 198 #ifdef NOSPCSHEARVEL 199 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0); 200 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,2); 201 #else 202 /*Default: apply spcs to shear vx and shear vy*/ 203 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0); 204 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,1); 205 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,2); 206 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,3); 207 #endif 197 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_base",StressbalanceAnalysisEnum,finiteelement,0); 198 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_shear",StressbalanceAnalysisEnum,finiteelement,1); 199 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_base",StressbalanceAnalysisEnum,finiteelement,2); 200 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_shear",StressbalanceAnalysisEnum,finiteelement,3); 208 201 } 209 202 } 210 203 -
../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.m
1 function md=SetMLHOBC(md) 2 %SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear 3 % 4 % Usage: 5 % md=SetMLHOBC(md) 6 % 7 8 9 %node on Dirichlet 10 if md.flowequation.isMLHO 11 md.stressbalance.spcvx_base=md.stressbalance.spcvx; 12 md.stressbalance.spcvy_base=md.stressbalance.spcvy; 13 14 md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base)); 15 md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base)); 16 end -
../trunk-jpl/src/m/classes/flowequation.m
61 61 if isfield(objstruct,'borderstokes'), self.borderFS = objstruct.borderstokes; end; 62 62 end 63 63 64 %Oct 8 2020 65 %Warning if MLHO 64 %Nov 6 2021 66 65 if any(self.vertex_equation==4) 67 warning(['Monolayer Higher-Order (MLHO) detected in md.flowequation, this is probably a mistake, you need to run setflowequation again']);66 disp(['Monolayer Higher-Order (MLHO) detected in md.flowequation, this is still under development. Please double check your settings.']); 68 67 end 69 68 70 69 end% }}} -
../trunk-jpl/src/m/classes/stressbalance.m
7 7 properties (SetAccess=public) 8 8 spcvx = NaN; 9 9 spcvy = NaN; 10 spcvx_base = NaN; 11 spcvy_base = NaN; 12 spcvx_shear = NaN; 13 spcvy_shear = NaN; 10 14 spcvz = NaN; 11 15 restol = 0; 12 16 reltol = 0; … … 31 35 self.referential=project3d(md,'vector',self.referential,'type','node'); 32 36 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node'); 33 37 38 % for MLHO 39 if md.flowequation.isMLHO 40 self.spcvx_base=project3d(md,'vector',self.spcvx_base,'type','node'); 41 self.spcvy_base=project3d(md,'vector',self.spcvy_base,'type','node'); 42 self.spcvx_shear=project3d(md,'vector',self.spcvx_shear,'type','poly','degree',4); 43 self.spcvy_shear=project3d(md,'vector',self.spcvy_shear,'type','poly','degree',4); 44 end 34 45 end % }}} 35 46 function self = stressbalance(varargin) % {{{ 36 47 switch nargin … … 122 133 end 123 134 md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0); 124 135 end 136 % CHECK THIS ONLY WORKS FOR MLHO 137 if md.flowequation.isMLHO 138 md = checkfield(md,'fieldname','stressbalance.spcvx_base','Inf',1,'timeseries',1); 139 md = checkfield(md,'fieldname','stressbalance.spcvy_base','Inf',1,'timeseries',1); 140 md = checkfield(md,'fieldname','stressbalance.spcvx_shear','Inf',1,'timeseries',1); 141 md = checkfield(md,'fieldname','stressbalance.spcvy_shear','Inf',1,'timeseries',1); 142 end 125 143 end % }}} 126 144 function list=defaultoutputs(self,md) % {{{ 127 145 … … 150 168 fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'); 151 169 fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'); 152 170 171 disp(sprintf('\n %s','MLHO boundary conditions:')); 172 fielddisplay(self,'spcvx_base','x-axis basal velocity constraint (NaN means no constraint) [m/yr]'); 173 fielddisplay(self,'spcvy_base','y-axis basal velocity constraint (NaN means no constraint) [m/yr]'); 174 fielddisplay(self,'spcvx_shear','x-axis shear velocity constraint (NaN means no constraint) [m/yr]'); 175 fielddisplay(self,'spcvy_shear','y-axis shear velocity constraint (NaN means no constraint) [m/yr]'); 176 153 177 disp(sprintf('\n %s','Rift options:')); 154 178 fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'); 155 179 fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'); … … 201 225 outputs = [outputs defaultoutputs(self,md)]; %add defaults 202 226 end 203 227 WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray'); 228 % for MLHO 229 if (md.flowequation.isMLHO) 230 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 231 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 232 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_shear','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 233 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy_shear','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 234 end 204 235 end % }}} 205 236 function savemodeljs(self,fid,modelname) % {{{ 206 237 … … 222 253 writejs2Darray(fid,[modelname '.stressbalance.loadingforce'],self.loadingforce); 223 254 writejscellstring(fid,[modelname '.stressbalance.requested_outputs'],self.requested_outputs); 224 255 256 writejs1Darray(fid,[modelname '.stressbalance.spcvx_base'],self.spcvx_shear); 257 writejs1Darray(fid,[modelname '.stressbalance.spcvy_base'],self.spcvy_shear); 258 writejs1Darray(fid,[modelname '.stressbalance.spcvx_shear'],self.spcvx_shear); 259 writejs1Darray(fid,[modelname '.stressbalance.spcvy_shear'],self.spcvy_shear); 225 260 end % }}} 226 261 end 227 262 end -
../trunk-jpl/src/m/classes/stressbalance.py
19 19 def __init__(self): # {{{ 20 20 self.spcvx = np.nan 21 21 self.spcvy = np.nan 22 self.spcvx_base = np.nan 23 self.spcvy_base = np.nan 24 self.spcvx_shear = np.nan 25 self.spcvy_shear = np.nan 22 26 self.spcvz = np.nan 23 27 self.restol = 0 24 28 self.reltol = 0 … … 54 58 s += '{}\n'.format(fielddisplay(self, 'spcvy', 'y-axis velocity constraint (NaN means no constraint) [m / yr]')) 55 59 s += '{}\n'.format(fielddisplay(self, 'spcvz', 'z-axis velocity constraint (NaN means no constraint) [m / yr]')) 56 60 s += '{}\n'.format(fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice')) 61 s += ' MLHO boundary conditions:\n' 62 s += '{}\n'.format(fielddisplay(self, 'spcvx_base', 'x-axis basal velocity constraint (NaN means no constraint) [m / yr]')) 63 s += '{}\n'.format(fielddisplay(self, 'spcvy_base', 'y-axis basal velocity constraint (NaN means no constraint) [m / yr]')) 64 s += '{}\n'.format(fielddisplay(self, 'spcvx_shear', 'x-axis shear velocity constraint (NaN means no constraint) [m / yr]')) 65 s += '{}\n'.format(fielddisplay(self, 'spcvy_shear', 'y-axis shear velocity constraint (NaN means no constraint) [m / yr]')) 57 66 s += ' Rift options:\n' 58 67 s += '{}\n'.format(fielddisplay(self, 'rift_penalty_threshold', 'threshold for instability of mechanical constraints')) 59 68 s += '{}\n'.format(fielddisplay(self, 'rift_penalty_lock', 'number of iterations before rift penalties are locked')) … … 76 85 self.referential = project3d(md, 'vector', self.referential, 'type', 'node') 77 86 self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node') 78 87 88 if md.flowequation.isMLHO: 89 self.spcvx_base = project3d(md, 'vector', self.spcvx_base, 'type', 'node') 90 self.spcvy_base = project3d(md, 'vector', self.spcvy_base, 'type', 'node') 91 self.spcvx_shear = project3d(md, 'vector', self.spcvx_shear, 'type', 'poly', 'degree', 4) 92 self.spcvy_shear = project3d(md, 'vector', self.spcvy_shear, 'type', 'poly', 'degree', 4) 93 79 94 return self 80 95 # }}} 81 96 … … 160 175 pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase)) 161 176 if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))): 162 177 md.checkmessage("no referential should be specified for basal vertices of grounded ice") 178 if md.flowequation.isMLHO: 179 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_base', 'Inf', 1, 'timeseries', 1) 180 md = checkfield(md, 'fieldname', 'stressbalance.spcvy_base', 'Inf', 1, 'timeseries', 1) 181 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_shear', 'Inf', 1, 'timeseries', 1) 182 md = checkfield(md, 'fieldname', 'stressbalance.spcvy_shear', 'Inf', 1, 'timeseries', 1) 163 183 return md 164 184 # }}} 165 185 … … 194 214 outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:] 195 215 outputs = outputscopy 196 216 WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray') 217 # MLHO 218 if md.flowequation.isMLHO: 219 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 220 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 221 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 222 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 197 223 # }}} -
../trunk-jpl/src/m/extrusion/project3d.m
6 6 % element vector of size (md.mesh.numberofelements2d,N/A). 7 7 % arguments: 8 8 % 'vector': 2d vector 9 % 'type': 'element' or 'node' .9 % 'type': 'element' or 'node' or 'poly' 10 10 % options: 11 11 % 'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 12 12 % value of the 2d vector. 13 13 % 'padding': default to 0 (value adopted by other 3d layers not being projected0 14 % 'degree': degree of polynomials when extrude from bottom to the top 14 15 % 15 16 % Egs: 16 17 % extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN); … … 32 33 type = getfieldvalue(options,'type'); %mandatory 33 34 layer = getfieldvalue(options,'layer',0); %optional (do all layers otherwise) 34 35 paddingvalue = getfieldvalue(options,'padding',0); %0 by default 36 polyexponent = getfieldvalue(options,'degree',0); %0 by default, 0-degree polynomial 35 37 36 38 if length(vector2d)==1, 37 39 projected_vector=vector2d; … … 79 81 projected_vector( ((layer-1)*md.mesh.numberofelements2d+1):(layer*md.mesh.numberofelements2d),:)=vector2d; 80 82 end 81 83 84 elseif strcmpi(type,'poly'), % interpolate values from 0 to 1 with a polynomial degree n 85 %Initialize 3d vector 86 if size(vector2d,1)==md.mesh.numberofvertices2d 87 projected_vector=paddingvalue*ones(md.mesh.numberofvertices, size(vector2d,2)); 88 elseif size(vector2d,1)==md.mesh.numberofvertices2d+1 89 projected_vector=paddingvalue*ones(md.mesh.numberofvertices+1,size(vector2d,2)); 90 projected_vector(end,:)=vector2d(end,:); 91 vector2d=vector2d(1:end-1,:); 92 else 93 error('vector length not supported') 94 end 95 96 polycoeff = [0:1./(md.mesh.numberoflayers-1):1]; 97 98 %Fill in 99 if layer==0, 100 for i=1:md.mesh.numberoflayers, 101 projected_vector(((i-1)*md.mesh.numberofvertices2d+1):(i*md.mesh.numberofvertices2d),:)=vector2d*(1-(1-polycoeff(i)).^polyexponent); 102 end 103 else 104 projected_vector(((layer-1)*md.mesh.numberofvertices2d+1):(layer*md.mesh.numberofvertices2d),:)=vector2d*(1-(1-polycoeff(layer)).^polyexponent); 105 end 106 82 107 else 83 108 error('project3d error message: unknown projection type'); 84 109 end -
../trunk-jpl/test/NightlyRun/test127.m
17 17 massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),... 18 18 massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')... 19 19 }; 20 20 md=SetMLHOBC(md); 21 21 md=solve(md,'Stressbalance'); 22 22 23 23 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test128.m
6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.transient.requested_outputs={'IceVolume','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'}; 8 8 9 md=SetMLHOBC(md); 9 10 md=solve(md,'Transient'); 10 11 11 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test128.py
15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.transient.requested_outputs = ['IceVolume','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'] 17 17 18 md = SetMLHOBC(md); 18 19 md = solve(md, 'Transient') 19 20 20 21 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test129.m
13 13 md.timestepping.final_time=19; 14 14 md.settings.output_frequency=2; 15 15 16 md=SetMLHOBC(md); 16 17 md=solve(md,'Transient'); 17 18 md2=solve(md,'Transient','restart',1); 18 19 -
../trunk-jpl/test/NightlyRun/test129.py
22 22 # time steps and resolution 23 23 md.timestepping.final_time = 19 24 24 md.settings.output_frequency = 2 25 md = SetMLHOBC(md); 25 26 26 27 md = solve(md, 'Transient') 27 28 md2 = copy.deepcopy(md) -
../trunk-jpl/test/NightlyRun/test248.m
5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'}; 8 md=SetMLHOBC(md); 8 9 md=solve(md,'Stressbalance'); 9 10 10 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test248.py
15 15 md = setflowequation(md, 'MLHO', 'all') 16 16 md.cluster = generic('name', gethostname(), 'np', 3) 17 17 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] 18 md = SetMLHOBC(md); 18 19 md = solve(md, 'Stressbalance') 19 20 20 21 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test249.m
6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'}; 8 8 md.basalforcings.floatingice_melting_rate(:)=1; 9 md=SetMLHOBC(md); 9 10 md=solve(md,'Transient'); 10 11 11 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test249.py
16 16 md = setflowequation(md, 'MLHO', 'all') 17 17 md.cluster = generic('name', gethostname(), 'np', 3) 18 18 md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb'] 19 md = SetMLHOBC(md); 19 20 md = solve(md, 'Transient') 20 21 21 22 -
../trunk-jpl/test/NightlyRun/test254.m
57 57 md.mask.ice_levelset=-1+nodeonicefront; 58 58 59 59 md.stressbalance.requested_outputs={'default','VySurface','VyShear','VyBase'}; 60 md=SetMLHOBC(md); 60 61 md=solve(md,'Stressbalance'); 61 62 62 63 %create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292. -
../trunk-jpl/test/NightlyRun/test254.py
69 69 md.mask.ice_levelset = -1 + nodeonicefront 70 70 71 71 md.stressbalance.requested_outputs = ['default', 'VySurface', 'VyShear', 'VyBase'] 72 md = SetMLHOBC(md); 72 73 md = solve(md, 'Stressbalance') 73 74 74 75 # create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292. -
../trunk-jpl/test/NightlyRun/test255.m
5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.masstransport.hydrostatic_adjustment='Incremental'; 8 md=SetMLHOBC(md); 8 9 md=solve(md,'Transient'); 9 10 10 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test255.py
14 14 md = setflowequation(md, 'MLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.masstransport.hydrostatic_adjustment = 'Incremental' 17 md = SetMLHOBC(md); 17 18 md = solve(md, 'Transient') 18 19 19 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test256.m
6 6 md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.; 7 7 md.cluster=generic('name',oshostname(),'np',1); 8 8 md.masstransport.hydrostatic_adjustment='Incremental'; 9 md=SetMLHOBC(md); 9 10 md=solve(md,'Transient'); 10 11 11 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test256.py
16 16 md.geometry.surface = md.geometry.surface + 50. 17 17 md.cluster = generic('name', gethostname(), 'np', 1) 18 18 md.masstransport.hydrostatic_adjustment = 'Incremental' 19 md = SetMLHOBC(md); 19 20 md = solve(md, 'Transient') 20 21 21 22 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test330.m
5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'}; 8 md=SetMLHOBC(md); 8 9 md=solve(md,'Stressbalance'); 9 10 10 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test330.py
14 14 md = setflowequation(md, 'MLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] 17 md = SetMLHOBC(md); 17 18 md = solve(md, 'Stressbalance') 18 19 19 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test332.m
4 4 md=parameterize(md,'../Par/SquareSheetConstrained.par'); 5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 md=SetMLHOBC(md); 7 8 md=solve(md,'Transient'); 8 9 9 10 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test332.py
13 13 md = parameterize(md, '../Par/SquareSheetConstrained.py') 14 14 md = setflowequation(md, 'MLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 md = SetMLHOBC(md); 16 17 md = solve(md, 'Transient') 17 18 18 19 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test333.m
18 18 md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy; 19 19 20 20 md.cluster=generic('name',oshostname(),'np',3); 21 md=SetMLHOBC(md); 21 22 md=solve(md,'Stressbalance'); 22 23 23 24 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test333.py
31 31 md.inversion.vy_obs = md.initialization.vy 32 32 33 33 md.cluster = generic('name', gethostname(), 'np', 3) 34 md = SetMLHOBC(md); 34 35 md = solve(md, 'Stressbalance') 35 36 36 37 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test334.m
19 19 md.verbose.control=true; 20 20 21 21 md.cluster=generic('name',oshostname(),'np',3); 22 md=SetMLHOBC(md); 22 23 md=solve(md,'Stressbalance'); 23 24 24 25 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test334.py
31 31 32 32 33 33 md.cluster = generic('name', gethostname(), 'np', 3) 34 md = SetMLHOBC(md); 34 35 md = solve(md, 'Stressbalance') 35 36 36 37 -
../trunk-jpl/test/NightlyRun/test335.m
6 6 md = extrude(md, 5, 1); 7 7 md.cluster=generic('name',oshostname(),'np',3); 8 8 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'}; 9 md=SetMLHOBC(md); 9 10 md=solve(md,'Stressbalance'); 10 11 11 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test335.py
12 12 md = setmask(md, '', '') 13 13 md = parameterize(md, '../Par/SquareSheetConstrained.py') 14 14 md = setflowequation(md, 'MLHO', 'all') 15 md = SetMLHOBC(md); 15 16 md.extrude(5, 1.) 16 17 md.cluster = generic('name', gethostname(), 'np', 3) 17 18 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] -
../trunk-jpl/test/NightlyRun/test446.m
5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'}; 8 md=SetMLHOBC(md); 8 9 md=solve(md,'Stressbalance'); 9 10 10 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test446.py
14 14 md = setflowequation(md, 'MLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] 17 md = SetMLHOBC(md); 17 18 md = solve(md, 'Stressbalance') 18 19 19 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test447.m
15 15 md=setflowequation(md,'MLHO','all'); 16 16 md.cluster=generic('name',oshostname(),'np',3); 17 17 md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'}; 18 md=SetMLHOBC(md); 18 19 md=solve(md,'Transient'); 19 20 20 21 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test447.py
26 26 md = setflowequation(md, 'MLHO', 'all') 27 27 md.cluster = generic('name', gethostname(), 'np', 3) 28 28 md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb'] 29 md = SetMLHOBC(md); 29 30 md = solve(md, 'Transient') 30 31 31 32 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test448.m
24 24 md.transient.isstressbalance=1; 25 25 md.transient.isgroundingline=1; 26 26 27 md=SetMLHOBC(md); 27 28 %test different grounding line dynamics. 28 29 md.groundingline.migration='AggressiveMigration'; 29 30 md=solve(md,'Transient'); -
../trunk-jpl/test/NightlyRun/test448.py
37 37 38 38 #test different grounding line dynamics. 39 39 md.groundingline.migration = 'AggressiveMigration' 40 md = SetMLHOBC(md); 40 41 md = solve(md, 'Transient') 41 42 element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset 42 43 vel_agressive = md.results.TransientSolution[0].Vel -
../trunk-jpl/test/NightlyRun/test449.m
44 44 md.timestepping.time_step=10; 45 45 46 46 md.cluster=generic('name',oshostname(),'np',3); 47 md=SetMLHOBC(md); 47 48 md=solve(md,'Transient'); 48 49 49 50 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test449.py
55 55 md.timestepping.time_step = 10 56 56 57 57 md.cluster = generic('name', gethostname(), 'np', 3) 58 md = SetMLHOBC(md); 58 59 md = solve(md, 'Transient') 59 60 #print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate 60 61 #print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate -
../trunk-jpl/test/NightlyRun/test518.m
5 5 md=setflowequation(md,'MLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'}; 8 md=SetMLHOBC(md); 8 9 md=solve(md,'Stressbalance'); 9 10 10 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test518.py
14 14 md = setflowequation(md, 'MLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] 17 md = SetMLHOBC(md); 17 18 md = solve(md, 'Stressbalance') 18 19 19 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test519.m
8 8 [md.mesh.lat,md.mesh.long] = xy2ll(md.mesh.x,md.mesh.y,-1); 9 9 md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1); 10 10 md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','GroundedArea','GroundedAreaScaled','FloatingArea','FloatingAreaScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled'}; 11 md=SetMLHOBC(md); 11 12 md=solve(md,'Transient'); 12 13 13 14 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test519.py
15 15 md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices)) 16 16 md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled'] 17 17 md.cluster = generic('name', gethostname(), 'np', 3) 18 md = SetMLHOBC(md); 18 19 md = solve(md, 'Transient') 19 20 20 21 # Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test810.m
14 14 md.transient.isthermal=0; 15 15 md.transient.isgroundingline=1; 16 16 17 md=SetMLHOBC(md); 17 18 md=solve(md,'Transient'); 18 19 19 20 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test810.py
21 21 md.transient.issmb = True 22 22 md.transient.isthermal = False 23 23 md.transient.isgroundingline = True 24 md = SetMLHOBC(md); 24 25 25 26 md = solve(md, 'Transient') 26 27 -
../trunk-jpl/test/NightlyRun/test811.m
17 17 md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1); 18 18 md.levelset.migration_max = 1e10; 19 19 20 md=SetMLHOBC(md); 20 21 md=solve(md,'Transient'); 21 22 22 23 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test811.py
27 27 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices)) 28 28 md.levelset.migration_max = 1e10 29 29 30 md = SetMLHOBC(md); 30 31 md = solve(md, 'Transient') 31 32 32 33 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test812.m
34 34 35 35 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'}; 36 36 37 md=SetMLHOBC(md); 37 38 md=solve(md,'Transient'); 38 39 39 40 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test812.py
43 43 44 44 md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate'] 45 45 46 md = SetMLHOBC(md); 46 47 md = solve(md, 'Transient') 47 48 48 49 #Fields and tolerances to track changes -
../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py
1 import os 2 import MatlabFuncs as m 3 4 5 def SetMLHOBC(md): 6 """ 7 SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear 8 9 Usage: 10 md = SetIceShelfBC(md, varargin) 11 12 Example: 13 md = SetIceShelfBC(md) 14 15 """ 16 17 #node on Dirichlet (boundary and ~icefront) 18 md.stressbalance.spcvx_base = md.stressbalance.spcvx 19 md.stressbalance.spcvy_base = md.stressbalance.spcvy 20 md.stressbalance.spcvx_shear = float('nan') * md.stressbalance.spcvx 21 md.stressbalance.spcvy_shear = float('nan') * md.stressbalance.spcvy -
../trunk-jpl/src/m/extrusion/project3d.py
14 14 15 15 arguments: 16 16 'vector': 2d vector 17 'type': 'element' or 'node' 17 'type': 'element' or 'node' or 'poly' 18 18 19 19 options: 20 20 'layer' a layer number where vector should keep its values. If … … 22 22 vector. 23 23 'padding': default to 0 (value adopted by other 3d layers not 24 24 being projected. 25 'degree': degree of polynomials when extrude from bottom to the top 25 26 26 27 Examples: 27 28 extruded_vector = project3d(md, 'vector', vector2d, 'type', 'node', 'layer', 1, 'padding', NaN) … … 41 42 vectype = options.getfieldvalue('type') #mandatory 42 43 layer = options.getfieldvalue('layer', 0) #optional (do all layers otherwise) 43 44 paddingvalue = options.getfieldvalue('padding', 0) #0 by default 45 polyexponent = options.getfieldvalue('degree', 0) #0 by default, 0-degree polynomial 44 46 45 47 #Handle special case where vector2d is single element (differs from representation in MATLAB) 46 48 if isinstance(vector2d, (bool, int, float)): … … 114 116 projected_vector[(i * md.mesh.numberofelements2d):((i + 1) * md.mesh.numberofelements2d), :] = vector2d 115 117 else: 116 118 projected_vector[((layer - 1) * md.mesh.numberofelements2d):(layer * md.mesh.numberofelements2d), :] = vector2d 119 elif vectype.lower() == 'poly': 120 #Initialize 3d vector 121 if np.ndim(vector2d) == 1: 122 if vector2d.shape[0] == md.mesh.numberofelements2d: 123 projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements))).astype(vector2d.dtype) 124 elif vector2d.shape[0] == md.mesh.numberofelements2d + 1: 125 projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1))).astype(vector2d.dtype) 126 projected_vector[-1] = vector2d[-1] 127 vector2d = vector2d[:-1] 128 else: 129 raise TypeError("vector length not supported") 130 #Fill in 131 if layer == 0: 132 for i in range(md.mesh.numberoflayers - 1): 133 projected_vector[(i * md.mesh.numberofelements2d):((i + 1) * md.mesh.numberofelements2d)] = vector2d*(1.0-(1.0-i/(md.mesh.numberoflayers - 1.0))**polyexponent) 134 else: 135 projected_vector[((layer - 1) * md.mesh.numberofelements2d):(layer * md.mesh.numberofelements2d)] = vector2d*(1.0-(1.0-layer/(md.mesh.numberoflayers - 1.0))**polyexponent) 136 else: 137 if vector2d.shape[0] == md.mesh.numberofelements2d: 138 projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements, np.size(vector2d, axis=1)))).astype(vector2d.dtype) 139 elif vector2d.shape[0] == md.mesh.numberofelements2d + 1: 140 projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype) 141 projected_vector[-1, :] = vector2d[-1, :] 142 vector2d = vector2d[:-1, :] 143 else: 144 raise TypeError("vector length not supported") 145 #Fill in 146 if layer == 0: 147 for i in range(md.mesh.numberoflayers - 1): 148 projected_vector[(i * md.mesh.numberofelements2d):((i + 1) * md.mesh.numberofelements2d), :] = vector2d*(1.0-(1.0-i/(md.mesh.numberoflayers - 1.0))**polyexponent) 149 else: 117 150 118 151 else: 119 152 raise TypeError("project3d error message: unknown projection type") -
../trunk-jpl/test/NightlyRun/test127.py
24 24 massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'), 25 25 massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'), 26 26 massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')] 27 27 md = SetMLHOBC(md); 28 28 md = solve(md, 'Stressbalance') 29 29 30 30 #Fields and tolerances to track changes
Note:
See TracBrowser
for help on using the repository browser.