Ignore:
Timestamp:
05/31/20 21:40:46 (5 years ago)
Author:
Eric.Larour
Message:

CHG: replacing earth area computations with a constant coming from the
slr class.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r24938 r24940  
    46354635void FemModel::EsaGeodetic3D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){/*{{{*/
    46364636
    4637         IssmDouble  eartharea=0;
    4638         IssmDouble  eartharea_cpu=0;
    4639 
    46404637        int         ns,nsmax;
    46414638
     
    46464643        for(int i=0;i<ns;i++){
    46474644                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4648                 eartharea_cpu += element->GetAreaSpherical();
    4649         }
    4650         ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
    4651         ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     4645        }
    46524646
    46534647        /*Figure out max of ns: */
     
    46594653                if(i<ns){
    46604654                        Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4661                         element->EsaGeodetic3D(pUp,pNorth,pEast,latitude,longitude,radius,xx,yy,zz,eartharea);
     4655                        element->EsaGeodetic3D(pUp,pNorth,pEast,latitude,longitude,radius,xx,yy,zz);
    46624656                }
    46634657                if(i%100==0){
     
    46944688}
    46954689/*}}}*/
    4696 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* peartharea, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop) { /*{{{*/
     4690void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop) { /*{{{*/
    46974691
    46984692        /*serialized vectors:*/
     
    47024696        IssmDouble  oceanarea      = 0.;
    47034697        IssmDouble  oceanarea_cpu  = 0.;
    4704         IssmDouble  eartharea      = 0.;
    4705         IssmDouble  eartharea_cpu = 0.;
    47064698
    47074699   /*Initialize temporary vector that will be used to sum eustatic components
     
    47164708                Element*   element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    47174709                IssmDouble area=element->GetAreaSpherical();
    4718                 eartharea_cpu += area;
    47194710                if (masks->isoceanin[i]) oceanarea_cpu += area;
    47204711        }
     
    47234714        _assert_(oceanarea>0.);
    47244715
    4725         ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
    4726         ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
    4727 
    47284716        /*Call the sea level rise core: */
    47294717        for(int i=0;i<elements->Size();i++){
    47304718                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4731                 element->SealevelriseEustatic(RSLgi,&eustatic_cpu_e,masks, latitude,longitude,radius,oceanarea,eartharea);
     4719                element->SealevelriseEustatic(RSLgi,&eustatic_cpu_e,masks, latitude,longitude,radius,oceanarea);
    47324720                eustatic_cpu+=eustatic_cpu_e;
    47334721        }
     
    47474735
    47484736        /*Assign output pointers:*/
    4749         *peartharea = eartharea;
    47504737        *poceanarea = oceanarea;
    47514738        *peustatic  = eustatic;
     
    47534740}
    47544741/*}}}*/
    4755 void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old, IssmDouble eartharea, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution,int loop){/*{{{*/
     4742void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution,int loop){/*{{{*/
    47564743
    47574744        /*serialized vectors:*/
     
    47744761        for(int i=0;i<elements->Size();i++){
    47754762                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4776                 element->SealevelriseNonEustatic(RSLgo,RSLg_old,masks, latitude,longitude,radius,eartharea);
     4763                element->SealevelriseNonEustatic(RSLgo,RSLg_old,masks, latitude,longitude,radius);
    47774764        }
    47784765        pRSLgo->SetValues(gsize,indices,RSLgo,ADD_VAL);
     
    47864773}
    47874774/*}}}*/
    4788 void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, IssmDouble eartharea, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius){/*{{{*/
     4775void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius){/*{{{*/
    47894776
    47904777        /*serialized vectors:*/
     
    48024789        for(int i=0;i<elements->Size();i++){
    48034790                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4804                 element->SealevelriseMomentOfInertia(&moi_list[0],RSLg_old,masks, eartharea);
     4791                element->SealevelriseMomentOfInertia(&moi_list[0],RSLg_old,masks );
    48054792                moi_list_cpu[0] += moi_list[0];
    48064793                moi_list_cpu[1] += moi_list[1];
     
    48624849}
    48634850/*}}}*/
    4864 void FemModel::SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, IssmDouble eartharea, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop,int horiz){/*{{{*/
     4851void FemModel::SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop,int horiz){/*{{{*/
    48654852
    48664853        /*serialized vectors:*/
     
    48884875        for(int i=0;i<elements->Size();i++){
    48894876                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4890                 element->SealevelriseGeodetic(Up,North,East,RSLg,masks, latitude,longitude,radius,xx,yy,zz,eartharea,horiz);
     4877                element->SealevelriseGeodetic(Up,North,East,RSLg,masks, latitude,longitude,radius,xx,yy,zz,horiz);
    48914878        }
    48924879
Note: See TracChangeset for help on using the changeset viewer.