Index: ../trunk-jpl/src/c/analyses/thermal_core.cpp =================================================================== --- ../trunk-jpl/src/c/analyses/thermal_core.cpp (revision 16214) +++ ../trunk-jpl/src/c/analyses/thermal_core.cpp (revision 16215) @@ -22,6 +22,12 @@ femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); if(dakota_analysis && solution_type!=TransientSolutionEnum){ + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxMeshEnum,VxMeshEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyMeshEnum,VyMeshEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzMeshEnum,VzMeshEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMeltingEnum,BasalforcingsMeltingRateEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBEnum); femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); ResetConstraintsx(femmodel); } Index: ../trunk-jpl/src/c/analyses/transient_core.cpp =================================================================== --- ../trunk-jpl/src/c/analyses/transient_core.cpp (revision 16214) +++ ../trunk-jpl/src/c/analyses/transient_core.cpp (revision 16215) @@ -58,13 +58,19 @@ /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/ if(dakota_analysis){ - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum); - InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum); + if(isstressbalance){ + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum); + } + if(ismasstransport | isgroundingline){ + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskIceLevelsetEnum,MaskIceLevelsetEnum); + } + if(isgroundingline) InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskGroundediceLevelsetEnum,MaskGroundediceLevelsetEnum); if(dim==2)InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBbarEnum); if(isthermal && dim==3){ //Update Vertex Position after updating Thickness and Bed Index: ../trunk-jpl/src/c/analyses/masstransport_core.cpp =================================================================== --- ../trunk-jpl/src/c/analyses/masstransport_core.cpp (revision 16214) +++ ../trunk-jpl/src/c/analyses/masstransport_core.cpp (revision 16215) @@ -13,7 +13,7 @@ /*parameters: */ bool save_results; - bool issmbgradients,ispdd,isdelta18o,isFS,isfreesurface; + bool issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis; int solution_type; int *requested_outputs = NULL; int numoutputs = 0; @@ -28,10 +28,18 @@ femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum); femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum); femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum); + femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum); femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum); if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum); + /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/ + if(dakota_analysis && solution_type==MasstransportSolutionEnum){ + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum); + InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum); + } + if(issmbgradients){ if(VerboseSolution())_printf_(" call smb gradients module\n\n"); SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 16214) +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 16215) @@ -142,6 +142,7 @@ InversionVyObsEnum, InversionVzObsEnum, MaskIceLevelsetEnum, + QmuMaskIceLevelsetEnum, MaterialsBetaEnum, MaterialsHeatcapacityEnum, MaterialsLatentheatEnum, @@ -576,6 +577,7 @@ SubelementMigrationEnum, SubelementMigration2Enum, MaskGroundediceLevelsetEnum, + QmuMaskGroundediceLevelsetEnum, /*}}}*/ /*Solver{{{*/ FSSolverEnum, Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 16214) +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 16215) @@ -150,6 +150,7 @@ case InversionVyObsEnum : return "InversionVyObs"; case InversionVzObsEnum : return "InversionVzObs"; case MaskIceLevelsetEnum : return "MaskIceLevelset"; + case QmuMaskIceLevelsetEnum : return "QmuMaskIceLevelset"; case MaterialsBetaEnum : return "MaterialsBeta"; case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity"; case MaterialsLatentheatEnum : return "MaterialsLatentheat"; @@ -560,6 +561,7 @@ case SubelementMigrationEnum : return "SubelementMigration"; case SubelementMigration2Enum : return "SubelementMigration2"; case MaskGroundediceLevelsetEnum : return "MaskGroundediceLevelset"; + case QmuMaskGroundediceLevelsetEnum : return "QmuMaskGroundediceLevelset"; case FSSolverEnum : return "FSSolver"; case AdjointEnum : return "Adjoint"; case ColinearEnum : return "Colinear"; Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 16214) +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 16215) @@ -153,6 +153,7 @@ else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum; + else if (strcmp(name,"QmuMaskIceLevelset")==0) return QmuMaskIceLevelsetEnum; else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; @@ -258,11 +259,11 @@ else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum; else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum; - else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; else stage=3; } if(stage==3){ - if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; + if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; + else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum; else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum; @@ -381,11 +382,11 @@ else if (strcmp(name,"Input")==0) return InputEnum; else if (strcmp(name,"IntInput")==0) return IntInputEnum; else if (strcmp(name,"IntParam")==0) return IntParamEnum; - else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; else stage=4; } if(stage==4){ - if (strcmp(name,"TransientParam")==0) return TransientParamEnum; + if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; + else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; else if (strcmp(name,"IceFrontType")==0) return IceFrontTypeEnum; else if (strcmp(name,"SSA2dIceFront")==0) return SSA2dIceFrontEnum; else if (strcmp(name,"SSA3dIceFront")==0) return SSA3dIceFrontEnum; @@ -504,11 +505,11 @@ else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum; - else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; else stage=5; } if(stage==5){ - if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; + if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; + else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; @@ -572,6 +573,7 @@ else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum; else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum; + else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum; else if (strcmp(name,"FSSolver")==0) return FSSolverEnum; else if (strcmp(name,"Adjoint")==0) return AdjointEnum; else if (strcmp(name,"Colinear")==0) return ColinearEnum; Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp =================================================================== --- ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp (revision 16214) +++ ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp (revision 16215) @@ -15,6 +15,7 @@ bool issmbgradients; bool ispdd; bool isdelta18o; + bool isgroundingline; /*Fetch data needed: */ iomodel->Constant(&stabilization,MasstransportStabilizationEnum); @@ -22,6 +23,7 @@ iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum); iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum); iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum); + iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum); /*Finite element type*/ finiteelement = P1Enum; @@ -57,28 +59,21 @@ elements->InputDuplicate(BedEnum,QmuBedEnum); elements->InputDuplicate(ThicknessEnum,QmuThicknessEnum); elements->InputDuplicate(SurfaceEnum,QmuSurfaceEnum); - elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum); - elements->InputDuplicate(VxEnum,QmuVxEnum); - elements->InputDuplicate(VyEnum,QmuVyEnum); + elements->InputDuplicate(MaskIceLevelsetEnum,QmuMaskIceLevelsetEnum); + if(isgroundingline) elements->InputDuplicate(MaskGroundediceLevelsetEnum,QmuMaskGroundediceLevelsetEnum); } if(iomodel->dim==3){ iomodel->FetchDataToInput(elements,MeshElementonbedEnum); iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); - iomodel->FetchDataToInput(elements,PressureEnum); iomodel->FetchDataToInput(elements,TemperatureEnum); iomodel->FetchDataToInput(elements,VzEnum); - if(dakota_analysis){ - elements->InputDuplicate(PressureEnum,QmuPressureEnum); - elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum); - elements->InputDuplicate(VzEnum,QmuVzEnum); - } } if(issmbgradients){ - iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum); - iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum); - iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum); - iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum); + iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum); + iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum); + iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum); + iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum); } if(ispdd){ iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum); Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp =================================================================== --- ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp (revision 16214) +++ ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp (revision 16215) @@ -100,6 +100,8 @@ iomodel->FetchDataToInput(elements,LoadingforceXEnum); iomodel->FetchDataToInput(elements,LoadingforceYEnum); iomodel->FetchDataToInput(elements,DamageDEnum); + iomodel->FetchDataToInput(elements,PressureEnum); + if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum); if(iomodel->dim==3){ iomodel->FetchDataToInput(elements,MeshElementonbedEnum); Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp =================================================================== --- ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp (revision 16214) +++ ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp (revision 16215) @@ -47,7 +47,6 @@ iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); if(dakota_analysis){ elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum); - elements->InputDuplicate(PressureEnum,QmuPressureEnum); elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum); } } Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 16214) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 16215) @@ -1981,6 +1981,8 @@ name==QmuSurfaceEnum || name==QmuTemperatureEnum || name==QmuMeltingEnum || + name==QmuMaskGroundediceLevelsetEnum || + name==QmuMaskIceLevelsetEnum || name==GiaWEnum || name==GiadWdtEnum ){ @@ -2499,17 +2501,17 @@ if(!iomodel->Data(VxEnum)){ for(i=0;i<3;i++)nodeinputs[i]=0; this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum)); - if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum)); + if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum)); } if(!iomodel->Data(VyEnum)){ for(i=0;i<3;i++)nodeinputs[i]=0; this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum)); - if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum)); + if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum)); } if(!iomodel->Data(VzEnum)){ for(i=0;i<3;i++)nodeinputs[i]=0; this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum)); - if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum)); + if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum)); } if(!iomodel->Data(PressureEnum)){ for(i=0;i<3;i++)nodeinputs[i]=0; Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 16214) +++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 16215) @@ -2754,6 +2754,8 @@ name==QmuSurfaceEnum || name==QmuTemperatureEnum || name==QmuMeltingEnum || + name==QmuMaskGroundediceLevelsetEnum || + name==QmuMaskIceLevelsetEnum || name==GiaWEnum || name==GiadWdtEnum || name==SedimentHeadEnum ||