Changeset 27138
- Timestamp:
- 07/01/22 17:35:05 (3 years ago)
- Location:
- issm/branches/trunk-larour-SLPS2022/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-SLPS2022/src/c/analyses/MmemasstransportAnalysis.cpp
r27126 r27138 40 40 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 41 41 iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0); 42 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",M askIceLevelsetEnum);43 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",M askOceanLevelsetEnum);42 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MmemasstransportMaskIceLevelsetEnum); 43 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MmemasstransportMaskOceanLevelsetEnum); 44 44 iomodel->FetchDataToInput(inputs,elements,"md.mmemasstransport.thickness", MmemasstransportThicknessEnum); 45 45 … … 99 99 void MmemasstransportAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/ 100 100 101 /*retrieve thickness from MmemasstransportAnalysis spcs in our element:*/101 /*retrieve thickness, ice and ocean levelsets from MmemasstransportAnalysis inputs in our element:*/ 102 102 103 IssmDouble h ;103 IssmDouble height,ice,ocean; 104 104 int *doflist = NULL; 105 105 106 106 /*Fetch number of nodes and initialize values*/ 107 107 int numnodes = element->GetNumberOfNodes(); 108 int numdof = numnodes ;108 int numdof = numnodes*3; 109 109 IssmDouble* values = xNew<IssmDouble>(numdof); 110 110 … … 112 112 element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 113 113 Input* h_input=element->GetInput(MmemasstransportThicknessEnum); _assert_(h_input); 114 Input* i_input=element->GetInput(MmemasstransportMaskIceLevelsetEnum); _assert_(i_input); 115 Input* o_input=element->GetInput(MmemasstransportMaskOceanLevelsetEnum); _assert_(o_input); 114 116 115 117 /*Ok, we have the thickness in inputs, fill in solution */ … … 117 119 for(int i=0;i<numnodes;i++){ 118 120 gauss->GaussVertex(i); 119 h_input->GetInputValue(&h,gauss); 120 values[i+0]=h; 121 h_input->GetInputValue(&height,gauss); 122 i_input->GetInputValue(&ice,gauss); 123 o_input->GetInputValue(&ocean,gauss); 124 values[3*i+0]=height; 125 values[3*i+1]=ice; 126 values[3*i+2]=ocean; 121 127 } 122 128 … … 139 145 /*Fetch number of nodes and dof for this finite element*/ 140 146 int numnodes = element->GetNumberOfNodes(); 141 int numdof = numnodes ;147 int numdof = numnodes*3; 142 148 143 149 /*Fetch dof list and allocate solution vectors*/ 144 150 element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum); 145 151 IssmDouble* values = xNew<IssmDouble>(numdof); 146 IssmDouble* h = xNew<IssmDouble>(numnodes); 152 IssmDouble* height = xNew<IssmDouble>(numnodes); 153 IssmDouble* ice = xNew<IssmDouble>(numnodes); 154 IssmDouble* ocean = xNew<IssmDouble>(numnodes); 147 155 148 156 /*Use the dof list to index into the solution vector: */ … … 151 159 /*Retrieve h:*/ 152 160 for(i=0;i<numnodes;i++){ 153 h[i]=values[i+0]; 161 height[i]=values[3*i+0]; 162 ice[i]=values[3*i+1]; 163 ocean[i]=values[3*i+2]; 154 164 155 165 /*Check solution*/ 156 if(xIsNan<IssmDouble>(h[i])) _error_("NaN found in ice thickness solution vector"); 157 if(xIsInf<IssmDouble>(h[i])) _error_("Inf found in ice thickness solution vector"); 166 if(xIsNan<IssmDouble>(height[i])) _error_("NaN found in ice thickness solution vector"); 167 if(xIsInf<IssmDouble>(height[i])) _error_("Inf found in ice thickness solution vector"); 168 if(xIsNan<IssmDouble>(ice[i])) _error_("NaN found in ice mask solution vector"); 169 if(xIsInf<IssmDouble>(ice[i])) _error_("Inf found in ice mask solution vector"); 170 if(xIsNan<IssmDouble>(ocean[i])) _error_("NaN found in ocean mask solution vector"); 171 if(xIsInf<IssmDouble>(ocean[i])) _error_("Inf found in ocean mask solution vector"); 172 158 173 } 159 174 160 /*Add thickness as inputs to the tria element: */ 161 element->AddInput(ThicknessEnum,h,P1Enum); 175 /*Add thickness ice and ocean levelsets as inputs to the tria element: */ 176 element->AddInput(ThicknessEnum,height,P1Enum); 177 element->AddInput(MaskIceLevelsetEnum,ice,P1Enum); 178 element->AddInput(MaskOceanLevelsetEnum,ocean,P1Enum); 162 179 163 180 /*Free ressources:*/ 164 xDelete<IssmDouble>(h); 181 xDelete<IssmDouble>(height); 182 xDelete<IssmDouble>(ice); 183 xDelete<IssmDouble>(ocean); 165 184 xDelete<IssmDouble>(values); 166 185 xDelete<int>(doflist); -
issm/branches/trunk-larour-SLPS2022/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
r27095 r27138 173 173 MmeToInputx(femmodel,distributed_values,variable_partition,npart,MmemasstransportThicknessEnum, P0Enum); 174 174 175 if (femmodel->inputs->GetInputObjectEnum(MaskIceLevelsetEnum)==DatasetInputEnum) 176 MmeToInputx(femmodel,distributed_values,variable_partition,npart,MaskIceLevelsetEnum, P1Enum); 177 178 if (femmodel->inputs->GetInputObjectEnum(MaskOceanLevelsetEnum)==DatasetInputEnum) 179 MmeToInputx(femmodel,distributed_values,variable_partition,npart,MaskOceanLevelsetEnum, P1Enum); 175 if (femmodel->inputs->GetInputObjectEnum(MmemasstransportMaskIceLevelsetEnum)==DatasetInputEnum){ 176 MmeToInputx(femmodel,distributed_values,variable_partition,npart,MmemasstransportMaskIceLevelsetEnum, P1Enum); 177 /*delete MaskIceLevelsetEnum which will be replaced by MmemasstransportMaskIceLevelsetEnum for each time step: */ 178 femmodel->inputs->DeleteInput(MaskIceLevelsetEnum); 179 } 180 181 if (femmodel->inputs->GetInputObjectEnum(MmemasstransportMaskOceanLevelsetEnum)==DatasetInputEnum){ 182 MmeToInputx(femmodel,distributed_values,variable_partition,npart,MmemasstransportMaskOceanLevelsetEnum, P1Enum); 183 184 /*delete MaskOceanLevelsetEnum which will be replaced by MmemasstransportMaskOceanLevelsetEnum for each time step: */ 185 femmodel->inputs->DeleteInput(MaskOceanLevelsetEnum); 186 } 180 187 181 188 } /*}}}*/ -
issm/branches/trunk-larour-SLPS2022/src/c/modules/UpdateMmesx/UpdateMmesx.cpp
r27095 r27138 25 25 26 26 } /*}}}*/ 27 /*Deal with ocean: {{{*/27 /*Deal with dsl: {{{*/ 28 28 if (femmodel->inputs->Exist(OceantransportSpcbottompressureEnum) && femmodel->inputs->GetInputObjectEnum(OceantransportSpcbottompressureEnum)==DatasetInputEnum){ 29 29 … … 51 51 MmeToInputx(femmodel,modelids,partition,nids,MmemasstransportThicknessEnum, P0Enum); 52 52 53 if (femmodel->inputs->GetInputObjectEnum(MaskIceLevelsetEnum)==DatasetInputEnum) 54 MmeToInputx(femmodel,modelids,partition,nids,MaskIceLevelsetEnum, P1Enum); 53 if (femmodel->inputs->GetInputObjectEnum(MmemasstransportMaskIceLevelsetEnum)==DatasetInputEnum){ 54 MmeToInputx(femmodel,modelids,partition,nids,MmemasstransportMaskIceLevelsetEnum, P1Enum); 55 /*delete MaskIceLevelsetEnum which will be replaced by MmemasstransportMaskIceLevelsetEnum for each time step: */ 56 femmodel->inputs->DeleteInput(MaskIceLevelsetEnum); 57 } 55 58 56 if (femmodel->inputs->GetInputObjectEnum(MaskOceanLevelsetEnum)==DatasetInputEnum) 57 MmeToInputx(femmodel,modelids,partition,nids,MaskOceanLevelsetEnum, P1Enum); 59 if (femmodel->inputs->GetInputObjectEnum(MmemasstransportMaskOceanLevelsetEnum)==DatasetInputEnum){ 60 MmeToInputx(femmodel,modelids,partition,nids,MmemasstransportMaskOceanLevelsetEnum, P1Enum); 61 /*delete MaskOceanLevelsetEnum which will be replaced by MmemasstransportMaskOceanLevelsetEnum for each time step: */ 62 femmodel->inputs->DeleteInput(MaskOceanLevelsetEnum); 63 } 58 64 59 65 /*free ressources:*/ -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/Enum.vim
r27094 r27138 811 811 syn keyword cConstant MasstransportSpcthicknessEnum 812 812 syn keyword cConstant MmemasstransportThicknessEnum 813 syn keyword cConstant MmemasstransportMaskIceLevelsetEnum 814 syn keyword cConstant MmemasstransportMaskOceanLevelsetEnum 813 815 syn keyword cConstant MaterialsRheologyBEnum 814 816 syn keyword cConstant MaterialsRheologyBbarEnum -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/EnumDefinitions.h
r27094 r27138 807 807 MasstransportSpcthicknessEnum, 808 808 MmemasstransportThicknessEnum, 809 MmemasstransportMaskIceLevelsetEnum, 810 MmemasstransportMaskOceanLevelsetEnum, 809 811 MaterialsRheologyBEnum, 810 812 MaterialsRheologyBbarEnum, -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/EnumToStringx.cpp
r27094 r27138 813 813 case MasstransportSpcthicknessEnum : return "MasstransportSpcthickness"; 814 814 case MmemasstransportThicknessEnum : return "MmemasstransportThickness"; 815 case MmemasstransportMaskIceLevelsetEnum : return "MmemasstransportMaskIceLevelset"; 816 case MmemasstransportMaskOceanLevelsetEnum : return "MmemasstransportMaskOceanLevelset"; 815 817 case MaterialsRheologyBEnum : return "MaterialsRheologyB"; 816 818 case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar"; -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/Enumjl.vim
r27094 r27138 804 804 syn keyword juliaConstC MasstransportSpcthicknessEnum 805 805 syn keyword juliaConstC MmemasstransportThicknessEnum 806 syn keyword juliaConstC MmemasstransportMaskIceLevelsetEnum 807 syn keyword juliaConstC MmemasstransportMaskOceanLevelsetEnum 806 808 syn keyword juliaConstC MaterialsRheologyBEnum 807 809 syn keyword juliaConstC MaterialsRheologyBbarEnum -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/StringToEnumx.cpp
r27094 r27138 831 831 else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum; 832 832 else if (strcmp(name,"MmemasstransportThickness")==0) return MmemasstransportThicknessEnum; 833 else if (strcmp(name,"MmemasstransportMaskIceLevelset")==0) return MmemasstransportMaskIceLevelsetEnum; 834 else if (strcmp(name,"MmemasstransportMaskOceanLevelset")==0) return MmemasstransportMaskOceanLevelsetEnum; 833 835 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 834 836 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum; … … 873 875 else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum; 874 876 else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum; 875 else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;876 else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Sealevel")==0) return SealevelEnum; 880 if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum; 881 else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum; 882 else if (strcmp(name,"Sealevel")==0) return SealevelEnum; 881 883 else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum; 882 884 else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum; … … 996 998 else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum; 997 999 else if (strcmp(name,"SmbEC")==0) return SmbECEnum; 998 else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;999 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 1003 if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum; 1004 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 1005 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 1004 1006 else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum; 1005 1007 else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum; … … 1119 1121 else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum; 1120 1122 else if (strcmp(name,"Vel")==0) return VelEnum; 1121 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;1122 else if (strcmp(name,"VxBase")==0) return VxBaseEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Vx")==0) return VxEnum; 1126 if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 1127 else if (strcmp(name,"VxBase")==0) return VxBaseEnum; 1128 else if (strcmp(name,"Vx")==0) return VxEnum; 1127 1129 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; 1128 1130 else if (strcmp(name,"VxObs")==0) return VxObsEnum; … … 1242 1244 else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum; 1243 1245 else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum; 1244 else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;1245 else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum; 1249 if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum; 1250 else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum; 1251 else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum; 1250 1252 else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum; 1251 1253 else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum; … … 1365 1367 else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum; 1366 1368 else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum; 1367 else if (strcmp(name,"FrontalForcingsRignotAutoregression")==0) return FrontalForcingsRignotAutoregressionEnum;1368 else if (strcmp(name,"Fset")==0) return FsetEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum; 1372 if (strcmp(name,"FrontalForcingsRignotAutoregression")==0) return FrontalForcingsRignotAutoregressionEnum; 1373 else if (strcmp(name,"Fset")==0) return FsetEnum; 1374 else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum; 1373 1375 else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum; 1374 1376 else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum; … … 1488 1490 else if (strcmp(name,"MinVy")==0) return MinVyEnum; 1489 1491 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 1490 else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;1491 else if (strcmp(name,"Moulin")==0) return MoulinEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 1495 if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum; 1496 else if (strcmp(name,"Moulin")==0) return MoulinEnum; 1497 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 1496 1498 else if (strcmp(name,"Mpi")==0) return MpiEnum; 1497 1499 else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; … … 1611 1613 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 1612 1614 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 1613 else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;1614 else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;1615 1615 else stage=14; 1616 1616 } 1617 1617 if(stage==14){ 1618 if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; 1618 if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum; 1619 else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum; 1620 else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; 1619 1621 else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum; 1620 1622 else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum; -
issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/issmenums.jl
r27094 r27138 800 800 MasstransportSpcthicknessEnum 801 801 MmemasstransportThicknessEnum 802 MmemasstransportMaskIceLevelsetEnum 803 MmemasstransportMaskOceanLevelsetEnum 802 804 MaterialsRheologyBEnum 803 805 MaterialsRheologyBbarEnum … … 2406 2408 if(enum==MasstransportSpcthicknessEnum) return "MasstransportSpcthickness" end 2407 2409 if(enum==MmemasstransportThicknessEnum) return "MmemasstransportThickness" end 2410 if(enum==MmemasstransportMaskIceLevelsetEnum) return "MmemasstransportMaskIceLevelset" end 2411 if(enum==MmemasstransportMaskOceanLevelsetEnum) return "MmemasstransportMaskOceanLevelset" end 2408 2412 if(enum==MaterialsRheologyBEnum) return "MaterialsRheologyB" end 2409 2413 if(enum==MaterialsRheologyBbarEnum) return "MaterialsRheologyBbar" end
Note:
See TracChangeset
for help on using the changeset viewer.