Changeset 21261


Ignore:
Timestamp:
10/12/16 12:16:21 (8 years ago)
Author:
adhikari
Message:

NEW: added new ESA capability to compute 3D elastostatic crustal deformation

Location:
issm/trunk-jpl/src/c
Files:
3 added
18 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r20983 r21261  
    466466endif
    467467#}}}
     468#Esa sources  {{{
     469if ESA
     470issm_sources +=  ./cores/esa_core.cpp\
     471                                        ./analyses/EsaAnalysis.cpp
     472endif
     473#}}}
    468474#Slr sources  {{{
    469475if SEALEVELRISE
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r21096 r21261  
    107107                case GiaAnalysisEnum : return new GiaAnalysis();
    108108                #endif
     109                #ifdef _HAVE_ESA_
     110                case EsaAnalysisEnum : return new EsaAnalysis();
     111                #endif
    109112                #ifdef _HAVE_MESHDEFORMATION_
    110113                case MeshdeformationAnalysisEnum : return new MeshdeformationAnalysis();
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r20983 r21261  
    2424#include "./FreeSurfaceTopAnalysis.h"
    2525#include "./GiaAnalysis.h"
     26#include "./EsaAnalysis.h"
    2627#include "./HydrologyDCEfficientAnalysis.h"
    2728#include "./HydrologyDCInefficientAnalysis.h"
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r21232 r21261  
    15271527                                name==SealevelEustaticEnum ||
    15281528                                name==SealevelriseDeltathicknessEnum ||
     1529                                name==EsaUmotionEnum ||
     1530                                name==EsaNmotionEnum ||
     1531                                name==EsaEmotionEnum ||
     1532                                name==EsaDeltathicknessEnum ||
    15291533                                name==GiaWEnum ||
    15301534                                name==GiadWdtEnum ||
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r20999 r21261  
    296296                virtual void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0;
    297297                #endif
     298                #ifdef _HAVE_ESA_
     299                virtual void          EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea)=0;
     300                #endif
    298301                #ifdef _HAVE_SEALEVELRISE_
    299302                virtual IssmDouble    GetArea3D(void)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r20999 r21261  
    183183                void           GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
    184184                #endif
     185                #ifdef _HAVE_ESA_
     186                void    EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea){_error_("not implemented yet!");};
     187                #endif
    185188                #ifdef _HAVE_SEALEVELRISE_
    186189                IssmDouble    OceanArea(void){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r20999 r21261  
    168168                void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
    169169#endif
    170 
     170#ifdef _HAVE_ESA_
     171                void    EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea){_error_("not implemented yet!");};
     172#endif
    171173#ifdef _HAVE_SEALEVELRISE_
    172174                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r20999 r21261  
    175175                void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
    176176#endif
     177#ifdef _HAVE_ESA_
     178                void    EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea){_error_("not implemented yet!");};
     179#endif
    177180#ifdef _HAVE_SEALEVELRISE_
    178181                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r21248 r21261  
    35803580/*}}}*/
    35813581#endif
    3582 
     3582#ifdef _HAVE_ESA_
     3583void    Tria::EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea){ /*{{{*/
     3584
     3585        /*diverse:*/
     3586        int gsize;
     3587        bool spherical=true;
     3588        IssmDouble llr_list[NUMVERTICES][3];
     3589        IssmDouble xyz_list[NUMVERTICES][3];
     3590        IssmDouble area;
     3591        IssmDouble I;           //ice/water loading
     3592        IssmDouble late,longe,re;
     3593        IssmDouble lati,longi,ri;
     3594        IssmDouble rho_ice,rho_water,rho_earth;
     3595        IssmDouble minlong=400;
     3596        IssmDouble maxlong=-20;
     3597
     3598        /*precomputed elastic green functions:*/
     3599        IssmDouble* U_elastic_precomputed = NULL;
     3600        IssmDouble* H_elastic_precomputed = NULL;
     3601        int         M;
     3602       
     3603        /*computation of Green functions:*/
     3604        IssmDouble* U_elastic= NULL;
     3605        IssmDouble* N_elastic= NULL;
     3606        IssmDouble* E_elastic= NULL;
     3607       
     3608        /*optimization:*/
     3609        bool store_green_functions=false;
     3610
     3611        /*early return if we are not on the (ice) loading point: */
     3612        //if(!(this->inputs->Max(MaskIceLevelsetEnum)<0)) return;
     3613
     3614        /*recover material parameters: */
     3615        rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
     3616        rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
     3617        rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
     3618
     3619        /*how many dofs are we working with here? */
     3620        this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
     3621
     3622        /*compute area of element:*/
     3623        area=GetAreaSpherical();
     3624
     3625        /*element centroid (spherical): */
     3626        /* Where is the centroid of this element?:{{{*/
     3627        ::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
     3628
     3629        minlong=400; maxlong=-20;
     3630        for (int i=0;i<NUMVERTICES;i++){
     3631                llr_list[i][0]=(90-llr_list[i][0]);
     3632                if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
     3633                if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
     3634                if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
     3635        }
     3636        if(minlong==0 && maxlong>180){
     3637                if (llr_list[0][1]==0)llr_list[0][1]=360;
     3638                if (llr_list[1][1]==0)llr_list[1][1]=360;
     3639                if (llr_list[2][1]==0)llr_list[2][1]=360;
     3640        }
     3641
     3642        // correction at the north pole
     3643        if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
     3644        if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
     3645        if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
     3646
     3647        //correction at the south pole
     3648        if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
     3649        if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
     3650        if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
     3651
     3652        late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
     3653        longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
     3654
     3655        late=90-late;
     3656        if(longe>180)longe=(longe-180)-180;
     3657
     3658        late=late/180*PI;
     3659        longe=longe/180*PI;
     3660        /*}}}*/
     3661
     3662        /*figure out gravity center of our element (Cartesian): */
     3663        IssmDouble x_element, y_element, z_element;
     3664        ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     3665        x_element=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
     3666        y_element=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
     3667        z_element=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0;
     3668
     3669        /*recover elastic Green's functions for displacement:*/
     3670        DoubleVecParam* U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaUElasticEnum)); _assert_(U_parameter);
     3671        DoubleVecParam* H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaHElasticEnum)); _assert_(H_parameter);
     3672        U_parameter->GetParameterValueByPointer(&U_elastic_precomputed,&M);
     3673        H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M);
     3674
     3675        /*Compute ice thickness change: */
     3676        Input*  deltathickness_input=inputs->GetInput(EsaDeltathicknessEnum);
     3677        if (!deltathickness_input)_error_("delta thickness input needed to compute elastic adjustment!");
     3678        deltathickness_input->GetInputAverage(&I);
     3679               
     3680        /*initialize: */
     3681        U_elastic=xNewZeroInit<IssmDouble>(gsize);
     3682        N_elastic=xNewZeroInit<IssmDouble>(gsize);
     3683        E_elastic=xNewZeroInit<IssmDouble>(gsize);
     3684
     3685        int* indices=xNew<int>(gsize);
     3686        IssmDouble* U_values=xNewZeroInit<IssmDouble>(gsize);
     3687        IssmDouble* N_values=xNewZeroInit<IssmDouble>(gsize);
     3688        IssmDouble* E_values=xNewZeroInit<IssmDouble>(gsize);
     3689        IssmDouble alpha;
     3690        IssmDouble delPhi,delLambda;
     3691        IssmDouble dx, dy, dz, x, y, z;
     3692        IssmDouble N_azim, E_azim;
     3693
     3694        for(int i=0;i<gsize;i++){
     3695
     3696                indices[i]=i;
     3697
     3698                /*Compute alpha angle between centroid and current vertex: */
     3699                lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
     3700
     3701                delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
     3702                alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
     3703
     3704                /*Compute azimuths, both north and east components: */
     3705                x = xx[i]; y = yy[i]; z = zz[i];
     3706                if(latitude[i]==90){
     3707                        x=1e-12; y=1e-12;
     3708                }
     3709                if(latitude[i]==-90){
     3710                        x=1e-12; y=1e-12;
     3711                }
     3712                dx = x_element-x; dy = y_element-y; dz = z_element-z;
     3713                N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
     3714                E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
     3715               
     3716                /*Elastic component  (from Eq 17 in Adhikari et al, GMD 2015): */
     3717                int index=reCast<int,IssmDouble>(alpha/PI*(M-1));
     3718                U_elastic[i] += U_elastic_precomputed[index];
     3719                N_elastic[i] += H_elastic_precomputed[index]*N_azim;
     3720                E_elastic[i] += H_elastic_precomputed[index]*E_azim;
     3721
     3722                /*Add all components to the pUp solution vectors:*/
     3723                U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i];
     3724                N_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*N_elastic[i];
     3725                E_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*E_elastic[i];
     3726        }
     3727        pUp->SetValues(gsize,indices,U_values,ADD_VAL);
     3728        pNorth->SetValues(gsize,indices,N_values,ADD_VAL);
     3729        pEast->SetValues(gsize,indices,E_values,ADD_VAL);
     3730       
     3731        /*free ressources:*/
     3732        xDelete<int>(indices);
     3733        xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
     3734        xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
     3735
     3736        return;
     3737}
     3738/*}}}*/
     3739#endif
    35833740#ifdef _HAVE_SEALEVELRISE_
    35843741IssmDouble    Tria::OceanArea(void){ /*{{{*/
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r20999 r21261  
    144144                void   GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
    145145                #endif
     146                #ifdef _HAVE_ESA_
     147                void    EsaGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea);
     148                #endif
    146149                #ifdef _HAVE_SEALEVELRISE_
    147150                IssmDouble OceanArea(void);
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r21159 r21261  
    625625                        break;
    626626               
     627                case EsaSolutionEnum:
     628                        analyses_temp[numanalyses++]=EsaAnalysisEnum;
     629                        break;
     630               
    627631                case SealevelriseSolutionEnum:
    628632                        analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
     
    638642
    639643                case TransientSolutionEnum:{
    640                         bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslr,isgia;
     644                        bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslr,isesa,isgia;
    641645                        iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
    642646                        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
     
    651655                        iomodel->FindConstant(&issmb,"md.transient.issmb");
    652656                        iomodel->FindConstant(&isslr,"md.transient.isslr");
     657                        iomodel->FindConstant(&isesa,"md.transient.isesa");
    653658                        iomodel->FindConstant(&isgia,"md.transient.isgia");
    654659                        if(isstressbalance){
     
    694699                        if(isslr){
    695700                                analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
     701                        }
     702                        if(isesa){
     703                                analyses_temp[numanalyses++]=EsaAnalysisEnum;
    696704                        }
    697705                        if(isgia){
     
    22912299/*}}}*/
    22922300#endif
     2301#ifdef _HAVE_ESA_
     2302void FemModel::EsaGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){/*{{{*/
     2303
     2304        IssmDouble  eartharea=0;
     2305        IssmDouble  eartharea_cpu=0;
     2306
     2307        int         ns,nsmax;
     2308       
     2309        /*Go through elements, and add contribution from each element to the deflection vector wg:*/
     2310        ns = elements->Size();
     2311       
     2312        /*First, figure out the surface area of Earth: */
     2313        for(int i=0;i<ns;i++){
     2314                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
     2315                eartharea_cpu += element->GetAreaSpherical();
     2316        }
     2317        ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     2318        ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     2319
     2320        /*Figure out max of ns: */
     2321        ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
     2322        ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
     2323
     2324        /*Call the esa geodetic core: */
     2325        for(int i=0;i<nsmax;i++){
     2326                if(i<ns){
     2327                        Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
     2328                        element->EsaGeodetic(pUp,pNorth,pEast,latitude,longitude,radius,xx,yy,zz,eartharea);
     2329                }
     2330                if(i%100==0){
     2331                        pUp->Assemble();
     2332                        pNorth->Assemble();
     2333                        pEast->Assemble();
     2334                }
     2335        }
     2336       
     2337        /*One last time: */
     2338        pUp->Assemble();
     2339        pNorth->Assemble();
     2340        pEast->Assemble();
     2341
     2342        /*Free ressources:*/
     2343        xDelete<IssmDouble>(latitude);
     2344        xDelete<IssmDouble>(longitude);
     2345        xDelete<IssmDouble>(radius);
     2346        xDelete<IssmDouble>(xx);
     2347        xDelete<IssmDouble>(yy);
     2348        xDelete<IssmDouble>(zz);
     2349}
     2350/*}}}*/
     2351#endif
    22932352#ifdef _HAVE_SEALEVELRISE_
    22942353void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius) { /*{{{*/
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r20999 r21261  
    113113                void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y);
    114114                #endif
     115                #ifdef _HAVE_ESA_
     116                void EsaGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
     117                #endif
    115118                #ifdef _HAVE_SEALEVELRISE_
    116119                void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
  • issm/trunk-jpl/src/c/cores/CorePointerFromSolutionEnum.cpp

    r19984 r21261  
    6262                        solutioncore=&sealevelrise_core;
    6363                        break;
     64                case EsaSolutionEnum:
     65                        solutioncore=&esa_core;
     66                        break;
    6467                case GiaSolutionEnum:
    6568                        #if _HAVE_GIA_
  • issm/trunk-jpl/src/c/cores/cores.h

    r20454 r21261  
    4747void dummy_core(FemModel* femmodel);
    4848void gia_core(FemModel* femmodel);
     49void esa_core(FemModel* femmodel);
    4950void smb_core(FemModel* femmodel);
    5051void damage_core(FemModel* femmodel);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r20690 r21261  
    7777                parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgroundingline",TransientIsgroundinglineEnum));
    7878                parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgia",TransientIsgiaEnum));
     79                parameters->AddObject(iomodel->CopyConstantObject("md.transient.isesa",TransientIsesaEnum));
    7980                parameters->AddObject(iomodel->CopyConstantObject("md.transient.isdamageevolution",TransientIsdamageevolutionEnum));
    8081                parameters->AddObject(iomodel->CopyConstantObject("md.transient.ishydrology",TransientIshydrologyEnum));
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21232 r21261  
    343343        TransientIsthermalEnum,
    344344        TransientIsgiaEnum,
     345        TransientIsesaEnum,
    345346        TransientIsdamageevolutionEnum,
    346347        TransientIshydrologyEnum,
     
    779780        SealevelriseNumRequestedOutputsEnum,
    780781        /*}}}*/
     782        /*Elastic adjustment (ESA){{{*/
     783        EsaUmotionEnum,
     784        EsaNmotionEnum,
     785        EsaEmotionEnum,
     786        EsaDeltathicknessEnum,
     787        EsaUElasticEnum,
     788        EsaHElasticEnum,
     789        EsaTransitionsEnum,
     790        EsaRequestedOutputsEnum,
     791        EsaNumRequestedOutputsEnum,
     792        /*}}}*/
    781793        ParametersENDEnum,
    782794        /*Coordinate Systems{{{*/
     
    898910        GiaSolutionEnum,
    899911        GiaAnalysisEnum,
     912        EsaSolutionEnum,
     913        EsaAnalysisEnum,
    900914        MeshdeformationAnalysisEnum,
    901915        LevelsetAnalysisEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21232 r21261  
    349349                case TransientIsthermalEnum : return "TransientIsthermal";
    350350                case TransientIsgiaEnum : return "TransientIsgia";
     351                case TransientIsesaEnum : return "TransientIsesa";
    351352                case TransientIsdamageevolutionEnum : return "TransientIsdamageevolution";
    352353                case TransientIshydrologyEnum : return "TransientIshydrology";
     
    759760                case SealevelriseRequestedOutputsEnum : return "SealevelriseRequestedOutputs";
    760761                case SealevelriseNumRequestedOutputsEnum : return "SealevelriseNumRequestedOutputs";
     762                case EsaUmotionEnum : return "EsaUmotion";
     763                case EsaNmotionEnum : return "EsaNmotion";
     764                case EsaEmotionEnum : return "EsaEmotion";
     765                case EsaDeltathicknessEnum : return "EsaDeltathickness";
     766                case EsaUElasticEnum : return "EsaUElastic";
     767                case EsaHElasticEnum : return "EsaHElastic";
     768                case EsaTransitionsEnum : return "EsaTransitions";
     769                case EsaRequestedOutputsEnum : return "EsaRequestedOutputs";
     770                case EsaNumRequestedOutputsEnum : return "EsaNumRequestedOutputs";
    761771                case ParametersENDEnum : return "ParametersEND";
    762772                case XYEnum : return "XY";
     
    871881                case GiaSolutionEnum : return "GiaSolution";
    872882                case GiaAnalysisEnum : return "GiaAnalysis";
     883                case EsaSolutionEnum : return "EsaSolution";
     884                case EsaAnalysisEnum : return "EsaAnalysis";
    873885                case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
    874886                case LevelsetAnalysisEnum : return "LevelsetAnalysis";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21232 r21261  
    355355              else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
    356356              else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
     357              else if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum;
    357358              else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum;
    358359              else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
     
    382383              else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum;
    383384              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
    384               else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
     388              if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
     389              else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
    389390              else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum;
    390391              else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
     
    505506              else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
    506507              else if (strcmp(name,"Vx")==0) return VxEnum;
    507               else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
     511              if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
     512              else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
    512513              else if (strcmp(name,"Vy")==0) return VyEnum;
    513514              else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
     
    628629              else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum;
    629630              else if (strcmp(name,"Outputdefinition47")==0) return Outputdefinition47Enum;
    630               else if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum;
     634              if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum;
     635              else if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum;
    635636              else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum;
    636637              else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum;
     
    751752              else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
    752753              else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
    753               else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
     757              if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
     758              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
    758759              else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
    759760              else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
     
    777778              else if (strcmp(name,"SealevelriseRequestedOutputs")==0) return SealevelriseRequestedOutputsEnum;
    778779              else if (strcmp(name,"SealevelriseNumRequestedOutputs")==0) return SealevelriseNumRequestedOutputsEnum;
     780              else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
     781              else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum;
     782              else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum;
     783              else if (strcmp(name,"EsaDeltathickness")==0) return EsaDeltathicknessEnum;
     784              else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
     785              else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
     786              else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
     787              else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
     788              else if (strcmp(name,"EsaNumRequestedOutputs")==0) return EsaNumRequestedOutputsEnum;
    779789              else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
    780790              else if (strcmp(name,"XY")==0) return XYEnum;
     
    865875              else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
    866876              else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
    867               else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
    868881              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
    869882              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
     
    875888              else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
    876889              else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
     890              else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
    881891              else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    882892              else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
     
    892902              else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
    893903              else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
     904              else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
     905              else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
    894906              else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
    895907              else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
Note: See TracChangeset for help on using the changeset viewer.