Changeset 24949
- Timestamp:
- 06/01/20 15:12:02 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24947 r24949 6132 6132 } 6133 6133 6134 /*From Sg, recover water sea level rise:*/6135 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg[this->vertices[i]->Sid()]/NUMVERTICES;6136 6137 /*Compute ice thickness change: */6138 Input2* deltathickness_input=this->GetInput2(SealevelriseDeltathicknessEnum);6139 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");6140 deltathickness_input->GetInputAverage(&I);6141 6142 6134 if (masks->isiceonly[this->lid]){ 6135 6136 /*Compute ice thickness change: */ 6137 Input2* deltathickness_input=this->GetInput2(SealevelriseDeltathicknessEnum); 6138 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!"); 6139 deltathickness_input->GetInputAverage(&I); 6140 6143 6141 for(int i=0;i<gsize;i++){ 6144 6142 Up[i]+=rho_ice*I*GU[i]; … … 6150 6148 } 6151 6149 else if(masks->isoceanin[this->lid]){ 6150 /*From Sg, recover water sea level rise:*/ 6151 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg[this->vertices[i]->Sid()]/NUMVERTICES; 6152 6152 6153 for(int i=0;i<gsize;i++){ 6153 6154 Up[i]+=rho_water*S*GU[i]; -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r24947 r24949 4778 4778 } 4779 4779 /*}}}*/ 4780 void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks , IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius){/*{{{*/4780 void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks){/*{{{*/ 4781 4781 4782 4782 /*serialized vectors:*/ 4783 bool spherical=true; 4783 4784 IssmDouble* RSLg_old=NULL; 4784 4785 IssmDouble tide_love_h, tide_love_k, fluid_love, moi_e, moi_p, omega, g; … … 4786 4787 IssmDouble m1, m2, m3; 4787 4788 IssmDouble lati, longi, radi, value; 4789 IssmDouble *latitude = NULL; 4790 IssmDouble *longitude = NULL; 4791 IssmDouble *radius = NULL; 4788 4792 4789 4793 /*Serialize vectors from previous iteration:*/ … … 4820 4824 m2 = 1/(1-tide_love_k/fluid_love) * (1+load_love_k2)/(moi_p-moi_e) * moi_list[1]; 4821 4825 m3 = -(1+load_love_k2)/moi_p * moi_list[2]; // term associated with fluid number (3-order-of-magnitude smaller) is negelected 4826 4827 /*recover lat,long and radius vectors from vertices: */ 4828 VertexCoordinatesx(&latitude,&longitude,&radius,this->vertices,spherical); 4822 4829 4823 4830 /* Green's function (1+k_2-h_2/g): checked against Glenn Milne's thesis Chapter 3 (eqs: 3.3-4, 3.10-11) … … 4848 4855 if(pIyz)*pIyz=moi_list[1]; 4849 4856 if(pIzz)*pIzz=moi_list[2]; 4857 xDelete<IssmDouble>(latitude); 4858 xDelete<IssmDouble>(longitude); 4859 xDelete<IssmDouble>(radius); 4850 4860 4851 4861 /*Free ressources:*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r24947 r24949 166 166 void SealevelriseGeometry(IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 167 167 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, SealevelMasks* masks,bool verboseconvolution); 168 void SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks , IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);168 void SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks); 169 169 void SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, SealevelMasks* masks); 170 170 IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg,SealevelMasks* masks, IssmDouble oceanarea); -
issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
r24947 r24949 422 422 bool save_results; 423 423 int gsize; 424 bool spherical=true;425 424 bool converged=true; 426 425 bool rotation=true; … … 429 428 IssmDouble eps_rel; 430 429 IssmDouble eps_abs; 431 IssmDouble *latitude = NULL;432 IssmDouble *longitude = NULL;433 IssmDouble *radius = NULL;434 430 IssmDouble eustatic; 435 431 IssmDouble Ixz, Iyz, Izz; … … 445 441 femmodel->parameters->FindParam(&rotation,SealevelriseRotationEnum); 446 442 447 /*first, recover lat,long and radius vectors from vertices: */448 VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical);449 450 443 /*Figure out size of g-set deflection vector and allocate solution vector: */ 451 444 gsize = femmodel->nodes->NumberOfDofs(GsetEnum); … … 482 475 /*call rotational feedback module: */ 483 476 RSLgo_rot = new Vector<IssmDouble>(gsize); RSLgo_rot->Assemble(); 484 femmodel->SealevelriseRotationalFeedback(RSLgo_rot,RSLg_old,&Ixz,&Iyz,&Izz, masks , latitude,longitude,radius);477 femmodel->SealevelriseRotationalFeedback(RSLgo_rot,RSLg_old,&Ixz,&Iyz,&Izz, masks); 485 478 RSLgo_rot->Assemble(); 486 479 … … 524 517 if(VerboseConvergence()) _printf0_("\n total number of iterations: " << count-1 << "\n"); 525 518 526 xDelete<IssmDouble>(latitude);527 xDelete<IssmDouble>(longitude);528 xDelete<IssmDouble>(radius);529 519 delete RSLg_old; 530 520
Note:
See TracChangeset
for help on using the changeset viewer.