Changeset 24984


Ignore:
Timestamp:
06/08/20 17:07:15 (5 years ago)
Author:
Eric.Larour
Message:

CHG: changing names around.

Location:
issm/trunk-jpl/src/c
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp

    r24981 r24984  
    2424                if(world_rank!=0){
    2525                        femmodel_init= new FemModel(argc,argv,evaluation_comm);
    26 
    27                         /*hack: we don't have any place to put solution modules that fit between the model processor
    28                          *and the cores:*/
    29                         //for (int i=0;i<femmodel_init->nummodels;i++) if(femmodel_init->analysis_type_list[i]==SealevelriseAnalysisEnum)sealevelrise_core_geometry(femmodel_init);
    30 
    3126                        femmodel_init->profiler->Start(CORE);
    3227                }
  • TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp

    r24949 r24984  
    46734673#endif
    46744674#ifdef _HAVE_SEALEVELRISE_
    4675 void FemModel::SealevelriseGeometry(IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz) { /*{{{*/
    4676 
    4677         /*Run sealevelrie geometry routine in elements:*/
    4678         for(int i=0;i<elements->Size();i++){
    4679                 Element*   element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4680                 element->SealevelriseGeometry(latitude,longitude,radius,xx,yy,zz);
    4681         }
    4682 
    4683 }
    4684 /*}}}*/
    46854675void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks) { /*{{{*/
    46864676
  • TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h

    r24949 r24984  
    164164                #ifdef _HAVE_SEALEVELRISE_
    165165                void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks);
    166                 void SealevelriseGeometry(IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
    167166                void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old,  SealevelMasks* masks,bool verboseconvolution);
    168167                void SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks);
  • TabularUnified issm/trunk-jpl/src/c/cores/CorePointerFromSolutionEnum.cpp

    r22009 r24984  
    6060                        break;
    6161                case SealevelriseSolutionEnum:
    62                         solutioncore=&sealevelrise_core;
     62                        solutioncore=&sealevelchange_core;
    6363                        break;
    6464                case EsaSolutionEnum:
  • TabularUnified issm/trunk-jpl/src/c/cores/cores.h

    r24940 r24984  
    5353void bmb_core(FemModel* femmodel);
    5454void damage_core(FemModel* femmodel);
    55 void sealevelrise_core(FemModel* femmodel);
    56 void geodetic_core(FemModel* femmodel);
    57 void steric_core(FemModel* femmodel);
     55void sealevelchange_core(FemModel* femmodel);
     56void grd_core(FemModel* femmodel);
     57void dynstr_core(FemModel* femmodel);
    5858void sealevelrise_core_geometry(FemModel* femmodel);
    5959SealevelMasks* sealevelrise_core_masks(FemModel* femmodel);
  • TabularUnified issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp

    r24983 r24984  
    1 /*!\file: sealevelrise_core.cpp
    2  * \brief: core of the SLR solution
     1/*!\file: sealevelchange_core.cpp
     2 * \brief: core of the sea-level change solution
    33 */
    44
     
    1414
    1515
    16 /*cores:*/
    17 void sealevelrise_core(FemModel* femmodel){ /*{{{*/
     16/*main cores:*/
     17void sealevelchange_core(FemModel* femmodel){ /*{{{*/
    1818
    1919        /*Start profiler*/
     
    4646
    4747        /*Run geodetic:*/
    48         geodetic_core(femmodel);
     48        grd_core(femmodel);
    4949
    5050        /*Run steric core for sure:*/
    51         steric_core(femmodel);
     51        dynstr_core(femmodel);
    5252
    5353        /*Save results: */
     
    6969}
    7070/*}}}*/
    71 void geodetic_core(FemModel* femmodel){ /*{{{*/
     71void grd_core(FemModel* femmodel){ /*{{{*/
     72
     73        /*Gravity rotation deformation core GRD: */
    7274
    7375        /*variables:*/
     
    242244}
    243245/*}}}*/
     246void dynstr_core(FemModel* femmodel){ /*{{{*/
     247
     248        /*variables:*/
     249        Vector<IssmDouble> *bedrock  = NULL;
     250        Vector<IssmDouble> *SL  = NULL;
     251        Vector<IssmDouble> *steric_rate_g  = NULL;
     252        Vector<IssmDouble> *dynamic_rate_g = NULL;
     253        Vector<IssmDouble> *hydro_rate_g  = NULL;
     254        Vector<IssmDouble> *U_esa_rate= NULL;
     255        Vector<IssmDouble> *N_esa_rate= NULL;
     256        Vector<IssmDouble> *U_gia_rate= NULL;
     257        Vector<IssmDouble> *N_gia_rate= NULL;
     258
     259        /*parameters: */
     260        bool isslr=0;
     261        int  solution_type;
     262        IssmDouble          dt;
     263        int  geodetic=0;
     264
     265        /*Retrieve parameters:*/
     266        femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
     267        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
     268        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
     269        femmodel->parameters->FindParam(&geodetic,SealevelriseGeodeticEnum);
     270
     271        /*in case we are running SealevelriseSolutionEnum, then bypass transient settings:*/
     272        if(solution_type==SealevelriseSolutionEnum)isslr=1;
     273
     274        /*Should we be here?:*/
     275        if(!isslr)return;
     276
     277        /*Verbose: */
     278        if(VerboseSolution()) _printf0_("         computing steric sea level rise\n");
     279
     280        /*Retrieve geoid viscous and elastic rates, bedrock uplift viscous and elastic rates + steric rate, as vectors:*/
     281        GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum);
     282        GetVectorFromInputsx(&SL,femmodel,SealevelEnum,VertexSIdEnum);
     283        GetStericRate(&steric_rate_g,femmodel);
     284        GetDynamicRate(&dynamic_rate_g,femmodel);
     285        GetVectorFromInputsx(&hydro_rate_g,femmodel,SealevelriseHydroRateEnum,VertexSIdEnum);
     286        if(geodetic){
     287                GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum);
     288                GetVectorFromInputsx(&U_gia_rate,femmodel,SealevelUGiaRateEnum,VertexSIdEnum);
     289                GetVectorFromInputsx(&N_esa_rate,femmodel,SealevelNEsaRateEnum,VertexSIdEnum);
     290                GetVectorFromInputsx(&N_gia_rate,femmodel,SealevelNGiaRateEnum,VertexSIdEnum);
     291        }
     292
     293        /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate)  * dt + steric_rate + dynamic_rate + hydro_rate* dt*/
     294        if(geodetic){
     295                SL->AXPY(N_gia_rate,dt);
     296                SL->AXPY(N_esa_rate,dt);
     297        }
     298        SL->AXPY(steric_rate_g,dt);
     299        SL->AXPY(dynamic_rate_g,dt);
     300        SL->AXPY(hydro_rate_g,dt);
     301
     302        /*compute new bedrock position: */
     303        if(geodetic){
     304                bedrock->AXPY(U_esa_rate,dt);
     305                bedrock->AXPY(U_gia_rate,dt);
     306        }
     307
     308        /*update element inputs:*/
     309        InputUpdateFromVectorx(femmodel,bedrock,BedEnum,VertexSIdEnum);
     310        InputUpdateFromVectorx(femmodel,SL,SealevelEnum,VertexSIdEnum);
     311
     312        /*Free ressources:*/   
     313        delete bedrock;
     314        delete SL;
     315        delete steric_rate_g;
     316        delete dynamic_rate_g;
     317        delete hydro_rate_g;
     318        if(geodetic){
     319                delete U_esa_rate;
     320                delete U_gia_rate;
     321                delete N_esa_rate;
     322                delete N_gia_rate;
     323        }
     324}
     325/*}}}*/
     326
    244327SealevelMasks* sealevelrise_core_masks(FemModel* femmodel) {  /*{{{*/
    245328
     
    289372        if(horiz) VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices);
    290373
    291         /*call the FemModel geometry module: */
    292         femmodel->SealevelriseGeometry(latitude, longitude, xx,yy,zz,radius);
     374
     375        /*Run sealevelrie geometry routine in elements:*/
     376        for(int i=0;i<femmodel->elements->Size();i++){
     377                Element*   element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
     378                element->SealevelriseGeometry(latitude,longitude,radius,xx,yy,zz);
     379        }
    293380
    294381        /*Free ressources:*/
     
    652739}
    653740/*}}}*/
    654 void steric_core(FemModel* femmodel){ /*{{{*/
    655 
    656         /*variables:*/
    657         Vector<IssmDouble> *bedrock  = NULL;
    658         Vector<IssmDouble> *SL  = NULL;
    659         Vector<IssmDouble> *steric_rate_g  = NULL;
    660         Vector<IssmDouble> *dynamic_rate_g = NULL;
    661         Vector<IssmDouble> *hydro_rate_g  = NULL;
    662         Vector<IssmDouble> *U_esa_rate= NULL;
    663         Vector<IssmDouble> *N_esa_rate= NULL;
    664         Vector<IssmDouble> *U_gia_rate= NULL;
    665         Vector<IssmDouble> *N_gia_rate= NULL;
    666 
    667         /*parameters: */
    668         bool isslr=0;
    669         int  solution_type;
    670         IssmDouble          dt;
    671         int  geodetic=0;
    672 
    673         /*Retrieve parameters:*/
    674         femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
    675         femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    676         femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
    677         femmodel->parameters->FindParam(&geodetic,SealevelriseGeodeticEnum);
    678 
    679         /*in case we are running SealevelriseSolutionEnum, then bypass transient settings:*/
    680         if(solution_type==SealevelriseSolutionEnum)isslr=1;
    681 
    682         /*Should we be here?:*/
    683         if(!isslr)return;
    684 
    685         /*Verbose: */
    686         if(VerboseSolution()) _printf0_("         computing steric sea level rise\n");
    687 
    688         /*Retrieve geoid viscous and elastic rates, bedrock uplift viscous and elastic rates + steric rate, as vectors:*/
    689         GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum);
    690         GetVectorFromInputsx(&SL,femmodel,SealevelEnum,VertexSIdEnum);
    691         GetStericRate(&steric_rate_g,femmodel);
    692         GetDynamicRate(&dynamic_rate_g,femmodel);
    693         GetVectorFromInputsx(&hydro_rate_g,femmodel,SealevelriseHydroRateEnum,VertexSIdEnum);
    694         if(geodetic){
    695                 GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum);
    696                 GetVectorFromInputsx(&U_gia_rate,femmodel,SealevelUGiaRateEnum,VertexSIdEnum);
    697                 GetVectorFromInputsx(&N_esa_rate,femmodel,SealevelNEsaRateEnum,VertexSIdEnum);
    698                 GetVectorFromInputsx(&N_gia_rate,femmodel,SealevelNGiaRateEnum,VertexSIdEnum);
    699         }
    700 
    701         /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate)  * dt + steric_rate + dynamic_rate + hydro_rate* dt*/
    702         if(geodetic){
    703                 SL->AXPY(N_gia_rate,dt);
    704                 SL->AXPY(N_esa_rate,dt);
    705         }
    706         SL->AXPY(steric_rate_g,dt);
    707         SL->AXPY(dynamic_rate_g,dt);
    708         SL->AXPY(hydro_rate_g,dt);
    709 
    710         /*compute new bedrock position: */
    711         if(geodetic){
    712                 bedrock->AXPY(U_esa_rate,dt);
    713                 bedrock->AXPY(U_gia_rate,dt);
    714         }
    715 
    716         /*update element inputs:*/
    717         InputUpdateFromVectorx(femmodel,bedrock,BedEnum,VertexSIdEnum);
    718         InputUpdateFromVectorx(femmodel,SL,SealevelEnum,VertexSIdEnum);
    719 
    720         /*Free ressources:*/   
    721         delete bedrock;
    722         delete SL;
    723         delete steric_rate_g;
    724         delete dynamic_rate_g;
    725         delete hydro_rate_g;
    726         if(geodetic){
    727                 delete U_esa_rate;
    728                 delete U_gia_rate;
    729                 delete N_esa_rate;
    730                 delete N_gia_rate;
    731         }
    732 }
    733 /*}}}*/
    734741
    735742/*support routines:*/
  • TabularUnified issm/trunk-jpl/src/c/cores/transient_core.cpp

    r24924 r24984  
    228228
    229229                /*Sea level rise: */
    230                 if(isslr) sealevelrise_core(femmodel);
     230                if(isslr) sealevelchange_core(femmodel);
    231231
    232232                /*unload results*/
Note: See TracChangeset for help on using the changeset viewer.