Changeset 22266
- Timestamp:
- 11/16/17 16:27:29 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp
r22265 r22266 70 70 71 71 /*Intermediaries */ 72 IssmDouble Jdet,ds[2],slope,velobs,omega; 72 IssmDouble yts = 365*24*3600.; 73 IssmDouble Jdet,vx,vy,vel; 73 74 IssmDouble* xyz_list = NULL; 74 75 … … 82 83 /*Retrieve all inputs and parameters*/ 83 84 element->GetVerticesCoordinates(&xyz_list); 84 Input* omega_input = element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input); 85 Input* surfaceslopex_input = element->GetInput(SurfaceSlopeXEnum); _assert_(surfaceslopex_input); 86 Input* surfaceslopey_input = element->GetInput(SurfaceSlopeYEnum); _assert_(surfaceslopey_input); 87 Input* velobs_input = element->GetInput(InversionVelObsEnum); _assert_(velobs_input); 85 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); 86 Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input); 87 88 /*Get element characteristic length*/ 89 IssmDouble h = element->CharacteristicLength(); 88 90 89 91 /* Start looping on the number of gaussian points: */ … … 93 95 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 94 96 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 95 surfaceslopex_input->GetInputValue(&ds[0],gauss); 96 surfaceslopey_input->GetInputValue(&ds[1],gauss); 97 velobs_input->GetInputValue(&velobs,gauss); 98 omega_input->GetInputValue(&omega,gauss); 97 vx_input->GetInputValue(&vx,gauss); 98 vy_input->GetInputValue(&vy,gauss); 99 99 100 slope = sqrt(ds[0]*ds[0] + ds[1]*ds[1]); 101 //if(slope<1.e-5) slope = 1.e-5; 100 /*make sure are diffusivisty is large enough*/ 101 vel = sqrt(vx*vx+vy*vy); 102 if(sqrt(vx*vx+vy*vy)==0.){ 103 vx = 0.1/yts; 104 vy = 0.1/yts; 105 vel = sqrt(vx*vx+vy*vy); 106 } 107 else if(vel<0.1/yts){ 108 vx = vx/vel*0.1; 109 vy = vy/vel*0.1; 110 vel = sqrt(vx*vx+vy*vy); 111 } 102 112 103 113 for(int i=0;i<numnodes;i++){ 104 114 for(int j=0;j<numnodes;j++){ 105 Ke->values[i*numnodes+j] += velobs/slope*omega*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]); 115 Ke->values[i*numnodes+j] += gauss->weight*Jdet*( 116 (vx*dbasis[0*numnodes+i] + vy*dbasis[1*numnodes+i])*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]) 117 + vel/500000.*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])); 106 118 } 107 119 } … … 117 129 118 130 /*Intermediaries */ 119 IssmDouble dhdt ,mb,ms,Jdet;131 IssmDouble dhdt[2],mb[2],ms[2],Jdet; 120 132 IssmDouble* xyz_list = NULL; 121 133 … … 141 153 element->NodalFunctions(basis,gauss); 142 154 143 ms_input->GetInputValue(&ms,gauss); 144 mb_input->GetInputValue(&mb,gauss); 145 dhdt_input->GetInputValue(&dhdt,gauss); 155 ms_input->GetInputDerivativeValue(&ms[0],xyz_list,gauss); 146 156 147 for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*( 148 (ms-mb-dhdt)*basis[i] 157 ms_input->GetInputDerivativeValue(&ms[0],xyz_list,gauss); 158 mb_input->GetInputDerivativeValue(&mb[0],xyz_list,gauss); 159 dhdt_input->GetInputDerivativeValue(&dhdt[0],xyz_list,gauss); 160 161 for(int i=0;i<numnodes;i++) pe->values[i]+=0*Jdet*gauss->weight*( 162 (ms[0]+ms[1]-mb[0]-mb[1]-dhdt[0]-dhdt[1])*basis[i] 149 163 ); 150 164 } … … 157 171 }/*}}}*/ 158 172 void Balancethickness2Analysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/ 159 element->GetSolutionFromInputsOneDof(solution, SurfaceEnum);173 element->GetSolutionFromInputsOneDof(solution,ThicknessEnum); 160 174 }/*}}}*/ 161 175 void Balancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/ … … 164 178 void Balancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 165 179 166 /*Intermediaries*/ 167 IssmDouble ds[2],s,b,D; 168 IssmDouble* xyz_list = NULL; 180 element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum); 169 181 170 //element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);171 element->InputUpdateFromSolutionOneDof(solution,SurfaceEnum);172 173 /*Fetch number of vertices and allocate velocity vectors*/174 int numvertices = element->GetNumberOfVertices();175 IssmDouble* vel_list = xNew<IssmDouble>(numvertices);176 IssmDouble* vx_list = xNew<IssmDouble>(numvertices);177 IssmDouble* vy_list = xNew<IssmDouble>(numvertices);178 179 /*Retrieve all inputs and parameters*/180 element->GetVerticesCoordinates(&xyz_list);181 Input* D_input = element->GetInput(BalancethicknessDiffusionCoefficientEnum);182 Input* H_input = element->GetInput(ThicknessEnum); _assert_(H_input);183 Input* s_input = element->GetInput(SurfaceEnum); _assert_(s_input);184 Input* b_input = element->GetInput(BaseEnum); _assert_(b_input);185 186 /*Calculate velocities*/187 Gauss* gauss=element->NewGauss();188 for(int iv=0;iv<numvertices;iv++){189 gauss->GaussVertex(iv);190 191 if(D_input){192 D_input->GetInputValue(&D,gauss);193 }194 else{195 D = 0.;196 }197 b_input->GetInputValue(&b,gauss);198 s_input->GetInputValue(&s,gauss);199 s_input->GetInputDerivativeValue(&ds[0],xyz_list,gauss);200 201 vx_list[iv] = -1./(s-b)*D*ds[0];202 vy_list[iv] = -1./(s-b)*D*ds[1];203 vel_list[iv] = sqrt(pow(vx_list[iv],2) + pow(vy_list[iv],2));204 }205 206 /*Add vx and vy as inputs to the tria element: */207 element->AddInput(VxEnum,vx_list,P1Enum);208 element->AddInput(VyEnum,vy_list,P1Enum);209 element->AddInput(VelEnum,vel_list,P1Enum);210 211 /*Free ressources:*/212 delete gauss;213 xDelete<IssmDouble>(vy_list);214 xDelete<IssmDouble>(vx_list);215 xDelete<IssmDouble>(vel_list);216 xDelete<IssmDouble>(xyz_list);217 182 }/*}}}*/ 218 183 void Balancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r22249 r22266 1701 1701 name==BasalforcingsFloatingiceMeltingRateEnum || 1702 1702 name==BasalforcingsGeothermalfluxEnum || 1703 name==BalancethicknessSpcthicknessEnum || 1703 1704 name==SurfaceAreaEnum|| 1704 1705 name==DamageDEnum || -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r22192 r22266 1856 1856 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]; 1857 1857 this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1858 } 1859 break; 1860 case BalancethicknessSpcthicknessEnum: 1861 if(iomodel->Data("md.balancethickness.spcthickness")){ 1862 for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.balancethickness.spcthickness")[tria_vertex_ids[j]-1]; 1863 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]; 1864 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]; 1865 this->inputs->AddInput(new ControlInput(BalancethicknessSpcthicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1858 1866 } 1859 1867 break; -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r22241 r22266 1496 1496 1497 1497 }/*}}}*/ 1498 void FemModel::OmegaAbsGradientx( IssmDouble* pJ){/*{{{*/ 1499 1500 /*output: */ 1501 IssmDouble J=0.; 1502 IssmDouble J_sum; 1503 1504 IssmDouble omega,weight; 1505 IssmDouble Jdet; 1506 IssmDouble* xyz_list = NULL; 1507 IssmDouble dp[3]; 1508 1509 /*Compute Misfit: */ 1510 for(int i=0;i<elements->Size();i++){ 1511 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 1512 1513 /*If on water, return 0: */ 1514 if(!element->IsIceInElement()) continue; 1515 1516 /* Get node coordinates*/ 1517 element->GetVerticesCoordinates(&xyz_list); 1518 1519 /*Retrieve all inputs we will be needing: */ 1520 Input* weights_input =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 1521 Input* omega_input =element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input); 1522 1523 /* Start looping on the number of gaussian points: */ 1524 Gauss* gauss=element->NewGauss(2); 1525 for(int ig=gauss->begin();ig<gauss->end();ig++){ 1526 1527 gauss->GaussPoint(ig); 1528 1529 /* Get Jacobian determinant: */ 1530 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 1531 1532 /*Get all parameters at gaussian point*/ 1533 weights_input->GetInputValue(&weight,gauss,OmegaAbsGradientEnum); 1534 omega_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss); 1535 1536 /*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 1537 //J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight; 1538 J+=weight*1/2*pow(dp[0]*dp[0]+dp[1]*dp[1],2)*Jdet*gauss->weight; 1539 } 1540 1541 /*clean up and Return: */ 1542 xDelete<IssmDouble>(xyz_list); 1543 delete gauss; 1544 } 1545 1546 /*Sum all J from all cpus of the cluster:*/ 1547 ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 1548 ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 1549 J=J_sum; 1550 1551 /*Assign output pointers: */ 1552 *pJ=J; 1553 } 1554 /*}}}*/ 1555 void FemModel::EtaDiffx( IssmDouble* pJ){/*{{{*/ 1556 1557 /*output: */ 1558 IssmDouble J=0.; 1559 IssmDouble J_sum; 1560 1561 IssmDouble omega,weight; 1562 IssmDouble Jdet; 1563 IssmDouble* xyz_list = NULL; 1564 IssmDouble p,p0; 1565 1566 /*Compute Misfit: */ 1567 for(int i=0;i<elements->Size();i++){ 1568 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 1569 1570 /*If on water, return 0: */ 1571 if(!element->IsIceInElement()) continue; 1572 1573 /* Get node coordinates*/ 1574 element->GetVerticesCoordinates(&xyz_list); 1575 1576 /*Retrieve all inputs we will be needing: */ 1577 Input* weights_input =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 1578 Input* omega_input =element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input); 1579 Input* omega0_input =element->GetInput(BalancethicknessOmega0Enum); _assert_(omega0_input); 1580 1581 /* Start looping on the number of gaussian points: */ 1582 Gauss* gauss=element->NewGauss(2); 1583 for(int ig=gauss->begin();ig<gauss->end();ig++){ 1584 1585 gauss->GaussPoint(ig); 1586 1587 /* Get Jacobian determinant: */ 1588 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 1589 1590 /*Get all parameters at gaussian point*/ 1591 weights_input->GetInputValue(&weight,gauss,EtaDiffEnum); 1592 omega_input->GetInputValue(&p,gauss); 1593 omega0_input->GetInputValue(&p0,gauss); 1594 1595 /*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 1596 //J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight; 1597 J+=weight*1/2*pow(p - p0,2)*Jdet*gauss->weight; 1598 } 1599 1600 /*clean up and Return: */ 1601 xDelete<IssmDouble>(xyz_list); 1602 delete gauss; 1603 } 1604 1605 /*Sum all J from all cpus of the cluster:*/ 1606 ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 1607 ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 1608 J=J_sum; 1609 1610 /*Assign output pointers: */ 1611 *pJ=J; 1612 } 1613 /*}}}*/ 1498 1614 void FemModel::OutputControlsx(Results **presults){/*{{{*/ 1499 1615 … … 1667 1783 case BalancethicknessMisfitEnum: BalancethicknessMisfitx(&double_result); break; 1668 1784 case SurfaceAbsMisfitEnum: SurfaceAbsMisfitx(&double_result); break; 1785 case OmegaAbsGradientEnum: OmegaAbsGradientx(&double_result); break; 1786 case EtaDiffEnum: EtaDiffx(&double_result); break; 1669 1787 1670 1788 /*Vector */ … … 2018 2136 IssmDouble J_sum; 2019 2137 2020 IssmDouble thickness, thicknessobs,weight;2138 IssmDouble thickness,weight; 2021 2139 IssmDouble Jdet; 2022 2140 IssmDouble* xyz_list = NULL; -
issm/trunk-jpl/src/c/classes/FemModel.h
r22241 r22266 126 126 void Responsex(IssmDouble* presponse,const char* response_descriptor); 127 127 void SurfaceAbsMisfitx( IssmDouble* pJ); 128 void OmegaAbsGradientx( IssmDouble* pJ); 129 void EtaDiffx( IssmDouble* pJ); 128 130 void ThicknessAbsGradientx( IssmDouble* pJ); 129 131 void ThicknessPositivex(IssmDouble* pJ); -
issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.cpp
r20827 r22266 167 167 /*Get requested input within dataset*/ 168 168 for(int i=0;i<this->numids;i++) if(this->ids[i]==id) offset=i; 169 if(offset<0) _error_("Could not find input of id "<<id );169 if(offset<0) _error_("Could not find input of id "<<id<<" (Enum: "<<EnumToStringx(id)<<")" ); 170 170 171 171 Input* input=xDynamicCast<Input*>(this->inputs->GetObjectByOffset(offset)); -
issm/trunk-jpl/src/c/cores/balancethickness2_core.cpp
r22178 r22266 36 36 if(VerboseSolution()) _printf0_(" saving results\n"); 37 37 const int numoutputs = 1; 38 int outputs[numoutputs] = { SurfaceEnum};38 int outputs[numoutputs] = {ThicknessEnum}; 39 39 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],numoutputs); 40 40 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r21049 r22266 8 8 #include "../ModelProcessorx.h" 9 9 10 void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){ /*{{{*/10 void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){ 11 11 12 12 bool control_analysis; … … 120 120 iomodel->DeleteData(optscal,"md.inversion.gradient_scaling"); 121 121 } 122 } /*}}}*/122 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r21049 r22266 68 68 /*List of supported controls*/ 69 69 case BalancethicknessThickeningRateEnum: iomodel->FetchData(1,"md.balancethickness.thickening_rate"); break; 70 case BalancethicknessSpcthicknessEnum: iomodel->FetchData(1,"md.balancethickness.spcthickness"); break; 70 71 case VxEnum: iomodel->FetchData(1,"md.initialization.vx"); break; 71 72 case VyEnum: iomodel->FetchData(1,"md.initialization.vy"); break; … … 99 100 /*List of supported controls*/ 100 101 case BalancethicknessThickeningRateEnum: iomodel->DeleteData(1,"md.balancethickness.thickening_rate"); break; 102 case BalancethicknessSpcthicknessEnum: iomodel->DeleteData(1,"md.balancethickness.spcthickness"); break; 101 103 case VxEnum: iomodel->DeleteData(1,"md.initialization.vx"); break; 102 104 case VyEnum: iomodel->DeleteData(1,"md.initialization.vy"); break; -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r22241 r22266 214 214 InversionVyObsEnum, 215 215 InversionVzObsEnum, 216 InversionVelObsEnum, 216 217 MaskIceLevelsetEnum, 217 218 MaskOceanLevelsetEnum, … … 382 383 BalancethicknessDiffusionCoefficientEnum, 383 384 BalancethicknessOmegaEnum, 385 BalancethicknessOmega0Enum, 384 386 BalancethicknessD0Enum, 385 387 /*}}}*/ … … 529 531 ThicknessAbsMisfitEnum, 530 532 SurfaceAbsMisfitEnum, 533 OmegaAbsGradientEnum, 534 EtaDiffEnum, 535 EtaAbsGradientEnum, 531 536 VelEnum, 532 537 VelocityEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r22241 r22266 220 220 case InversionVyObsEnum : return "InversionVyObs"; 221 221 case InversionVzObsEnum : return "InversionVzObs"; 222 case InversionVelObsEnum : return "InversionVelObs"; 222 223 case MaskIceLevelsetEnum : return "MaskIceLevelset"; 223 224 case MaskOceanLevelsetEnum : return "MaskOceanLevelset"; … … 388 389 case BalancethicknessDiffusionCoefficientEnum : return "BalancethicknessDiffusionCoefficient"; 389 390 case BalancethicknessOmegaEnum : return "BalancethicknessOmega"; 391 case BalancethicknessOmega0Enum : return "BalancethicknessOmega0"; 390 392 case BalancethicknessD0Enum : return "BalancethicknessD0"; 391 393 case SmbEnum : return "Smb"; … … 527 529 case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit"; 528 530 case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit"; 531 case OmegaAbsGradientEnum : return "OmegaAbsGradient"; 532 case EtaDiffEnum : return "EtaDiff"; 533 case EtaAbsGradientEnum : return "EtaAbsGradient"; 529 534 case VelEnum : return "Vel"; 530 535 case VelocityEnum : return "Velocity"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r22200 r22266 223 223 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 224 224 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 225 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 225 226 else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum; 226 227 else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum; … … 259 260 else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum; 260 261 else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum; 261 else if (strcmp(name,"Damage")==0) return DamageEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"NewDamage")==0) return NewDamageEnum; 265 if (strcmp(name,"Damage")==0) return DamageEnum; 266 else if (strcmp(name,"NewDamage")==0) return NewDamageEnum; 266 267 else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 267 268 else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum; … … 382 383 else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum; 383 384 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; 384 else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum; 388 if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum; 389 else if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum; 389 390 else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum; 390 391 else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum; … … 397 398 else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum; 398 399 else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum; 400 else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum; 399 401 else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 400 402 else if (strcmp(name,"Smb")==0) return SmbEnum; … … 504 506 else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum; 505 507 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 506 else if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum;507 else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 511 if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum; 512 else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum; 513 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 512 514 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 513 515 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; … … 539 541 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 540 542 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; 543 else if (strcmp(name,"OmegaAbsGradient")==0) return OmegaAbsGradientEnum; 544 else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum; 545 else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum; 541 546 else if (strcmp(name,"Vel")==0) return VelEnum; 542 547 else if (strcmp(name,"Velocity")==0) return VelocityEnum; … … 624 629 else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum; 625 630 else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum; 626 else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum; 627 635 else if (strcmp(name,"Outputdefinition7")==0) return Outputdefinition7Enum; 628 636 else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum; 629 637 else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; 630 638 else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum; 639 else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum; 635 640 else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum; 636 641 else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum; … … 747 752 else if (strcmp(name,"Colinear")==0) return ColinearEnum; 748 753 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 749 else if (strcmp(name,"Fset")==0) return FsetEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Fset")==0) return FsetEnum; 750 758 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; 751 759 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum; 752 760 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum; 753 761 else if (strcmp(name,"Gradient")==0) return GradientEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; 762 else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; 758 763 else if (strcmp(name,"Gset")==0) return GsetEnum; 759 764 else if (strcmp(name,"Index")==0) return IndexEnum; … … 870 875 else if (strcmp(name,"AmrField")==0) return AmrFieldEnum; 871 876 else if (strcmp(name,"AmrErr")==0) return AmrErrEnum; 872 else if (strcmp(name,"AmrKeepMetric")==0) return AmrKeepMetricEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"AmrKeepMetric")==0) return AmrKeepMetricEnum; 873 881 else if (strcmp(name,"AmrGradation")==0) return AmrGradationEnum; 874 882 else if (strcmp(name,"AmrGroundingLineResolution")==0) return AmrGroundingLineResolutionEnum; 875 883 else if (strcmp(name,"AmrGroundingLineDistance")==0) return AmrGroundingLineDistanceEnum; 876 884 else if (strcmp(name,"AmrIceFrontResolution")==0) return AmrIceFrontResolutionEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"AmrIceFrontDistance")==0) return AmrIceFrontDistanceEnum; 885 else if (strcmp(name,"AmrIceFrontDistance")==0) return AmrIceFrontDistanceEnum; 881 886 else if (strcmp(name,"AmrThicknessErrorResolution")==0) return AmrThicknessErrorResolutionEnum; 882 887 else if (strcmp(name,"AmrThicknessErrorThreshold")==0) return AmrThicknessErrorThresholdEnum; … … 993 998 else if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum; 994 999 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 995 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 996 1004 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 997 1005 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum; 998 1006 else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum; 999 1007 else if (strcmp(name,"GiaIvinsAnalysis")==0) return GiaIvinsAnalysisEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum; 1008 else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum; 1004 1009 else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum; 1005 1010 else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
Note:
See TracChangeset
for help on using the changeset viewer.