Changeset 27031
- Timestamp:
- 05/31/22 06:20:44 (3 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 86 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
r26989 r27031 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; … … 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 */ … … 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; … … 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 */ … … 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] … … 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; … … 1105 1105 1106 1106 }/*}}}*/ 1107 ElementVector* AdjointHorizAnalysis::CreatePVectorM LHO(Element* element){/*{{{*/1107 ElementVector* AdjointHorizAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/ 1108 1108 1109 1109 /*Intermediaries*/ … … 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 … … 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 } … … 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 } … … 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 } … … 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 } … … 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 } … … 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; … … 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; … … 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; … … 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..."); … … 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]; … … 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 }/*}}}*/ … … 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)*/ … … 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{ … … 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; … … 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); -
issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h
r26478 r27031 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); … … 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); … … 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); … … 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); … … 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 }; -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26825 r27031 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; … … 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 … … 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"); … … 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){ … … 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); … … 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; … … 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"); … … 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: */ … … 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 … … 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 … … 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 } … … 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){ … … 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; … … 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"); … … 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: */ … … 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 … … 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"); … … 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.); … … 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)); … … 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; … … 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); … … 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 … … 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) … … 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); … … 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); … … 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); … … 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: … … 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: … … 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 */ … … 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 … … 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; … … 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 … … 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 */ … … 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 … … 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 … … 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*/ … … 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 */ … … 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 … … 3023 3023 return pe; 3024 3024 }/*}}}*/ 3025 ElementVector* StressbalanceAnalysis::CreatePVectorM LHODrivingStress(Element* element){/*{{{*/3025 ElementVector* StressbalanceAnalysis::CreatePVectorMOLHODrivingStress(Element* element){/*{{{*/ 3026 3026 3027 3027 /*Intermediaries */ … … 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 … … 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*/ … … 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*/ … … 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 … … 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*/ … … 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; … … 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); … … 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 … … 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); … … 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"); … … 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; … … 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*/ -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
r26155 r27031 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); -
issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
r26047 r27031 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: */ … … 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"); … … 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 -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r26825 r27031 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; … … 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 -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r27020 r27031 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*/ … … 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] … … 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] -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r26983 r27031 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(); … … 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); … … 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; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r26998 r27031 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 -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r26830 r27031 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); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r27024 r27031 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")); -
issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp
r26292 r27031 355 355 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet"); 356 356 } 357 case M LHOApproximationEnum:358 switch(approximation1){ 359 case M LHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);357 case MOLHOApproximationEnum: 358 switch(approximation1){ 359 case MOLHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 360 360 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet"); 361 361 } -
issm/trunk-jpl/src/c/classes/Materials/Material.h
r26478 r27031 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; -
issm/trunk-jpl/src/c/classes/Materials/Matestar.cpp
r26478 r27031 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){/*{{{*/570 _error_("not implemented yet"); 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){/*{{{*/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 _error_("not implemented yet"); 571 }/*}}}*/ 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 }/*}}}*/ -
issm/trunk-jpl/src/c/classes/Materials/Matestar.h
r26478 r27031 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); -
issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
r26866 r27031 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*/ … … 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] … … 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*/ … … 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] -
issm/trunk-jpl/src/c/classes/Materials/Matice.h
r26478 r27031 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); -
issm/trunk-jpl/src/c/classes/Materials/Matlitho.h
r26478 r27031 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");}; -
issm/trunk-jpl/src/c/classes/Node.cpp
r26468 r27031 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 } -
issm/trunk-jpl/src/c/cores/stressbalance_core.cpp
r26155 r27031 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; … … 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); … … 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); … … 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*/ -
issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
r26457 r27031 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); -
issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
r26457 r27031 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); -
issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
r26457 r27031 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); -
issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
r26457 r27031 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); -
issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
r26457 r27031 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); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26983 r27031 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 … … 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 -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27026 r27031 170 170 FlowequationIsHOEnum, 171 171 FlowequationIsL1L2Enum, 172 FlowequationIsM LHOEnum,172 FlowequationIsMOLHOEnum, 173 173 FlowequationIsSIAEnum, 174 174 FlowequationIsSSAEnum, … … 1384 1384 JEnum, 1385 1385 L1L2ApproximationEnum, 1386 M LHOApproximationEnum,1386 MOLHOApproximationEnum, 1387 1387 L2ProjectionBaseAnalysisEnum, 1388 1388 L2ProjectionEPLAnalysisEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26983 r27031 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"; … … 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"; … … 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"; … … 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"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26983 r27031 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 … … 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 … … 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 … … 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 -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26983 r27031 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; … … 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; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r26850 r27031 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; … … 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; -
issm/trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m
r27030 r27031 1 function md=SetM LHOBC(md)2 %SETM LHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear1 function md=SetMOLHOBC(md) 2 %SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear 3 3 % 4 4 % Usage: 5 % md=SetM LHOBC(md)5 % md=SetMOLHOBC(md) 6 6 % 7 7 8 8 9 9 %node on Dirichlet 10 if md.flowequation.isM LHO10 if md.flowequation.isMOLHO 11 11 md.stressbalance.spcvx_base=md.stressbalance.spcvx; 12 12 md.stressbalance.spcvy_base=md.stressbalance.spcvy; -
issm/trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py
r27030 r27031 1 1 import numpy as np 2 2 3 4 def SetMLHOBC(md): 3 def SetMOLHOBC(md): 5 4 """ 6 SETM LHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear5 SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear 7 6 8 7 Usage: -
issm/trunk-jpl/src/m/classes/flowequation.js
r26305 r27031 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 ?'); … … 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) {//{{{ … … 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]); … … 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 } … … 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'); … … 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; -
issm/trunk-jpl/src/m/classes/flowequation.m
r26555 r27031 9 9 isSSA = 0; 10 10 isL1L2 = 0; 11 isM LHO = 0;11 isMOLHO = 0; 12 12 isHO = 0; 13 13 isFS = 0; … … 60 60 if isfield(objstruct,'borderpattyn'), self.borderHO = objstruct.borderpattyn; end; 61 61 if isfield(objstruct,'borderstokes'), self.borderFS = objstruct.borderstokes; end; 62 end 63 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.']); 67 end 62 63 %May 31 2022 64 if isfield(objstruct,'isMLHO') 65 self.isMOLHO = objstruct.isMLHO; 66 end 67 end 68 68 69 69 70 end% }}} … … 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]); … … 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 … … 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?'); … … 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'); … … 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); -
issm/trunk-jpl/src/m/classes/flowequation.py
r26446 r27031 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 … … 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?")) … … 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]) … … 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: … … 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') -
issm/trunk-jpl/src/m/classes/inversion.m
r26478 r27031 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 -
issm/trunk-jpl/src/m/classes/inversion.py
r26870 r27031 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) -
issm/trunk-jpl/src/m/classes/stressbalance.m
r26555 r27031 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'); … … 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); … … 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]'); … … 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); -
issm/trunk-jpl/src/m/classes/stressbalance.py
r26555 r27031 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]')) … … 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') … … 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) … … 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) -
issm/trunk-jpl/src/m/parameterization/setflowequation.js
r25609 r27031 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. … … 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: … … 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'); … … 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 … … 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 … … 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); … … 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; … … 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; … … 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); -
issm/trunk-jpl/src/m/parameterization/setflowequation.m
r26352 r27031 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. … … 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: … … 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'); … … 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; … … 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 … … 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); … … 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; … … 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; … … 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)); -
issm/trunk-jpl/src/m/parameterization/setflowequation.py
r26352 r27031 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 … … 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') … … 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 … … 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 … … 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 … … 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 … … 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) … … 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) -
issm/trunk-jpl/src/m/plot/plot_elementstype.m
r25609 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test127.m
r26555 r27031 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'}; … … 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 -
issm/trunk-jpl/test/NightlyRun/test127.py
r26584 r27031 1 #Test Name: SquareShelfConstrainedStressM LHO2d1 #Test Name: SquareShelfConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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'] … … 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 -
issm/trunk-jpl/test/NightlyRun/test128.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test128.py
r26897 r27031 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 * … … 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 -
issm/trunk-jpl/test/NightlyRun/test129.m
r26555 r27031 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'}; … … 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); -
issm/trunk-jpl/test/NightlyRun/test129.py
r26897 r27031 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 * … … 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'] … … 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') -
issm/trunk-jpl/test/NightlyRun/test248.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test248.py
r26897 r27031 1 #Test Name: SquareShelfStressM LHO2d1 #Test Name: SquareShelfStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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 -
issm/trunk-jpl/test/NightlyRun/test249.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test249.py
r26897 r27031 1 #Test Name: SquareShelfTranM LHO2d1 #Test Name: SquareShelfTranMOLHO2d 2 2 3 3 from model import * … … 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) … … 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 -
issm/trunk-jpl/test/NightlyRun/test254.m
r26555 r27031 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test254.py
r26637 r27031 1 #Test Name: SquareShelfConstrainedM LHO1 #Test Name: SquareShelfConstrainedMOLHO 2 2 from model import * 3 3 from socket import gethostname … … 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 … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test255.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test255.py
r26637 r27031 1 #Test Name: SquareShelfStressM LHO2dTransientIncrHydro1 #Test Name: SquareShelfStressMOLHO2dTransientIncrHydro 2 2 from model import * 3 3 from socket import gethostname … … 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 -
issm/trunk-jpl/test/NightlyRun/test256.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test256.py
r26897 r27031 1 #Test Name: SquareShelfStressM LHO2dTransientIncrNonHydro1 #Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro 2 2 from model import * 3 3 from socket import gethostname … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test330.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test330.py
r26637 r27031 1 #Test Name: SquareSheetConstrainedStressM LHO2d1 #Test Name: SquareSheetConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test332.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test332.py
r26637 r27031 1 #Test Name: SquareSheetConstrainedTranM LHO2d1 #Test Name: SquareSheetConstrainedTranMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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 -
issm/trunk-jpl/test/NightlyRun/test333.m
r26555 r27031 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test333.py
r26897 r27031 1 #Test Name: SquareSheetConstrainedCMDragM LHO1 #Test Name: SquareSheetConstrainedCMDragMOLHO 2 2 import numpy as np 3 3 from model import * … … 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 … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test334.m
r26555 r27031 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test334.py
r26897 r27031 1 #Test Name: SquareShelfCMBM LHO1 #Test Name: SquareShelfCMBMOLHO 2 2 from model import * 3 3 from socket import gethostname … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test335.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test335.py
r26637 r27031 1 #Test Name: SquareSheetConstrainedStressM LHO2d1 #Test Name: SquareSheetConstrainedStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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 … … 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) -
issm/trunk-jpl/test/NightlyRun/test446.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test446.py
r26897 r27031 1 #Test Name: SquareSheetShelfStressM LHO2d1 #Test Name: SquareSheetShelfStressMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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 -
issm/trunk-jpl/test/NightlyRun/test447.m
r26555 r27031 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',''); … … 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 -
issm/trunk-jpl/test/NightlyRun/test447.py
r26637 r27031 1 #Test Name: SquareSheetShelfTranM LHO2d1 #Test Name: SquareSheetShelfTranMOLHO2d 2 2 import numpy as np 3 3 from model import * … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test448.m
r26555 r27031 1 %Test Name: RoundSheetShelfGLMigrationM LHO2d1 %Test Name: RoundSheetShelfGLMigrationMOLHO2d 2 2 radius=1.e6; 3 3 shelfextent=2.e5; … … 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 … … 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'; -
issm/trunk-jpl/test/NightlyRun/test448.py
r26897 r27031 1 #Test Name: RoundSheetShelfGLMigrationM LHO2d1 #Test Name: RoundSheetShelfGLMigrationMOLHO2d 2 2 import numpy as np 3 3 from model import * … … 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 … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test449.m
r26555 r27031 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',''); … … 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: … … 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 -
issm/trunk-jpl/test/NightlyRun/test449.py
r26637 r27031 1 #Test Name: MISMIP3DM LHO1 #Test Name: MISMIP3DMOLHO 2 2 import numpy as np 3 3 from model import * … … 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 … … 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: … … 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 -
issm/trunk-jpl/test/NightlyRun/test518.m
r26555 r27031 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 -
issm/trunk-jpl/test/NightlyRun/test518.py
r26897 r27031 1 1 2 #Test Name: PigStressM LHO2d2 #Test Name: PigStressMOLHO2d 3 3 from model import * 4 4 from socket import gethostname … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test519.m
r26555 r27031 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; … … 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 -
issm/trunk-jpl/test/NightlyRun/test519.py
r26637 r27031 1 #Test Name: PigTranM LHO2d1 #Test Name: PigTranMOLHO2d 2 2 import numpy as np 3 3 from model import * … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test810.m
r26555 r27031 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); … … 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 -
issm/trunk-jpl/test/NightlyRun/test810.py
r26897 r27031 1 #Test Name: ValleyGlacierLevelsetM LHO2d1 #Test Name: ValleyGlacierLevelsetMOLHO2d 2 2 from model import * 3 3 from socket import gethostname … … 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) … … 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 … … 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') -
issm/trunk-jpl/test/NightlyRun/test811.m
r26555 r27031 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test811.py
r26637 r27031 1 #Test Name: ValleyGlacierLevelsetCalvingM LHO2d1 #Test Name: ValleyGlacierLevelsetCalvingMOLHO2d 2 2 import numpy as np 3 3 from model import * … … 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 … … 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test812.m
r26555 r27031 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 … … 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 -
issm/trunk-jpl/test/NightlyRun/test812.py
r26639 r27031 1 #Test Name: SquareShelfLevelsetCalvingM LHO2dLevermann1 #Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann 2 2 import numpy as np 3 3 from socket import gethostname … … 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 … … 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
Note:
See TracChangeset
for help on using the changeset viewer.