Changeset 23941


Ignore:
Timestamp:
05/29/19 10:14:47 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: worked on RHS and K of GlaDS

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

Legend:

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

    r23937 r23941  
    113113ElementMatrix* HydrologyGlaDSAnalysis::CreateKMatrix(Element* element){/*{{{*/
    114114
    115         _error_("Not implemented");
    116 
    117115        /*Intermediaries */
    118         IssmDouble Jdet;
     116        IssmDouble  Jdet,dphi[3],h,k;
    119117        IssmDouble* xyz_list = NULL;
     118
     119        /*Hard coded coefficients*/
     120        const IssmPDouble alpha = 5./4.;
     121        const IssmPDouble beta  = 3./2.;
    120122
    121123        /*Fetch number of nodes and dof for this finite element*/
     
    130132        element->GetVerticesCoordinates(&xyz_list);
    131133
    132         /*Get englacial storage coefficient*/
    133         IssmDouble storage,dt;
    134         element->FindParam(&storage,HydrologyStorageEnum);
     134        /*Get all inputs and parameters*/
     135        IssmDouble dt,c_t;
    135136        element->FindParam(&dt,TimesteppingTimeStepEnum);
     137        element->FindParam(&c_t,HydrologyPressureMeltCoefficientEnum);
     138        element->FindParam(&k,HydrologySheetConductivityEnum);
     139        Input* phi_input = element->GetInput(HydraulicPotentialEnum);      _assert_(phi_input);
     140        Input* h_input   = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input);
    136141
    137142        /* Start  looping on the number of gaussian points: */
    138         Gauss* gauss=element->NewGauss(1);
     143        Gauss* gauss=element->NewGauss(2);
    139144        for(int ig=gauss->begin();ig<gauss->end();ig++){
    140145                gauss->GaussPoint(ig);
     
    144149                element->NodalFunctions(basis,gauss);
    145150
     151                phi_input->GetInputDerivativeValue(&dphi[0],xyz_list,gauss);
     152                h_input->GetInputValue(&h,gauss);
     153
     154                /*Get norm of gradient of hydraulic potential and make sure it is >0*/
     155                IssmDouble normgradphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]);
     156                if(normgradphi < 1.e-12) normgradphi = 1.e-12;
     157
     158                IssmDouble coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.);
     159
    146160                for(int i=0;i<numnodes;i++){
    147161                        for(int j=0;j<numnodes;j++){
    148                                 Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])
    149                                   + gauss->weight*Jdet*storage/dt*basis[i]*basis[j];
     162
     163                                /*Diffusive term*/
     164                                Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
     165                                                        coeff*dbasis[0*numnodes+i]*dbasis[0*numnodes+j]
     166                                                        + coeff*dbasis[1*numnodes+i]*dbasis[1*numnodes+j]);
    150167                        }
    151168                }
     
    164181        if(element->IsFloating()) return NULL;
    165182
    166         _error_("not implemented");
    167 
    168183        /*Intermediaries */
    169         IssmDouble  Jdet,meltrate,G,dh[2],B,A,n;
    170         IssmDouble  gap,bed,thickness,head,ieb,head_old;
    171         IssmDouble  lr,br,vx,vy,beta;
    172         IssmDouble  alpha2,frictionheat;
    173    IssmDouble  PMPheat,dpressure_water[2],dbed[2];     
     184        IssmDouble  Jdet,w,v,vx,vy,ub,h,N;
     185        IssmDouble  G,m,frictionheat,alpha2;
     186        IssmDouble  A,B,n;
    174187        IssmDouble* xyz_list = NULL;
    175188
     
    183196        /*Retrieve all inputs and parameters*/
    184197        element->GetVerticesCoordinates(&xyz_list);
    185         IssmDouble  latentheat      = element->FindParam(MaterialsLatentheatEnum);
    186         IssmDouble  g               = element->FindParam(ConstantsGEnum);
    187         IssmDouble  rho_ice         = element->FindParam(MaterialsRhoIceEnum);
    188         IssmDouble  rho_water       = element->FindParam(MaterialsRhoFreshwaterEnum);
    189         Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
    190         Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
    191         Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
    192         Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
    193         Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
    194         Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
    195         Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
    196         Input* englacial_input      = element->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
    197         Input* vx_input             = element->GetInput(VxEnum);                         _assert_(vx_input);
    198         Input* vy_input             = element->GetInput(VyEnum);                         _assert_(vy_input);
    199         Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
    200         Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
    201    Input* headold_input        = element->GetInput(HydrologyHeadOldEnum);           _assert_(headold_input);
    202 
    203 
    204         /*Get englacial storage coefficient*/
    205         IssmDouble storage,dt;
    206    element->FindParam(&storage,HydrologyStorageEnum);
    207    element->FindParam(&dt,TimesteppingTimeStepEnum);
     198        IssmDouble  h_r     = element->FindParam(HydrologyBumpHeightEnum);
     199        IssmDouble  l_r     = element->FindParam(HydrologyBumpSpacingEnum);
     200        IssmDouble  L       = element->FindParam(MaterialsLatentheatEnum);
     201        IssmDouble  rho_ice = element->FindParam(MaterialsRhoIceEnum);
     202        Input* vx_input = element->GetInput(VxEnum);_assert_(vx_input);
     203        Input* vy_input = element->GetInput(VyEnum);_assert_(vy_input);
     204        Input*  N_input = element->GetInput(EffectivePressureEnum); _assert_(N_input);
     205        Input*  h_input = element->GetInput(HydrologySheetThicknessEnum);_assert_(h_input);
     206        Input*  G_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(G_input);
     207        Input* B_input  = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
     208        Input* n_input  = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
    208209
    209210        /*Build friction element, needed later: */
     
    217218                element->JacobianDeterminant(&Jdet,xyz_list,gauss);
    218219                element->NodalFunctions(basis,gauss);
    219                 geothermalflux_input->GetInputValue(&G,gauss);
    220                 base_input->GetInputValue(&bed,gauss);
    221                 base_input->GetInputDerivativeValue(&dbed[0],xyz_list,gauss);
    222                 thickness_input->GetInputValue(&thickness,gauss);
    223                 gap_input->GetInputValue(&gap,gauss);
    224                 head_input->GetInputValue(&head,gauss);
    225                 head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
    226                 englacial_input->GetInputValue(&ieb,gauss);
    227                 lr_input->GetInputValue(&lr,gauss);
    228                 br_input->GetInputValue(&br,gauss);
     220
     221                /*Get input values at gauss points*/
    229222                vx_input->GetInputValue(&vx,gauss);
    230223                vy_input->GetInputValue(&vy,gauss);
    231       headold_input->GetInputValue(&head_old,gauss);
    232 
    233                 /*Get ice A parameter*/
     224                h_input->GetInputValue(&h,gauss);
     225                G_input->GetInputValue(&G,gauss);
    234226                B_input->GetInputValue(&B,gauss);
    235227                n_input->GetInputValue(&n,gauss);
    236                 A=pow(B,-n);
    237 
    238                 /*Compute beta term*/
    239                 if(gap<br)
    240                  beta = (br-gap)/lr;
    241                 else
    242                  beta = 0.;
     228                N_input->GetInputValue(&N,gauss);
     229
     230                /*Get basal velocity*/
     231                ub = sqrt(vx*vx + vy*vy);
     232
     233                /*Compute cavity opening w*/
     234                w  = 0.;
     235                if(h<h_r) w = ub*(h_r-h)/l_r;
    243236
    244237                /*Compute frictional heat flux*/
    245238                friction->GetAlpha2(&alpha2,gauss);
    246                 vx_input->GetInputValue(&vx,gauss);
    247                 vy_input->GetInputValue(&vy,gauss);
    248                 frictionheat=alpha2*(vx*vx+vy*vy);
    249 
    250                 /*Get water and ice pressures*/
    251                 IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.);
    252                 IssmDouble pressure_water = rho_water*g*(head-bed);
    253                 if(pressure_water>pressure_ice) pressure_water = pressure_ice;
    254 
    255                 /*Get water pressure from previous time step to use in lagged creep term*/
    256                 IssmDouble pressure_water_old = rho_water*g*(head_old-bed);
    257                 if(pressure_water_old>pressure_ice) pressure_water_old = pressure_ice;
    258 
    259                 /*Compute change in sensible heat due to changes in pressure melting point*/
    260         dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
    261                 dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
    262                 PMPheat=0.;
    263 
    264         meltrate = 1/latentheat*(G+frictionheat+rho_water*g*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat);
    265                 _assert_(meltrate>0.);
    266 
    267                 for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
    268                  (
    269                   meltrate*(1/rho_water-1/rho_ice)
    270                   +A*pow(fabs(pressure_ice - pressure_water),n-1)*(pressure_ice - pressure_water)*gap
    271                   -beta*sqrt(vx*vx+vy*vy)
    272                   +ieb
    273                   +storage*head_old/dt
    274                   )*basis[i];           
    275         }
     239                frictionheat=alpha2*ub*ub;
     240
     241                /*Compute melt*/
     242                m = (G + frictionheat)/(rho_ice*L);
     243
     244                /*Compute closing rate*/
     245                A=pow(B,-n);
     246                v = 2./pow(n,n)*A*h*pow(fabs(N),n-1.)*N;
     247
     248                for(int i=0;i<numnodes;i++) pe->values[i]+= - Jdet*gauss->weight*(w-v-m)*basis[i];
     249        }
     250
    276251        /*Clean up and return*/
    277252        xDelete<IssmDouble>(xyz_list);
    278253        xDelete<IssmDouble>(basis);
     254        delete gauss;
    279255        delete friction;
    280         delete gauss;
    281256        return pe;
    282257}/*}}}*/
    283258void           HydrologyGlaDSAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
    284         _error_("not implemented");
    285         element->GetSolutionFromInputsOneDof(solution,HydrologyHeadEnum);
     259
     260        element->GetSolutionFromInputsOneDof(solution,HydraulicPotentialEnum);
     261
    286262}/*}}}*/
    287263void           HydrologyGlaDSAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
     
    290266void           HydrologyGlaDSAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
    291267
    292         _error_("not implemented");
    293 
    294268        /*Intermediary*/
    295         IssmDouble dh[3];
    296269        int* doflist = NULL;
    297         IssmDouble* xyz_list = NULL;
    298 
    299         /*Get gravity from parameters*/
    300            IssmDouble  g = element->FindParam(ConstantsGEnum);
     270        IssmDouble phi_0, phi_m, pi;
    301271
    302272        /*Fetch number of nodes for this finite element*/
     
    308278
    309279        /*Get thickness and base on nodes to apply cap on water head*/
    310    IssmDouble* eff_pressure = xNew<IssmDouble>(numnodes);
     280   IssmDouble* N = xNew<IssmDouble>(numnodes);
     281        IssmDouble* h = xNew<IssmDouble>(numnodes);
    311282        IssmDouble* thickness = xNew<IssmDouble>(numnodes);
    312283        IssmDouble* bed       = xNew<IssmDouble>(numnodes);
    313284        IssmDouble  rho_ice   = element->FindParam(MaterialsRhoIceEnum);
    314285        IssmDouble  rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
     286        IssmDouble  g         = element->FindParam(ConstantsGEnum);
    315287        element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
    316288        element->GetInputListOnNodes(&bed[0],BaseEnum);
    317 
    318         /*Get head from previous time-step and under-relaxation coefficient to use in under-relaxation for nonlinear convergence*/
    319    IssmDouble* head_old  = xNew<IssmDouble>(numnodes);
    320         element->GetInputListOnNodes(&head_old[0],HydrologyHeadEnum);
    321    IssmDouble relaxation;
    322         element->FindParam(&relaxation,HydrologyRelaxationEnum);
    323289
    324290        /*Use the dof list to index into the solution vector: */
     
    326292                values[i]=solution[doflist[i]];
    327293
    328                 /*make sure that p_water<p_ice ->  h<rho_i H/rho_w + zb*/
    329                 if(values[i]>rho_ice*thickness[i]/rho_water+bed[i]){
    330                         values[i] = rho_ice*thickness[i]/rho_water+bed[i];
    331                 }
    332 
    333                 /*Make sure that negative pressure is not allowed*/
    334   //    if(values[i]<bed[i]){
    335         //              values[i] = bed[i];
    336         //      }
    337 
    338                 /*Under-relaxation*/
    339            values[i] = head_old[i] - relaxation*(head_old[i]-values[i]);
     294                /*Elevation potential*/
     295                phi_m = rho_water*g*bed[i];
     296
     297                /*Compute overburden pressure*/
     298                pi = rho_ice*g*thickness[i];
     299
     300                /*Copmute overburden potential*/
     301                phi_0 = phi_m + pi;
    340302
    341303                /*Calculate effective pressure*/
    342                 eff_pressure[i] = rho_ice*g*thickness[i] - rho_water*g*(values[i]-bed[i]);
     304                N[i] = phi_0 - values[i];
    343305
    344306                if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
     
    347309
    348310        /*Add input to the element: */
    349         element->AddInput(HydrologyHeadEnum,values,element->GetElementType());
    350    element->AddInput(EffectivePressureEnum,eff_pressure,P1Enum);
    351 
    352         /*Update reynolds number according to new solution*/
    353         element->GetVerticesCoordinates(&xyz_list);
    354         Input* head_input = element->GetInput(HydrologyHeadEnum);_assert_(head_input);
    355         head_input->GetInputDerivativeAverageValue(&dh[0],xyz_list);
     311        element->AddInput(HydraulicPotentialEnum,values,element->GetElementType());
     312   element->AddInput(EffectivePressureEnum,N,P1Enum);
    356313
    357314        /*Free resources:*/
     315        xDelete<int>(doflist);
    358316        xDelete<IssmDouble>(values);
     317        xDelete<IssmDouble>(N);
     318        xDelete<IssmDouble>(h);
     319        xDelete<IssmDouble>(bed);
    359320        xDelete<IssmDouble>(thickness);
    360         xDelete<IssmDouble>(bed);
    361         xDelete<IssmDouble>(xyz_list);
    362         xDelete<int>(doflist);
    363         xDelete<IssmDouble>(eff_pressure);
    364    xDelete<IssmDouble>(head_old);
    365321}/*}}}*/
    366322void           HydrologyGlaDSAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp

    r23644 r23941  
    355355
    356356        /*Get gravity from parameters*/
    357            IssmDouble  g = element->FindParam(ConstantsGEnum);
     357        IssmDouble  g = element->FindParam(ConstantsGEnum);
    358358
    359359        /*Fetch number of nodes for this finite element*/
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23937 r23941  
    536536        GradientEnum,
    537537        GroundinglineHeightEnum,
     538        HydraulicPotentialEnum,
    538539        HydrologyBasalFluxEnum,
     540        HydrologySheetThicknessEnum,
    539541        HydrologyBumpHeightEnum,
    540542        HydrologyBumpSpacingEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23937 r23941  
    542542                case GradientEnum : return "Gradient";
    543543                case GroundinglineHeightEnum : return "GroundinglineHeight";
     544                case HydraulicPotentialEnum : return "HydraulicPotential";
    544545                case HydrologyBasalFluxEnum : return "HydrologyBasalFlux";
     546                case HydrologySheetThicknessEnum : return "HydrologySheetThickness";
    545547                case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
    546548                case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23937 r23941  
    554554              else if (strcmp(name,"Gradient")==0) return GradientEnum;
    555555              else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum;
     556              else if (strcmp(name,"HydraulicPotential")==0) return HydraulicPotentialEnum;
    556557              else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum;
     558              else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum;
    557559              else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
    558560              else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
     
    627629              else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
    628630              else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
    629               else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
    630               else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"SealevelEustaticMask")==0) return SealevelEustaticMaskEnum;
     634              if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
     635              else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
     636              else if (strcmp(name,"SealevelEustaticMask")==0) return SealevelEustaticMaskEnum;
    635637              else if (strcmp(name,"SealevelriseCumDeltathickness")==0) return SealevelriseCumDeltathicknessEnum;
    636638              else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
     
    750752              else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
    751753              else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
    752               else if (strcmp(name,"StrainRatexy")==0) return StrainRatexyEnum;
    753               else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
     757              if (strcmp(name,"StrainRatexy")==0) return StrainRatexyEnum;
     758              else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
     759              else if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
    758760              else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
    759761              else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
     
    873875              else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
    874876              else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
    875               else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
    876               else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
     880              if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
     881              else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
     882              else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
    881883              else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
    882884              else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
     
    996998              else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    997999              else if (strcmp(name,"FemModel")==0) return FemModelEnum;
    998               else if (strcmp(name,"FileParam")==0) return FileParamEnum;
    999               else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
     1003              if (strcmp(name,"FileParam")==0) return FileParamEnum;
     1004              else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
     1005              else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
    10041006              else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
    10051007              else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
     
    11191121              else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
    11201122              else if (strcmp(name,"MINI")==0) return MINIEnum;
    1121               else if (strcmp(name,"MinVel")==0) return MinVelEnum;
    1122               else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"MinVy")==0) return MinVyEnum;
     1126              if (strcmp(name,"MinVel")==0) return MinVelEnum;
     1127              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
     1128              else if (strcmp(name,"MinVy")==0) return MinVyEnum;
    11271129              else if (strcmp(name,"MinVz")==0) return MinVzEnum;
    11281130              else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
     
    12421244              else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
    12431245              else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
    1244               else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    1245               else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"Tria")==0) return TriaEnum;
     1249              if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
     1250              else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
     1251              else if (strcmp(name,"Tria")==0) return TriaEnum;
    12501252              else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
    12511253              else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
Note: See TracChangeset for help on using the changeset viewer.