Changeset 22159 for issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
- Timestamp:
- 10/10/17 08:23:38 (8 years ago)
- File:
-
- 1 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 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.