source:
issm/oecreview/Archive/26740-27031/ISSM-27030-27031.diff@
27032
Last change on this file since 27032 was 27032, checked in by , 3 years ago | |
---|---|
File size: 175.2 KB |
-
../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py
1 import numpy as np2 3 4 def SetMLHOBC(md):5 """6 SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear7 8 Usage:9 md = SetIceShelfBC(md, varargin)10 11 Example:12 md = SetIceShelfBC(md)13 14 """15 16 #node on Dirichlet (boundary and ~icefront)17 md.stressbalance.spcvx_base = md.stressbalance.spcvx18 md.stressbalance.spcvy_base = md.stressbalance.spcvy19 md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx20 md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy21 22 return md -
../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, VyShear3 %4 % Usage:5 % md=SetMLHOBC(md)6 %7 8 9 %node on Dirichlet10 if md.flowequation.isMLHO11 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
8 8 isSIA = 0; 9 9 isSSA = 0; 10 10 isL1L2 = 0; 11 isM LHO = 0;11 isMOLHO = 0; 12 12 isHO = 0; 13 13 isFS = 0; 14 14 isNitscheBC = 0; … … 59 59 if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end; 60 60 if isfield(objstruct,'borderpattyn'), self.borderHO = objstruct.borderpattyn; end; 61 61 if isfield(objstruct,'borderstokes'), self.borderFS = objstruct.borderstokes; end; 62 end63 62 64 %Nov 6 2021 65 if any(self.vertex_equation==4) 66 disp(['Monolayer Higher-Order (MLHO) detected in md.flowequation, this is still under development. Please double check your settings.']); 63 %May 31 2022 64 if isfield(objstruct,'isMLHO') 65 self.isMOLHO = objstruct.isMLHO; 66 end 67 67 end 68 68 69 69 70 end% }}} 70 71 end 71 72 methods … … 103 104 md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0 1]); 104 105 md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0 1]); 105 106 md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0 1]); 106 md = checkfield(md,'fieldname','flowequation.isM LHO','numel',[1],'values',[0 1]);107 md = checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0 1]); 107 108 md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]); 108 109 md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]); 109 110 md = checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0 1]); … … 134 135 else 135 136 error('Case not supported yet'); 136 137 end 137 if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isM LHO || self.isHO || self.isFS),138 if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMOLHO || self.isHO || self.isFS), 138 139 md = checkmessage(md,['no element types set for this model']); 139 140 end 140 141 if ismember('StressbalanceSIAAnalysis',analyses), … … 152 153 fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used?'); 153 154 fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used?'); 154 155 fielddisplay(self,'isL1L2','is the L1L2 approximation used?'); 155 fielddisplay(self,'isM LHO','is the Mono-Layer Higher-Orderapproximation used?');156 fielddisplay(self,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?'); 156 157 fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used?'); 157 158 fielddisplay(self,'isFS','are the Full-FS (FS) equations used?'); 158 159 fielddisplay(self,'isNitscheBC','is weakly imposed condition used?'); … … 171 172 WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean'); 172 173 WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean'); 173 174 WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean'); 174 WriteData(fid,prefix,'object',self,'fieldname','isM LHO','format','Boolean');175 WriteData(fid,prefix,'object',self,'fieldname','isMOLHO','format','Boolean'); 175 176 WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean'); 176 177 WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean'); 177 178 WriteData(fid,prefix,'object',self,'fieldname','isNitscheBC','format','Boolean'); … … 196 197 writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA); 197 198 writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA); 198 199 writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2); 199 writejsdouble(fid,[modelname '.flowequation.isM LHO'],self.isMLHO);200 writejsdouble(fid,[modelname '.flowequation.isMOLHO'],self.isMOLHO); 200 201 writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO); 201 202 writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS); 202 203 writejsstring(fid,[modelname '.flowequation.isNitscheBC'],self.isNitscheBC); -
../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
51 51 return CreateKMatrixHO(element); 52 52 case FSApproximationEnum: 53 53 return CreateKMatrixFS(element); 54 case M LHOApproximationEnum:54 case MOLHOApproximationEnum: 55 55 // a more accurate option, but integrate in the vertical direction numerically. 56 // return CreateKMatrixM LHOVerticalIntergrated(element);57 return CreateKMatrixM LHO(element);56 // return CreateKMatrixMOLHOVerticalIntergrated(element); 57 return CreateKMatrixMOLHO(element); 58 58 case NoneApproximationEnum: 59 59 return NULL; 60 60 default: … … 219 219 xDelete<IssmDouble>(xyz_list); 220 220 return Ke; 221 221 }/*}}}*/ 222 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixM LHO(Element* element){/*{{{*/222 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/ 223 223 224 224 /* Check if ice in element */ 225 225 if(!element->IsIceInElement()) return NULL; … … 291 291 vxshear_input->GetInputValue(&vxshear,gauss); 292 292 vyshear_input->GetInputValue(&vyshear,gauss); 293 293 294 element->material->ViscosityM LHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);294 element->material->ViscosityMOLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input); 295 295 296 296 effmu = 2.0*(1-n)/2.0/n; 297 297 … … 352 352 xDelete<IssmDouble>(basis); 353 353 return Ke; 354 354 }/*}}}*/ 355 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixM LHOVerticalIntergrated(Element* element){/*{{{*/355 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHOVerticalIntergrated(Element* element){/*{{{*/ 356 356 357 357 /* Check if ice in element */ 358 358 if(!element->IsIceInElement()) return NULL; … … 432 432 zeta=0.5*(gauss_seg->coord1+1); 433 433 434 434 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/ 435 element->StrainRateM LHO(&epsilon[0],xyz_list,gauss,435 element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss, 436 436 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 437 437 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 438 438 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]); … … 617 617 return CreatePVectorHO(element); 618 618 case FSApproximationEnum: 619 619 return CreatePVectorFS(element); 620 case M LHOApproximationEnum:621 return CreatePVectorM LHO(element);620 case MOLHOApproximationEnum: 621 return CreatePVectorMOLHO(element); 622 622 case NoneApproximationEnum: 623 623 return NULL; 624 624 default: … … 1104 1104 return pe; 1105 1105 1106 1106 }/*}}}*/ 1107 ElementVector* AdjointHorizAnalysis::CreatePVectorM LHO(Element* element){/*{{{*/1107 ElementVector* AdjointHorizAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/ 1108 1108 1109 1109 /*Intermediaries*/ 1110 1110 int domaintype; … … 1142 1142 int numnodes = basalelement->GetNumberOfNodes(); 1143 1143 1144 1144 /*Initialize Element vector and vectors*/ 1145 ElementVector* pe = basalelement->NewElementVector(M LHOApproximationEnum);1145 ElementVector* pe = basalelement->NewElementVector(MOLHOApproximationEnum); 1146 1146 IssmDouble* basis = xNew<IssmDouble>(numnodes); 1147 1147 1148 1148 /*Retrieve all inputs and parameters*/ … … 1211 1211 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 1212 1212 } 1213 1213 else { 1214 _error_("2D vertical is not implemented for M LHO");1214 _error_("2D vertical is not implemented for MOLHO"); 1215 1215 } 1216 1216 } 1217 1217 break; … … 1239 1239 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 1240 1240 } 1241 1241 else{ 1242 _error_("2D vertical is not implemented for M LHO");1242 _error_("2D vertical is not implemented for MOLHO"); 1243 1243 } 1244 1244 } 1245 1245 break; … … 1268 1268 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 1269 1269 } 1270 1270 else{ 1271 _error_("2D vertical is not implemented for M LHO");1271 _error_("2D vertical is not implemented for MOLHO"); 1272 1272 } 1273 1273 } 1274 1274 break; … … 1294 1294 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 1295 1295 } 1296 1296 else{ 1297 _error_("2D vertical is not implemented for M LHO");1297 _error_("2D vertical is not implemented for MOLHO"); 1298 1298 } 1299 1299 } 1300 1300 break; … … 1318 1318 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 1319 1319 } 1320 1320 else{ 1321 _error_("2D vertical is not implemented for M LHO");1321 _error_("2D vertical is not implemented for MOLHO"); 1322 1322 } 1323 1323 } 1324 1324 break; … … 1668 1668 case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_interp,control_index); break; 1669 1669 case L1L2ApproximationEnum:GradientJDragL1L2(element,gradient,control_interp,control_index); break; 1670 1670 case HOApproximationEnum: GradientJDragHO( element,gradient,control_interp,control_index); break; 1671 case M LHOApproximationEnum: GradientJDragMLHO( element,gradient,control_interp,control_index); break;1671 case MOLHOApproximationEnum: GradientJDragMOLHO( element,gradient,control_interp,control_index); break; 1672 1672 case FSApproximationEnum: GradientJDragFS( element,gradient,control_interp,control_index); break; 1673 1673 case NoneApproximationEnum: /*Gradient is 0*/ break; 1674 1674 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet"); … … 1689 1689 case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_interp,control_index); break; 1690 1690 case L1L2ApproximationEnum:GradientJBbarL1L2(element,gradient,control_interp,control_index); break; 1691 1691 case HOApproximationEnum: GradientJBbarHO( element,gradient,control_interp,control_index); break; 1692 case M LHOApproximationEnum: GradientJBbarMLHO( element,gradient,control_interp,control_index); break;1692 case MOLHOApproximationEnum: GradientJBbarMOLHO( element,gradient,control_interp,control_index); break; 1693 1693 case FSApproximationEnum: GradientJBbarFS( element,gradient,control_interp,control_index); break; 1694 1694 case NoneApproximationEnum: /*Gradient is 0*/ break; 1695 1695 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet"); … … 1699 1699 switch(approximation){ 1700 1700 case SSAApproximationEnum: GradientJBSSA(element,gradient,control_interp,control_index); break; 1701 1701 case HOApproximationEnum: GradientJBHO( element,gradient,control_interp,control_index); break; 1702 // case M LHOApproximationEnum: GradientJBMLHO( element,gradient,control_interp,control_index); break;1702 // case MOLHOApproximationEnum: GradientJBMOLHO( element,gradient,control_interp,control_index); break; 1703 1703 case FSApproximationEnum: GradientJBFS( element,gradient,control_interp,control_index); break; 1704 1704 case NoneApproximationEnum: /*Gradient is 0*/ break; 1705 1705 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet"); … … 1809 1809 /*WARNING: We use SSA as an estimate for now*/ 1810 1810 this->GradientJBbarSSA(element,gradient,control_interp,control_index); 1811 1811 }/*}}}*/ 1812 void AdjointHorizAnalysis::GradientJBbarM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/1812 void AdjointHorizAnalysis::GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/ 1813 1813 1814 1814 if(control_interp!=P1Enum) _error_("not implemented yet..."); 1815 1815 /*Intermediaries*/ … … 1892 1892 while(gauss_seg->next()){ 1893 1893 zeta=0.5*(gauss_seg->coord1+1); 1894 1894 1895 basalelement->StrainRateM LHO(&epsilon[0],xyz_list,gauss,1895 basalelement->StrainRateMOLHO(&epsilon[0],xyz_list,gauss, 1896 1896 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 1897 1897 1898 basalelement->dViscositydBM LHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);1898 basalelement->dViscositydBMOLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 1899 1899 1900 1900 e1[0] = 2.0*epsilon[0]+epsilon[1]; 1901 1901 e1[1] = epsilon[2]; … … 2250 2250 xDelete<int>(vertexpidlist); 2251 2251 delete gauss; 2252 2252 }/*}}}*/ 2253 void AdjointHorizAnalysis::GradientJBM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/2253 void AdjointHorizAnalysis::GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/ 2254 2254 _error_("not implemented yet..."); 2255 2255 }/*}}}*/ 2256 2256 void AdjointHorizAnalysis::GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/ … … 2650 2650 delete gauss; 2651 2651 delete friction; 2652 2652 }/*}}}*/ 2653 void AdjointHorizAnalysis::GradientJDragM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/2653 void AdjointHorizAnalysis::GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/ 2654 2654 2655 2655 /*return if floating (gradient is 0)*/ 2656 2656 if(element->IsAllFloating()) return; … … 3271 3271 if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){ 3272 3272 InputUpdateFromSolutionFS(solution,element); 3273 3273 } 3274 else if (approximation==M LHOApproximationEnum) {3275 InputUpdateFromSolutionM LHO(solution, element);3274 else if (approximation==MOLHOApproximationEnum) { 3275 InputUpdateFromSolutionMOLHO(solution, element); 3276 3276 } 3277 3277 else{ 3278 3278 InputUpdateFromSolutionHoriz(solution,element); … … 3419 3419 xDelete<IssmDouble>(lambday); 3420 3420 xDelete<int>(doflist); 3421 3421 }/*}}}*/ 3422 void AdjointHorizAnalysis::InputUpdateFromSolutionM LHO(IssmDouble* solution,Element* element){/*{{{*/3422 void AdjointHorizAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/ 3423 3423 int i; 3424 3424 int* doflist=NULL; 3425 3425 … … 3432 3432 int numdof = numnodes * 4; 3433 3433 3434 3434 /*Fetch dof list and allocate solution vectors*/ 3435 element->GetDofListLocal(&doflist,M LHOApproximationEnum,GsetEnum);3435 element->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum); 3436 3436 IssmDouble* values = xNew<IssmDouble>(numdof); 3437 3437 IssmDouble* lambdax = xNew<IssmDouble>(numnodes); 3438 3438 IssmDouble* lambday = xNew<IssmDouble>(numnodes); -
../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h
27 27 ElementMatrix* CreateKMatrix(Element* element); 28 28 ElementMatrix* CreateKMatrixFS(Element* element); 29 29 ElementMatrix* CreateKMatrixHO(Element* element); 30 ElementMatrix* CreateKMatrixM LHO(Element* element);31 ElementMatrix* CreateKMatrixM LHOVerticalIntergrated(Element* element);30 ElementMatrix* CreateKMatrixMOLHO(Element* element); 31 ElementMatrix* CreateKMatrixMOLHOVerticalIntergrated(Element* element); 32 32 ElementMatrix* CreateKMatrixL1L2(Element* element); 33 33 ElementMatrix* CreateKMatrixSSA(Element* element); 34 34 ElementVector* CreatePVector(Element* element); … … 35 35 ElementVector* CreatePVectorFS(Element* element); 36 36 ElementVector* CreatePVectorL1L2(Element* element); 37 37 ElementVector* CreatePVectorHO(Element* element); 38 ElementVector* CreatePVectorM LHO(Element* element);38 ElementVector* CreatePVectorMOLHO(Element* element); 39 39 ElementVector* CreatePVectorSSA(Element* element); 40 40 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 41 41 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_interp,int control_index); … … 44 44 void GradientJBinitial(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 45 45 void GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 46 46 void GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 47 void GradientJBbarM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);47 void GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 48 48 void GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 49 49 void GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 50 50 void GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 51 51 void GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 52 void GradientJBM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);52 void GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 53 53 void GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 54 54 void GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 55 55 void GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 56 56 void GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 57 57 void GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 58 void GradientJDragM LHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);58 void GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 59 59 void GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 60 60 void GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); 61 61 void GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index); … … 65 65 void InputUpdateFromSolution(IssmDouble* solution,Element* element); 66 66 void InputUpdateFromSolutionFS(IssmDouble* solution,Element* element); 67 67 void InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element); 68 void InputUpdateFromSolutionM LHO(IssmDouble* solution,Element* element);68 void InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element); 69 69 void UpdateConstraints(FemModel* femmodel); 70 70 }; 71 71 #endif -
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
30 30 IssmDouble g; 31 31 IssmDouble rho_ice; 32 32 IssmDouble FSreconditioning; 33 bool isSIA,isSSA,isL1L2,isM LHO,isHO,isFS,iscoupling;33 bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling; 34 34 bool spcpresent = false; 35 35 int Mx,Nx; 36 36 int My,Ny; … … 58 58 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA"); 59 59 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 60 60 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 61 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");61 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 62 62 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); 63 63 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 64 64 65 65 /*Is this model only SIA??*/ 66 if(!isSSA && !isHO && !isFS && !isL1L2 && !isM LHO) return;66 if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return; 67 67 68 68 /*Do we have coupling*/ 69 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isM LHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)69 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.) 70 70 iscoupling = true; 71 71 else 72 72 iscoupling = false; … … 77 77 /*Get finite element type*/ 78 78 if(isSSA) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA"); 79 79 else if(isL1L2) finiteelement = P1Enum; 80 else if(isM LHO) finiteelement = P1Enum;80 else if(isMOLHO) finiteelement = P1Enum; 81 81 else if(isHO) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO"); 82 82 else if(isFS){ iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS"); 83 83 /*Deduce velocity interpolation from finite element*/ … … 187 187 iomodel->DeleteData(z,"md.mesh.z"); 188 188 } 189 189 else{ 190 if(!isM LHO){190 if(!isMOLHO){ 191 191 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0); 192 192 if(iomodel->domaintype!=Domain2DverticalEnum){ 193 193 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1); 194 194 } 195 195 } 196 else{//M LHO196 else{//MOLHO 197 197 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_base",StressbalanceAnalysisEnum,finiteelement,0); 198 198 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_shear",StressbalanceAnalysisEnum,finiteelement,1); 199 199 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_base",StressbalanceAnalysisEnum,finiteelement,2); … … 461 461 int i; 462 462 int count; 463 463 int penpair_ids[2]; 464 bool isSSA,isL1L2,isM LHO,isHO,isFS;464 bool isSSA,isL1L2,isMOLHO,isHO,isFS; 465 465 int numpenalties,numrifts,numriftsegments; 466 466 IssmDouble *riftinfo = NULL; 467 467 IssmDouble *penalties = NULL; … … 469 469 470 470 /*Fetch parameters: */ 471 471 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 472 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");472 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 473 473 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 474 474 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 475 475 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); … … 476 476 iomodel->FindConstant(&numrifts,"md.rifts.numrifts"); 477 477 478 478 /*Is this SIA only?*/ 479 if(!isSSA && !isHO && !isFS && !isL1L2 && !isM LHO) return;479 if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return; 480 480 481 481 /*Initialize counter: */ 482 482 count=0; … … 521 521 void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/ 522 522 523 523 /*Intermediary*/ 524 bool isSSA,isL1L2,isM LHO,isHO,isFS,iscoupling;524 bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling; 525 525 int finiteelement=-1,approximation=-1; 526 526 527 527 /*Fetch parameters: */ 528 528 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 529 529 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 530 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");530 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 531 531 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); 532 532 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 533 533 534 534 /*Now, check that we have non SIA elements */ 535 if(!isSSA && !isL1L2 && !isM LHO && !isHO && !isFS) return;535 if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return; 536 536 537 537 /*Do we have coupling*/ 538 if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isM LHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)538 if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.) 539 539 iscoupling = true; 540 540 else 541 541 iscoupling = false; … … 552 552 approximation = L1L2ApproximationEnum; 553 553 finiteelement = P1Enum; 554 554 } 555 else if(isM LHO){556 approximation = M LHOApproximationEnum;555 else if(isMOLHO){ 556 approximation = MOLHOApproximationEnum; 557 557 finiteelement = P1Enum; 558 558 } 559 559 else if(isHO){ … … 629 629 } 630 630 break; 631 631 case L1L2ApproximationEnum: numdofs = 2; break; 632 case M LHOApproximationEnum: numdofs = 4; break;632 case MOLHOApproximationEnum: numdofs = 4; break; 633 633 case HOApproximationEnum: 634 634 switch(domaintype){ 635 635 case Domain3DEnum: numdofs=2; break; … … 694 694 int approximation,frictionlaw; 695 695 int FrictionCoupling; 696 696 int* finiteelement_list=NULL; 697 bool isSSA,isL1L2,isM LHO,isHO,isFS,iscoupling;697 bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling; 698 698 bool control_analysis; 699 699 bool dakota_analysis; 700 700 bool ismovingfront; … … 702 702 /*Fetch constants needed: */ 703 703 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 704 704 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 705 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");705 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 706 706 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); 707 707 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 708 708 iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol"); … … 712 712 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 713 713 714 714 /*return if no processing required*/ 715 if(!isSSA && !isL1L2 && !isM LHO && !isHO && !isFS) return;715 if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return; 716 716 717 717 /*Fetch data needed and allocate vectors: */ 718 718 iomodel->FetchData(1,"md.flowequation.element_equation"); … … 719 719 finiteelement_list=xNewZeroInit<int>(iomodel->numberofelements); 720 720 721 721 /*Do we have coupling*/ 722 if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isM LHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)722 if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.) 723 723 iscoupling = true; 724 724 else 725 725 iscoupling = false; … … 728 728 if(!iscoupling){ 729 729 if(isSSA) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA"); 730 730 else if(isL1L2) finiteelement = P1Enum; 731 else if(isM LHO) finiteelement = P1Enum;731 else if(isMOLHO) finiteelement = P1Enum; 732 732 else if(isHO) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO"); 733 733 else if(isFS) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS"); 734 734 for(int i=0;i<iomodel->numberofelements;i++){ … … 780 780 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 781 781 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.); 782 782 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.); 783 /*M LHO*/784 if(isM LHO){783 /*MOLHO*/ 784 if(isMOLHO){ 785 785 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.); 786 786 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.); 787 /*3D M LHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/787 /*3D MOLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/ 788 788 if (iomodel->domaintype==Domain3DEnum) { 789 789 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.); 790 790 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.); … … 989 989 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSIA",FlowequationIsSIAEnum)); 990 990 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSSA",FlowequationIsSSAEnum)); 991 991 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isL1L2",FlowequationIsL1L2Enum)); 992 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isM LHO",FlowequationIsMLHOEnum));992 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMOLHO",FlowequationIsMOLHOEnum)); 993 993 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isHO",FlowequationIsHOEnum)); 994 994 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum)); 995 995 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.fe_FS",FlowequationFeFSEnum)); … … 1092 1092 void StressbalanceAnalysis::Core(FemModel* femmodel){/*{{{*/ 1093 1093 1094 1094 /*Intermediaries*/ 1095 bool isSSA,isL1L2,isM LHO,isHO,isFS;1095 bool isSSA,isL1L2,isMOLHO,isHO,isFS; 1096 1096 bool conserve_loads = true; 1097 1097 int newton,domaintype,fe_FS; 1098 1098 … … 1099 1099 /* recover parameters:*/ 1100 1100 femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum); 1101 1101 femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum); 1102 femmodel->parameters->FindParam(&isM LHO,FlowequationIsMLHOEnum);1102 femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum); 1103 1103 femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum); 1104 1104 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum); 1105 1105 femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum); … … 1106 1106 femmodel->parameters->FindParam(&domaintype,DomainTypeEnum); 1107 1107 femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum); 1108 1108 1109 if(isFS && !(isSSA || isHO || isL1L2 || isM LHO)){1109 if(isFS && !(isSSA || isHO || isL1L2 || isMOLHO)){ 1110 1110 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 1111 1111 1112 1112 bool is_schur_cg_solver = false; … … 1128 1128 else 1129 1129 solutionsequence_nonlinear(femmodel,conserve_loads); 1130 1130 } 1131 else if(!isFS && (isSSA || isHO || isL1L2 || isM LHO)){1131 else if(!isFS && (isSSA || isHO || isL1L2 || isMOLHO)){ 1132 1132 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 1133 1133 if(newton>0) 1134 1134 solutionsequence_newton(femmodel); … … 1142 1142 extrudefrombase_core(femmodel); 1143 1143 } 1144 1144 } 1145 else if ((isSSA || isL1L2 || isM LHO || isHO) && isFS){1145 else if ((isSSA || isL1L2 || isMOLHO || isHO) && isFS){ 1146 1146 if(VerboseSolution()) _printf0_(" computing coupling between lower order models and FS\n"); 1147 1147 solutionsequence_FScoupling_nonlinear(femmodel,conserve_loads); 1148 1148 } … … 1194 1194 return CreateKMatrixSSA(element); 1195 1195 case L1L2ApproximationEnum: 1196 1196 return CreateKMatrixL1L2(element); 1197 case M LHOApproximationEnum:1198 return CreateKMatrixM LHO(element);1197 case MOLHOApproximationEnum: 1198 return CreateKMatrixMOLHO(element); 1199 1199 case HOApproximationEnum: 1200 1200 return CreateKMatrixHO(element); 1201 1201 case FSApproximationEnum: … … 1223 1223 return CreatePVectorSSA(element); 1224 1224 case L1L2ApproximationEnum: 1225 1225 return CreatePVectorL1L2(element); 1226 case M LHOApproximationEnum:1227 return CreatePVectorM LHO(element);1226 case MOLHOApproximationEnum: 1227 return CreatePVectorMOLHO(element); 1228 1228 case HOApproximationEnum: 1229 1229 return CreatePVectorHO(element); 1230 1230 case FSApproximationEnum: … … 1252 1252 case SSAApproximationEnum: case HOApproximationEnum: case L1L2ApproximationEnum: case SIAApproximationEnum: 1253 1253 GetSolutionFromInputsHoriz(solution,element); 1254 1254 return; 1255 case M LHOApproximationEnum:1256 GetSolutionFromInputsM LHO(solution,element);1255 case MOLHOApproximationEnum: 1256 GetSolutionFromInputsMOLHO(solution,element); 1257 1257 return; 1258 1258 case SSAHOApproximationEnum: case HOFSApproximationEnum: case SSAFSApproximationEnum: 1259 1259 /*the elements around will create the solution*/ … … 1334 1334 case L1L2ApproximationEnum: 1335 1335 InputUpdateFromSolutionL1L2(solution,element); 1336 1336 return; 1337 case M LHOApproximationEnum:1338 InputUpdateFromSolutionM LHO(solution,element);1337 case MOLHOApproximationEnum: 1338 InputUpdateFromSolutionMOLHO(solution,element); 1339 1339 return; 1340 1340 case SSAHOApproximationEnum: 1341 1341 InputUpdateFromSolutionSSAHO(solution,element); … … 2759 2759 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;}; 2760 2760 }/*}}}*/ 2761 2761 2762 /*M LHO*/2763 ElementMatrix* StressbalanceAnalysis::CreateKMatrixM LHO(Element* element){/*{{{*/2762 /*MOLHO*/ 2763 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/ 2764 2764 2765 2765 /* Check if ice in element */ 2766 2766 if(!element->IsIceInElement()) return NULL; … … 2783 2783 } 2784 2784 2785 2785 /*compute all stiffness matrices for this element*/ 2786 ElementMatrix* Ke1=CreateKMatrixM LHOViscous(basalelement);2787 ElementMatrix* Ke2=CreateKMatrixM LHOFriction(basalelement);2786 ElementMatrix* Ke1=CreateKMatrixMOLHOViscous(basalelement); 2787 ElementMatrix* Ke2=CreateKMatrixMOLHOFriction(basalelement); 2788 2788 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 2789 2789 2790 2790 /*clean-up and return*/ … … 2793 2793 delete Ke2; 2794 2794 return Ke; 2795 2795 }/*}}}*/ 2796 ElementMatrix* StressbalanceAnalysis::CreateKMatrixM LHOFriction(Element* element){/*{{{*/2796 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOFriction(Element* element){/*{{{*/ 2797 2797 2798 2798 if(element->IsAllFloating()) return NULL; 2799 2799 … … 2820 2820 int numdof = numnodes*dim; 2821 2821 2822 2822 /*Initialize Element matrix and vectors*/ 2823 ElementMatrix* Ke = element->NewElementMatrix(M LHOApproximationEnum);2823 ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum); 2824 2824 IssmDouble* basis = xNew<IssmDouble>(numnodes); 2825 2825 2826 2826 /*Retrieve all inputs and parameters*/ … … 2875 2875 xDelete<IssmDouble>(basis); 2876 2876 return Ke; 2877 2877 }/*}}}*/ 2878 ElementMatrix* StressbalanceAnalysis::CreateKMatrixM LHOViscous(Element* element){/*{{{*/2878 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOViscous(Element* element){/*{{{*/ 2879 2879 2880 2880 /* Check if ice in element */ 2881 2881 if(!element->IsIceInElement()) return NULL; … … 2890 2890 int numnodes = element->GetNumberOfNodes(); 2891 2891 2892 2892 /*Initialize Element matrix and vectors*/ 2893 ElementMatrix* Ke = element->NewElementMatrix(M LHOApproximationEnum);2893 ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum); 2894 2894 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); // like SSA 2895 2895 IssmDouble* basis = xNew<IssmDouble>(numnodes); // like SSA 2896 2896 … … 2914 2914 2915 2915 thickness_input->GetInputValue(&thickness, gauss); 2916 2916 n_input->GetInputValue(&n,gauss); 2917 element->material->ViscosityM LHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);2917 element->material->ViscosityMOLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input); 2918 2918 2919 2919 for(int i=0;i<numnodes;i++){//shape functions on tria element 2920 2920 for(int j=0;j<numnodes;j++){ … … 2980 2980 } 2981 2981 2982 2982 /*Transform Coordinate System*/ 2983 //basalelement->TransformStiffnessMatrixCoord(Ke,XYM LHOEnum);2983 //basalelement->TransformStiffnessMatrixCoord(Ke,XYMOLHOEnum); 2984 2984 2985 2985 /*Clean up and return*/ 2986 2986 delete gauss; … … 2989 2989 xDelete<IssmDouble>(basis); 2990 2990 return Ke; 2991 2991 }/*}}}*/ 2992 ElementVector* StressbalanceAnalysis::CreatePVectorM LHO(Element* element){/*{{{*/2992 ElementVector* StressbalanceAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/ 2993 2993 2994 2994 /* Check if ice in element */ 2995 2995 if(!element->IsIceInElement()) return NULL; … … 3012 3012 } 3013 3013 3014 3014 /*compute all load vectors for this element*/ 3015 ElementVector* pe1=CreatePVectorM LHODrivingStress(basalelement);3016 ElementVector* pe2=CreatePVectorM LHOFront(basalelement);3015 ElementVector* pe1=CreatePVectorMOLHODrivingStress(basalelement); 3016 ElementVector* pe2=CreatePVectorMOLHOFront(basalelement); 3017 3017 ElementVector* pe =new ElementVector(pe1,pe2); 3018 3018 3019 3019 /*clean-up and return*/ … … 3022 3022 delete pe2; 3023 3023 return pe; 3024 3024 }/*}}}*/ 3025 ElementVector* StressbalanceAnalysis::CreatePVectorM LHODrivingStress(Element* element){/*{{{*/3025 ElementVector* StressbalanceAnalysis::CreatePVectorMOLHODrivingStress(Element* element){/*{{{*/ 3026 3026 3027 3027 /*Intermediaries */ 3028 3028 IssmDouble thickness,Jdet,slope[2],n; … … 3032 3032 int numnodes = element->GetNumberOfNodes(); 3033 3033 3034 3034 /*Initialize Element vector and vectors*/ 3035 ElementVector* pe = element->NewElementVector(M LHOApproximationEnum);3035 ElementVector* pe = element->NewElementVector(MOLHOApproximationEnum); 3036 3036 IssmDouble* basis = xNew<IssmDouble>(numnodes); 3037 3037 3038 3038 /*Retrieve all inputs and parameters*/ … … 3061 3061 } 3062 3062 3063 3063 /*Transform coordinate system*/ 3064 //element->TransformLoadVectorCoord(pe,XYM LHOEnum);3064 //element->TransformLoadVectorCoord(pe,XYMOLHOEnum); 3065 3065 3066 3066 /*Clean up and return*/ 3067 3067 xDelete<IssmDouble>(xyz_list); … … 3069 3069 delete gauss; 3070 3070 return pe; 3071 3071 }/*}}}*/ 3072 ElementVector* StressbalanceAnalysis::CreatePVectorM LHOFront(Element* element){/*{{{*/3072 ElementVector* StressbalanceAnalysis::CreatePVectorMOLHOFront(Element* element){/*{{{*/ 3073 3073 3074 3074 /*If no front, return NULL*/ 3075 3075 if(!element->IsIcefront()) return NULL; … … 3085 3085 int numnodes = element->GetNumberOfNodes(); 3086 3086 3087 3087 /*Initialize Element vector and other vectors*/ 3088 ElementVector* pe = element->NewElementVector(M LHOApproximationEnum);3088 ElementVector* pe = element->NewElementVector(MOLHOApproximationEnum); 3089 3089 IssmDouble* basis = xNew<IssmDouble>(numnodes); 3090 3090 3091 3091 /*Retrieve all inputs and parameters*/ … … 3134 3134 } 3135 3135 3136 3136 /*Transform coordinate system*/ 3137 //element->TransformLoadVectorCoord(pe,XYM LHOEnum);3137 //element->TransformLoadVectorCoord(pe,XYMOLHOEnum); 3138 3138 3139 3139 /*Clean up and return*/ 3140 3140 xDelete<IssmDouble>(xyz_list); … … 3143 3143 delete gauss; 3144 3144 return pe; 3145 3145 }/*}}}*/ 3146 void StressbalanceAnalysis::InputUpdateFromSolutionM LHO(IssmDouble* solution,Element* element){/*{{{*/3146 void StressbalanceAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/ 3147 3147 3148 3148 int i,dim,domaintype; 3149 3149 IssmDouble rho_ice,g; … … 3196 3196 int numdof = numnodes*dim*2; //2xdim DOFs per node 3197 3197 3198 3198 /*Fetch dof list and allocate solution vectors*/ 3199 basalelement->GetDofListLocal(&doflist,M LHOApproximationEnum,GsetEnum);3199 basalelement->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum); 3200 3200 IssmDouble* values = xNew<IssmDouble>(numdof); 3201 3201 IssmDouble* vbx = xNew<IssmDouble>(numnodes); 3202 3202 IssmDouble* vby = xNew<IssmDouble>(numnodes); … … 3219 3219 if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum); 3220 3220 3221 3221 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 3222 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the M LHO is written3222 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written 3223 3223 vbx[i] =values[i*4+0]; //base vx 3224 3224 vshx[i]=values[i*4+1]; //shear vx 3225 3225 vsx[i] =vbx[i]+vshx[i]; //surface vx … … 3256 3256 3257 3257 switch(domaintype){ 3258 3258 case Domain2DhorizontalEnum: 3259 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the M LHO is written3259 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written 3260 3260 vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2); 3261 3261 vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2); 3262 3262 vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]); … … 3268 3268 case Domain3DEnum: 3269 3269 basalelement->GetInputListOnNodes(&H[0],ThicknessEnum,0.); 3270 3270 basalelement->GetInputListOnNodes(&s[0],SurfaceEnum,0.); 3271 element->Recover3DM LHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);3272 element->Recover3DM LHOInput(VyEnum, numnodes, vby, vshy, n, H, s);3271 element->Recover3DMOLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s); 3272 element->Recover3DMOLHOInput(VyEnum, numnodes, vby, vshy, n, H, s); 3273 3273 break; 3274 3274 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3275 3275 } … … 3293 3293 xDelete<int>(doflist); 3294 3294 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;}; 3295 3295 }/*}}}*/ 3296 void StressbalanceAnalysis::GetSolutionFromInputsM LHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/3296 void StressbalanceAnalysis::GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/ 3297 3297 3298 3298 IssmDouble vbx,vby,vshx,vshy; 3299 3299 int domaintype,dim,approximation,dofpernode; … … 3312 3312 int numnodes = element->GetNumberOfNodes(); 3313 3313 int numdof = numnodes*dofpernode; 3314 3314 element->GetInputValue(&approximation,ApproximationEnum); 3315 if(approximation!=M LHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");3315 if(approximation!=MOLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here"); 3316 3316 3317 3317 /*Fetch dof list and allocate solution vector*/ 3318 3318 element->GetDofList(&doflist,approximation,GsetEnum); -
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
56 56 ElementVector* CreatePVectorL1L2Front(Element* element); 57 57 ElementVector* CreatePVectorL1L2DrivingStress(Element* element); 58 58 void InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element); 59 /*M LHO*/60 ElementMatrix* CreateKMatrixM LHO(Element* element);61 ElementMatrix* CreateKMatrixM LHOFriction(Element* element);62 ElementMatrix* CreateKMatrixM LHOViscous(Element* element);63 ElementVector* CreatePVectorM LHO(Element* element);64 ElementVector* CreatePVectorM LHOFront(Element* element);65 ElementVector* CreatePVectorM LHODrivingStress(Element* element);66 void InputUpdateFromSolutionM LHO(IssmDouble* solution,Element* element);67 void GetSolutionFromInputsM LHO(Vector<IssmDouble>* solution,Element* element);59 /*MOLHO*/ 60 ElementMatrix* CreateKMatrixMOLHO(Element* element); 61 ElementMatrix* CreateKMatrixMOLHOFriction(Element* element); 62 ElementMatrix* CreateKMatrixMOLHOViscous(Element* element); 63 ElementVector* CreatePVectorMOLHO(Element* element); 64 ElementVector* CreatePVectorMOLHOFront(Element* element); 65 ElementVector* CreatePVectorMOLHODrivingStress(Element* element); 66 void InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element); 67 void GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element); 68 68 /*HO*/ 69 69 ElementMatrix* CreateJacobianMatrixHO(Element* element); 70 70 ElementMatrix* CreateKMatrixHO(Element* element); -
../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
9 9 void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/ 10 10 11 11 /*Intermediaries*/ 12 bool isSIA,isSSA,isL1L2,isM LHO,isHO,isFS,iscoupling;12 bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling; 13 13 14 14 /*Fetch parameters: */ 15 15 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA"); 16 16 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 17 17 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 18 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");18 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 19 19 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); 20 20 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 21 21 … … 23 23 if (!isSIA) return; 24 24 25 25 /*Do we have coupling*/ 26 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isM LHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)26 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.) 27 27 iscoupling = true; 28 28 else 29 29 iscoupling = false; -
../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
11 11 void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/ 12 12 13 13 /*Intermediary*/ 14 bool isSIA,isSSA,isL1L2,isM LHO,isHO,isFS,iscoupling;14 bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling; 15 15 int Mz,Nz; 16 16 IssmDouble *spcvz = NULL; 17 17 … … 22 22 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA"); 23 23 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA"); 24 24 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2"); 25 iomodel->FindConstant(&isM LHO,"md.flowequation.isMLHO");25 iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO"); 26 26 iomodel->FindConstant(&isHO,"md.flowequation.isHO"); 27 27 iomodel->FindConstant(&isFS,"md.flowequation.isFS"); 28 28 29 29 /*Do we have coupling*/ 30 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isM LHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)30 if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.) 31 31 iscoupling = true; 32 32 else 33 33 iscoupling = false; -
../trunk-jpl/src/c/classes/Elements/Element.cpp
1040 1040 1041 1041 } 1042 1042 /*}}}*/ 1043 void Element::dViscositydBM LHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta){/*{{{*/1043 void Element::dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta){/*{{{*/ 1044 1044 1045 1045 /*Intermediaries*/ 1046 1046 int materialstype; … … 1050 1050 IssmDouble eps0=1.e-27; 1051 1051 1052 1052 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */ 1053 this->StrainRateM LHO(&epsilon[0],xyz_list,gauss,1053 this->StrainRateMOLHO(&epsilon[0],xyz_list,gauss, 1054 1054 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 1055 1055 eps_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 1056 1056 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1] + eps0*eps0); … … 4618 4618 epsilon[1] = 0.5*dvx[1]; 4619 4619 4620 4620 }/*}}}*/ 4621 void Element::StrainRateM LHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta){/*{{{*/4622 /*Compute the 2d Blatter/M LHO Strain Rate (5 components) for a given vertical coordinate (zeta):4621 void Element::StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta){/*{{{*/ 4622 /*Compute the 2d Blatter/MOLHO Strain Rate (5 components) for a given vertical coordinate (zeta): 4623 4623 * 4624 4624 * epsilon=[exx eyy exy exz eyz] 4625 4625 * -
../trunk-jpl/src/c/classes/Elements/Element.h
85 85 void dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 86 86 void dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 87 87 void dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 88 void dViscositydBM LHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta);88 void dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta); 89 89 void dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 90 90 void Echo(); 91 91 void FindParam(bool* pvalue,int paramenum); … … 189 189 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 190 190 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 191 191 void StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 192 void StrainRateM LHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta);192 void StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta); 193 193 void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 194 194 void StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input); 195 195 void StressMaxPrincipalCreateInput(void); … … 350 350 virtual int NumberofNodesVelocity(void)=0; 351 351 virtual void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0; 352 352 virtual int PressureInterpolation()=0; 353 virtual void Recover3DM LHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};353 virtual void Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");}; 354 354 virtual void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0; 355 355 virtual void ResetFSBasalBoundaryCondition()=0; 356 356 virtual void ResetHooks()=0; -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
3281 3281 return PentaRef::PressureInterpolation(this->element_type); 3282 3282 } 3283 3283 /*}}}*/ 3284 void Penta::Recover3DM LHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/3284 void Penta::Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/ 3285 3285 /* Recover the velocity acording to v=vb+(1-\zeta^{n+1})vsh, where \zeta=(s-z)/H 3286 3286 * The variables vb, vsh, n, H and s are all from the 2D horizontal mesh(Tria), with "numnodes" DOFs 3287 3287 * To project to penta the DOFs are doubled in size -
../trunk-jpl/src/c/classes/Elements/Penta.h
169 169 int NumberofNodesVelocity(void); 170 170 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding); 171 171 int PressureInterpolation(); 172 void Recover3DM LHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);172 void Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s); 173 173 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); 174 174 void ResetFSBasalBoundaryCondition(void); 175 175 void ResetHooks(); -
../trunk-jpl/src/c/classes/FemModel.cpp
3218 3218 this->parameters->FindParam(&temp,FlowequationIsSIAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSIA")); 3219 3219 this->parameters->FindParam(&temp,FlowequationIsSSAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSSA")); 3220 3220 this->parameters->FindParam(&temp,FlowequationIsL1L2Enum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isL1L2")); 3221 this->parameters->FindParam(&temp,FlowequationIsM LHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMLHO"));3221 this->parameters->FindParam(&temp,FlowequationIsMOLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMOLHO")); 3222 3222 this->parameters->FindParam(&temp,FlowequationIsHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isHO")); 3223 3223 this->parameters->FindParam(&temp,FlowequationIsFSEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isFS")); 3224 3224 this->parameters->FindParam(&tempint,MasstransportStabilizationEnum); iomodel->AddConstant(new IoConstant(tempint,"md.masstransport.stabilization")); -
../trunk-jpl/src/c/classes/Loads/Penpair.cpp
354 354 case HOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 355 355 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet"); 356 356 } 357 case M LHOApproximationEnum:357 case MOLHOApproximationEnum: 358 358 switch(approximation1){ 359 case M LHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);359 case MOLHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 360 360 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet"); 361 361 } 362 362 case L1L2ApproximationEnum: -
../trunk-jpl/src/c/classes/Materials/Material.h
50 50 virtual void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0; 51 51 virtual void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0; 52 52 virtual void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0; 53 virtual void ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;54 virtual void ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;53 virtual void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0; 54 virtual void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0; 55 55 virtual void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0; 56 56 virtual void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0; 57 57 virtual void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff)=0; -
../trunk-jpl/src/c/classes/Materials/Matestar.cpp
566 566 /*Compute viscosity*/ 567 567 *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss); 568 568 }/*}}}*/ 569 void Matestar::ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/569 void Matestar::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/ 570 570 _error_("not implemented yet"); 571 571 }/*}}}*/ 572 void Matestar::ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/572 void Matestar::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/ 573 573 _error_("not implemented yet"); 574 574 }/*}}}*/ 575 575 void Matestar::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/ -
../trunk-jpl/src/m/classes/inversion.py
150 150 151 151 # Only SSA, HO and FS are supported right now 152 152 if solution == 'StressbalanceSolution': 153 if not (md.flowequation.isSSA or md.flowequation.isM LHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):154 md.checkmessage("'inversion can only be performed for SSA, M LHO, HO or FS ice flow models")153 if not (md.flowequation.isSSA or md.flowequation.isMOLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2): 154 md.checkmessage("'inversion can only be performed for SSA, MOLHO, HO or FS ice flow models") 155 155 if solution == 'BalancethicknessSolution': 156 156 md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1) 157 157 elif solution == 'BalancethicknessSoftSolution': -
../trunk-jpl/src/m/parameterization/setflowequation.js
2 2 //SETFLOWEQUATION - associate a solution type to each element 3 3 // 4 4 // This routine works like plotmodel: it works with an even number of inputs 5 // 'SIA','SSA','L1L2','M LHO','HO','FS' and 'fill' are the possible options5 // 'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options 6 6 // that must be followed by the corresponding exp file or flags list 7 7 // It can either be a domain file (argus type, .exp extension), or an array of element flags. 8 8 // If user wants every element outside the domain to be … … 10 10 // an empty string '' will be considered as an empty domain 11 11 // a string 'all' will be considered as the entire domain 12 12 // You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling' 13 // NB: L1L2 and M LHO cannot currently be coupled to any other ice flow model13 // NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model 14 14 // 15 15 // Usage: 16 16 // setflowequation(md,varargin) … … 37 37 SSAflag = FlagElements(md,options.getfieldvalue('SSA','')); 38 38 HOflag = FlagElements(md,options.getfieldvalue('HO','')); 39 39 L1L2flag = FlagElements(md,options.getfieldvalue('L1L2','')); 40 M LHOflag = FlagElements(md,options.getfieldvalue('MLHO',''));40 MOLHOflag = FlagElements(md,options.getfieldvalue('MOLHO','')); 41 41 FSflag = FlagElements(md,options.getfieldvalue('FS','')); 42 42 filltype = options.getfieldvalue('fill','none'); 43 43 options.displayunused(); … … 54 54 } 55 55 56 56 //check that each element has at least one flag 57 for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + M LHOflag[i] + FSflag[i])==0)57 for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MOLHOflag[i] + FSflag[i])==0) 58 58 throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'"); 59 59 60 60 //check that each element has only one flag 61 if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,M LHOflag),1)){61 if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MOLHOflag),1)){ 62 62 console.log('setflowequation warning message: some elements have several types, higher order type is used for them') 63 63 64 64 for(var i=0;i<md.mesh.numberofelements;i++){ … … 70 70 71 71 //check that L1L2 is not coupled to any other model for now 72 72 if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model'); 73 if (ArrayAnyEqual(M LHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MLHO cannot be coupled to any other model');73 if (ArrayAnyEqual(MOLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MOLHO cannot be coupled to any other model'); 74 74 75 75 //Check that no HO or FS for 2d mesh 76 76 if (md.mesh.domaintype() == '2Dhorizontal'){ … … 99 99 pos=ArrayFind(L1L2flag,1); 100 100 for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1; 101 101 102 nodeonM LHO=NewArrayFill(md.mesh.numberofvertices,0);103 pos=ArrayFind(M LHOflag,1);104 for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonM LHO[md.mesh.elements[pos[i]][j]-1]=1;102 nodeonMOLHO=NewArrayFill(md.mesh.numberofvertices,0); 103 pos=ArrayFind(MOLHOflag,1); 104 for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonMOLHO[md.mesh.elements[pos[i]][j]-1]=1; 105 105 106 106 nodeonFS=NewArrayFill(md.mesh.numberofvertices,0); 107 107 noneflag=NewArrayFill(md.mesh.numberofvertices,0); … … 261 261 pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1; 262 262 pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2; 263 263 pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3; 264 pos=ArrayFind(M LHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;264 pos=ArrayFind(MOLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4; 265 265 pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5; 266 266 pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6; 267 267 pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7; … … 280 280 281 281 pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2; 282 282 pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3; 283 pos=ArrayFind(nodeonM LHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;283 pos=ArrayFind(nodeonMOLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4; 284 284 pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5; 285 285 pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6; 286 286 //DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority) … … 300 300 md.flowequation.isSIA = ArrayAnyEqual(md.flowequation.element_equation,1); 301 301 md.flowequation.isSSA = ArrayAnyEqual(md.flowequation.element_equation,2); 302 302 md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3); 303 md.flowequation.isM LHO = ArrayAnyEqual(md.flowequation.element_equation,4);303 md.flowequation.isMOLHO = ArrayAnyEqual(md.flowequation.element_equation,4); 304 304 md.flowequation.isHO = ArrayAnyEqual(md.flowequation.element_equation,5); 305 305 md.flowequation.isFS = ArrayAnyEqual(md.flowequation.element_equation,6); 306 306 return -
../trunk-jpl/src/c/shared/Enum/Enum.vim
112 112 syn keyword cConstant CalvingLawEnum 113 113 syn keyword cConstant CalvingMinthicknessEnum 114 114 syn keyword cConstant CalvingTestSpeedfactorEnum 115 syn keyword cConstant CalvingTestIndependentRateEnum 115 116 syn keyword cConstant CalvingUseParamEnum 116 117 syn keyword cConstant CalvingScaleThetaEnum 117 118 syn keyword cConstant CalvingAmpAlphaEnum … … 174 175 syn keyword cConstant FlowequationIsFSEnum 175 176 syn keyword cConstant FlowequationIsHOEnum 176 177 syn keyword cConstant FlowequationIsL1L2Enum 177 syn keyword cConstant FlowequationIsM LHOEnum178 syn keyword cConstant FlowequationIsMOLHOEnum 178 179 syn keyword cConstant FlowequationIsSIAEnum 179 180 syn keyword cConstant FlowequationIsSSAEnum 180 181 syn keyword cConstant FlowequationIsNitscheEnum … … 657 658 syn keyword cConstant BottomPressureOldEnum 658 659 syn keyword cConstant CalvingCalvingrateEnum 659 660 syn keyword cConstant CalvingHabFractionEnum 661 syn keyword cConstant CalvingAblationrateEnum 660 662 syn keyword cConstant CalvingMeltingrateEnum 661 663 syn keyword cConstant CalvingStressThresholdFloatingiceEnum 662 664 syn keyword cConstant CalvingStressThresholdGroundediceEnum … … 1382 1384 syn keyword cConstant InversionVzObsEnum 1383 1385 syn keyword cConstant JEnum 1384 1386 syn keyword cConstant L1L2ApproximationEnum 1385 syn keyword cConstant M LHOApproximationEnum1387 syn keyword cConstant MOLHOApproximationEnum 1386 1388 syn keyword cConstant L2ProjectionBaseAnalysisEnum 1387 1389 syn keyword cConstant L2ProjectionEPLAnalysisEnum 1388 1390 syn keyword cConstant LACrouzeixRaviartEnum … … 1621 1623 syn keyword cType Cfsurfacelogvel 1622 1624 syn keyword cType Cfsurfacesquare 1623 1625 syn keyword cType Channel 1624 syn keyword cType classes1625 1626 syn keyword cType Constraint 1626 1627 syn keyword cType Constraints 1627 1628 syn keyword cType Contour … … 1628 1629 syn keyword cType Contours 1629 1630 syn keyword cType ControlInput 1630 1631 syn keyword cType Covertree 1632 syn keyword cType DataSetParam 1631 1633 syn keyword cType DatasetInput 1632 syn keyword cType DataSetParam1633 1634 syn keyword cType Definition 1634 1635 syn keyword cType DependentObject 1635 1636 syn keyword cType DoubleInput … … 1642 1643 syn keyword cType ElementHook 1643 1644 syn keyword cType ElementInput 1644 1645 syn keyword cType ElementMatrix 1646 syn keyword cType ElementVector 1645 1647 syn keyword cType Elements 1646 syn keyword cType ElementVector1647 1648 syn keyword cType ExponentialVariogram 1648 1649 syn keyword cType ExternalResult 1649 1650 syn keyword cType FemModel … … 1650 1651 syn keyword cType FileParam 1651 1652 syn keyword cType Friction 1652 1653 syn keyword cType Gauss 1653 syn keyword cType GaussianVariogram1654 syn keyword cType gaussobjects1655 1654 syn keyword cType GaussPenta 1656 1655 syn keyword cType GaussSeg 1657 1656 syn keyword cType GaussTetra 1658 1657 syn keyword cType GaussTria 1658 syn keyword cType GaussianVariogram 1659 1659 syn keyword cType GenericExternalResult 1660 1660 syn keyword cType GenericOption 1661 1661 syn keyword cType GenericParam … … 1671 1671 syn keyword cType IoModel 1672 1672 syn keyword cType IssmDirectApplicInterface 1673 1673 syn keyword cType IssmParallelDirectApplicInterface 1674 syn keyword cType krigingobjects1675 1674 syn keyword cType Load 1676 1675 syn keyword cType Loads 1677 1676 syn keyword cType Masscon … … 1682 1681 syn keyword cType Matestar 1683 1682 syn keyword cType Matice 1684 1683 syn keyword cType Matlitho 1685 syn keyword cType matrixobjects1686 1684 syn keyword cType MatrixParam 1687 1685 syn keyword cType Misfit 1688 1686 syn keyword cType Moulin … … 1695 1693 syn keyword cType Observation 1696 1694 syn keyword cType Observations 1697 1695 syn keyword cType Option 1696 syn keyword cType OptionUtilities 1698 1697 syn keyword cType Options 1699 syn keyword cType OptionUtilities1700 1698 syn keyword cType Param 1701 1699 syn keyword cType Parameters 1702 1700 syn keyword cType Pengrid … … 1710 1708 syn keyword cType Radar 1711 1709 syn keyword cType Regionaloutput 1712 1710 syn keyword cType Results 1711 syn keyword cType RiftStruct 1713 1712 syn keyword cType Riftfront 1714 syn keyword cType RiftStruct1715 1713 syn keyword cType SealevelGeometry 1716 1714 syn keyword cType Seg 1717 1715 syn keyword cType SegInput 1716 syn keyword cType SegRef 1718 1717 syn keyword cType Segment 1719 syn keyword cType SegRef1720 1718 syn keyword cType SpcDynamic 1721 1719 syn keyword cType SpcStatic 1722 1720 syn keyword cType SpcTransient … … 1735 1733 syn keyword cType VectorParam 1736 1734 syn keyword cType Vertex 1737 1735 syn keyword cType Vertices 1736 syn keyword cType classes 1737 syn keyword cType gaussobjects 1738 syn keyword cType krigingobjects 1739 syn keyword cType matrixobjects 1738 1740 syn keyword cType AdjointBalancethickness2Analysis 1739 1741 syn keyword cType AdjointBalancethicknessAnalysis 1740 1742 syn keyword cType AdjointHorizAnalysis -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
114 114 case CalvingLawEnum : return "CalvingLaw"; 115 115 case CalvingMinthicknessEnum : return "CalvingMinthickness"; 116 116 case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor"; 117 case CalvingTestIndependentRateEnum : return "CalvingTestIndependentRate"; 117 118 case CalvingUseParamEnum : return "CalvingUseParam"; 118 119 case CalvingScaleThetaEnum : return "CalvingScaleTheta"; 119 120 case CalvingAmpAlphaEnum : return "CalvingAmpAlpha"; … … 176 177 case FlowequationIsFSEnum : return "FlowequationIsFS"; 177 178 case FlowequationIsHOEnum : return "FlowequationIsHO"; 178 179 case FlowequationIsL1L2Enum : return "FlowequationIsL1L2"; 179 case FlowequationIsM LHOEnum : return "FlowequationIsMLHO";180 case FlowequationIsMOLHOEnum : return "FlowequationIsMOLHO"; 180 181 case FlowequationIsSIAEnum : return "FlowequationIsSIA"; 181 182 case FlowequationIsSSAEnum : return "FlowequationIsSSA"; 182 183 case FlowequationIsNitscheEnum : return "FlowequationIsNitsche"; … … 659 660 case BottomPressureOldEnum : return "BottomPressureOld"; 660 661 case CalvingCalvingrateEnum : return "CalvingCalvingrate"; 661 662 case CalvingHabFractionEnum : return "CalvingHabFraction"; 663 case CalvingAblationrateEnum : return "CalvingAblationrate"; 662 664 case CalvingMeltingrateEnum : return "CalvingMeltingrate"; 663 665 case CalvingStressThresholdFloatingiceEnum : return "CalvingStressThresholdFloatingice"; 664 666 case CalvingStressThresholdGroundediceEnum : return "CalvingStressThresholdGroundedice"; … … 1384 1386 case InversionVzObsEnum : return "InversionVzObs"; 1385 1387 case JEnum : return "J"; 1386 1388 case L1L2ApproximationEnum : return "L1L2Approximation"; 1387 case M LHOApproximationEnum : return "MLHOApproximation";1389 case MOLHOApproximationEnum : return "MOLHOApproximation"; 1388 1390 case L2ProjectionBaseAnalysisEnum : return "L2ProjectionBaseAnalysis"; 1389 1391 case L2ProjectionEPLAnalysisEnum : return "L2ProjectionEPLAnalysis"; 1390 1392 case LACrouzeixRaviartEnum : return "LACrouzeixRaviart"; -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
114 114 else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum; 115 115 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum; 116 116 else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum; 117 else if (strcmp(name,"CalvingTestIndependentRate")==0) return CalvingTestIndependentRateEnum; 117 118 else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum; 118 119 else if (strcmp(name,"CalvingScaleTheta")==0) return CalvingScaleThetaEnum; 119 120 else if (strcmp(name,"CalvingAmpAlpha")==0) return CalvingAmpAlphaEnum; … … 135 136 else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum; 136 137 else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum; 137 138 else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum; 138 else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 142 if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum; 143 else if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 143 144 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum; 144 145 else if (strcmp(name,"DamageC3")==0) return DamageC3Enum; 145 146 else if (strcmp(name,"DamageC4")==0) return DamageC4Enum; … … 179 180 else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum; 180 181 else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum; 181 182 else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum; 182 else if (strcmp(name,"FlowequationIsM LHO")==0) return FlowequationIsMLHOEnum;183 else if (strcmp(name,"FlowequationIsMOLHO")==0) return FlowequationIsMOLHOEnum; 183 184 else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum; 184 185 else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum; 185 186 else if (strcmp(name,"FlowequationIsNitsche")==0) return FlowequationIsNitscheEnum; … … 258 259 else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum; 259 260 else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum; 260 261 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 261 else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 265 if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum; 266 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 266 267 else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum; 267 268 else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum; 268 269 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum; … … 381 382 else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum; 382 383 else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum; 383 384 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 384 else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 388 if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum; 389 else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 389 390 else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum; 390 391 else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum; 391 392 else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum; … … 504 505 else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum; 505 506 else if (strcmp(name,"SmbK")==0) return SmbKEnum; 506 507 else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum; 507 else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum; 511 if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum; 512 else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum; 512 513 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; 513 514 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum; 514 515 else if (strcmp(name,"SmbPhi")==0) return SmbPhiEnum; … … 627 628 else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum; 628 629 else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum; 629 630 else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum; 630 else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum; 634 if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum; 635 else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum; 635 636 else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum; 636 637 else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum; 637 638 else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum; … … 674 675 else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum; 675 676 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 676 677 else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 678 else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum; 677 679 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum; 678 680 else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum; 679 681 else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum; … … 749 751 else if (strcmp(name,"FrictionM")==0) return FrictionMEnum; 750 752 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; 751 753 else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum; 752 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;753 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 757 if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; 758 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 759 else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 758 760 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 759 761 else if (strcmp(name,"Frictionf")==0) return FrictionfEnum; 760 762 else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum; … … 872 874 else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum; 873 875 else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum; 874 876 else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum; 875 else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;876 else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum; 880 if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum; 881 else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum; 882 else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum; 881 883 else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum; 882 884 else if (strcmp(name,"SealevelBarystaticHydroWeights")==0) return SealevelBarystaticHydroWeightsEnum; 883 885 else if (strcmp(name,"SealevelBarystaticHydroArea")==0) return SealevelBarystaticHydroAreaEnum; … … 995 997 else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum; 996 998 else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum; 997 999 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum; 998 else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;999 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum; 1003 if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum; 1004 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; 1005 else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum; 1004 1006 else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum; 1005 1007 else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum; 1006 1008 else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum; … … 1118 1120 else if (strcmp(name,"VxShear")==0) return VxShearEnum; 1119 1121 else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum; 1120 1122 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 1121 else if (strcmp(name,"VyBase")==0) return VyBaseEnum;1122 else if (strcmp(name,"Vy")==0) return VyEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 1126 if (strcmp(name,"VyBase")==0) return VyBaseEnum; 1127 else if (strcmp(name,"Vy")==0) return VyEnum; 1128 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 1127 1129 else if (strcmp(name,"VyObs")==0) return VyObsEnum; 1128 1130 else if (strcmp(name,"VyShear")==0) return VyShearEnum; 1129 1131 else if (strcmp(name,"VySurface")==0) return VySurfaceEnum; … … 1241 1243 else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum; 1242 1244 else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum; 1243 1245 else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum; 1244 else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;1245 else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; 1249 if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum; 1250 else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; 1251 else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; 1250 1252 else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum; 1251 1253 else if (strcmp(name,"InputsEND")==0) return InputsENDEnum; 1252 1254 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; … … 1364 1366 else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum; 1365 1367 else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum; 1366 1368 else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; 1367 else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;1368 else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum; 1372 if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; 1373 else if (strcmp(name,"GenericParam")==0) return GenericParamEnum; 1374 else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum; 1373 1375 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; 1374 1376 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum; 1375 1377 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum; … … 1417 1419 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 1418 1420 else if (strcmp(name,"J")==0) return JEnum; 1419 1421 else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum; 1420 else if (strcmp(name,"M LHOApproximation")==0) return MLHOApproximationEnum;1422 else if (strcmp(name,"MOLHOApproximation")==0) return MOLHOApproximationEnum; 1421 1423 else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum; 1422 1424 else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum; 1423 1425 else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum; … … 1487 1489 else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum; 1488 1490 else if (strcmp(name,"Nodal")==0) return NodalEnum; 1489 1491 else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum; 1490 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;1491 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"None")==0) return NoneEnum; 1495 if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 1496 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 1497 else if (strcmp(name,"None")==0) return NoneEnum; 1496 1498 else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum; 1497 1499 else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1498 1500 else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum; … … 1610 1612 else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; 1611 1613 else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum; 1612 1614 else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum; 1613 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;1614 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;1615 1615 else stage=14; 1616 1616 } 1617 1617 if(stage==14){ 1618 if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 1618 if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 1619 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 1620 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 1619 1621 else if (strcmp(name,"Tria")==0) return TriaEnum; 1620 1622 else if (strcmp(name,"TriaInput")==0) return TriaInputEnum; 1621 1623 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum; -
../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m
1 function md=SetMOLHOBC(md) 2 %SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear 3 % 4 % Usage: 5 % md=SetMOLHOBC(md) 6 % 7 8 9 %node on Dirichlet 10 if md.flowequation.isMOLHO 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.js
21 21 fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?'); 22 22 fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?'); 23 23 fielddisplay(this,'isL1L2','is the L1L2 approximation used ?'); 24 fielddisplay(this,'isM LHO','is the Mono-Layer Higher-Orderapproximation used?');24 fielddisplay(this,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?'); 25 25 fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?'); 26 26 fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?'); 27 27 fielddisplay(this,'isNitscheBC','is weakly imposed condition used?'); … … 40 40 return "flowequation"; 41 41 42 42 }// }}} 43 44 45 46 47 48 49 43 this.extrude = function(md) {//{{{ 44 this.element_equation=project3d(md,'vector',this.element_equation,'type','element'); 45 this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node'); 46 this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node'); 47 this.borderHO=project3d(md,'vector',this.borderHO,'type','node'); 48 this.borderFS=project3d(md,'vector',this.borderFS,'type','node'); 49 return this; 50 50 }//}}} 51 51 this.checkconsistency = function(md,solution,analyses) {//{{{ 52 52 … … 58 58 checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]); 59 59 checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]); 60 60 checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]); 61 checkfield(md,'fieldname','flowequation.isM LHO','numel',[1],'values',[0, 1]);61 checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0, 1]); 62 62 checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]); 63 63 checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]); 64 64 checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0, 1]); … … 92 92 } 93 93 else throw Error('Case not supported yet'); 94 94 95 if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isM LHO | this.isHO | this.isFS)){95 if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMOLHO | this.isHO | this.isFS)){ 96 96 checkmessage(md,['no element types set for this model']); 97 97 } 98 98 if(ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis', analyses),1)){ … … 107 107 WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean'); 108 108 WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean'); 109 109 WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean'); 110 WriteData(fid,prefix,'object',this,'fieldname','isM LHO','format','Boolean');110 WriteData(fid,prefix,'object',this,'fieldname','isMOLHO','format','Boolean'); 111 111 WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean'); 112 112 WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean'); 113 113 WriteData(fid,prefix,'object',this,'fieldname','isNitscheBC','format','Boolean'); … … 137 137 this.isSIA = 0; 138 138 this.isSSA = 0; 139 139 this.isL1L2 = 0; 140 this.isM LHO = 0;140 this.isMOLHO = 0; 141 141 this.isHO = 0; 142 142 this.isFS = 0; 143 143 this.isNitscheBC = 0; -
../trunk-jpl/src/m/classes/inversion.m
103 103 104 104 %Only SSA, HO and FS are supported right now 105 105 if strcmp(solution,'StressbalanceSolution') 106 if ~(md.flowequation.isSSA || md.flowequation.isM LHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),107 md = checkmessage(md,['inversion can only be performed for SSA, M LHO, HO or FS ice flow models']);106 if ~(md.flowequation.isSSA || md.flowequation.isMOLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2), 107 md = checkmessage(md,['inversion can only be performed for SSA, MOLHO, HO or FS ice flow models']); 108 108 end 109 109 end 110 110 if strcmp(solution,'BalancethicknessSolution') -
../trunk-jpl/src/m/classes/stressbalance.py
58 58 s += '{}\n'.format(fielddisplay(self, 'spcvy', 'y-axis velocity constraint (NaN means no constraint) [m / yr]')) 59 59 s += '{}\n'.format(fielddisplay(self, 'spcvz', 'z-axis velocity constraint (NaN means no constraint) [m / yr]')) 60 60 s += '{}\n'.format(fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice')) 61 s += ' M LHO boundary conditions:\n'61 s += ' MOLHO boundary conditions:\n' 62 62 s += '{}\n'.format(fielddisplay(self, 'spcvx_base', 'x-axis basal velocity constraint (NaN means no constraint) [m / yr]')) 63 63 s += '{}\n'.format(fielddisplay(self, 'spcvy_base', 'y-axis basal velocity constraint (NaN means no constraint) [m / yr]')) 64 64 s += '{}\n'.format(fielddisplay(self, 'spcvx_shear', 'x-axis shear velocity constraint (NaN means no constraint) [m / yr]')) … … 85 85 self.referential = project3d(md, 'vector', self.referential, 'type', 'node') 86 86 self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node') 87 87 88 if md.flowequation.isM LHO:88 if md.flowequation.isMOLHO: 89 89 self.spcvx_base = project3d(md, 'vector', self.spcvx_base, 'type', 'node') 90 90 self.spcvy_base = project3d(md, 'vector', self.spcvy_base, 'type', 'node') 91 91 self.spcvx_shear = project3d(md, 'vector', self.spcvx_shear, 'type', 'poly', 'degree', 4) … … 175 175 pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase)) 176 176 if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))): 177 177 md.checkmessage("no referential should be specified for basal vertices of grounded ice") 178 if md.flowequation.isM LHO:178 if md.flowequation.isMOLHO: 179 179 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_base', 'Inf', 1, 'timeseries', 1) 180 180 md = checkfield(md, 'fieldname', 'stressbalance.spcvy_base', 'Inf', 1, 'timeseries', 1) 181 181 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_shear', 'Inf', 1, 'timeseries', 1) … … 214 214 outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:] 215 215 outputs = outputscopy 216 216 WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray') 217 # M LHO218 if md.flowequation.isM LHO:217 # MOLHO 218 if md.flowequation.isMOLHO: 219 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 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 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) -
../trunk-jpl/src/c/classes/Materials/Matestar.h
75 75 76 76 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 77 77 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 78 void ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);79 void ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);78 void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input); 79 void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input); 80 80 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf); 81 81 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 82 82 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff); -
../trunk-jpl/src/c/classes/Materials/Matice.cpp
733 733 /*Assign output pointer*/ 734 734 *pviscosity=viscosity; 735 735 }/*}}}*/ 736 void Matice::ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/736 void Matice::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/ 737 737 738 738 /*Intermediaries*/ 739 739 IssmDouble epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz]; */ … … 754 754 zeta=0.5*(gauss_seg->coord1+1); 755 755 756 756 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/ 757 element->StrainRateM LHO(&epsilon[0],xyz_list,gauss,757 element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss, 758 758 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 759 759 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 760 760 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]); … … 794 794 /*Clean up*/ 795 795 delete gauss_seg; 796 796 }/*}}}*/ 797 void Matice::ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/797 void Matice::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/ 798 798 799 799 /* To compute the additional 5 terms in the viscosity appear in the adjoint equation*/ 800 800 /*Intermediaries*/ … … 816 816 zeta=0.5*(gauss_seg->coord1+1); 817 817 818 818 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/ 819 element->StrainRateM LHO(&epsilon[0],xyz_list,gauss,819 element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss, 820 820 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta); 821 821 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 822 822 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]); -
../trunk-jpl/src/c/classes/Materials/Matice.h
77 77 78 78 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 79 79 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 80 void ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);81 void ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);80 void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input); 81 void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input); 82 82 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf); 83 83 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 84 84 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff){_error_("not supported");}; -
../trunk-jpl/src/c/classes/Materials/Matlitho.h
71 71 72 72 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");}; 73 73 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");}; 74 void ViscosityM LHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};75 void ViscosityM LHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};74 void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");}; 75 void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");}; 76 76 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");}; 77 77 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");}; 78 78 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff){_error_("not supported");}; -
../trunk-jpl/src/c/classes/Node.cpp
117 117 if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){ 118 118 this->HardDeactivate(); 119 119 } 120 if(in_approximation==M LHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){120 if(in_approximation==MOLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){ 121 121 this->HardDeactivate(); 122 122 } 123 123 if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){ -
../trunk-jpl/src/c/cores/stressbalance_core.cpp
18 18 /*parameters: */ 19 19 bool dakota_analysis,control_analysis; 20 20 int domaintype; 21 bool isSIA,isSSA,isL1L2,isM LHO,isHO,isFS,isNitsche;21 bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,isNitsche; 22 22 bool save_results; 23 23 int solution_type; 24 24 int numoutputs = 0; … … 30 30 femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum); 31 31 femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum); 32 32 femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum); 33 femmodel->parameters->FindParam(&isM LHO,FlowequationIsMLHOEnum);33 femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum); 34 34 femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum); 35 35 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum); 36 36 femmodel->parameters->FindParam(&isNitsche,FlowequationIsNitscheEnum); … … 74 74 } 75 75 76 76 /*Compute stressbalance for SSA L1L2 HO and FS*/ 77 if(isSSA || isL1L2 || isM LHO || isHO || isFS){77 if(isSSA || isL1L2 || isMOLHO || isHO || isFS){ 78 78 analysis = new StressbalanceAnalysis(); 79 79 analysis->Core(femmodel); 80 80 delete analysis; … … 81 81 } 82 82 83 83 /*Compute vertical velocities*/ 84 if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isM LHO || isHO)){84 if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMOLHO || isHO)){ 85 85 86 86 /*We need basal melt rates for vertical velocity*/ 87 87 bmb_core(femmodel); -
../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
65 65 Input* vy_input = NULL; 66 66 Input* vyobs_input = NULL; 67 67 68 /*Read SurfaceEnum from 2D models:SSA, L1L2, M LHO*/68 /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/ 69 69 if (domaintype == Domain2DhorizontalEnum) { 70 70 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 71 71 if(numcomponents==2){ -
../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
73 73 Input* vy_input = NULL; 74 74 Input* vyobs_input = NULL; 75 75 76 /*Read SurfaceEnum from 2D models:SSA, L1L2, M LHO*/76 /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/ 77 77 if (domaintype == Domain2DhorizontalEnum) { 78 78 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 79 79 if(numcomponents==2){ -
../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
67 67 Input* vy_input = NULL; 68 68 Input* vyobs_input = NULL; 69 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, M LHO*/70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/ 71 71 if (domaintype == Domain2DhorizontalEnum) { 72 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 73 if(numcomponents==2){ -
../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
67 67 Input* vy_input = NULL; 68 68 Input* vyobs_input = NULL; 69 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, M LHO*/70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/ 71 71 if (domaintype == Domain2DhorizontalEnum) { 72 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 73 if(numcomponents==2){ -
../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
67 67 Input* vy_input = NULL; 68 68 Input* vyobs_input = NULL; 69 69 70 /*Read SurfaceEnum from 2D models:SSA, L1L2, M LHO*/70 /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/ 71 71 if (domaintype == Domain2DhorizontalEnum) { 72 72 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input); 73 73 if(numcomponents==2){ -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
169 169 FlowequationIsFSEnum, 170 170 FlowequationIsHOEnum, 171 171 FlowequationIsL1L2Enum, 172 FlowequationIsM LHOEnum,172 FlowequationIsMOLHOEnum, 173 173 FlowequationIsSIAEnum, 174 174 FlowequationIsSSAEnum, 175 175 FlowequationIsNitscheEnum, … … 1383 1383 InversionVzObsEnum, 1384 1384 JEnum, 1385 1385 L1L2ApproximationEnum, 1386 M LHOApproximationEnum,1386 MOLHOApproximationEnum, 1387 1387 L2ProjectionBaseAnalysisEnum, 1388 1388 L2ProjectionEPLAnalysisEnum, 1389 1389 LACrouzeixRaviartEnum, -
../trunk-jpl/src/c/shared/Enum/Enumjl.vim
105 105 syn keyword juliaConstC CalvingLawEnum 106 106 syn keyword juliaConstC CalvingMinthicknessEnum 107 107 syn keyword juliaConstC CalvingTestSpeedfactorEnum 108 syn keyword juliaConstC CalvingTestIndependentRateEnum 108 109 syn keyword juliaConstC CalvingUseParamEnum 109 110 syn keyword juliaConstC CalvingScaleThetaEnum 110 111 syn keyword juliaConstC CalvingAmpAlphaEnum … … 167 168 syn keyword juliaConstC FlowequationIsFSEnum 168 169 syn keyword juliaConstC FlowequationIsHOEnum 169 170 syn keyword juliaConstC FlowequationIsL1L2Enum 170 syn keyword juliaConstC FlowequationIsM LHOEnum171 syn keyword juliaConstC FlowequationIsMOLHOEnum 171 172 syn keyword juliaConstC FlowequationIsSIAEnum 172 173 syn keyword juliaConstC FlowequationIsSSAEnum 173 174 syn keyword juliaConstC FlowequationIsNitscheEnum … … 650 651 syn keyword juliaConstC BottomPressureOldEnum 651 652 syn keyword juliaConstC CalvingCalvingrateEnum 652 653 syn keyword juliaConstC CalvingHabFractionEnum 654 syn keyword juliaConstC CalvingAblationrateEnum 653 655 syn keyword juliaConstC CalvingMeltingrateEnum 654 656 syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum 655 657 syn keyword juliaConstC CalvingStressThresholdGroundediceEnum … … 1375 1377 syn keyword juliaConstC InversionVzObsEnum 1376 1378 syn keyword juliaConstC JEnum 1377 1379 syn keyword juliaConstC L1L2ApproximationEnum 1378 syn keyword juliaConstC M LHOApproximationEnum1380 syn keyword juliaConstC MOLHOApproximationEnum 1379 1381 syn keyword juliaConstC L2ProjectionBaseAnalysisEnum 1380 1382 syn keyword juliaConstC L2ProjectionEPLAnalysisEnum 1381 1383 syn keyword juliaConstC LACrouzeixRaviartEnum -
../trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
344 344 case 1: return SIAApproximationEnum; 345 345 case 2: return SSAApproximationEnum; 346 346 case 3: return L1L2ApproximationEnum; 347 case 4: return M LHOApproximationEnum;347 case 4: return MOLHOApproximationEnum; 348 348 case 5: return HOApproximationEnum; 349 349 case 6: return FSApproximationEnum; 350 350 case 7: return SSAHOApproximationEnum; … … 359 359 case 1: return SIAApproximationEnum; 360 360 case 2: return SSAApproximationEnum; 361 361 case 3: return L1L2ApproximationEnum; 362 case 4: return M LHOApproximationEnum;362 case 4: return MOLHOApproximationEnum; 363 363 case 5: return HOApproximationEnum; 364 364 case 6: return FSApproximationEnum; 365 365 case 7: return SSAHOApproximationEnum; -
../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py
1 import numpy as np 2 3 def SetMOLHOBC(md): 4 """ 5 SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear 6 7 Usage: 8 md = SetIceShelfBC(md, varargin) 9 10 Example: 11 md = SetIceShelfBC(md) 12 13 """ 14 15 #node on Dirichlet (boundary and ~icefront) 16 md.stressbalance.spcvx_base = md.stressbalance.spcvx 17 md.stressbalance.spcvy_base = md.stressbalance.spcvy 18 md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx 19 md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy 20 21 return md -
../trunk-jpl/src/m/classes/flowequation.py
18 18 self.isSIA = 0 19 19 self.isSSA = 0 20 20 self.isL1L2 = 0 21 self.isM LHO = 021 self.isMOLHO = 0 22 22 self.isHO = 0 23 23 self.isFS = 0 24 24 self.isNitscheBC = 0 … … 45 45 s += '{}\n'.format(fielddisplay(self, 'isSIA', "is the Shallow Ice Approximation (SIA) used?")) 46 46 s += '{}\n'.format(fielddisplay(self, 'isSSA', "is the Shelfy-Stream Approximation (SSA) used?")) 47 47 s += '{}\n'.format(fielddisplay(self, 'isL1L2', "are L1L2 equations used?")) 48 s += '{}\n'.format(fielddisplay(self, 'isM LHO', "are Mono-layer Higher-Orderequations used?"))48 s += '{}\n'.format(fielddisplay(self, 'isMOLHO', "are MOno-layer Higher-Order (MOLHO) equations used?")) 49 49 s += '{}\n'.format(fielddisplay(self, 'isHO', "is the Higher-Order (HO) approximation used?")) 50 50 s += '{}\n'.format(fielddisplay(self, 'isFS', "are the Full-FS (FS) equations used?")) 51 51 s += '{}\n'.format(fielddisplay(self, 'isNitscheBC', "is weakly imposed condition used?")) … … 89 89 md = checkfield(md, 'fieldname', 'flowequation.isSIA', 'numel', [1], 'values', [0, 1]) 90 90 md = checkfield(md, 'fieldname', 'flowequation.isSSA', 'numel', [1], 'values', [0, 1]) 91 91 md = checkfield(md, 'fieldname', 'flowequation.isL1L2', 'numel', [1], 'values', [0, 1]) 92 md = checkfield(md, 'fieldname', 'flowequation.isM LHO', 'numel', [1], 'values', [0, 1])92 md = checkfield(md, 'fieldname', 'flowequation.isMOLHO', 'numel', [1], 'values', [0, 1]) 93 93 md = checkfield(md, 'fieldname', 'flowequation.isHO', 'numel', [1], 'values', [0, 1]) 94 94 md = checkfield(md, 'fieldname', 'flowequation.isFS', 'numel', [1], 'values', [0, 1]) 95 95 md = checkfield(md, 'fieldname', 'flowequation.isNitscheBC', 'numel', [1], 'values', [0, 1]) … … 120 120 else: 121 121 raise RuntimeError('Case not supported yet') 122 122 123 if not (self.isSIA or self.isSSA or self.isL1L2 or self.isM LHO or self.isHO or self.isFS):123 if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMOLHO or self.isHO or self.isFS): 124 124 md.checkmessage("no element types set for this model") 125 125 if 'StressbalanceSIAAnalysis' in analyses: 126 126 if any(self.element_equation == 1): … … 133 133 WriteData(fid, prefix, 'object', self, 'fieldname', 'isSIA', 'format', 'Boolean') 134 134 WriteData(fid, prefix, 'object', self, 'fieldname', 'isSSA', 'format', 'Boolean') 135 135 WriteData(fid, prefix, 'object', self, 'fieldname', 'isL1L2', 'format', 'Boolean') 136 WriteData(fid, prefix, 'object', self, 'fieldname', 'isM LHO', 'format', 'Boolean')136 WriteData(fid, prefix, 'object', self, 'fieldname', 'isMOLHO', 'format', 'Boolean') 137 137 WriteData(fid, prefix, 'object', self, 'fieldname', 'isHO', 'format', 'Boolean') 138 138 WriteData(fid, prefix, 'object', self, 'fieldname', 'isFS', 'format', 'Boolean') 139 139 WriteData(fid, prefix, 'object', self, 'fieldname', 'isNitscheBC', 'format', 'Boolean') -
../trunk-jpl/src/m/classes/stressbalance.m
35 35 self.referential=project3d(md,'vector',self.referential,'type','node'); 36 36 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node'); 37 37 38 % for M LHO39 if md.flowequation.isM LHO38 % for MOLHO 39 if md.flowequation.isMOLHO 40 40 self.spcvx_base=project3d(md,'vector',self.spcvx_base,'type','node'); 41 41 self.spcvy_base=project3d(md,'vector',self.spcvy_base,'type','node'); 42 42 self.spcvx_shear=project3d(md,'vector',self.spcvx_shear,'type','poly','degree',4); … … 133 133 end 134 134 md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0); 135 135 end 136 % CHECK THIS ONLY WORKS FOR M LHO137 if md.flowequation.isM LHO136 % CHECK THIS ONLY WORKS FOR MOLHO 137 if md.flowequation.isMOLHO 138 138 md = checkfield(md,'fieldname','stressbalance.spcvx_base','Inf',1,'timeseries',1); 139 139 md = checkfield(md,'fieldname','stressbalance.spcvy_base','Inf',1,'timeseries',1); 140 140 md = checkfield(md,'fieldname','stressbalance.spcvx_shear','Inf',1,'timeseries',1); … … 168 168 fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'); 169 169 fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'); 170 170 171 disp(sprintf('\n %s','M LHO boundary conditions:'));171 disp(sprintf('\n %s','MOLHO boundary conditions:')); 172 172 fielddisplay(self,'spcvx_base','x-axis basal velocity constraint (NaN means no constraint) [m/yr]'); 173 173 fielddisplay(self,'spcvy_base','y-axis basal velocity constraint (NaN means no constraint) [m/yr]'); 174 174 fielddisplay(self,'spcvx_shear','x-axis shear velocity constraint (NaN means no constraint) [m/yr]'); … … 225 225 outputs = [outputs defaultoutputs(self,md)]; %add defaults 226 226 end 227 227 WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray'); 228 % for M LHO229 if (md.flowequation.isM LHO)228 % for MOLHO 229 if (md.flowequation.isMOLHO) 230 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 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 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); -
../trunk-jpl/src/m/parameterization/setflowequation.m
2 2 %SETFLOWEQUATION - associate a solution type to each element 3 3 % 4 4 % This routine works like plotmodel: it works with an even number of inputs 5 % 'SIA','SSA','L1L2','M LHO','HO','FS' and 'fill' are the possible options5 % 'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options 6 6 % that must be followed by the corresponding exp file or flags list 7 7 % It can either be a domain file (argus type, .exp extension), or an array of element flags. 8 8 % If user wants every element outside the domain to be … … 10 10 % an empty string '' will be considered as an empty domain 11 11 % a string 'all' will be considered as the entire domain 12 12 % You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling' 13 % NB: L1L2 and M LHO cannot currently be coupled to any other ice flow model13 % NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model 14 14 % 15 15 % Usage: 16 16 % md=setflowequation(md,varargin) … … 38 38 SSAflag = FlagElements(md,getfieldvalue(options,'SSA','')); 39 39 HOflag = FlagElements(md,getfieldvalue(options,'HO','')); 40 40 L1L2flag = FlagElements(md,getfieldvalue(options,'L1L2','')); 41 M LHOflag = FlagElements(md,getfieldvalue(options,'MLHO',''));41 MOLHOflag = FlagElements(md,getfieldvalue(options,'MOLHO','')); 42 42 FSflag = FlagElements(md,getfieldvalue(options,'FS','')); 43 43 filltype = getfieldvalue(options,'fill','none'); 44 44 displayunused(options); … … 53 53 end 54 54 55 55 %check that each element has at least one flag 56 if any(SIAflag+SSAflag+HOflag+L1L2flag+M LHOflag+FSflag==0),56 if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag==0), 57 57 error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'' and ''FS''') 58 58 end 59 59 60 60 %check that each element has only one flag 61 if any(SIAflag+SSAflag+HOflag+L1L2flag+M LHOflag+FSflag>1),61 if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag>1), 62 62 disp('setflowequation.m: Warning: some elements have several types, higher order type is used for them') 63 63 SIAflag(find(SIAflag & SSAflag))=0; 64 64 SIAflag(find(SIAflag & HOflag))=0; … … 69 69 if any(L1L2flag) & any(SIAflag | SSAflag | HOflag | FSflag) 70 70 error('L1L2 cannot be coupled to any other model'); 71 71 end 72 if any(M LHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)73 error('M LHO cannot be coupled to any other model');72 if any(MOLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag) 73 error('MOLHO cannot be coupled to any other model'); 74 74 end 75 75 76 76 %Check that no HO or FS for 2d mesh … … 90 90 nodeonSSA=zeros(md.mesh.numberofvertices,1); nodeonSSA(md.mesh.elements(find(SSAflag),:))=1; 91 91 nodeonHO=zeros(md.mesh.numberofvertices,1); nodeonHO(md.mesh.elements(find(HOflag),:))=1; 92 92 nodeonL1L2=zeros(md.mesh.numberofvertices,1); nodeonL1L2(md.mesh.elements(find(L1L2flag),:))=1; 93 nodeonM LHO=zeros(md.mesh.numberofvertices,1); nodeonMLHO(md.mesh.elements(find(MLHOflag),:))=1;93 nodeonMOLHO=zeros(md.mesh.numberofvertices,1); nodeonMOLHO(md.mesh.elements(find(MOLHOflag),:))=1; 94 94 nodeonFS=zeros(md.mesh.numberofvertices,1); 95 95 noneflag=zeros(md.mesh.numberofelements,1); 96 96 … … 247 247 md.flowequation.element_equation(find(SIAflag))=1; 248 248 md.flowequation.element_equation(find(SSAflag))=2; 249 249 md.flowequation.element_equation(find(L1L2flag))=3; 250 md.flowequation.element_equation(find(M LHOflag))=4;250 md.flowequation.element_equation(find(MOLHOflag))=4; 251 251 md.flowequation.element_equation(find(HOflag))=5; 252 252 md.flowequation.element_equation(find(FSflag))=6; 253 253 md.flowequation.element_equation(find(SSAHOflag))=7; … … 263 263 md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1); 264 264 pos=find(nodeonSSA); md.flowequation.vertex_equation(pos)=2; 265 265 pos=find(nodeonL1L2); md.flowequation.vertex_equation(pos)=3; 266 pos=find(nodeonM LHO); md.flowequation.vertex_equation(pos)=4;266 pos=find(nodeonMOLHO); md.flowequation.vertex_equation(pos)=4; 267 267 pos=find(nodeonHO); md.flowequation.vertex_equation(pos)=5; 268 268 pos=find(nodeonFS); md.flowequation.vertex_equation(pos)=6; 269 269 %DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority) … … 286 286 md.flowequation.isSIA = double(any(md.flowequation.element_equation == 1)); 287 287 md.flowequation.isSSA = double(any(md.flowequation.element_equation == 2)); 288 288 md.flowequation.isL1L2 = double(any(md.flowequation.element_equation == 3)); 289 md.flowequation.isM LHO = double(any(md.flowequation.element_equation == 4));289 md.flowequation.isMOLHO = double(any(md.flowequation.element_equation == 4)); 290 290 md.flowequation.isHO = double(any(md.flowequation.element_equation == 5)); 291 291 md.flowequation.isFS = double(any(md.flowequation.element_equation == 6)); 292 292 -
../trunk-jpl/src/m/plot/plot_elementstype.m
36 36 patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor); 37 37 end 38 38 end 39 legend(p,'None','SIA','SSA','L1L2','M LHO','HO',...39 legend(p,'None','SIA','SSA','L1L2','MOLHO','HO',... 40 40 'SSAHO','FS','SSAFS','HOFS'); 41 41 42 42 %apply options -
../trunk-jpl/test/NightlyRun/test128.py
1 #Test Name: SquareShelfConstrainedTranM LHO2d1 #Test Name: SquareShelfConstrainedTranMOLHO2d 2 2 from model import * 3 from SetM LHOBC import SetMLHOBC3 from SetMOLHOBC import SetMOLHOBC 4 4 from socket import gethostname 5 5 from triangle import * 6 6 from setmask import * … … 12 12 md = triangle(model(), '../Exp/Square.exp', 150000) 13 13 md = setmask(md, 'all', '') 14 14 md = parameterize(md, '../Par/SquareShelfConstrained.py') 15 md = setflowequation(md, 'M LHO', 'all')15 md = setflowequation(md, 'MOLHO', 'all') 16 16 md.cluster = generic('name', gethostname(), 'np', 3) 17 17 md.transient.requested_outputs = ['IceVolume','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'] 18 18 19 md = SetM LHOBC(md)19 md = SetMOLHOBC(md) 20 20 md = solve(md, 'Transient') 21 21 22 22 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test248.py
1 #Test Name: SquareShelfStressM LHO2d1 #Test Name: SquareShelfStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 md = triangle(model(), '../Exp/Square.exp', 150000) 12 12 md = setmask(md, 'all', '') 13 13 md = parameterize(md, '../Par/SquareShelf.py') 14 md = setflowequation(md, 'M LHO', 'all')14 md = setflowequation(md, 'MOLHO', '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 = SetM LHOBC(md)17 md = SetMOLHOBC(md) 18 18 md = solve(md, 'Stressbalance') 19 19 20 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test254.py
1 #Test Name: SquareShelfConstrainedM LHO1 #Test Name: SquareShelfConstrainedMOLHO 2 2 from model import * 3 3 from socket import gethostname 4 4 import numpy as np … … 8 8 from setflowequation import setflowequation 9 9 from paterson import paterson 10 10 from solve import solve 11 from SetM LHOBC import SetMLHOBC11 from SetMOLHOBC import SetMOLHOBC 12 12 from generic import generic 13 13 14 14 md = triangle(model(), '../Exp/Square.exp', 150000) 15 15 md = setmask(md, 'all', '') 16 16 md = parameterize(md, '../Par/SquareShelf.py') 17 md = setflowequation(md, 'M LHO', 'all')17 md = setflowequation(md, 'MOLHO', 'all') 18 18 md.cluster = generic('name', gethostname(), 'np', 3) 19 19 20 20 # redo the parameter file for this special shelf. … … 70 70 md.mask.ice_levelset = -1 + nodeonicefront 71 71 72 72 md.stressbalance.requested_outputs = ['default', 'VySurface', 'VyShear', 'VyBase'] 73 md = SetM LHOBC(md)73 md = SetMOLHOBC(md) 74 74 md = solve(md, 'Stressbalance') 75 75 76 76 # create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292. -
../trunk-jpl/src/m/parameterization/setflowequation.py
8 8 """SETFLOWEQUATION - associate a solution type to each element 9 9 10 10 This routine works like plotmodel: it works with an even number of inputs 11 'SIA', 'SSA', 'HO', 'L1L2', 'M LHO', 'FS' and 'fill' are the possible11 'SIA', 'SSA', 'HO', 'L1L2', 'MOLHO', 'FS' and 'fill' are the possible 12 12 options that must be followed by the corresponding exp file or flags list. 13 13 It can either be a domain file (argus type, .exp extension), or an array of 14 14 element flags. … … 44 44 SSAflag = FlagElements(md, options.getfieldvalue('SSA', '')) 45 45 HOflag = FlagElements(md, options.getfieldvalue('HO', '')) 46 46 L1L2flag = FlagElements(md, options.getfieldvalue('L1L2', '')) 47 M LHOflag = FlagElements(md, options.getfieldvalue('MLHO', ''))47 MOLHOflag = FlagElements(md, options.getfieldvalue('MOLHO', '')) 48 48 FSflag = FlagElements(md, options.getfieldvalue('FS', '')) 49 49 filltype = options.getfieldvalue('fill', 'none') 50 50 … … 56 56 elif 'HO' in filltype: 57 57 HOflag = ~SIAflag & ~SSAflag & ~FSflag 58 58 #check that each element has at least one flag 59 if not any(SIAflag + SSAflag + L1L2flag + M LHOflag + HOflag + FSflag):59 if not any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag): 60 60 raise TypeError("elements type not assigned, supported models are 'SIA', 'SSA', 'HO' and 'FS'") 61 61 62 62 #check that each element has only one flag 63 if any(SIAflag + SSAflag + L1L2flag + M LHOflag + HOflag + FSflag > 1):63 if any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag > 1): 64 64 print('Warning: setflowequation.py: some elements have several types, higher order type is used for them') 65 65 SIAflag[np.where(np.logical_and(SIAflag, SSAflag))] = False 66 66 SIAflag[np.where(np.logical_and(SIAflag, HOflag))] = False 67 67 SSAflag[np.where(np.logical_and(SSAflag, HOflag))] = False 68 68 69 #check that L1L2 and M LHO is not coupled to any other model for now69 #check that L1L2 and MOLHO is not coupled to any other model for now 70 70 if any(L1L2flag) and any(SIAflag + SSAflag + HOflag + FSflag): 71 71 raise TypeError('L1L2 cannot be coupled to any other model') 72 if any(M LHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):73 raise TypeError('M LHO cannot be coupled to any other model')72 if any(MOLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag): 73 raise TypeError('MOLHO cannot be coupled to any other model') 74 74 75 75 #Check that no HO or FS for 2d mesh 76 76 if md.mesh.domaintype == '2Dhorizontal': … … 88 88 nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True 89 89 nodeonL1L2 = np.zeros(md.mesh.numberofvertices, bool) 90 90 nodeonL1L2[md.mesh.elements[np.where(L1L2flag), :] - 1] = True 91 nodeonM LHO = np.zeros(md.mesh.numberofvertices, bool)92 nodeonM LHO[md.mesh.elements[np.where(MLHOflag), :] - 1] = True91 nodeonMOLHO = np.zeros(md.mesh.numberofvertices, bool) 92 nodeonMOLHO[md.mesh.elements[np.where(MOLHOflag), :] - 1] = True 93 93 nodeonHO = np.zeros(md.mesh.numberofvertices, bool) 94 94 nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True 95 95 nodeonFS = np.zeros(md.mesh.numberofvertices, bool) … … 240 240 md.flowequation.element_equation[np.where(SIAflag)] = 1 241 241 md.flowequation.element_equation[np.where(SSAflag)] = 2 242 242 md.flowequation.element_equation[np.where(L1L2flag)] = 3 243 md.flowequation.element_equation[np.where(M LHOflag)] = 4243 md.flowequation.element_equation[np.where(MOLHOflag)] = 4 244 244 md.flowequation.element_equation[np.where(HOflag)] = 5 245 245 md.flowequation.element_equation[np.where(FSflag)] = 6 246 246 md.flowequation.element_equation[np.where(SSAHOflag)] = 7 … … 258 258 md.flowequation.vertex_equation[pos] = 2 259 259 pos = np.where(nodeonL1L2) 260 260 md.flowequation.vertex_equation[pos] = 3 261 pos = np.where(nodeonM LHO)261 pos = np.where(nodeonMOLHO) 262 262 md.flowequation.vertex_equation[pos] = 4 263 263 pos = np.where(nodeonHO) 264 264 md.flowequation.vertex_equation[pos] = 5 … … 282 282 md.flowequation.isSIA = any(md.flowequation.element_equation == 1) 283 283 md.flowequation.isSSA = any(md.flowequation.element_equation == 2) 284 284 md.flowequation.isL1L2= any(md.flowequation.element_equation == 3) 285 md.flowequation.isM LHO= any(md.flowequation.element_equation == 4)285 md.flowequation.isMOLHO= any(md.flowequation.element_equation == 4) 286 286 md.flowequation.isHO = any(md.flowequation.element_equation == 5) 287 287 md.flowequation.isFS = any(md.flowequation.element_equation == 6) 288 288 -
../trunk-jpl/test/NightlyRun/test128.m
1 %Test Name: SquareShelfConstrainedTranM LHO2d1 %Test Name: SquareShelfConstrainedTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelfConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 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=SetM LHOBC(md);9 md=SetMOLHOBC(md); 10 10 md=solve(md,'Transient'); 11 11 12 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test248.m
1 %Test Name: SquareShelfStressM LHO2d1 %Test Name: SquareShelfStressMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','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=SetM LHOBC(md);8 md=SetMOLHOBC(md); 9 9 md=solve(md,'Stressbalance'); 10 10 11 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test254.m
1 %Test Name: SquareShelfConstrainedM LHO1 %Test Name: SquareShelfConstrainedMOLHO 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 8 8 %redo the parameter file for this special shelf. … … 57 57 md.mask.ice_levelset=-1+nodeonicefront; 58 58 59 59 md.stressbalance.requested_outputs={'default','VySurface','VyShear','VyBase'}; 60 md=SetM LHOBC(md);60 md=SetMOLHOBC(md); 61 61 md=solve(md,'Stressbalance'); 62 62 63 63 %create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292. -
../trunk-jpl/test/NightlyRun/test256.m
1 %Test Name: SquareShelfStressM LHO2dTransientIncrNonHydro1 %Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 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=SetM LHOBC(md);9 md=SetMOLHOBC(md); 10 10 md=solve(md,'Transient'); 11 11 12 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test127.py
1 #Test Name: SquareShelfConstrainedStressM LHO2d1 #Test Name: SquareShelfConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 8 8 from solve import solve 9 9 from massfluxatgate import massfluxatgate 10 10 from generic import generic 11 from SetM LHOBC import SetMLHOBC11 from SetMOLHOBC import SetMOLHOBC 12 12 13 13 md = triangle(model(), '../Exp/Square.exp', 50000) 14 14 md = setmask(md, 'all', '') 15 15 md = parameterize(md, '../Par/SquareShelfConstrained.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 md.cluster = generic('name', gethostname(), 'np', 2) 18 18 #outputs 19 #FIXME compute the stress components for M LHO19 #FIXME compute the stress components for MOLHO 20 20 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6'] 21 21 #md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6'] 22 22 md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'), … … 25 25 massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'), 26 26 massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'), 27 27 massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')] 28 md = SetM LHOBC(md)28 md = SetMOLHOBC(md) 29 29 md = solve(md, 'Stressbalance') 30 30 31 31 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test129.py
1 #Test Name: SquareShelfConstrainedRestartTranM LHO2d1 #Test Name: SquareShelfConstrainedRestartTranMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 from SetM LHOBC import SetMLHOBC4 from SetMOLHOBC import SetMOLHOBC 5 5 from triangle import * 6 6 from setmask import * 7 7 from parameterize import * … … 13 13 md = triangle(model(), '../Exp/Square.exp', 150000.) 14 14 md = setmask(md, 'all', '') 15 15 md = parameterize(md, '../Par/SquareShelfConstrained.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 md.cluster = generic('name', gethostname(), 'np', 1) 18 18 md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'] 19 19 … … 23 23 # time steps and resolution 24 24 md.timestepping.final_time = 19 25 25 md.settings.output_frequency = 2 26 md = SetM LHOBC(md)26 md = SetMOLHOBC(md) 27 27 28 28 md = solve(md, 'Transient') 29 29 md2 = copy.deepcopy(md) -
../trunk-jpl/test/NightlyRun/test249.py
1 #Test Name: SquareShelfTranM LHO2d1 #Test Name: SquareShelfTranMOLHO2d 2 2 3 3 from model import * 4 4 from socket import gethostname … … 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 10 from generic import generic 11 from SetM LHOBC import SetMLHOBC11 from SetMOLHOBC import SetMOLHOBC 12 12 13 13 md = triangle(model(), '../Exp/Square.exp', 150000) 14 14 md = setmask(md, 'all', '') 15 15 md = parameterize(md, '../Par/SquareShelf.py') 16 16 md.basalforcings.floatingice_melting_rate[:] = 1. 17 md = setflowequation(md, 'M LHO', 'all')17 md = setflowequation(md, 'MOLHO', 'all') 18 18 md.cluster = generic('name', gethostname(), 'np', 3) 19 19 md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb'] 20 md = SetM LHOBC(md)20 md = SetMOLHOBC(md) 21 21 md = solve(md, 'Transient') 22 22 23 23 -
../trunk-jpl/test/NightlyRun/test255.py
1 #Test Name: SquareShelfStressM LHO2dTransientIncrHydro1 #Test Name: SquareShelfStressMOLHO2dTransientIncrHydro 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 md = triangle(model(), '../Exp/Square.exp', 150000.) 12 12 md = setmask(md, 'all', '') 13 13 md = parameterize(md, '../Par/SquareShelf.py') 14 md = setflowequation(md, 'M LHO', 'all')14 md = setflowequation(md, 'MOLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 16 md.masstransport.hydrostatic_adjustment = 'Incremental' 17 md = SetM LHOBC(md)17 md = SetMOLHOBC(md) 18 18 md = solve(md, 'Transient') 19 19 20 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test256.py
1 #Test Name: SquareShelfStressM LHO2dTransientIncrNonHydro1 #Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 12 12 md = triangle(model(), '../Exp/Square.exp', 150000.) 13 13 md = setmask(md, 'all', '') 14 14 md = parameterize(md, '../Par/SquareShelf.py') 15 md = setflowequation(md, 'M LHO', 'all')15 md = setflowequation(md, 'MOLHO', 'all') 16 16 md.geometry.base = md.geometry.base + 50. 17 17 md.geometry.surface = md.geometry.surface + 50. 18 18 md.cluster = generic('name', gethostname(), 'np', 1) 19 19 md.masstransport.hydrostatic_adjustment = 'Incremental' 20 md = SetM LHOBC(md)20 md = SetMOLHOBC(md) 21 21 md = solve(md, 'Transient') 22 22 23 23 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test332.py
1 #Test Name: SquareSheetConstrainedTranM LHO2d1 #Test Name: SquareSheetConstrainedTranMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 md = triangle(model(), '../Exp/Square.exp', 150000.) 12 12 md = setmask(md, '', '') 13 13 md = parameterize(md, '../Par/SquareSheetConstrained.py') 14 md = setflowequation(md, 'M LHO', 'all')14 md = setflowequation(md, 'MOLHO', 'all') 15 15 md.cluster = generic('name', gethostname(), 'np', 3) 16 md = SetM LHOBC(md)16 md = SetMOLHOBC(md) 17 17 md = solve(md, 'Transient') 18 18 19 19 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test334.py
1 #Test Name: SquareShelfCMBM LHO1 #Test Name: SquareShelfCMBMOLHO 2 2 from model import * 3 3 from socket import gethostname 4 4 import numpy as np … … 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 10 from generic import generic 11 from SetM LHOBC import SetMLHOBC11 from SetMOLHOBC import SetMOLHOBC 12 12 13 13 md = triangle(model(), '../Exp/Square.exp', 200000) 14 14 md = setmask(md, 'all', '') 15 15 md = parameterize(md, '../Par/SquareShelf.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 18 18 # control parameters 19 19 … … 32 32 33 33 34 34 md.cluster = generic('name', gethostname(), 'np', 3) 35 md = SetM LHOBC(md)35 md = SetMOLHOBC(md) 36 36 md = solve(md, 'Stressbalance') 37 37 38 38 -
../trunk-jpl/test/NightlyRun/test446.py
1 #Test Name: SquareSheetShelfStressM LHO2d1 #Test Name: SquareSheetShelfStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 md = triangle(model(), '../Exp/Square.exp', 150000.) 12 12 md = setmask(md, '../Exp/SquareShelf.exp', '') 13 13 md = parameterize(md, '../Par/SquareSheetShelf.py') 14 md = setflowequation(md, 'M LHO', 'all')14 md = setflowequation(md, 'MOLHO', '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 = SetM LHOBC(md);17 md = SetMOLHOBC(md); 18 18 md = solve(md, 'Stressbalance') 19 19 20 20 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test448.py
1 #Test Name: RoundSheetShelfGLMigrationM LHO2d1 #Test Name: RoundSheetShelfGLMigrationMOLHO2d 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 12 12 13 13 radius = 1.e6 … … 27 27 flags[pos] = 1 28 28 md = setmask(md, flags, '') 29 29 md = parameterize(md, '../Par/RoundSheetShelf.py') 30 md = setflowequation(md, 'M LHO', 'all')30 md = setflowequation(md, 'MOLHO', 'all') 31 31 md.cluster = generic('name', gethostname(), 'np', 3) 32 32 33 33 md.transient.isthermal = False … … 38 38 39 39 #test different grounding line dynamics. 40 40 md.groundingline.migration = 'AggressiveMigration' 41 md = SetM LHOBC(md)41 md = SetMOLHOBC(md) 42 42 md = solve(md, 'Transient') 43 43 element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset 44 44 vel_agressive = md.results.TransientSolution[0].Vel -
../trunk-jpl/test/NightlyRun/test518.py
1 1 2 #Test Name: PigStressM LHO2d2 #Test Name: PigStressMOLHO2d 3 3 from model import * 4 4 from socket import gethostname 5 5 from triangle import triangle … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 12 12 13 13 md = triangle(model(), '../Exp/Pig.exp', 20000.) 14 14 md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp') 15 15 md = parameterize(md, '../Par/Pig.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 md.cluster = generic('name', gethostname(), 'np', 3) 18 18 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] 19 md = SetM LHOBC(md)19 md = SetMOLHOBC(md) 20 20 md = solve(md, 'Stressbalance') 21 21 22 22 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test332.m
1 %Test Name: SquareSheetConstrainedTranM LHO2d1 %Test Name: SquareSheetConstrainedTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/SquareSheetConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 md=SetM LHOBC(md);7 md=SetMOLHOBC(md); 8 8 md=solve(md,'Transient'); 9 9 10 10 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test334.m
1 %Test Name: SquareShelfCMBM LHO1 %Test Name: SquareShelfCMBMOLHO 2 2 md=triangle(model(),'../Exp/Square.exp',200000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 7 7 %control parameters 8 8 md.inversion.iscontrol=1; … … 19 19 md.verbose.control=true; 20 20 21 21 md.cluster=generic('name',oshostname(),'np',3); 22 md=SetM LHOBC(md);22 md=SetMOLHOBC(md); 23 23 md=solve(md,'Stressbalance'); 24 24 25 25 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test446.m
1 %Test Name: SquareSheetShelfStressM LHO2d1 %Test Name: SquareSheetShelfStressMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'../Exp/SquareShelf.exp',''); 4 4 md=parameterize(md,'../Par/SquareSheetShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','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=SetM LHOBC(md);8 md=SetMOLHOBC(md); 9 9 md=solve(md,'Stressbalance'); 10 10 11 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test448.m
1 %Test Name: RoundSheetShelfGLMigrationM LHO2d1 %Test Name: RoundSheetShelfGLMigrationMOLHO2d 2 2 radius=1.e6; 3 3 shelfextent=2.e5; 4 4 … … 15 15 flags(pos)=1; 16 16 md=setmask(md,flags,''); 17 17 md=parameterize(md,'../Par/RoundSheetShelf.par'); 18 md=setflowequation(md,'M LHO','all');18 md=setflowequation(md,'MOLHO','all'); 19 19 md.cluster=generic('name',oshostname(),'np',3); 20 20 21 21 md.transient.isthermal=0; … … 24 24 md.transient.isstressbalance=1; 25 25 md.transient.isgroundingline=1; 26 26 27 md=SetM LHOBC(md);27 md=SetMOLHOBC(md); 28 28 %test different grounding line dynamics. 29 29 md.groundingline.migration='AggressiveMigration'; 30 30 md=solve(md,'Transient'); -
../trunk-jpl/test/NightlyRun/test518.m
1 %Test Name: PigStressM LHO2d1 %Test Name: PigStressMOLHO2d 2 2 md=triangle(model(),'../Exp/Pig.exp',20000.); 3 3 md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp'); 4 4 md=parameterize(md,'../Par/Pig.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','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=SetM LHOBC(md);8 md=SetMOLHOBC(md); 9 9 md=solve(md,'Stressbalance'); 10 10 11 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test810.m
1 %Test Name: ValleyGlacierLevelsetM LHO2d1 %Test Name: ValleyGlacierLevelsetMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',50000); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/ValleyGlacierShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.levelset.stabilization=2; 7 7 md.cluster=generic('name',oshostname(),'np',3); 8 8 … … 14 14 md.transient.isthermal=0; 15 15 md.transient.isgroundingline=1; 16 16 17 md=SetM LHOBC(md);17 md=SetMOLHOBC(md); 18 18 md=solve(md,'Transient'); 19 19 20 20 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test330.py
1 #Test Name: SquareSheetConstrainedStressM LHO2d1 #Test Name: SquareSheetConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 12 12 md = triangle(model(), '../Exp/Square.exp', 150000.) 13 13 md = setmask(md, '', '') 14 14 md = parameterize(md, '../Par/SquareSheetConstrained.py') 15 md = setflowequation(md, 'M LHO', 'all')15 md = setflowequation(md, 'MOLHO', '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 = SetM LHOBC(md)18 md = SetMOLHOBC(md) 19 19 md = solve(md, 'Stressbalance') 20 20 21 21 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test333.py
1 #Test Name: SquareSheetConstrainedCMDragM LHO1 #Test Name: SquareSheetConstrainedCMDragMOLHO 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 12 12 13 13 md = triangle(model(), '../Exp/Square.exp', 200000.) 14 14 md = setmask(md, '', '') 15 15 md = parameterize(md, '../Par/SquareSheetConstrained.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 18 18 #control parameters 19 19 … … 32 32 md.inversion.vy_obs = md.initialization.vy 33 33 34 34 md.cluster = generic('name', gethostname(), 'np', 3) 35 md = SetM LHOBC(md)35 md = SetMOLHOBC(md) 36 36 md = solve(md, 'Stressbalance') 37 37 38 38 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test335.py
1 #Test Name: SquareSheetConstrainedStressM LHO2d1 #Test Name: SquareSheetConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 12 12 md = triangle(model(), '../Exp/Square.exp', 200000.) 13 13 md = setmask(md, '', '') 14 14 md = parameterize(md, '../Par/SquareSheetConstrained.py') 15 md = setflowequation(md, 'M LHO', 'all')16 md = SetM LHOBC(md)15 md = setflowequation(md, 'MOLHO', 'all') 16 md = SetMOLHOBC(md) 17 17 md.extrude(5, 1.) 18 18 md.cluster = generic('name', gethostname(), 'np', 3) 19 19 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase'] -
../trunk-jpl/test/NightlyRun/test447.py
1 #Test Name: SquareSheetShelfTranM LHO2d1 #Test Name: SquareSheetShelfTranMOLHO2d 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 from frictioncoulomb import frictioncoulomb 12 12 from generic import generic 13 13 … … 24 24 md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices) 25 25 md.transient.isthermal = False 26 26 md.transient.isgroundingline = True 27 md = setflowequation(md, 'M LHO', 'all')27 md = setflowequation(md, 'MOLHO', 'all') 28 28 md.cluster = generic('name', gethostname(), 'np', 3) 29 29 md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb'] 30 md = SetM LHOBC(md)30 md = SetMOLHOBC(md) 31 31 md = solve(md, 'Transient') 32 32 33 33 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test449.py
1 #Test Name: MISMIP3DM LHO1 #Test Name: MISMIP3DMOLHO 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 from generic import generic 12 12 13 13 … … 23 23 pos = np.where(md.mask.ocean_levelset >= 0.) 24 24 md.geometry.base[pos] = md.geometry.bed[pos] 25 25 md.geometry.surface = md.geometry.base + md.geometry.thickness 26 md = setflowequation(md, 'M LHO', 'all')26 md = setflowequation(md, 'MOLHO', 'all') 27 27 28 28 #Boundary conditions: 29 29 md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, )) … … 58 58 md.timestepping.time_step = 10 59 59 60 60 md.cluster = generic('name', gethostname(), 'np', 3) 61 md = SetM LHOBC(md)61 md = SetMOLHOBC(md) 62 62 md = solve(md, 'Transient') 63 63 #print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate 64 64 #print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate -
../trunk-jpl/test/NightlyRun/test519.py
1 #Test Name: PigTranM LHO2d1 #Test Name: PigTranMOLHO2d 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 from generic import generic 12 12 13 13 md = triangle(model(), '../Exp/Pig.exp', 20000.) 14 14 md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp') 15 15 md = parameterize(md, '../Par/Pig.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices)) 18 18 md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled'] 19 19 md.cluster = generic('name', gethostname(), 'np', 3) 20 md = SetM LHOBC(md)20 md = SetMOLHOBC(md) 21 21 md = solve(md, 'Transient') 22 22 23 23 # Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test810.py
1 #Test Name: ValleyGlacierLevelsetM LHO2d1 #Test Name: ValleyGlacierLevelsetMOLHO2d 2 2 from model import * 3 3 from socket import gethostname 4 4 from triangle import triangle … … 6 6 from parameterize import parameterize 7 7 from setflowequation import setflowequation 8 8 from solve import solve 9 from SetM LHOBC import SetMLHOBC9 from SetMOLHOBC import SetMOLHOBC 10 10 11 11 md = triangle(model(), '../Exp/Square.exp', 50000) 12 12 md = setmask(md, '', '') 13 13 md = parameterize(md, '../Par/ValleyGlacierShelf.py') 14 14 md.levelset.stabilization = 2 15 md = setflowequation(md, 'M LHO', 'all')15 md = setflowequation(md, 'MOLHO', 'all') 16 16 md.cluster = generic('name', gethostname(), 'np', 3) 17 17 18 18 #Transient … … 22 22 md.transient.issmb = True 23 23 md.transient.isthermal = False 24 24 md.transient.isgroundingline = True 25 md = SetM LHOBC(md)25 md = SetMOLHOBC(md) 26 26 27 27 md = solve(md, 'Transient') 28 28 -
../trunk-jpl/test/NightlyRun/test812.py
1 #Test Name: SquareShelfLevelsetCalvingM LHO2dLevermann1 #Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann 2 2 import numpy as np 3 3 from socket import gethostname 4 4 from model import * … … 7 7 from setmask import setmask 8 8 from solve import solve 9 9 from triangle import triangle 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 12 12 md = triangle(model(), '../Exp/Square.exp', 50000.) 13 13 md = setmask(md, 'all', '') 14 14 md = parameterize(md, '../Par/SquareShelf.py') 15 md = setflowequation(md, 'M LHO', 'all')15 md = setflowequation(md, 'MOLHO', 'all') 16 16 md.cluster = generic('name', gethostname(), 'np', 3) 17 17 18 18 x = md.mesh.x … … 44 44 45 45 md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate'] 46 46 47 md = SetM LHOBC(md);47 md = SetMOLHOBC(md); 48 48 md = solve(md, 'Transient') 49 49 50 50 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test812.m
1 %Test Name: SquareShelfLevelsetCalvingM LHO2dLevermann1 %Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann 2 2 md=triangle(model(),'../Exp/Square.exp',50000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 8 8 %Do not kill ice bergs as all is floating … … 34 34 35 35 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'}; 36 36 37 md=SetM LHOBC(md);37 md=SetMOLHOBC(md); 38 38 md=solve(md,'Transient'); 39 39 40 40 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test811.py
1 #Test Name: ValleyGlacierLevelsetCalvingM LHO2d1 #Test Name: ValleyGlacierLevelsetCalvingMOLHO2d 2 2 import numpy as np 3 3 from model import * 4 4 from socket import gethostname … … 7 7 from parameterize import parameterize 8 8 from setflowequation import setflowequation 9 9 from solve import solve 10 from SetM LHOBC import SetMLHOBC10 from SetMOLHOBC import SetMOLHOBC 11 11 from generic import generic 12 12 13 13 md = triangle(model(), '../Exp/Square.exp', 50000) 14 14 md = setmask(md, '', '') 15 15 md = parameterize(md, '../Par/ValleyGlacierShelf.py') 16 md = setflowequation(md, 'M LHO', 'all')16 md = setflowequation(md, 'MOLHO', 'all') 17 17 md.cluster = generic('name', gethostname(), 'np', 3) 18 18 19 19 #Transient … … 28 28 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices)) 29 29 md.levelset.migration_max = 1e10 30 30 31 md = SetM LHOBC(md)31 md = SetMOLHOBC(md) 32 32 md = solve(md, 'Transient') 33 33 34 34 #Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test127.m
1 %Test Name: SquareShelfConstrainedStressM LHO2d1 %Test Name: SquareShelfConstrainedStressMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',50000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelfConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',2); 7 7 8 8 %output 9 %FIXME compute the stress components for M LHO9 %FIXME compute the stress components for MOLHO 10 10 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'}; 11 11 %md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'}; 12 12 md.outputdefinition.definitions={... … … 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 md=SetM LHOBC(md);20 md=SetMOLHOBC(md); 21 21 md=solve(md,'Stressbalance'); 22 22 23 23 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test129.m
1 %Test Name: SquareShelfConstrainedRestartTranM LHO2d1 %Test Name: SquareShelfConstrainedRestartTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelfConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',1); 7 7 md.transient.requested_outputs={'IceVolume','TotalSmb','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'}; 8 8 … … 13 13 md.timestepping.final_time=19; 14 14 md.settings.output_frequency=2; 15 15 16 md=SetM LHOBC(md);16 md=SetMOLHOBC(md); 17 17 md=solve(md,'Transient'); 18 18 md2=solve(md,'Transient','restart',1); 19 19 -
../trunk-jpl/test/NightlyRun/test249.m
1 %Test Name: SquareShelfTranM LHO2d1 %Test Name: SquareShelfTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 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=SetM LHOBC(md);9 md=SetMOLHOBC(md); 10 10 md=solve(md,'Transient'); 11 11 12 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test255.m
1 %Test Name: SquareShelfStressM LHO2dTransientIncrHydro1 %Test Name: SquareShelfStressMOLHO2dTransientIncrHydro 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'all',''); 4 4 md=parameterize(md,'../Par/SquareShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.masstransport.hydrostatic_adjustment='Incremental'; 8 md=SetM LHOBC(md);8 md=SetMOLHOBC(md); 9 9 md=solve(md,'Transient'); 10 10 11 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test330.m
1 %Test Name: SquareSheetConstrainedStressM LHO2d1 %Test Name: SquareSheetConstrainedStressMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/SquareSheetConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','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=SetM LHOBC(md);8 md=SetMOLHOBC(md); 9 9 md=solve(md,'Stressbalance'); 10 10 11 11 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test333.m
1 %Test Name: SquareSheetConstrainedCMDragM LHO1 %Test Name: SquareSheetConstrainedCMDragMOLHO 2 2 md=triangle(model(),'../Exp/Square.exp',200000.); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/SquareSheetConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 7 7 %control parameters 8 8 md.inversion.iscontrol=1; … … 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=SetM LHOBC(md);21 md=SetMOLHOBC(md); 22 22 md=solve(md,'Stressbalance'); 23 23 24 24 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test335.m
1 %Test Name: SquareSheetConstrainedStressM LHO3d1 %Test Name: SquareSheetConstrainedStressMOLHO3d 2 2 md=triangle(model(),'../Exp/Square.exp',200000.); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/SquareSheetConstrained.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 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=SetM LHOBC(md);9 md=SetMOLHOBC(md); 10 10 md=solve(md,'Stressbalance'); 11 11 12 12 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test447.m
1 %Test Name: SquareSheetShelfTranM LHO2d1 %Test Name: SquareSheetShelfTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',150000.); 3 3 md=setmask(md,'../Exp/SquareShelf.exp',''); 4 4 md=parameterize(md,'../Par/SquareSheetShelf.par'); … … 12 12 md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1); 13 13 md.transient.isthermal=0; 14 14 md.transient.isgroundingline=1; 15 md=setflowequation(md,'M LHO','all');15 md=setflowequation(md,'MOLHO','all'); 16 16 md.cluster=generic('name',oshostname(),'np',3); 17 17 md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'}; 18 md=SetM LHOBC(md);18 md=SetMOLHOBC(md); 19 19 md=solve(md,'Transient'); 20 20 21 21 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test449.m
1 %Test Name: MISMIP3DM LHO1 %Test Name: MISMIP3DMOLHO 2 2 md=triangle(model(),'../Exp/Square.exp',100000.); 3 3 md=setmask(md,'../Exp/SquareShelf.exp',''); 4 4 md=parameterize(md,'../Par/SquareSheetShelf.par'); … … 11 11 pos=find(md.mask.ocean_levelset>=0); 12 12 md.geometry.base(pos)=md.geometry.bed(pos); 13 13 md.geometry.surface=md.geometry.base+md.geometry.thickness; 14 md=setflowequation(md,'M LHO','all');14 md=setflowequation(md,'MOLHO','all'); 15 15 16 16 %Boundary conditions: 17 17 md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1); … … 44 44 md.timestepping.time_step=10; 45 45 46 46 md.cluster=generic('name',oshostname(),'np',3); 47 md=SetM LHOBC(md);47 md=SetMOLHOBC(md); 48 48 md=solve(md,'Transient'); 49 49 50 50 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test519.m
1 %Test Name: PigTranM LHO2d1 %Test Name: PigTranMOLHO2d 2 2 md=triangle(model(),'../Exp/Pig.exp',20000.); 3 3 md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp'); 4 4 md=parameterize(md,'../Par/Pig.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 md.geometry.bed=md.geometry.base; 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=SetM LHOBC(md);11 md=SetMOLHOBC(md); 12 12 md=solve(md,'Transient'); 13 13 14 14 %Fields and tolerances to track changes -
../trunk-jpl/test/NightlyRun/test811.m
1 %Test Name: ValleyGlacierLevelsetCalvingM LHO2d1 %Test Name: ValleyGlacierLevelsetCalvingMOLHO2d 2 2 md=triangle(model(),'../Exp/Square.exp',50000); 3 3 md=setmask(md,'',''); 4 4 md=parameterize(md,'../Par/ValleyGlacierShelf.par'); 5 md=setflowequation(md,'M LHO','all');5 md=setflowequation(md,'MOLHO','all'); 6 6 md.cluster=generic('name',oshostname(),'np',3); 7 7 8 8 %Transient … … 17 17 md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1); 18 18 md.levelset.migration_max = 1e10; 19 19 20 md=SetM LHOBC(md);20 md=SetMOLHOBC(md); 21 21 md=solve(md,'Transient'); 22 22 23 23 %Fields and tolerances to track changes
Note:
See TracBrowser
for help on using the repository browser.