source: issm/oecreview/Archive/16133-16554/ISSM-16214-16215.diff@ 16556

Last change on this file since 16556 was 16556, checked in by Mathieu Morlighem, 11 years ago

NEW: added Archive/16133-16554

File size: 18.5 KB
RevLine 
[16556]1Index: ../trunk-jpl/src/c/analyses/thermal_core.cpp
2===================================================================
3--- ../trunk-jpl/src/c/analyses/thermal_core.cpp (revision 16214)
4+++ ../trunk-jpl/src/c/analyses/thermal_core.cpp (revision 16215)
5@@ -22,6 +22,12 @@
6 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
7
8 if(dakota_analysis && solution_type!=TransientSolutionEnum){
9+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxMeshEnum,VxMeshEnum);
10+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyMeshEnum,VyMeshEnum);
11+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzMeshEnum,VzMeshEnum);
12+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum);
13+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMeltingEnum,BasalforcingsMeltingRateEnum);
14+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBEnum);
15 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
16 ResetConstraintsx(femmodel);
17 }
18Index: ../trunk-jpl/src/c/analyses/transient_core.cpp
19===================================================================
20--- ../trunk-jpl/src/c/analyses/transient_core.cpp (revision 16214)
21+++ ../trunk-jpl/src/c/analyses/transient_core.cpp (revision 16215)
22@@ -58,13 +58,19 @@
23
24 /*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.*/
25 if(dakota_analysis){
26- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
27- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
28- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
29- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
30- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
31- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
32- InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
33+ if(isstressbalance){
34+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
35+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
36+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
37+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
38+ }
39+ if(ismasstransport | isgroundingline){
40+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
41+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
42+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
43+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskIceLevelsetEnum,MaskIceLevelsetEnum);
44+ }
45+ if(isgroundingline) InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskGroundediceLevelsetEnum,MaskGroundediceLevelsetEnum);
46 if(dim==2)InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
47 if(isthermal && dim==3){
48 //Update Vertex Position after updating Thickness and Bed
49Index: ../trunk-jpl/src/c/analyses/masstransport_core.cpp
50===================================================================
51--- ../trunk-jpl/src/c/analyses/masstransport_core.cpp (revision 16214)
52+++ ../trunk-jpl/src/c/analyses/masstransport_core.cpp (revision 16215)
53@@ -13,7 +13,7 @@
54
55 /*parameters: */
56 bool save_results;
57- bool issmbgradients,ispdd,isdelta18o,isFS,isfreesurface;
58+ bool issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis;
59 int solution_type;
60 int *requested_outputs = NULL;
61 int numoutputs = 0;
62@@ -28,10 +28,18 @@
63 femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
64 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
65 femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum);
66+ femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
67 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
68 femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
69 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
70
71+ /*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.*/
72+ if(dakota_analysis && solution_type==MasstransportSolutionEnum){
73+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
74+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
75+ InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
76+ }
77+
78 if(issmbgradients){
79 if(VerboseSolution())_printf_(" call smb gradients module\n\n");
80 SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
81Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
82===================================================================
83--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 16214)
84+++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 16215)
85@@ -142,6 +142,7 @@
86 InversionVyObsEnum,
87 InversionVzObsEnum,
88 MaskIceLevelsetEnum,
89+ QmuMaskIceLevelsetEnum,
90 MaterialsBetaEnum,
91 MaterialsHeatcapacityEnum,
92 MaterialsLatentheatEnum,
93@@ -576,6 +577,7 @@
94 SubelementMigrationEnum,
95 SubelementMigration2Enum,
96 MaskGroundediceLevelsetEnum,
97+ QmuMaskGroundediceLevelsetEnum,
98 /*}}}*/
99 /*Solver{{{*/
100 FSSolverEnum,
101Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
102===================================================================
103--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 16214)
104+++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 16215)
105@@ -150,6 +150,7 @@
106 case InversionVyObsEnum : return "InversionVyObs";
107 case InversionVzObsEnum : return "InversionVzObs";
108 case MaskIceLevelsetEnum : return "MaskIceLevelset";
109+ case QmuMaskIceLevelsetEnum : return "QmuMaskIceLevelset";
110 case MaterialsBetaEnum : return "MaterialsBeta";
111 case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
112 case MaterialsLatentheatEnum : return "MaterialsLatentheat";
113@@ -560,6 +561,7 @@
114 case SubelementMigrationEnum : return "SubelementMigration";
115 case SubelementMigration2Enum : return "SubelementMigration2";
116 case MaskGroundediceLevelsetEnum : return "MaskGroundediceLevelset";
117+ case QmuMaskGroundediceLevelsetEnum : return "QmuMaskGroundediceLevelset";
118 case FSSolverEnum : return "FSSolver";
119 case AdjointEnum : return "Adjoint";
120 case ColinearEnum : return "Colinear";
121Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
122===================================================================
123--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 16214)
124+++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 16215)
125@@ -153,6 +153,7 @@
126 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
127 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
128 else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
129+ else if (strcmp(name,"QmuMaskIceLevelset")==0) return QmuMaskIceLevelsetEnum;
130 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
131 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
132 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
133@@ -258,11 +259,11 @@
134 else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
135 else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
136 else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
137- else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
138 else stage=3;
139 }
140 if(stage==3){
141- if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
142+ if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
143+ else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
144 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
145 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
146 else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
147@@ -381,11 +382,11 @@
148 else if (strcmp(name,"Input")==0) return InputEnum;
149 else if (strcmp(name,"IntInput")==0) return IntInputEnum;
150 else if (strcmp(name,"IntParam")==0) return IntParamEnum;
151- else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
152 else stage=4;
153 }
154 if(stage==4){
155- if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
156+ if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
157+ else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
158 else if (strcmp(name,"IceFrontType")==0) return IceFrontTypeEnum;
159 else if (strcmp(name,"SSA2dIceFront")==0) return SSA2dIceFrontEnum;
160 else if (strcmp(name,"SSA3dIceFront")==0) return SSA3dIceFrontEnum;
161@@ -504,11 +505,11 @@
162 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
163 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
164 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
165- else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
166 else stage=5;
167 }
168 if(stage==5){
169- if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
170+ if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
171+ else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
172 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
173 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
174 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
175@@ -572,6 +573,7 @@
176 else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
177 else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;
178 else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
179+ else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum;
180 else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
181 else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
182 else if (strcmp(name,"Colinear")==0) return ColinearEnum;
183Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp
184===================================================================
185--- ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp (revision 16214)
186+++ ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp (revision 16215)
187@@ -15,6 +15,7 @@
188 bool issmbgradients;
189 bool ispdd;
190 bool isdelta18o;
191+ bool isgroundingline;
192
193 /*Fetch data needed: */
194 iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
195@@ -22,6 +23,7 @@
196 iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
197 iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
198 iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
199+ iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
200
201 /*Finite element type*/
202 finiteelement = P1Enum;
203@@ -57,28 +59,21 @@
204 elements->InputDuplicate(BedEnum,QmuBedEnum);
205 elements->InputDuplicate(ThicknessEnum,QmuThicknessEnum);
206 elements->InputDuplicate(SurfaceEnum,QmuSurfaceEnum);
207- elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
208- elements->InputDuplicate(VxEnum,QmuVxEnum);
209- elements->InputDuplicate(VyEnum,QmuVyEnum);
210+ elements->InputDuplicate(MaskIceLevelsetEnum,QmuMaskIceLevelsetEnum);
211+ if(isgroundingline) elements->InputDuplicate(MaskGroundediceLevelsetEnum,QmuMaskGroundediceLevelsetEnum);
212 }
213
214 if(iomodel->dim==3){
215 iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
216 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
217- iomodel->FetchDataToInput(elements,PressureEnum);
218 iomodel->FetchDataToInput(elements,TemperatureEnum);
219 iomodel->FetchDataToInput(elements,VzEnum);
220- if(dakota_analysis){
221- elements->InputDuplicate(PressureEnum,QmuPressureEnum);
222- elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
223- elements->InputDuplicate(VzEnum,QmuVzEnum);
224- }
225 }
226 if(issmbgradients){
227- iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
228- iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
229- iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
230- iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
231+ iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
232+ iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
233+ iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
234+ iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
235 }
236 if(ispdd){
237 iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
238Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp
239===================================================================
240--- ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp (revision 16214)
241+++ ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp (revision 16215)
242@@ -100,6 +100,8 @@
243 iomodel->FetchDataToInput(elements,LoadingforceXEnum);
244 iomodel->FetchDataToInput(elements,LoadingforceYEnum);
245 iomodel->FetchDataToInput(elements,DamageDEnum);
246+ iomodel->FetchDataToInput(elements,PressureEnum);
247+ if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum);
248
249 if(iomodel->dim==3){
250 iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
251Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
252===================================================================
253--- ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp (revision 16214)
254+++ ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp (revision 16215)
255@@ -47,7 +47,6 @@
256 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
257 if(dakota_analysis){
258 elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
259- elements->InputDuplicate(PressureEnum,QmuPressureEnum);
260 elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
261 }
262 }
263Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
264===================================================================
265--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 16214)
266+++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 16215)
267@@ -1981,6 +1981,8 @@
268 name==QmuSurfaceEnum ||
269 name==QmuTemperatureEnum ||
270 name==QmuMeltingEnum ||
271+ name==QmuMaskGroundediceLevelsetEnum ||
272+ name==QmuMaskIceLevelsetEnum ||
273 name==GiaWEnum ||
274 name==GiadWdtEnum
275 ){
276@@ -2499,17 +2501,17 @@
277 if(!iomodel->Data(VxEnum)){
278 for(i=0;i<3;i++)nodeinputs[i]=0;
279 this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum));
280- if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
281+ if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
282 }
283 if(!iomodel->Data(VyEnum)){
284 for(i=0;i<3;i++)nodeinputs[i]=0;
285 this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum));
286- if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
287+ if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
288 }
289 if(!iomodel->Data(VzEnum)){
290 for(i=0;i<3;i++)nodeinputs[i]=0;
291 this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum));
292- if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
293+ if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
294 }
295 if(!iomodel->Data(PressureEnum)){
296 for(i=0;i<3;i++)nodeinputs[i]=0;
297Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
298===================================================================
299--- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 16214)
300+++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 16215)
301@@ -2754,6 +2754,8 @@
302 name==QmuSurfaceEnum ||
303 name==QmuTemperatureEnum ||
304 name==QmuMeltingEnum ||
305+ name==QmuMaskGroundediceLevelsetEnum ||
306+ name==QmuMaskIceLevelsetEnum ||
307 name==GiaWEnum ||
308 name==GiadWdtEnum ||
309 name==SedimentHeadEnum ||
Note: See TracBrowser for help on using the repository browser.