Changeset 18504


Ignore:
Timestamp:
Sep 11, 2014, 7:07:06 AM (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: working on sea ice model

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/SeaiceAnalysis.cpp

    r18502 r18504  
    1010}/*}}}*/
    1111void SeaiceAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
     12        parameters->AddObject(iomodel->CopyConstantObject(SeaiceMinConcentrationEnum));
     13        parameters->AddObject(iomodel->CopyConstantObject(SeaiceMinThicknessEnum));
     14        parameters->AddObject(iomodel->CopyConstantObject(SeaiceMaxThicknessEnum));
    1215}/*}}}*/
    1316void SeaiceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
    … …  
    3437        iomodel->FetchDataToInput(elements,SurfaceforcingsWindVxEnum);
    3538        iomodel->FetchDataToInput(elements,SurfaceforcingsWindVyEnum);
    36         iomodel->FetchDataToInput(elements,MaterialsDamageEnum);
     39        iomodel->FetchDataToInput(elements,DamageEnum);
    3740        iomodel->FetchDataToInput(elements,VxStarEnum);
    3841        iomodel->FetchDataToInput(elements,VyStarEnum);
    … …  
    4043        iomodel->FetchDataToInput(elements,VyEnum);
    4144        iomodel->FetchDataToInput(elements,SeaiceCoriolisFactorEnum);
     45        iomodel->FetchDataToInput(elements,StressTensorPredictorxxEnum);
     46        iomodel->FetchDataToInput(elements,StressTensorPredictoryyEnum);
     47        iomodel->FetchDataToInput(elements,StressTensorPredictorxyEnum);
     48        iomodel->FetchDataToInput(elements,MeshXEnum);
     49        iomodel->FetchDataToInput(elements,MeshYEnum);
    4250}/*}}}*/
    4351void SeaiceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
    … …  
    7179        /* Check if there is ice in this element */
    7280        Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
    73         if(concentration_input->Max()==0.) return NULL;
     81        IssmDouble c_min; element->FindParam(&c_min,SeaiceMinConcentrationEnum);
     82        if(concentration_input->Max()<=c_min) return NULL;
    7483
    7584        /*Intermediaries */
    … …  
    96105        element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum);
    97106        element->FindParam(&ocean_turning_angle,BasalforcingsOceanTurningAngleEnum);
    98         IssmDouble rho_i           = element->GetMaterialParameter(MaterialsRhoIceEnum);
     107        IssmDouble rho_i                  = element->GetMaterialParameter(MaterialsRhoIceEnum);
     108        IssmDouble time_relaxation_stress = element->GetMaterialParameter(MaterialsTimeRelaxationStressEnum);
    99109        Input*     thickness_input = element->GetInput(SeaiceThicknessEnum);       _assert_(thickness_input);
    100110        Input*     vx_input        = element->GetInput(VxEnum);                    _assert_(vx_input);
    … …  
    103113        Input*     oceanvy_input   = element->GetInput(BasalforcingsOceanVyEnum);  _assert_(oceanvy_input);
    104114
     115        /*Get minimum inertia to avoid 0 in the line, and time_ratio*/
     116        IssmDouble minimum_inertia = rho_i*0.01;
     117        IssmDouble time_ratio=(1-dt/time_relaxation_stress);
     118
    105119        /* Start  looping on the number of gaussian points: */
    106120        Gauss* gauss=element->NewGauss(2);
    … …  
    116130                /*Create first part of the stiffness matrix*/
    117131                this->GetM(M,element,xyz_list,gauss);
    118                 D_scalar=rho_i*thickness*gauss->weight*Jdet;
     132                D_scalar=(rho_i*thickness+minimum_inertia)/dt*gauss->weight*Jdet;
    119133                TripleMultiply(M,1,numdof,1,
    120134                                        &D_scalar,1,1,0,
    … …  
    122136                                        &Ke->values[0],1);
    123137
    124                 /*Create Elasitc part*/
     138                /*Create Elastic part*/
    125139                this->GetB(B,element,xyz_list,gauss);
    126140                this->CreateCTensor(&C[0][0],element,gauss);
    127141                for(int i=0;i<3;i++){
    128142                        for(int j=0;j<3;j++){
    129                                 C[i][j] = gauss->weight*Jdet*dt*C[i][j];
     143                                C[i][j] = dt*time_ratio*gauss->weight*Jdet*C[i][j];
    130144                        }
    131145                }
    … …  
    141155                vy_input->GetInputValue(&vy,gauss);
    142156                vnorm = sqrt(pow(oceanvx-vx,2) + pow(oceanvy-vy,2));
    143                 D_scalar = dt*concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm)*cos(ocean_turning_angle)*gauss->weight*Jdet;
     157                D_scalar = concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm)*cos(ocean_turning_angle)*gauss->weight*Jdet;
    144158                TripleMultiply(M,1,numdof,1,
    145159                                        &D_scalar,1,1,0,
    … …  
    160174        /* Check if there is ice in this element */
    161175        Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
    162         if(concentration_input->Max()==0.) return NULL;
     176        IssmDouble c_min; element->FindParam(&c_min,SeaiceMinConcentrationEnum);
     177        if(concentration_input->Max()<=c_min) return NULL;
    163178
    164179        /*Intermediaries */
    165         IssmDouble  air_coef,ocean_coef,constant_part;
    166         IssmDouble  rho_ice,rho_air,rho_ocean,gravity;
     180        IssmDouble  air_coef,ocean_coef,constant_part,time_relaxation_stress;
     181        IssmDouble  rho_ice,rho_air,rho_ocean,gravity,omega;
    167182        IssmDouble  vx,vy,vxstar,vystar,windvx,windvy,oceanvx,oceanvy,vnorm;
    168183        IssmDouble  air_lin_drag_coef,air_quad_drag_coef;
    169184        IssmDouble  ocean_lin_drag_coef,ocean_quad_drag_coef;
    170         IssmDouble  concentration,thickness,coriolis_factor,dt,Jdet;
     185        IssmDouble  concentration,thickness,coriolis_factor,dt,Jdet,D_scalar;
     186        IssmDouble  sigma_xx,sigma_yy,sigma_xy,sigma_vec[3];
    171187        IssmDouble  ocean_turning_angle,dssh[2];
    172188        IssmDouble* xyz_list = NULL;
    … …  
    177193
    178194        /*Initialize Element vector and vectors*/
    179         ElementVector* pe    = element->NewElementVector();
    180         IssmDouble*    basis = xNew<IssmDouble>(numnodes);
     195        ElementVector* pe      = element->NewElementVector();
     196        IssmDouble*    B       = xNew<IssmDouble>(3*numdof);
     197        IssmDouble*    basis   = xNew<IssmDouble>(numnodes);
     198        IssmDouble     D[3][3] = {0.};
    181199
    182200        /*Retrieve all inputs and parameters*/
    … …  
    192210        element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum);
    193211        element->FindParam(&ocean_turning_angle,BasalforcingsOceanTurningAngleEnum);
    194         rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
    195         gravity = element->GetMaterialParameter(ConstantsGEnum);
     212        rho_ice                = element->GetMaterialParameter(MaterialsRhoIceEnum);
     213        gravity                = element->GetMaterialParameter(ConstantsGEnum);
     214        omega                  = element->GetMaterialParameter(ConstantsOmegaEnum);
     215        time_relaxation_stress = element->GetMaterialParameter(MaterialsTimeRelaxationStressEnum);
    196216        Input* thickness_input     = element->GetInput(SeaiceThicknessEnum);       _assert_(thickness_input);
    197217        Input* coriolis_fact_input = element->GetInput(SeaiceCoriolisFactorEnum);  _assert_(coriolis_fact_input);
    … …  
    205225        Input* oceanvy_input       = element->GetInput(BasalforcingsOceanVyEnum);  _assert_(oceanvy_input);
    206226        Input* oceanssh_input      = element->GetInput(BasalforcingsOceanSshEnum); _assert_(oceanssh_input);
     227        Input* sigma_xx_input      = element->GetInput(StressTensorxxEnum);        _assert_(sigma_xx_input);
     228        Input* sigma_yy_input      = element->GetInput(StressTensoryyEnum);        _assert_(sigma_yy_input);
     229        Input* sigma_xy_input      = element->GetInput(StressTensorxyEnum);        _assert_(sigma_xy_input);
     230
     231        /*Calculate time_ratio*/
     232        IssmDouble time_ratio=(1-dt/time_relaxation_stress);
    207233
    208234        /* Start  looping on the number of gaussian points: */
    … …  
    214240                element->JacobianDeterminant(&Jdet,xyz_list,gauss);
    215241                element->NodalFunctions(basis, gauss);
     242                this->GetB(B,element,xyz_list,gauss);
    216243
    217244                /*Get all inputs on gauss point*/
    … …  
    227254                oceanvx_input->GetInputValue(&oceanvx,gauss);
    228255                oceanvy_input->GetInputValue(&oceanvy,gauss);
     256                sigma_xx_input->GetInputValue(&sigma_xx,gauss);
     257                sigma_yy_input->GetInputValue(&sigma_yy,gauss);
     258                sigma_xy_input->GetInputValue(&sigma_xy,gauss);
    229259                oceanssh_input->GetInputDerivativeValue(&dssh[0],xyz_list,gauss);
    230260
    … …  
    239269                constant_part = concentration*air_coef*rho_air*(air_lin_drag_coef+air_quad_drag_coef*vnorm);
    240270                for(int i=0;i<numnodes;i++){
    241                         pe->values[i*2+0] += dt*constant_part*windvx*Jdet*gauss->weight*basis[i];
    242                         pe->values[i*2+1] += dt*constant_part*windvy*Jdet*gauss->weight*basis[i];
     271                        pe->values[i*2+0] += constant_part*windvx*Jdet*gauss->weight*basis[i];
     272                        pe->values[i*2+1] += constant_part*windvy*Jdet*gauss->weight*basis[i];
    243273                }
    244274
    … …  
    247277                constant_part = concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm);
    248278                for(int i=0;i<numnodes;i++){
    249                         pe->values[i*2+0] += dt*constant_part*(oceanvy-vy)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
    250                         pe->values[i*2+1] += dt*constant_part*(vx-oceanvx)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
    251 
    252                         pe->values[i*2+0] += dt*constant_part*oceanvx*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
    253                         pe->values[i*2+1] += dt*constant_part*oceanvy*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
     279                        pe->values[i*2+0] += constant_part*omega*(oceanvy-vy)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
     280                        pe->values[i*2+1] += constant_part*omega*(vx-oceanvx)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
     281
     282                        pe->values[i*2+0] += constant_part*oceanvx*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
     283                        pe->values[i*2+1] += constant_part*oceanvy*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
     284
     285                        pe->values[i*2+0] += (-rho_ice*thickness*gravity*omega*dssh[0])*Jdet*gauss->weight*basis[i];
     286                        pe->values[i*2+1] += (-rho_ice*thickness*gravity*omega*dssh[1])*Jdet*gauss->weight*basis[i];
    254287                }
    255288
    256289                /*Coriolis forces (use ustar)*/
    257290                for(int i=0;i<numnodes;i++){
    258                         pe->values[i*2+0] += dt*(-rho_ice*thickness*coriolis_factor*vystar)*Jdet*gauss->weight*basis[i];
    259                         pe->values[i*2+1] += dt*(+rho_ice*thickness*coriolis_factor*vxstar)*Jdet*gauss->weight*basis[i];
    260 
    261                         pe->values[i*2+0] += dt*(-rho_ice*thickness*gravity*dssh[0])*Jdet*gauss->weight*basis[i];
    262                         pe->values[i*2+1] += dt*(-rho_ice*thickness*gravity*dssh[1])*Jdet*gauss->weight*basis[i];
    263                 }
     291                        pe->values[i*2+0] += (-rho_ice*thickness*coriolis_factor*vystar)*Jdet*gauss->weight*basis[i];
     292                        pe->values[i*2+1] += (+rho_ice*thickness*coriolis_factor*vxstar)*Jdet*gauss->weight*basis[i];
     293                }
     294               
     295                /*Add elastic part of previous time step*/
     296                sigma_vec[0] = sigma_xx;
     297                sigma_vec[1] = sigma_yy;
     298                sigma_vec[2] = sigma_xy;
     299                D[0][0] = D[1][1] = D[2][2] = time_ratio*thickness*Jdet*gauss->weight;
     300                TripleMultiply(B,3,numdof,1,
     301                                        &D[0][0],3,3,0,
     302                                        &sigma_vec[0],3,1,0,
     303                                        &pe->values[0],1);
    264304        }
    265305
    … …  
    267307        xDelete<IssmDouble>(xyz_list);
    268308        xDelete<IssmDouble>(basis);
     309        xDelete<IssmDouble>(B);
    269310        delete gauss;
    270311        return pe;
    … …  
    323364
    324365        /*Intermediaries*/
     366        IssmDouble          c_min;
    325367        Vector<IssmDouble>* mask        = NULL;
    326368        IssmDouble*         serial_mask = NULL;
     369
     370        /*Get minimum concentration allowed*/
     371        femmodel->parameters->FindParam(&c_min,SeaiceMinConcentrationEnum);
    327372
    328373        /*Step 1: update mask of active nodes*/
    … …  
    334379                int    numnodes            = element->GetNumberOfNodes();
    335380                Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
    336                 if(concentration_input->Max()>0.){
     381                if(concentration_input->Max()>c_min){
    337382                        for(int in=0;in<numnodes;in++) mask->SetValue(element->nodes[in]->Sid(),1.,INS_VAL);
    338383                }
    … …  
    379424
    380425        /*Get damage input at this location*/
    381         Input* damage_input        = element->GetInput(MaterialsDamageEnum);     _assert_(damage_input);
     426        Input* damage_input        = element->GetInput(DamageEnum);              _assert_(damage_input);
    382427        Input* thickness_input     = element->GetInput(SeaiceThicknessEnum);     _assert_(thickness_input);
    383428        Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
    … …  
    518563
    519564                /*Get current stress state*/
    520                 Input*   sigma_xx_input = element->GetInput(StressTensorxxEnum);
    521                 Input*   sigma_yy_input = element->GetInput(StressTensoryyEnum);
    522                 Input*   sigma_xy_input = element->GetInput(StressTensorxyEnum);
    523                 if(sigma_xx_input) sigma_xx_input->GetInputAverage(&sigma_xx);
    524                 else               sigma_xx = 0.;
    525                 if(sigma_yy_input) sigma_yy_input->GetInputAverage(&sigma_yy);
    526                 else               sigma_yy = 0.;
    527                 if(sigma_xy_input) sigma_xy_input->GetInputAverage(&sigma_xy);
    528                 else               sigma_xy = 0.;
     565                Input*   sigma_xx_input = element->GetInput(StressTensorPredictorxxEnum); _assert_(sigma_xx_input);
     566                Input*   sigma_yy_input = element->GetInput(StressTensorPredictoryyEnum); _assert_(sigma_yy_input);
     567                Input*   sigma_xy_input = element->GetInput(StressTensorPredictorxyEnum); _assert_(sigma_xy_input);
     568                sigma_xx_input->GetInputAverage(&sigma_xx);
     569                sigma_yy_input->GetInputAverage(&sigma_yy);
     570                sigma_xy_input->GetInputAverage(&sigma_xy);
    529571
    530572                /* Compute the invariants of the elastic deformation and instantaneous deformation rate */
    … …  
    537579
    538580                /* estimate the internal constraints using the current elastic deformation */
    539                 Input* damage_input    = element->GetInput(MaterialsDamageEnum); _assert_(damage_input);
    540                 Input* damagenew_input = element->GetInput(MaterialsDamageEnum); _assert_(damagenew_input);//FIXME
     581                Input* damage_input    = element->GetInput(DamageEnum); _assert_(damage_input);
    541582                damage_input->GetInputAverage(&damage);
    542                 damagenew_input->GetInputAverage(&damage_new);
    543583                damage_test = damage;
     584                damage_new  = damage;
    544585                if(sigma_n>traction || sigma_n<-compression_max){
    545586                        if(sigma_n>traction){
    … …  
    564605                /* The damage variable is changed */
    565606                damage_new=damage_test;
    566                 element->AddInput(MaterialsDamageEnum,&damage_test,P0Enum);//FIXME
     607                element->AddInput(DamageEnum,&damage_new,P0Enum);
    567608
    568609                /* Recompute the internal stress*/
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r18497 r18504  
    105105                        iomodel->Constant(&this->traction_coef,MaterialsTractionCoefEnum);
    106106                        iomodel->Constant(&this->g,ConstantsGEnum);
     107                        iomodel->Constant(&this->omega,ConstantsOmegaEnum);
     108                        iomodel->Constant(&this->time_relaxation_stress,MaterialsTimeRelaxationStressEnum);
     109                        iomodel->Constant(&this->time_relaxation_damage,MaterialsTimeRelaxationDamageEnum);
    107110                        break;
    108111                default:
    … …  
    319322                case MaterialsCompressionCoefEnum:                              return this->compression_coef;
    320323                case MaterialsTractionCoefEnum:                                 return this->traction_coef;
     324                case ConstantsOmegaEnum:                                                        return this->omega;
     325                case MaterialsTimeRelaxationStressEnum:         return this->time_relaxation_stress;
     326                case MaterialsTimeRelaxationDamageEnum:         return this->time_relaxation_damage;
    321327                default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet");
    322328        }
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.h

    r18492 r18504  
    3030                IssmDouble  thermal_exchange_velocity;
    3131                IssmDouble  g;
     32                IssmDouble  omega;
    3233                IssmDouble  desfac;
    3334                IssmDouble  s0p;
    … …  
    5960                IssmDouble compression_coef;
    6061                IssmDouble traction_coef;
     62                IssmDouble time_relaxation_stress;
     63                IssmDouble time_relaxation_damage;
    6164
    6265        public:
  • issm/trunk-jpl/src/c/cores/seaice_core.cpp

    r18502 r18504  
    2020        /*Launch solution sequence for the only analysis we are interested in*/
    2121        femmodel->SetCurrentConfiguration(SeaiceAnalysisEnum);
     22        SeaiceAnalysis* analysis = new SeaiceAnalysis();
     23        analysis->UpdateDamageAndStress(femmodel);
    2224        solutionsequence_linear(femmodel);
    2325
    2426        if(save_results){
    2527                if(VerboseSolution()) _printf0_("   saving results\n");
    26                 int outputs[6] = {VxEnum,VyEnum,VelEnum,SeaiceConcentrationEnum,SeaiceThicknessEnum,MaterialsDamageEnum};
     28                int outputs[6] = {VxEnum,VyEnum,VelEnum,SeaiceConcentrationEnum,SeaiceThicknessEnum,DamageEnum};
    2729                femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],6);
    2830        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp

    r18492 r18504  
    8080                        break;
    8181                case MatseaiceEnum:
    82                         iomodel->FetchDataToInput(elements,MaterialsDamageEnum);
     82                        iomodel->FetchDataToInput(elements,DamageEnum);
    8383                        for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matseaice(i+1,i,iomodel));
    8484                        break;
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r18497 r18504  
    5050        BaseEnum,
    5151        ConstantsGEnum,
     52        ConstantsOmegaEnum,
    5253        ConstantsReferencetemperatureEnum,
    5354        ConstantsYtsEnum,
    … …  
    198199        DamageEvolutionNumRequestedOutputsEnum,
    199200        DamageEvolutionRequestedOutputsEnum,
     201        DamageEnum,
    200202        NewDamageEnum,
    201203        MaterialsRhoIceEnum,
    … …  
    749751        SeaiceThicknessEnum,
    750752        SeaiceConcentrationEnum,
     753        SeaiceMinConcentrationEnum,
     754        SeaiceMinThicknessEnum,
     755        SeaiceMaxThicknessEnum,
    751756        SeaiceSpcvxEnum,
    752757        SeaiceSpcvyEnum,
    … …  
    769774        MaterialsPoissonEnum,
    770775        MaterialsYoungModulusEnum,
    771         MaterialsDamageEnum,
     776        MaterialsTimeRelaxationStressEnum,
     777        MaterialsTimeRelaxationDamageEnum,
    772778        MaterialsRidgingExponentEnum,
    773779        MaterialsCohesionEnum,
    … …  
    777783        VxStarEnum,
    778784        VyStarEnum,
     785        StressTensorPredictorxxEnum,
     786        StressTensorPredictoryyEnum,
     787        StressTensorPredictorxyEnum,
    779788        /*}}}*/
    780789        MaximumNumberOfDefinitionsEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r18497 r18504  
    5858                case BaseEnum : return "Base";
    5959                case ConstantsGEnum : return "ConstantsG";
     60                case ConstantsOmegaEnum : return "ConstantsOmega";
    6061                case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature";
    6162                case ConstantsYtsEnum : return "ConstantsYts";
    … …  
    206207                case DamageEvolutionNumRequestedOutputsEnum : return "DamageEvolutionNumRequestedOutputs";
    207208                case DamageEvolutionRequestedOutputsEnum : return "DamageEvolutionRequestedOutputs";
     209                case DamageEnum : return "Damage";
    208210                case NewDamageEnum : return "NewDamage";
    209211                case MaterialsRhoIceEnum : return "MaterialsRhoIce";
    … …  
    708710                case SeaiceThicknessEnum : return "SeaiceThickness";
    709711                case SeaiceConcentrationEnum : return "SeaiceConcentration";
     712                case SeaiceMinConcentrationEnum : return "SeaiceMinConcentration";
     713                case SeaiceMinThicknessEnum : return "SeaiceMinThickness";
     714                case SeaiceMaxThicknessEnum : return "SeaiceMaxThickness";
    710715                case SeaiceSpcvxEnum : return "SeaiceSpcvx";
    711716                case SeaiceSpcvyEnum : return "SeaiceSpcvy";
    … …  
    728733                case MaterialsPoissonEnum : return "MaterialsPoisson";
    729734                case MaterialsYoungModulusEnum : return "MaterialsYoungModulus";
    730                 case MaterialsDamageEnum : return "MaterialsDamage";
     735                case MaterialsTimeRelaxationStressEnum : return "MaterialsTimeRelaxationStress";
     736                case MaterialsTimeRelaxationDamageEnum : return "MaterialsTimeRelaxationDamage";
    731737                case MaterialsRidgingExponentEnum : return "MaterialsRidgingExponent";
    732738                case MaterialsCohesionEnum : return "MaterialsCohesion";
    … …  
    736742                case VxStarEnum : return "VxStar";
    737743                case VyStarEnum : return "VyStar";
     744                case StressTensorPredictorxxEnum : return "StressTensorPredictorxx";
     745                case StressTensorPredictoryyEnum : return "StressTensorPredictoryy";
     746                case StressTensorPredictorxyEnum : return "StressTensorPredictorxy";
    738747                case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
    739748                default : return "unknown";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r18497 r18504  
    5858              else if (strcmp(name,"Base")==0) return BaseEnum;
    5959              else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
     60              else if (strcmp(name,"ConstantsOmega")==0) return ConstantsOmegaEnum;
    6061              else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
    6162              else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
    … …  
    136137              else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum;
    137138              else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
    138               else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
     142              if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
     143              else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
    143144              else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
    144145              else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
    … …  
    209210              else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum;
    210211              else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum;
     212              else if (strcmp(name,"Damage")==0) return DamageEnum;
    211213              else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
    212214              else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
    … …  
    258260              else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
    259261              else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum;
    260               else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
    261               else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
     265              if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
     266              else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
     267              else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
    266268              else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
    267269              else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
    … …  
    381383              else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
    382384              else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
    383               else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
    384               else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
     388              if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
     389              else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum;
     390              else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
    389391              else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    390392              else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
    … …  
    504506              else if (strcmp(name,"Internal")==0) return InternalEnum;
    505507              else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    506               else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
    507               else if (strcmp(name,"Misfit")==0) return MisfitEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Pressure")==0) return PressureEnum;
     511              if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
     512              else if (strcmp(name,"Misfit")==0) return MisfitEnum;
     513              else if (strcmp(name,"Pressure")==0) return PressureEnum;
    512514              else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
    513515              else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
    … …  
    627629              else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum;
    628630              else if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum;
    629               else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
    630               else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"MinVel")==0) return MinVelEnum;
     634              if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
     635              else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
     636              else if (strcmp(name,"MinVel")==0) return MinVelEnum;
    635637              else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
    636638              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    … …  
    723725              else if (strcmp(name,"SeaiceThickness")==0) return SeaiceThicknessEnum;
    724726              else if (strcmp(name,"SeaiceConcentration")==0) return SeaiceConcentrationEnum;
     727              else if (strcmp(name,"SeaiceMinConcentration")==0) return SeaiceMinConcentrationEnum;
     728              else if (strcmp(name,"SeaiceMinThickness")==0) return SeaiceMinThicknessEnum;
     729              else if (strcmp(name,"SeaiceMaxThickness")==0) return SeaiceMaxThicknessEnum;
    725730              else if (strcmp(name,"SeaiceSpcvx")==0) return SeaiceSpcvxEnum;
    726731              else if (strcmp(name,"SeaiceSpcvy")==0) return SeaiceSpcvyEnum;
    … …  
    743748              else if (strcmp(name,"MaterialsPoisson")==0) return MaterialsPoissonEnum;
    744749              else if (strcmp(name,"MaterialsYoungModulus")==0) return MaterialsYoungModulusEnum;
    745               else if (strcmp(name,"MaterialsDamage")==0) return MaterialsDamageEnum;
     750              else if (strcmp(name,"MaterialsTimeRelaxationStress")==0) return MaterialsTimeRelaxationStressEnum;
     751              else if (strcmp(name,"MaterialsTimeRelaxationDamage")==0) return MaterialsTimeRelaxationDamageEnum;
    746752              else if (strcmp(name,"MaterialsRidgingExponent")==0) return MaterialsRidgingExponentEnum;
    747753              else if (strcmp(name,"MaterialsCohesion")==0) return MaterialsCohesionEnum;
    748               else if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum;
    749758              else if (strcmp(name,"MaterialsCompressionCoef")==0) return MaterialsCompressionCoefEnum;
    750759              else if (strcmp(name,"MaterialsTractionCoef")==0) return MaterialsTractionCoefEnum;
    751760              else if (strcmp(name,"VxStar")==0) return VxStarEnum;
    752761              else if (strcmp(name,"VyStar")==0) return VyStarEnum;
     762              else if (strcmp(name,"StressTensorPredictorxx")==0) return StressTensorPredictorxxEnum;
     763              else if (strcmp(name,"StressTensorPredictoryy")==0) return StressTensorPredictoryyEnum;
     764              else if (strcmp(name,"StressTensorPredictorxy")==0) return StressTensorPredictorxyEnum;
    753765              else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
    754          else stage=7;
     766         else stage=8;
    755767   }
    756768        /*If we reach this point, the string provided has not been found*/
Note: See TracChangeset for help on using the changeset viewer.