Changeset 21317
- Timestamp:
- 10/26/16 17:09:55 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
r21313 r21317 80 80 femmodel->parameters->FindParam(&earthid,EarthIdEnum); 81 81 femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum); 82 if((modelid== EarthIdEnum) & !ismasstransport) EarthMassTransport(femmodel);82 if((modelid==earthid) && (ismasstransport==0)) EarthMassTransport(femmodel); 83 83 } 84 84 … … 96 96 InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum); 97 97 98 /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */ 99 /*Initialize:*/ 100 U_radial = new Vector<IssmDouble>(gsize); 101 U_north = new Vector<IssmDouble>(gsize); 102 U_east = new Vector<IssmDouble>(gsize); 103 Sg_absolute = new Vector<IssmDouble>(gsize); 104 105 /*call the geodetic main modlule:*/ 106 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz); 107 108 /*compute: absolute sea level change = relative sea level change + vertical motion*/ 109 Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1); 110 111 /*get results into elements:*/ 112 InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum); // radial displacement 113 InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum); // north motion 114 InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum); // east motion 115 InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum); 116 98 int geodetic=0; 99 if (geodetic){ 100 101 /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */ 102 /*Initialize:*/ 103 U_radial = new Vector<IssmDouble>(gsize); 104 U_north = new Vector<IssmDouble>(gsize); 105 U_east = new Vector<IssmDouble>(gsize); 106 Sg_absolute = new Vector<IssmDouble>(gsize); 107 108 /*call the geodetic main modlule:*/ 109 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz); 110 111 /*compute: absolute sea level change = relative sea level change + vertical motion*/ 112 Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1); 113 114 /*get results into elements:*/ 115 InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum); // radial displacement 116 InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum); // north motion 117 InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum); // east motion 118 InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum); 119 delete U_radial; 120 delete U_north; 121 delete U_east; 122 delete Sg_absolute; 123 } 124 117 125 if(save_results){ 118 126 if(VerboseSolution()) _printf0_(" saving results\n"); … … 120 128 femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs); 121 129 } 122 130 123 131 if(solution_type==SealevelriseSolutionEnum)femmodel->RequestedDependentsx(); 124 132 … … 126 134 delete Sg; 127 135 delete Sg_eustatic; 128 delete U_radial;129 delete U_north;130 delete U_east;131 delete Sg_absolute;132 136 if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);} 133 137 } … … 209 213 *First, build the global delta thickness vector in the earth model: */ 210 214 nv=femmodel->vertices->NumberOfVertices(); 211 forcingglobal= new Vector<IssmDouble>(nv);215 GetVectorFromInputsx(&forcingglobal,femmodel,forcingenum,VertexSIdEnum); 212 216 213 217 /*Retrieve transition vectors, used to plug from each ice cap into the global forcing:*/ … … 377 381 Vector<IssmDouble> *deltathickness = NULL; 378 382 int nv; 383 384 if(VerboseSolution()) _printf0_(" computing earth mass transport\n"); 379 385 380 386 /*No mass transport module was called, so we are just going to retrieve the geometry thickness … … 390 396 deltathickness = new Vector<IssmDouble>(nv); 391 397 newthickness->Copy(deltathickness); deltathickness->AXPY(oldthickness,-1); 392 398 393 399 /*plug into elements:*/ 394 400 InputUpdateFromVectorx(femmodel,deltathickness,SealevelriseDeltathicknessEnum,VertexSIdEnum);
Note:
See TracChangeset
for help on using the changeset viewer.