Changeset 14159
- Timestamp:
- 12/13/12 15:14:13 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 1 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r13549 r14159 235 235 BalancethicknessAnalysisEnum, 236 236 BalancethicknessSolutionEnum, 237 WeakBalancethicknessAnalysisEnum, 238 WeakBalancethicknessSolutionEnum, 237 239 BedSlopeAnalysisEnum, 238 240 BedSlopeSolutionEnum, … … 355 357 AdjointyEnum, 356 358 AdjointzEnum, 359 BalancethicknessMisfitEnum, 357 360 BedSlopeXEnum, 358 361 BedSlopeYEnum, -
issm/trunk-jpl/src/c/Makefile.am
r14082 r14159 475 475 ./modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp\ 476 476 ./modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp\ 477 ./solutions/balancethickness_core.cpp 477 ./solutions/balancethickness_core.cpp \ 478 ./solutions/dummy_core.cpp 478 479 #}}} 479 480 #Slope sources {{{ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r14082 r14159 702 702 case ThicknessAlongGradientEnum: ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 703 703 case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 704 case BalancethicknessMisfitEnum:BalancethicknessMisfitx(responses,process_units,weight_index); break; 704 705 case TotalSmbEnum: this->TotalSmbx(responses,process_units); break; 705 706 case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; … … 1358 1359 #endif 1359 1360 #ifdef _HAVE_CONTROL_ 1361 void FemModel::BalancethicknessMisfitx(IssmDouble* presponse,bool process_units,int weight_index){/*{{{*/ 1362 1363 IssmDouble J = 0; 1364 IssmDouble J_sum; 1365 1366 for(int i=0;i<this->elements->Size();i++){ 1367 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 1368 J+=element->BalancethicknessMisfit(process_units,weight_index); 1369 } 1370 #ifdef _HAVE_MPI_ 1371 MPI_Reduce (&J,&J_sum,1,MPI_DOUBLE,MPI_SUM,0,IssmComm::GetComm() ); 1372 MPI_Bcast(&J_sum,1,MPI_DOUBLE,0,IssmComm::GetComm()); 1373 J=J_sum; 1374 #endif 1375 1376 /*Assign output pointers: */ 1377 *presponse=J; 1378 1379 }/*}}}*/ 1360 1380 void FemModel::ThicknessAbsGradientx( IssmDouble* pJ, bool process_units, int weight_index){/*{{{*/ 1361 1381 -
issm/trunk-jpl/src/c/classes/FemModel.h
r14082 r14159 80 80 void IceVolumex(IssmDouble* pV,bool process_units); 81 81 void ElementResponsex(IssmDouble* presponse,int response_enum,bool process_units); 82 void BalancethicknessMisfitx(IssmDouble* pV,bool process_units,int weight_index); 82 83 #endif 83 84 #ifdef _HAVE_DAKOTA_ -
issm/trunk-jpl/src/c/classes/objects/Elements/Element.h
r13892 r14159 110 110 virtual IssmDouble ThicknessAlongGradient(bool process_units,int weight_index)=0; 111 111 virtual IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index)=0; 112 virtual IssmDouble BalancethicknessMisfit(bool process_units,int weight_index)=0; 112 113 virtual IssmDouble RheologyBbarAbsGradient(bool process_units,int weight_index)=0; 113 114 virtual IssmDouble DragCoefficientAbsGradient(bool process_units,int weight_index)=0; -
issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h
r13903 r14159 166 166 IssmDouble ThicknessAlongGradient( bool process_units,int weight_index){_error_("not supported");}; 167 167 IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index){_error_("not supported");}; 168 IssmDouble BalancethicknessMisfit(bool process_units,int weight_index){_error_("not supported");}; 168 169 void InputControlUpdate(IssmDouble scalar,bool save_parameter); 169 170 #endif -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
r13909 r14159 1550 1550 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1551 1551 this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1552 } 1553 break; 1554 case ThicknessEnum: 1555 if (iomodel->Data(ThicknessEnum)){ 1556 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(ThicknessEnum)[tria_vertex_ids[j]-1]; 1557 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1558 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1559 this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1552 1560 } 1553 1561 break; … … 3459 3467 3460 3468 #ifdef _HAVE_CONTROL_ 3469 /*FUNCTION Tria::BalancethicknessMisfit{{{*/ 3470 IssmDouble Tria::BalancethicknessMisfit(bool process_units,int weight_index){ 3471 3472 /* Intermediaries */ 3473 IssmDouble Jelem = 0; 3474 IssmDouble weight; 3475 IssmDouble Jdet,temp; 3476 IssmDouble xyz_list[NUMVERTICES][3]; 3477 IssmDouble dH[2]; 3478 IssmDouble vx,vy,H; 3479 IssmDouble dvx[2],dvy[2]; 3480 IssmDouble dhdt,basal_melting,surface_mass_balance; 3481 GaussTria *gauss = NULL; 3482 3483 /*If on water, return 0: */ 3484 if(IsOnWater()) return 0; 3485 3486 /*Retrieve all inputs we will be needing: */ 3487 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 3488 Input* weights_input = inputs->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 3489 Input* thickness_input = inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 3490 Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input); 3491 Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input); 3492 Input* surface_mass_balance_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(surface_mass_balance_input); 3493 Input* basal_melting_input = inputs->GetInput(BasalforcingsMeltingRateEnum); _assert_(basal_melting_input); 3494 Input* dhdt_input = inputs->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input); 3495 3496 /* Start looping on the number of gaussian points: */ 3497 gauss=new GaussTria(2); 3498 for(int ig=gauss->begin();ig<gauss->end();ig++){ 3499 3500 gauss->GaussPoint(ig); 3501 3502 /* Get Jacobian determinant: */ 3503 GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss); 3504 3505 /*Get all parameters at gaussian point*/ 3506 weights_input->GetInputValue(&weight,gauss,weight_index); 3507 thickness_input->GetInputValue(&H, gauss); 3508 thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss); 3509 surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss); 3510 basal_melting_input->GetInputValue(&basal_melting,gauss); 3511 dhdt_input->GetInputValue(&dhdt,gauss); 3512 vx_input->GetInputValue(&vx,gauss); 3513 vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss); 3514 vy_input->GetInputValue(&vy,gauss); 3515 vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss); 3516 3517 /*Weak balance thickness J = 1/2 (div(Hv)-a)^2*/ 3518 temp = vx*dH[0]+vy*dH[1]+H*(dvx[0]+dvy[1]) - (surface_mass_balance-basal_melting-dhdt); 3519 Jelem+=weight*1/2*temp*temp*Jdet*gauss->weight; 3520 } 3521 3522 /*Clean up and return*/ 3523 delete gauss; 3524 return Jelem; 3525 } 3526 /*}}}*/ 3461 3527 /*FUNCTION Tria::InputControlUpdate{{{*/ 3462 3528 void Tria::InputControlUpdate(IssmDouble scalar,bool save_parameter){ … … 3580 3646 GradjVyBalancedthickness(gradient,control_index); 3581 3647 break; 3648 case ThicknessEnum: 3649 GradjThicknessWeakBalancedthickness(gradient,control_index); 3650 break; 3582 3651 default: 3583 3652 _error_("control type not supported yet: " << control_type); … … 3597 3666 case ThicknessAlongGradientEnum: 3598 3667 case ThicknessAcrossGradientEnum: 3668 case BalancethicknessMisfitEnum: 3599 3669 case SurfaceAbsVelMisfitEnum: 3600 3670 case SurfaceRelVelMisfitEnum: … … 4042 4112 /*Clean up and return*/ 4043 4113 delete gauss; 4114 } 4115 /*}}}*/ 4116 /*FUNCTION Tria::GradjThicknessWeakBalancedthickness{{{*/ 4117 void Tria::GradjThicknessWeakBalancedthickness(Vector<IssmDouble>* gradient,int control_index){ 4118 4119 /*Intermediaries */ 4120 int i,resp; 4121 int vertexpidlist[NUMVERTICES]; 4122 IssmDouble Jdet; 4123 IssmDouble thickness,thicknessobs,weight; 4124 int num_responses; 4125 IssmDouble xyz_list[NUMVERTICES][3]; 4126 IssmDouble basis[3]; 4127 IssmDouble dbasis[NDOF2][NUMVERTICES]; 4128 IssmDouble dH[2]; 4129 IssmDouble vx,vy,vel; 4130 IssmDouble dvx[2],dvy[2]; 4131 IssmDouble dhdt,basal_melting,surface_mass_balance; 4132 GaussTria *gauss = NULL; 4133 int *responses = NULL; 4134 IssmDouble grade_g[NUMVERTICES] = {0.0}; 4135 4136 /* Get node coordinates and dof list: */ 4137 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 4138 GradientIndexing(&vertexpidlist[0],control_index); 4139 4140 /*Retrieve all inputs and parameters*/ 4141 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 4142 this->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum); 4143 this->parameters->FindParam(&responses,NULL,NULL,StepResponsesEnum); 4144 Input* thickness_input = inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 4145 Input* thicknessobs_input = inputs->GetInput(InversionThicknessObsEnum); _assert_(thicknessobs_input); 4146 Input* weights_input = inputs->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input); 4147 Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input); 4148 Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input); 4149 Input* surface_mass_balance_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(surface_mass_balance_input); 4150 Input* basal_melting_input = inputs->GetInput(BasalforcingsMeltingRateEnum); _assert_(basal_melting_input); 4151 Input* dhdt_input = inputs->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input); 4152 4153 /* Start looping on the number of gaussian points: */ 4154 gauss=new GaussTria(2); 4155 for(int ig=gauss->begin();ig<gauss->end();ig++){ 4156 4157 gauss->GaussPoint(ig); 4158 4159 GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss); 4160 GetNodalFunctions(basis, gauss); 4161 GetNodalFunctionsDerivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 4162 4163 thickness_input->GetInputValue(&thickness, gauss); 4164 thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss); 4165 thicknessobs_input->GetInputValue(&thicknessobs, gauss); 4166 4167 /*Loop over all requested responses*/ 4168 for(resp=0;resp<num_responses;resp++) switch(responses[resp]){ 4169 4170 case ThicknessAbsMisfitEnum: 4171 weights_input->GetInputValue(&weight, gauss,resp); 4172 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i]; 4173 break; 4174 case ThicknessAbsGradientEnum: 4175 weights_input->GetInputValue(&weight, gauss,resp); 4176 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[0]*dbasis[0][i]*Jdet*gauss->weight; 4177 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[1]*dbasis[1][i]*Jdet*gauss->weight; 4178 break; 4179 case ThicknessAlongGradientEnum: 4180 weights_input->GetInputValue(&weight, gauss,resp); 4181 vx_input->GetInputValue(&vx,gauss); 4182 vy_input->GetInputValue(&vy,gauss); 4183 vel = sqrt(vx*vx+vy*vy); 4184 vx = vx/(vel+1.e-9); 4185 vy = vy/(vel+1.e-9); 4186 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0][i]*vx+dbasis[1][i]*vy)*Jdet*gauss->weight; 4187 break; 4188 case ThicknessAcrossGradientEnum: 4189 weights_input->GetInputValue(&weight, gauss,resp); 4190 vx_input->GetInputValue(&vx,gauss); 4191 vy_input->GetInputValue(&vy,gauss); 4192 vel = sqrt(vx*vx+vy*vy); 4193 vx = vx/(vel+1.e-9); 4194 vy = vy/(vel+1.e-9); 4195 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0][i]*(-vy)+dbasis[1][i]*vx)*Jdet*gauss->weight; 4196 break; 4197 case BalancethicknessMisfitEnum: 4198 weights_input->GetInputValue(&weight, gauss,resp); 4199 surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss); 4200 basal_melting_input->GetInputValue(&basal_melting,gauss); 4201 dhdt_input->GetInputValue(&dhdt,gauss); 4202 vx_input->GetInputValue(&vx,gauss); 4203 vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss); 4204 vy_input->GetInputValue(&vy,gauss); 4205 vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss); 4206 for(i=0;i<NUMVERTICES;i++){ 4207 grade_g[i]+= - weight*Jdet*gauss->weight*( 4208 (vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1])) 4209 -(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1])) 4210 ); 4211 } 4212 break; 4213 default: 4214 _error_("response " << EnumToStringx(responses[resp]) << " not supported yet"); 4215 } 4216 } 4217 4218 4219 gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL); 4220 4221 /*Clean up and return*/ 4222 delete gauss; 4223 xDelete<int>(responses); 4044 4224 } 4045 4225 /*}}}*/ -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h
r13892 r14159 153 153 void GradjVxBalancedthickness(Vector<IssmDouble>* gradient,int control_index); 154 154 void GradjVyBalancedthickness(Vector<IssmDouble>* gradient,int control_index); 155 void GradjThicknessWeakBalancedthickness(Vector<IssmDouble>* gradient,int control_index); 155 156 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data); 156 157 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index); … … 164 165 IssmDouble ThicknessAlongGradient( bool process_units,int weight_index); 165 166 IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index); 167 IssmDouble BalancethicknessMisfit( bool process_units,int weight_index); 166 168 IssmDouble SurfaceRelVelMisfit( bool process_units,int weight_index); 167 169 IssmDouble SurfaceLogVelMisfit( bool process_units,int weight_index); -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r13549 r14159 238 238 case BalancethicknessAnalysisEnum : return "BalancethicknessAnalysis"; 239 239 case BalancethicknessSolutionEnum : return "BalancethicknessSolution"; 240 case WeakBalancethicknessAnalysisEnum : return "WeakBalancethicknessAnalysis"; 241 case WeakBalancethicknessSolutionEnum : return "WeakBalancethicknessSolution"; 240 242 case BedSlopeAnalysisEnum : return "BedSlopeAnalysis"; 241 243 case BedSlopeSolutionEnum : return "BedSlopeSolution"; … … 346 348 case AdjointyEnum : return "Adjointy"; 347 349 case AdjointzEnum : return "Adjointz"; 350 case BalancethicknessMisfitEnum : return "BalancethicknessMisfit"; 348 351 case BedSlopeXEnum : return "BedSlopeX"; 349 352 case BedSlopeYEnum : return "BedSlopeY"; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r13622 r14159 45 45 case VxEnum: iomodel->FetchData(1,VxEnum); break; 46 46 case VyEnum: iomodel->FetchData(1,VyEnum); break; 47 case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break; 48 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 49 case MaterialsRheologyZbarEnum: iomodel->FetchData(1,MaterialsRheologyZEnum); break; 47 case ThicknessEnum: iomodel->FetchData(1,ThicknessEnum); break; 48 case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break; 49 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 50 case MaterialsRheologyZbarEnum: iomodel->FetchData(1,MaterialsRheologyZEnum); break; 50 51 default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 51 52 } -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r13549 r14159 242 242 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 243 243 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 244 else if (strcmp(name,"WeakBalancethicknessAnalysis")==0) return WeakBalancethicknessAnalysisEnum; 245 else if (strcmp(name,"WeakBalancethicknessSolution")==0) return WeakBalancethicknessSolutionEnum; 244 246 else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum; 245 247 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; … … 259 261 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum; 260 262 else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum; 261 else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;262 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;263 263 else stage=3; 264 264 } 265 265 if(stage==3){ 266 if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum; 266 if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum; 267 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 268 else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum; 267 269 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; 268 270 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum; … … 353 355 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 354 356 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 357 else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum; 355 358 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 356 359 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; … … 381 384 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum; 382 385 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 383 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;384 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;385 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;386 386 else stage=4; 387 387 } 388 388 if(stage==4){ 389 if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 389 if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 390 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 391 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 392 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 390 393 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 391 394 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; … … 504 507 else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum; 505 508 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 506 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;507 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;508 else if (strcmp(name,"Regular")==0) return RegularEnum;509 509 else stage=5; 510 510 } 511 511 if(stage==5){ 512 if (strcmp(name,"Scaled")==0) return ScaledEnum; 512 if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 513 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 514 else if (strcmp(name,"Regular")==0) return RegularEnum; 515 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 513 516 else if (strcmp(name,"Separate")==0) return SeparateEnum; 514 517 else if (strcmp(name,"Sset")==0) return SsetEnum; -
issm/trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp
r13855 r14159 33 33 case BalancethicknessSolutionEnum: 34 34 adjointcore=&adjointbalancethickness_core; 35 case WeakBalancethicknessSolutionEnum: 36 adjointcore=&dummy_core; 35 37 break; 36 38 default: -
issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp
r13621 r14159 83 83 break; 84 84 85 case WeakBalancethicknessSolutionEnum: 86 numanalyses=1; 87 analyses=xNew<int>(numanalyses); 88 analyses[0]=BalancethicknessAnalysisEnum; 89 break; 90 85 91 case SurfaceSlopeSolutionEnum: 86 92 numanalyses=1; -
issm/trunk-jpl/src/c/solutions/CorePointerFromSolutionEnum.cpp
r13855 r14159 60 60 #endif 61 61 break; 62 case WeakBalancethicknessSolutionEnum: 63 #ifdef _HAVE_BALANCED_ 64 solutioncore=&dummy_core; 65 #else 66 _error_("ISSM was not compiled with balanced capabilities. Exiting"); 67 #endif 68 break; 62 69 case HydrologySolutionEnum: 63 70 #ifdef _HAVE_HYDROLOGY_ -
issm/trunk-jpl/src/c/solutions/objectivefunction.cpp
r13764 r14159 46 46 femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum); 47 47 } 48 else if (solution_type==WeakBalancethicknessSolutionEnum){ 49 femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum); 50 } 48 51 else{ 49 52 _error_("Solution " << EnumToStringx(solution_type) << " not implemented yet"); … … 63 66 solver_linear(femmodel); 64 67 } 68 else if (solution_type==WeakBalancethicknessSolutionEnum){ 69 /*Don't do anything*/ 70 } 65 71 else{ 66 72 _error_("Solution " << EnumToStringx(solution_type) << " not implemented yet"); -
issm/trunk-jpl/src/c/solutions/solutions.h
r13855 r14159 33 33 void dakota_core(FemModel* femmodel); 34 34 void ad_core(FemModel* femmodel); 35 void dummy_core(FemModel* femmodel); 35 36 IssmDouble objectivefunction(IssmDouble search_scalar,OptArgs* optargs); 36 37
Note:
See TracChangeset
for help on using the changeset viewer.