Changeset 18504
- Timestamp:
- 09/11/14 07:07:06 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SeaiceAnalysis.cpp
r18502 r18504 10 10 }/*}}}*/ 11 11 void 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)); 12 15 }/*}}}*/ 13 16 void SeaiceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ … … 34 37 iomodel->FetchDataToInput(elements,SurfaceforcingsWindVxEnum); 35 38 iomodel->FetchDataToInput(elements,SurfaceforcingsWindVyEnum); 36 iomodel->FetchDataToInput(elements, MaterialsDamageEnum);39 iomodel->FetchDataToInput(elements,DamageEnum); 37 40 iomodel->FetchDataToInput(elements,VxStarEnum); 38 41 iomodel->FetchDataToInput(elements,VyStarEnum); … … 40 43 iomodel->FetchDataToInput(elements,VyEnum); 41 44 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); 42 50 }/*}}}*/ 43 51 void SeaiceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/ … … 71 79 /* Check if there is ice in this element */ 72 80 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; 74 83 75 84 /*Intermediaries */ … … 96 105 element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum); 97 106 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); 99 109 Input* thickness_input = element->GetInput(SeaiceThicknessEnum); _assert_(thickness_input); 100 110 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); … … 103 113 Input* oceanvy_input = element->GetInput(BasalforcingsOceanVyEnum); _assert_(oceanvy_input); 104 114 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 105 119 /* Start looping on the number of gaussian points: */ 106 120 Gauss* gauss=element->NewGauss(2); … … 116 130 /*Create first part of the stiffness matrix*/ 117 131 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; 119 133 TripleMultiply(M,1,numdof,1, 120 134 &D_scalar,1,1,0, … … 122 136 &Ke->values[0],1); 123 137 124 /*Create Elas itc part*/138 /*Create Elastic part*/ 125 139 this->GetB(B,element,xyz_list,gauss); 126 140 this->CreateCTensor(&C[0][0],element,gauss); 127 141 for(int i=0;i<3;i++){ 128 142 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]; 130 144 } 131 145 } … … 141 155 vy_input->GetInputValue(&vy,gauss); 142 156 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; 144 158 TripleMultiply(M,1,numdof,1, 145 159 &D_scalar,1,1,0, … … 160 174 /* Check if there is ice in this element */ 161 175 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; 163 178 164 179 /*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; 167 182 IssmDouble vx,vy,vxstar,vystar,windvx,windvy,oceanvx,oceanvy,vnorm; 168 183 IssmDouble air_lin_drag_coef,air_quad_drag_coef; 169 184 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]; 171 187 IssmDouble ocean_turning_angle,dssh[2]; 172 188 IssmDouble* xyz_list = NULL; … … 177 193 178 194 /*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.}; 181 199 182 200 /*Retrieve all inputs and parameters*/ … … 192 210 element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum); 193 211 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); 196 216 Input* thickness_input = element->GetInput(SeaiceThicknessEnum); _assert_(thickness_input); 197 217 Input* coriolis_fact_input = element->GetInput(SeaiceCoriolisFactorEnum); _assert_(coriolis_fact_input); … … 205 225 Input* oceanvy_input = element->GetInput(BasalforcingsOceanVyEnum); _assert_(oceanvy_input); 206 226 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); 207 233 208 234 /* Start looping on the number of gaussian points: */ … … 214 240 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 215 241 element->NodalFunctions(basis, gauss); 242 this->GetB(B,element,xyz_list,gauss); 216 243 217 244 /*Get all inputs on gauss point*/ … … 227 254 oceanvx_input->GetInputValue(&oceanvx,gauss); 228 255 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); 229 259 oceanssh_input->GetInputDerivativeValue(&dssh[0],xyz_list,gauss); 230 260 … … 239 269 constant_part = concentration*air_coef*rho_air*(air_lin_drag_coef+air_quad_drag_coef*vnorm); 240 270 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]; 243 273 } 244 274 … … 247 277 constant_part = concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm); 248 278 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]; 254 287 } 255 288 256 289 /*Coriolis forces (use ustar)*/ 257 290 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); 264 304 } 265 305 … … 267 307 xDelete<IssmDouble>(xyz_list); 268 308 xDelete<IssmDouble>(basis); 309 xDelete<IssmDouble>(B); 269 310 delete gauss; 270 311 return pe; … … 323 364 324 365 /*Intermediaries*/ 366 IssmDouble c_min; 325 367 Vector<IssmDouble>* mask = NULL; 326 368 IssmDouble* serial_mask = NULL; 369 370 /*Get minimum concentration allowed*/ 371 femmodel->parameters->FindParam(&c_min,SeaiceMinConcentrationEnum); 327 372 328 373 /*Step 1: update mask of active nodes*/ … … 334 379 int numnodes = element->GetNumberOfNodes(); 335 380 Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input); 336 if(concentration_input->Max()> 0.){381 if(concentration_input->Max()>c_min){ 337 382 for(int in=0;in<numnodes;in++) mask->SetValue(element->nodes[in]->Sid(),1.,INS_VAL); 338 383 } … … 379 424 380 425 /*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); 382 427 Input* thickness_input = element->GetInput(SeaiceThicknessEnum); _assert_(thickness_input); 383 428 Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input); … … 518 563 519 564 /*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); 529 571 530 572 /* Compute the invariants of the elastic deformation and instantaneous deformation rate */ … … 537 579 538 580 /* 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); 541 582 damage_input->GetInputAverage(&damage); 542 damagenew_input->GetInputAverage(&damage_new);543 583 damage_test = damage; 584 damage_new = damage; 544 585 if(sigma_n>traction || sigma_n<-compression_max){ 545 586 if(sigma_n>traction){ … … 564 605 /* The damage variable is changed */ 565 606 damage_new=damage_test; 566 element->AddInput( MaterialsDamageEnum,&damage_test,P0Enum);//FIXME607 element->AddInput(DamageEnum,&damage_new,P0Enum); 567 608 568 609 /* Recompute the internal stress*/ -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r18497 r18504 105 105 iomodel->Constant(&this->traction_coef,MaterialsTractionCoefEnum); 106 106 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); 107 110 break; 108 111 default: … … 319 322 case MaterialsCompressionCoefEnum: return this->compression_coef; 320 323 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; 321 327 default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet"); 322 328 } -
issm/trunk-jpl/src/c/classes/Materials/Matpar.h
r18492 r18504 30 30 IssmDouble thermal_exchange_velocity; 31 31 IssmDouble g; 32 IssmDouble omega; 32 33 IssmDouble desfac; 33 34 IssmDouble s0p; … … 59 60 IssmDouble compression_coef; 60 61 IssmDouble traction_coef; 62 IssmDouble time_relaxation_stress; 63 IssmDouble time_relaxation_damage; 61 64 62 65 public: -
issm/trunk-jpl/src/c/cores/seaice_core.cpp
r18502 r18504 20 20 /*Launch solution sequence for the only analysis we are interested in*/ 21 21 femmodel->SetCurrentConfiguration(SeaiceAnalysisEnum); 22 SeaiceAnalysis* analysis = new SeaiceAnalysis(); 23 analysis->UpdateDamageAndStress(femmodel); 22 24 solutionsequence_linear(femmodel); 23 25 24 26 if(save_results){ 25 27 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}; 27 29 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],6); 28 30 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r18492 r18504 80 80 break; 81 81 case MatseaiceEnum: 82 iomodel->FetchDataToInput(elements, MaterialsDamageEnum);82 iomodel->FetchDataToInput(elements,DamageEnum); 83 83 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matseaice(i+1,i,iomodel)); 84 84 break; -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18497 r18504 50 50 BaseEnum, 51 51 ConstantsGEnum, 52 ConstantsOmegaEnum, 52 53 ConstantsReferencetemperatureEnum, 53 54 ConstantsYtsEnum, … … 198 199 DamageEvolutionNumRequestedOutputsEnum, 199 200 DamageEvolutionRequestedOutputsEnum, 201 DamageEnum, 200 202 NewDamageEnum, 201 203 MaterialsRhoIceEnum, … … 749 751 SeaiceThicknessEnum, 750 752 SeaiceConcentrationEnum, 753 SeaiceMinConcentrationEnum, 754 SeaiceMinThicknessEnum, 755 SeaiceMaxThicknessEnum, 751 756 SeaiceSpcvxEnum, 752 757 SeaiceSpcvyEnum, … … 769 774 MaterialsPoissonEnum, 770 775 MaterialsYoungModulusEnum, 771 MaterialsDamageEnum, 776 MaterialsTimeRelaxationStressEnum, 777 MaterialsTimeRelaxationDamageEnum, 772 778 MaterialsRidgingExponentEnum, 773 779 MaterialsCohesionEnum, … … 777 783 VxStarEnum, 778 784 VyStarEnum, 785 StressTensorPredictorxxEnum, 786 StressTensorPredictoryyEnum, 787 StressTensorPredictorxyEnum, 779 788 /*}}}*/ 780 789 MaximumNumberOfDefinitionsEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18497 r18504 58 58 case BaseEnum : return "Base"; 59 59 case ConstantsGEnum : return "ConstantsG"; 60 case ConstantsOmegaEnum : return "ConstantsOmega"; 60 61 case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature"; 61 62 case ConstantsYtsEnum : return "ConstantsYts"; … … 206 207 case DamageEvolutionNumRequestedOutputsEnum : return "DamageEvolutionNumRequestedOutputs"; 207 208 case DamageEvolutionRequestedOutputsEnum : return "DamageEvolutionRequestedOutputs"; 209 case DamageEnum : return "Damage"; 208 210 case NewDamageEnum : return "NewDamage"; 209 211 case MaterialsRhoIceEnum : return "MaterialsRhoIce"; … … 708 710 case SeaiceThicknessEnum : return "SeaiceThickness"; 709 711 case SeaiceConcentrationEnum : return "SeaiceConcentration"; 712 case SeaiceMinConcentrationEnum : return "SeaiceMinConcentration"; 713 case SeaiceMinThicknessEnum : return "SeaiceMinThickness"; 714 case SeaiceMaxThicknessEnum : return "SeaiceMaxThickness"; 710 715 case SeaiceSpcvxEnum : return "SeaiceSpcvx"; 711 716 case SeaiceSpcvyEnum : return "SeaiceSpcvy"; … … 728 733 case MaterialsPoissonEnum : return "MaterialsPoisson"; 729 734 case MaterialsYoungModulusEnum : return "MaterialsYoungModulus"; 730 case MaterialsDamageEnum : return "MaterialsDamage"; 735 case MaterialsTimeRelaxationStressEnum : return "MaterialsTimeRelaxationStress"; 736 case MaterialsTimeRelaxationDamageEnum : return "MaterialsTimeRelaxationDamage"; 731 737 case MaterialsRidgingExponentEnum : return "MaterialsRidgingExponent"; 732 738 case MaterialsCohesionEnum : return "MaterialsCohesion"; … … 736 742 case VxStarEnum : return "VxStar"; 737 743 case VyStarEnum : return "VyStar"; 744 case StressTensorPredictorxxEnum : return "StressTensorPredictorxx"; 745 case StressTensorPredictoryyEnum : return "StressTensorPredictoryy"; 746 case StressTensorPredictorxyEnum : return "StressTensorPredictorxy"; 738 747 case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions"; 739 748 default : return "unknown"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18497 r18504 58 58 else if (strcmp(name,"Base")==0) return BaseEnum; 59 59 else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum; 60 else if (strcmp(name,"ConstantsOmega")==0) return ConstantsOmegaEnum; 60 61 else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum; 61 62 else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum; … … 136 137 else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; 137 138 else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum; 138 else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;139 139 else stage=2; 140 140 } 141 141 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; 143 144 else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum; 144 145 else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum; … … 209 210 else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum; 210 211 else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum; 212 else if (strcmp(name,"Damage")==0) return DamageEnum; 211 213 else if (strcmp(name,"NewDamage")==0) return NewDamageEnum; 212 214 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum; … … 258 260 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 259 261 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;262 262 else stage=3; 263 263 } 264 264 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; 266 268 else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum; 267 269 else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum; … … 381 383 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 382 384 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;385 385 else stage=4; 386 386 } 387 387 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; 389 391 else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum; 390 392 else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; … … 504 506 else if (strcmp(name,"Internal")==0) return InternalEnum; 505 507 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;508 508 else stage=5; 509 509 } 510 510 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; 512 514 else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum; 513 515 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; … … 627 629 else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum; 628 630 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;631 631 else stage=6; 632 632 } 633 633 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; 635 637 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum; 636 638 else if (strcmp(name,"MinVx")==0) return MinVxEnum; … … 723 725 else if (strcmp(name,"SeaiceThickness")==0) return SeaiceThicknessEnum; 724 726 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; 725 730 else if (strcmp(name,"SeaiceSpcvx")==0) return SeaiceSpcvxEnum; 726 731 else if (strcmp(name,"SeaiceSpcvy")==0) return SeaiceSpcvyEnum; … … 743 748 else if (strcmp(name,"MaterialsPoisson")==0) return MaterialsPoissonEnum; 744 749 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; 746 752 else if (strcmp(name,"MaterialsRidgingExponent")==0) return MaterialsRidgingExponentEnum; 747 753 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; 749 758 else if (strcmp(name,"MaterialsCompressionCoef")==0) return MaterialsCompressionCoefEnum; 750 759 else if (strcmp(name,"MaterialsTractionCoef")==0) return MaterialsTractionCoefEnum; 751 760 else if (strcmp(name,"VxStar")==0) return VxStarEnum; 752 761 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; 753 765 else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum; 754 else stage= 7;766 else stage=8; 755 767 } 756 768 /*If we reach this point, the string provided has not been found*/
Note:
See TracChangeset
for help on using the changeset viewer.