Changeset 22159
- Timestamp:
- 10/10/17 08:23:38 (7 years ago)
- Location:
- issm/branches/trunk-larour-NatGeoScience2016/src/c
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
r22155 r22159 38 38 iomodel->FetchData(&geodetic,"md.slr.geodetic"); 39 39 if (geodetic){ 40 iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 41 iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum); 40 char* masktype=NULL; 41 iomodel->FetchData(&masktype,"md.mask.type"); 42 if (strcmp(masktype,"maskpsl")==0){ 43 iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 44 iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum); 45 } 46 xDelete<char>(masktype); 42 47 } 43 48 iomodel->FetchDataToInput(elements,"md.slr.deltathickness",SealevelriseDeltathicknessEnum); … … 46 51 iomodel->FetchDataToInput(elements,"md.geometry.bed",BedEnum); 47 52 48 /*Initialize cumdeltalthickness input: unfortunately, we don't have femmodel, so we need to iterate on49 * elements, otherwise we would have used InputUpdateFromConstantx: */53 /*Initialize cumdeltalthickness and sealevel rise rate input: unfortunately, we don't have femmodel, so we 54 * need to iterate on elements, otherwise we would have used InputUpdateFromConstantx: */ 50 55 counter=0; 51 56 for(int i=0;i<iomodel->numberofelements;i++){ … … 53 58 Element* element=(Element*)elements->GetObjectByOffset(counter); 54 59 element->InputUpdateFromConstant(0.0,SealevelriseCumDeltathicknessEnum); 60 element->InputUpdateFromConstant(0.0,SealevelRateEnum); 61 element->InputUpdateFromConstant(0.0,SealevelUmotionRateEnum); 55 62 counter++; 56 63 } … … 269 276 }/*}}}*/ 270 277 void SealevelriseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 271 272 IssmDouble *deltaS = NULL; 273 IssmDouble *S = NULL; 274 int* sidlist = NULL; 275 int numvertices; 276 277 numvertices= element->GetNumberOfVertices(); 278 sidlist=xNew<int>(numvertices); 279 280 element->GetVerticesSidList(sidlist); 281 282 deltaS = xNew<IssmDouble>(numvertices); 283 for(int i=0;i<numvertices;i++){ 284 deltaS[i]=solution[sidlist[i]]; 285 } 286 287 S = xNew<IssmDouble>(numvertices); 288 element->GetInputListOnVertices(S,SealevelEnum,0); 289 290 /*Add deltaS to S:*/ 291 for (int i=0;i<numvertices;i++)S[i]+=deltaS[i]; 292 293 /*Add S back into inputs: */ 294 element->AddInput(SealevelEnum,S,P1Enum); 295 296 /*Free ressources:*/ 297 xDelete<int>(sidlist); 298 xDelete<IssmDouble>(deltaS); 299 xDelete<IssmDouble>(S); 278 _error_("not implemeneted yet!"); 300 279 301 280 }/*}}}*/ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp
r22114 r22159 2656 2656 pEast->Assemble(); 2657 2657 } 2658 if(VerboseConvergence())_printf_("\n"); 2658 2659 2659 2660 /*Free ressources:*/ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
r22156 r22159 141 141 sealevelrise_core_elastic(&U_radial,&U_north,&U_east,femmodel,Sg); 142 142 143 /*transform these values into rates (as we only run this once each frequency turn s:*/143 /*transform these values into rates (as we only run this once each frequency turn:*/ 144 144 Sg_rate=Sg->Duplicate(); Sg->Copy(Sg_rate); Sg_rate->Scale(1/(dt*frequency)); 145 145 U_radial_rate=U_radial->Duplicate(); U_radial->Copy(U_radial_rate); U_radial_rate->Scale(1/(dt*frequency)); -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h
r22155 r22159 206 206 InversionVyObsEnum, 207 207 InversionVzObsEnum, 208 MaskTypeEnum, 208 209 MaskIceLevelsetEnum, 209 210 MaskOceanLevelsetEnum, -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp
r22155 r22159 212 212 case InversionVyObsEnum : return "InversionVyObs"; 213 213 case InversionVzObsEnum : return "InversionVzObs"; 214 case MaskTypeEnum : return "MaskType"; 214 215 case MaskIceLevelsetEnum : return "MaskIceLevelset"; 215 216 case MaskOceanLevelsetEnum : return "MaskOceanLevelset"; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp
r22155 r22159 215 215 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 216 216 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 217 else if (strcmp(name,"MaskType")==0) return MaskTypeEnum; 217 218 else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum; 218 219 else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum; … … 259 260 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 260 261 else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum; 261 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum; 265 if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum; 266 else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum; 266 267 else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum; 267 268 else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum; … … 382 383 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; 383 384 else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum; 384 else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum; 388 if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum; 389 else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum; 389 390 else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum; 390 391 else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum; … … 505 506 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 506 507 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 507 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 511 if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 512 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 512 513 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 513 514 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; … … 628 629 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 629 630 else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum; 630 else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum; 634 if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; 635 else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum; 635 636 else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum; 636 637 else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum; … … 751 752 else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum; 752 753 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 753 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 757 if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 758 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 758 759 else if (strcmp(name,"Regular")==0) return RegularEnum; 759 760 else if (strcmp(name,"Scaled")==0) return ScaledEnum; … … 874 875 else if (strcmp(name,"Profiler")==0) return ProfilerEnum; 875 876 else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum; 876 else if (strcmp(name,"Masscon")==0) return MassconEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum; 880 if (strcmp(name,"Masscon")==0) return MassconEnum; 881 else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum; 881 882 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 882 883 else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum; … … 997 998 else if (strcmp(name,"P0Array")==0) return P0ArrayEnum; 998 999 else if (strcmp(name,"P1")==0) return P1Enum; 999 else if (strcmp(name,"P1DG")==0) return P1DGEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"P1bubble")==0) return P1bubbleEnum; 1003 if (strcmp(name,"P1DG")==0) return P1DGEnum; 1004 else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum; 1004 1005 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1005 1006 else if (strcmp(name,"P2")==0) return P2Enum;
Note:
See TracChangeset
for help on using the changeset viewer.