Changeset 26149
- Timestamp:
- 03/24/21 12:11:09 (4 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/BarystaticContributions.cpp
r26147 r26149 148 148 149 149 ice->Sum(&sumice); hydro->Sum(&sumhydro); ocean->Sum(&sumocean); 150 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcEnum, -this->Total()/oceanarea/rho_water,step,time));151 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcIceEnum, -sumice/oceanarea/rho_water,step,time));152 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcHydroEnum, -sumice/oceanarea/rho_water,step,time));153 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcOceanEnum, -sumocean/oceanarea/rho_water,step,time));150 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcEnum,this->Total()/oceanarea/rho_water,step,time)); 151 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcIceEnum,sumice/oceanarea/rho_water,step,time)); 152 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcHydroEnum,sumice/oceanarea/rho_water,step,time)); 153 results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcOceanEnum,sumocean/oceanarea/rho_water,step,time)); 154 154 155 155 cumice->Sum(&sumice); cumhydro->Sum(&sumhydro); cumocean->Sum(&sumocean); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r26121 r26149 239 239 virtual void ElementResponse(IssmDouble* presponse,int response_enum)=0; 240 240 virtual void ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0; 241 virtual void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical=false)=0;241 virtual void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical=false)=0; 242 242 virtual int FiniteElement(void)=0; 243 243 virtual IssmDouble FloatingArea(bool scaled)=0; … … 392 392 virtual void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y)=0; 393 393 394 virtual void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze )=0;394 virtual void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0; 395 395 virtual void SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks)=0; 396 396 virtual void SealevelchangeInitialConvolution(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas,IssmDouble* loads, IssmDouble* rotationvector, SealevelMasks* masks)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r26121 r26149 70 70 void CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time,int averaging_method); 71 71 void ElementResponse(IssmDouble* presponse,int response_enum); 72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical=false){_error_("not implemented yet");};72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");}; 73 73 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 74 74 int FiniteElement(void); … … 229 229 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 230 230 231 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze ){_error_("not implemented yet");};231 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");}; 232 232 void SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks){_error_("not implemented yet");}; 233 233 void SealevelchangeInitialConvolution(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas,IssmDouble* loads, IssmDouble* rotationvector, SealevelMasks* masks){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r26121 r26149 54 54 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");}; 55 55 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; 56 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical=false){_error_("not implemented yet");};56 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");}; 57 57 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 58 58 int FiniteElement(void); … … 184 184 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 185 185 186 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze ){_error_("not implemented yet");};186 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");}; 187 187 void SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks){_error_("not implemented yet");}; 188 188 void SealevelchangeInitialConvolution(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas,IssmDouble* loads, IssmDouble* rotationvector, SealevelMasks* masks){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r26121 r26149 53 53 IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");}; 54 54 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; 55 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical=false){_error_("not implemented yet");};55 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");}; 56 56 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 57 57 void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3); … … 190 190 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 191 191 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 192 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze ){_error_("not implemented yet");};192 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");}; 193 193 void SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks){_error_("not implemented yet");}; 194 194 void SealevelchangeInitialConvolution(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas,IssmDouble* loads, IssmDouble* rotationvector, SealevelMasks* masks){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r26126 r26149 1286 1286 } 1287 1287 /*}}}*/ 1288 void Tria::ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical){/*{{{*/1288 void Tria::ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical){/*{{{*/ 1289 1289 1290 1290 /*Look for x,y,z coordinates:*/ … … 1298 1298 1299 1299 if(!spherical){ 1300 IssmDouble area; 1300 1301 vxe->SetValue(this->sid,xe,INS_VAL); 1301 1302 vye->SetValue(this->sid,ye,INS_VAL); 1302 1303 vze->SetValue(this->sid,ze,INS_VAL); 1304 area=this->GetAreaSpherical(); 1305 vareae->SetValue(this->sid,area,INS_VAL); 1306 1307 /*in addition, put in in the inputs:*/ 1308 this->inputs->SetDoubleInput(AreaEnum,this->lid,area); 1303 1309 } 1304 1310 else _error_("spherical coordinates not supported yet!"); … … 6239 6245 6240 6246 //new code 6241 void Tria::SealevelchangeGeometryOptim(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze ){ /*{{{*/6247 void Tria::SealevelchangeGeometryOptim(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){ /*{{{*/ 6242 6248 6243 6249 /*diverse:*/ 6244 6250 int nel; 6245 bool spherical=true;6246 IssmDouble llr_list[NUMVERTICES][3];6247 IssmDouble xyz_list[NUMVERTICES][3];6248 6251 IssmDouble area,planetarea,planetradius; 6252 IssmDouble constant,ratioe; 6249 6253 IssmDouble I; //change in ice thickness or water level(Farrel and Clarke, Equ. 4) 6250 6254 IssmDouble rho_earth; 6251 6255 IssmDouble lati,longi; 6252 IssmDouble constant;6253 6256 IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim; 6254 6257 int sidlist[NUMVERTICES]; … … 6321 6324 } 6322 6325 6323 /*compute area and add to inputs:*/ 6324 area=GetAreaSpherical(); 6325 this->inputs->SetDoubleInput(AreaEnum,this->lid,area); 6326 this->AddInput(SealevelAreaEnum,&area,P0Enum); 6326 /*early return:*/ 6327 6327 if(!computerigid)return; 6328 6328 … … 6353 6353 } 6354 6354 6355 /*retrieve coordinates: */6356 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);6357 6358 6355 /*compute centroids of all elements:*/ 6359 6356 for(int i=0;i<nel;i++){ … … 6362 6359 } 6363 6360 6364 constant=3/rho_earth*area/planetarea; 6361 6362 constant=3/rho_earth/planetarea; 6365 6363 6366 6364 /*Recover vertex absolute id: */ … … 6368 6366 6369 6367 for(int e=0;e<nel;e++){ 6368 ratioe=constant*areae[e]; 6370 6369 for (int i=0;i<3;i++){ 6371 6370 IssmDouble alpha; … … 6388 6387 G[i*nel+e]+=G_elastic_precomputed[index]; 6389 6388 } 6390 G[i*nel+e]=G[i*nel+e]* constant;6389 G[i*nel+e]=G[i*nel+e]*ratioe; 6391 6390 6392 6391 /*Elastic components:*/ 6393 6392 if(computeelastic){ 6394 GU[i*nel+e] = constant* U_elastic_precomputed[index];6393 GU[i*nel+e] = ratioe * U_elastic_precomputed[index]; 6395 6394 if(horiz){ 6396 6395 /*Compute azimuths, both north and east components: */ … … 6406 6405 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 6407 6406 6408 GN[i*nel+e] = constant*H_elastic_precomputed[index]*N_azim;6409 GE[i*nel+e] = constant*H_elastic_precomputed[index]*E_azim;6407 GN[i*nel+e] = ratioe*H_elastic_precomputed[index]*N_azim; 6408 GE[i*nel+e] = ratioe*H_elastic_precomputed[index]*E_azim; 6410 6409 } 6411 6410 } … … 6439 6438 } 6440 6439 } 6441 this->inputs->SetDoubleInput(AreaEnum,this->lid,area);6442 this->AddInput(SealevelAreaEnum,&area,P0Enum);6443 6440 6444 6441 /*Free allocations:*/ … … 6472 6469 void Tria::SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks){ /*{{{*/ 6473 6470 6471 //Compute sea level barystatic loads (ice, water column or bottom pressure, see Farrel and Clarke, Equ. 4) 6472 6474 6473 /*diverse:*/ 6475 6474 IssmDouble area; 6476 6475 IssmDouble phi_ice=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 6477 6476 IssmDouble phi_water=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 6478 IssmDouble I,W,BP; //change in ice thickness, water column or bottom pressure (Farrel and Clarke, Equ. 4) 6479 bool notfullygrounded=false; 6477 IssmDouble phi_bp=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 6478 IssmDouble I=0; //Do not change this! 6479 IssmDouble W=0; //Do not change this! 6480 IssmDouble BP=0; //Do not change this! 6481 6482 bool notfullygrounded=false; 6480 6483 bool computerigid= false; 6481 6484 int glfraction=1; … … 6529 6532 if(!isice && !ishydro){ 6530 6533 if(!masks->isoceanin[this->lid]){ 6534 constant=0; 6535 #ifdef _ISSM_DEBUG_ 6536 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6537 #endif 6531 6538 return; 6532 6539 } … … 6603 6610 6604 6611 /*Compute barystatic contribution in kg:*/ 6605 bslcice = rho_ice*area*I;6612 bslcice = -rho_ice*phi_ice*area*I; 6606 6613 _assert_(!xIsNan<IssmDouble>(bslcice)); 6607 6614 … … 6612 6619 /*Deal with water loads if we are on ground:*/ 6613 6620 if(!masks->isfullyfloating[this->lid]){ 6621 6622 constant+=10; //1 for water. 6623 #ifdef _ISSM_DEBUG_ 6624 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6625 #endif 6614 6626 6615 6627 /*Retrieve water height at vertices: */ … … 6619 6631 6620 6632 /*Compute barystatic component in kg:*/ 6621 bslchydro = rho_freshwater*area*phi_water*W;6633 bslchydro = -rho_freshwater*area*phi_water*W; 6622 6634 _assert_(!xIsNan<IssmDouble>(bslchydro)); 6623 6635 … … 6628 6640 /*Deal with ocean bottom pressures:*/ 6629 6641 if(masks->isoceanin[this->lid]){ 6642 6643 constant+=1; //1 for bottom pressure. 6644 #ifdef _ISSM_DEBUG_ 6645 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6646 #endif 6630 6647 6631 6648 /*Retrieve bottom pressure change and average over the element: */ … … 6635 6652 6636 6653 /*Compute barystatic component in kg:*/ 6637 bslcbp = rho_water*area*BP;6654 bslcbp = -rho_water*area*phi_bp*BP; 6638 6655 6639 6656 /*convert from m to kg/m^2:*/ 6640 BP=BP*rho_water ;6657 BP=BP*rho_water*phi_bp; 6641 6658 } 6642 6659 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r26121 r26149 70 70 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp); 71 71 void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum); 72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical=false);72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical=false); 73 73 int EdgeOnBaseIndex(); 74 74 void EdgeOnBaseIndices(int* pindex1,int* pindex); … … 174 174 void SetSealevelMasks(SealevelMasks* masks); 175 175 176 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze );176 void SealevelchangeGeometryOptim(IssmDouble* lat,IssmDouble* longi,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae); 177 177 void SealevelchangeBarystaticLoads(Vector<IssmDouble>* loads, BarystaticContributions* barycontrib, SealevelMasks* masks); 178 178 void SealevelchangeInitialConvolution(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas,IssmDouble* loads, IssmDouble* rotationvector, SealevelMasks* masks); -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r26146 r26149 608 608 IssmDouble *yye = NULL; 609 609 IssmDouble *zze = NULL; 610 IssmDouble* areae = NULL; 610 611 611 612 int horiz; … … 634 635 /*first, recover lat,long and radius vectors from vertices: */ 635 636 VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 636 ElementCoordinatesx(&xxe,&yye,&zze,femmodel->elements);637 637 if(horiz) VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices); 638 638 639 /*first, recover x,y,z and areas from elements: */ 640 ElementCoordinatesx(&xxe,&yye,&zze,&areae,femmodel->elements); 639 641 640 642 /*Run sealevel geometry routine in elements:*/ 641 643 for(Object* & object : femmodel->elements->objects){ 642 644 Element* element=xDynamicCast<Element*>(object); 643 if(optim) element->SealevelchangeGeometryOptim(latitude,longitude,radius,xx,yy,zz,xxe,yye,zze );645 if(optim) element->SealevelchangeGeometryOptim(latitude,longitude,radius,xx,yy,zz,xxe,yye,zze,areae); 644 646 else element->SealevelchangeGeometry(latitude,longitude,radius,xx,yy,zz,xxe,yye,zze); 645 647 } … … 654 656 xDelete<IssmDouble>(yye); 655 657 xDelete<IssmDouble>(zze); 658 xDelete<IssmDouble>(areae); 656 659 xDelete<IssmDouble>(latitude); 657 660 xDelete<IssmDouble>(longitude); … … 1251 1254 } /*}}}*/ 1252 1255 IssmDouble SealevelloadsOceanAverage(Vector<IssmDouble>* sealevelloads,Vector<IssmDouble>* oceanareas, IssmDouble oceanarea){ /*{{{*/ 1256 1253 1257 IssmDouble sealevelloadsaverage; 1258 1254 1259 Vector<IssmDouble>* sealevelloadsvolume=sealevelloads->Duplicate(); 1255 1260 sealevelloadsvolume->PointwiseMult(sealevelloads,oceanareas); 1256 1261 sealevelloadsvolume->Sum(&sealevelloadsaverage); 1257 1262 delete sealevelloadsvolume; 1258 return sealevelloadsaverage/oceanarea; 1263 1264 return sealevelloadsaverage/oceanarea;- 1259 1265 } /*}}}*/ 1260 1266 void RotationAxisMotion(IssmDouble* m, FemModel* femmodel,IssmDouble* loads, IssmDouble* sealevelloads){ /*{{{*/ -
issm/trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp
r26099 r26149 9 9 #include "../../toolkits/toolkits.h" 10 10 11 void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze, Elements* elements,bool spherical) {11 void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze, IssmDouble** pareae, Elements* elements,bool spherical) { 12 12 13 13 /*figure out how many vertices we have: */ … … 17 17 Vector<IssmDouble>* vye=new Vector<IssmDouble>(numberofelements); 18 18 Vector<IssmDouble>* vze=new Vector<IssmDouble>(numberofelements); 19 Vector<IssmDouble>* vareae=new Vector<IssmDouble>(numberofelements); 19 20 20 21 /*march through our elements: */ 21 22 for(Object* & object : elements->objects){ 22 23 Element* element=(Element*)object; 23 element->ElementCoordinates(vxe,vye,vze, spherical);24 element->ElementCoordinates(vxe,vye,vze,vareae,spherical); 24 25 } 25 26 … … 28 29 vye->Assemble(); 29 30 vze->Assemble(); 31 vareae->Assemble(); 30 32 31 33 /*serialize: */ … … 33 35 IssmDouble* ye=vye->ToMPISerial(); 34 36 IssmDouble* ze=vze->ToMPISerial(); 37 IssmDouble* areae=vareae->ToMPISerial(); 35 38 36 39 /*Free ressources: */ … … 38 41 delete vye; 39 42 delete vze; 43 delete vareae; 40 44 41 45 /*output: */ … … 46 50 if(pze) *pze=ze; 47 51 else xDelete<IssmDouble>(ze); 52 if(pareae) *pareae=areae; 53 else xDelete<IssmDouble>(areae); 54 48 55 } -
issm/trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.h
r26099 r26149 8 8 9 9 /* local prototypes: */ 10 void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze, Elements* elements,bool spherical=false);10 void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze,IssmDouble** pareae, Elements* elements,bool spherical=false); 11 11 12 12 #endif /* _ELEMENT_COORDINATESX_H */
Note:
See TracChangeset
for help on using the changeset viewer.