Ice Sheet System Model  4.18
Code documentation
CreateParameters.cpp
Go to the documentation of this file.
1 
5 #ifdef HAVE_CONFIG_H
6  #include <config.h>
7 #else
8 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
9 #endif
10 
11 #include "../../toolkits/toolkits.h"
12 #include "../../classes/classes.h"
13 #include "../../shared/shared.h"
14 #include "../MeshPartitionx/MeshPartitionx.h"
15 #include "../ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
16 #include "./ModelProcessorx.h"
17 
18 void CreateParameters(Parameters* parameters,IoModel* iomodel,char* rootpath,FILE* toolkitsoptionsfid,const int solution_type){
19 
20  int i,j,m,k;
21  int numoutputs,basalforcing_model,timestepping_type;
22  char** requestedoutputs = NULL;
23  char** outputonnodes = NULL;
24  char* fieldname = NULL;
25  IssmDouble time;
26 
27  /*parameters for mass flux:*/
28  int mass_flux_num_profiles = 0;
29  bool qmu_mass_flux_present = false;
30  bool autodiff_mass_flux_present = false;
31  bool mass_flux_present = false;
32  bool interp;
33  IssmDouble **array = NULL;
34  int *mdims_array = NULL;
35  int *ndims_array = NULL;
36  IssmDouble *temp_matrix = NULL;
37  int temp_m,temp_n;
38  IssmDouble *matrix = NULL;
39  int count;
40 
41  IssmDouble *temp = NULL;
42  IssmDouble *transparam = NULL;
43  IssmDouble yts;
44  int N,M;
45 
46  /*Copy some constants from iomodel */
47  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_type",DomainTypeEnum));
48  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_dimension",DomainDimensionEnum));
49  parameters->AddObject(iomodel->CopyConstantObject("md.settings.output_frequency",SettingsOutputFrequencyEnum));
50  parameters->AddObject(iomodel->CopyConstantObject("md.settings.sb_coupling_frequency",SettingsSbCouplingFrequencyEnum));
51  parameters->AddObject(iomodel->CopyConstantObject("md.settings.recording_frequency",SettingsRecordingFrequencyEnum));
52  parameters->AddObject(iomodel->CopyConstantObject("md.constants.yts",ConstantsYtsEnum));
53  parameters->AddObject(iomodel->CopyConstantObject("md.debug.profiling",DebugProfilingEnum));
54  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.average_vertex_connectivity",MeshAverageVertexConnectivityEnum));
55  parameters->AddObject(iomodel->CopyConstantObject("md.settings.waitonlock",SettingsWaitonlockEnum));
56  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofvertices",MeshNumberofverticesEnum));
57  parameters->AddObject(iomodel->CopyConstantObject("md.settings.io_gather",SettingsIoGatherEnum));
58  parameters->AddObject(iomodel->CopyConstantObject("md.settings.solver_residue_threshold",SettingsSolverResidueThresholdEnum));
59  parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.isautodiff",AutodiffIsautodiffEnum));
60  parameters->AddObject(iomodel->CopyConstantObject("md.qmu.isdakota",QmuIsdakotaEnum));
61  parameters->AddObject(iomodel->CopyConstantObject("md.inversion.iscontrol",InversionIscontrolEnum));
62  parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum));
63  parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum));
64  parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum));
65  parameters->AddObject(new IntParam(SealevelriseRunCountEnum,1));
66 
67  {/*This is specific to ice...*/
68  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.elementtype",MeshElementtypeEnum));
69  parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.reltol",SteadystateReltolEnum));
70  parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.maxiter",SteadystateMaxiterEnum));
71  parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.migration",GroundinglineMigrationEnum));
72  parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.friction_interpolation",GroundinglineFrictionInterpolationEnum));
73  parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.melt_interpolation",GroundinglineMeltInterpolationEnum));
74  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isstressbalance",TransientIsstressbalanceEnum));
75  parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismasstransport",TransientIsmasstransportEnum));
76  parameters->AddObject(iomodel->CopyConstantObject("md.transient.issmb",TransientIssmbEnum));
77  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isthermal",TransientIsthermalEnum));
78  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgroundingline",TransientIsgroundinglineEnum));
79  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgia",TransientIsgiaEnum));
80  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isesa",TransientIsesaEnum));
81  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isdamageevolution",TransientIsdamageevolutionEnum));
82  parameters->AddObject(iomodel->CopyConstantObject("md.transient.ishydrology",TransientIshydrologyEnum));
83  parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismovingfront",TransientIsmovingfrontEnum));
84  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isslr",TransientIsslrEnum));
85  parameters->AddObject(iomodel->CopyConstantObject("md.transient.iscoupler",TransientIscouplerEnum));
86  parameters->AddObject(iomodel->CopyConstantObject("md.transient.isoceancoupling",TransientIsoceancouplingEnum));
87  parameters->AddObject(iomodel->CopyConstantObject("md.transient.amr_frequency",TransientAmrFrequencyEnum));
88 
89  /*For stress balance only*/
90  parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
91  parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.rift_penalty_threshold",StressbalanceRiftPenaltyThresholdEnum));
92  parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.maxiter",StressbalanceMaxiterEnum));
93  parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.restol",StressbalanceRestolEnum));
94  parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.reltol",StressbalanceReltolEnum));
95  parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.abstol",StressbalanceAbstolEnum));
96  if(iomodel->domaintype==Domain3DEnum)
97  parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberoflayers",MeshNumberoflayersEnum));
98  }
99 
100  /*amr properties*/
101  int amrtype,amr_frequency;
102  iomodel->FindConstant(&amr_frequency,"md.transient.amr_frequency");
103  if(solution_type==TransientSolutionEnum && amr_frequency){
104  /*Load common amr parameters*/
105  parameters->AddObject(iomodel->CopyConstantObject("md.amr.type",AmrTypeEnum));
106  parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_distance",AmrGroundingLineDistanceEnum));
107  parameters->AddObject(iomodel->CopyConstantObject("md.amr.icefront_distance",AmrIceFrontDistanceEnum));
108  parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_threshold",AmrThicknessErrorThresholdEnum));
109  parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_groupthreshold",AmrThicknessErrorGroupThresholdEnum));
110  parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_maximum",AmrThicknessErrorMaximumEnum));
111  parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_threshold",AmrDeviatoricErrorThresholdEnum));
112  parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_groupthreshold",AmrDeviatoricErrorGroupThresholdEnum));
113  parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_maximum",AmrDeviatoricErrorMaximumEnum));
114  parameters->AddObject(iomodel->CopyConstantObject("md.amr.restart",AmrRestartEnum));
115  /*Load specific amr parameters*/
116  iomodel->FindConstant(&amrtype,"md.amr.type");
117  switch(amrtype){
118  #ifdef _HAVE_NEOPZ_
119  case AmrNeopzEnum:
120  parameters->AddObject(iomodel->CopyConstantObject("md.amr.level_max",AmrLevelMaxEnum));
121  parameters->AddObject(iomodel->CopyConstantObject("md.amr.gradation",AmrGradationEnum));
122  parameters->AddObject(iomodel->CopyConstantObject("md.amr.lag",AmrLagEnum));
123  break;
124  #endif
125 
126  #ifdef _HAVE_BAMG_
127  case AmrBamgEnum:
128  parameters->AddObject(iomodel->CopyConstantObject("md.amr.hmin",AmrHminEnum));
129  parameters->AddObject(iomodel->CopyConstantObject("md.amr.hmax",AmrHmaxEnum));
130  parameters->AddObject(iomodel->CopyConstantObject("md.amr.err",AmrErrEnum));
131  parameters->AddObject(iomodel->CopyConstantObject("md.amr.keepmetric",AmrKeepMetricEnum));
132  parameters->AddObject(iomodel->CopyConstantObject("md.amr.gradation",AmrGradationEnum));
133  parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_resolution",AmrGroundingLineResolutionEnum));
134  parameters->AddObject(iomodel->CopyConstantObject("md.amr.icefront_resolution",AmrIceFrontResolutionEnum));
135  parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_resolution",AmrThicknessErrorResolutionEnum));
136  parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_resolution",AmrDeviatoricErrorResolutionEnum));
137  /*Convert fieldname to enum and put it in params*/
138  iomodel->FindConstant(&fieldname,"md.amr.fieldname");
139  parameters->AddObject(new IntParam(AmrFieldEnum,StringToEnumx(fieldname)));
140  xDelete<char>(fieldname);
141  break;
142  #endif
143 
144  default:
145  _error_("Adaptive mesh refinement "<<EnumToStringx(amrtype)<<" not implemented yet");
146  }
147  }
148 
149  /*Basal forcing parameters*/
150  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.model",BasalforcingsEnum));
151  iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
152  switch(basalforcing_model){
154  /*Nothing to add to parameters*/
155  break;
157  iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
158  iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate");
159  if(N==1){
160  _assert_(M==1);
161  parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterMeltingRateEnum,transparam[0]));
162  }
163  else{
164  _assert_(N==2);
165  parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
166  }
167  xDelete<IssmDouble>(transparam);
168  iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_melting_rate");
169  if(N==1){
170  _assert_(M==1);
171  parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterMeltingRateEnum,transparam[0]));
172  }
173  else{
174  _assert_(N==2);
175  parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
176  }
177  xDelete<IssmDouble>(transparam);
178  iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_elevation");
179  if(N==1){
180  _assert_(M==1);
181  parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterElevationEnum,transparam[0]));
182  }
183  else{
184  _assert_(N==2);
185  parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
186  }
187  xDelete<IssmDouble>(transparam);
188  iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_elevation");
189  if(N==1){
190  _assert_(M==1);
191  parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterElevationEnum,transparam[0]));
192  }
193  else{
194  _assert_(N==2);
195  parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
196  }
197  xDelete<IssmDouble>(transparam);
198  break;
200  /*Nothing to add to parameters:*/
201  break;
203  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));
204  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum));
205  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum));
206  break;
208  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.mantleconductivity",BasalforcingsMantleconductivityEnum));
209  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.nusselt",BasalforcingsNusseltEnum));
210  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.dtbg",BasalforcingsDtbgEnum));
211  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumeradius",BasalforcingsPlumeradiusEnum));
212  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.topplumedepth",BasalforcingsTopplumedepthEnum));
213  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.bottomplumedepth",BasalforcingsBottomplumedepthEnum));
214  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumex",BasalforcingsPlumexEnum));
215  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumey",BasalforcingsPlumeyEnum));
216  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.crustthickness",BasalforcingsCrustthicknessEnum));
217  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustthickness",BasalforcingsUppercrustthicknessEnum));
218  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustheat",BasalforcingsUppercrustheatEnum));
219  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.lowercrustheat",BasalforcingsLowercrustheatEnum));
220  break;
222  iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
223  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsPicoNumBasinsEnum));
224  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.maxboxcount",BasalforcingsPicoMaxboxcountEnum));
225  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_T",BasalforcingsPicoGammaTEnum));
226  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.isplume",BasalforcingsPicoIsplumeEnum));
227  iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_temperature");
228  _assert_(M>=1 && N>=1);
229  parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,N,M));
230  xDelete<IssmDouble>(transparam);
231  iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_salinity");
232  _assert_(M>=1 && N>=1);
233  parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,N,M));
234  xDelete<IssmDouble>(transparam);
235  break;
237  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsIsmip6NumBasinsEnum));
238  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_0",BasalforcingsIsmip6Gamma0Enum));
239  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.islocal",BasalforcingsIsmip6IsLocalEnum));
240  iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.delta_t");
241  parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6DeltaTEnum,transparam,N));
242  xDelete<IssmDouble>(transparam);
243  iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.tf_depths");
244  parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6TfDepthsEnum,transparam,N));
245  xDelete<IssmDouble>(transparam);
246  break;
248  parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));
249  break;
250  default:
251  _error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
252  }
253 
254  /*some parameters that did not come with the iomodel: */
255  parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type));
256 
257  /*Time stepping*/
258  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.type",TimesteppingTypeEnum));
259  iomodel->FindConstant(&timestepping_type,"md.timestepping.type");
260  switch(timestepping_type){
262  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.start_time",TimesteppingStartTimeEnum));
263  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
264  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
265  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
266  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
267  break;
269  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.start_time",TimesteppingStartTimeEnum));
270  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
271  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_min",TimesteppingTimeStepMinEnum));
272  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_max",TimesteppingTimeStepMaxEnum));
273  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
274  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
275  parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
276  break;
277  default:
278  _error_("Time stepping \""<<EnumToStringx(timestepping_type)<<"\" not supported yet");
279  }
280  iomodel->FindConstant(&time,"md.timestepping.start_time");
281  parameters->AddObject(new DoubleParam(TimeEnum,time));
282  parameters->AddObject(new IntParam(StepEnum,0));
283 
284  /*By default, save all results*/
285  parameters->AddObject(new BoolParam(SaveResultsEnum,true));
286 
287  /*Should we output results on nodes?*/
288  iomodel->FindConstant(&outputonnodes,&numoutputs,"md.settings.results_on_nodes");
289  parameters->AddObject(new IntParam(SettingsNumResultsOnNodesEnum,numoutputs));
290  if(numoutputs)parameters->AddObject(new StringArrayParam(SettingsResultsOnNodesEnum,outputonnodes,numoutputs));
291  iomodel->DeleteData(&outputonnodes,numoutputs,"md.settings.results_on_nodes");
292 
293  /*Requested outputs */
294  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.transient.requested_outputs");
295  parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
296  if(numoutputs)parameters->AddObject(new StringArrayParam(TransientRequestedOutputsEnum,requestedoutputs,numoutputs));
297  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.transient.requested_outputs");
298 
299  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.steadystate.requested_outputs");
300  parameters->AddObject(new IntParam(SteadystateNumRequestedOutputsEnum,numoutputs));
301  if(numoutputs)parameters->AddObject(new StringArrayParam(SteadystateRequestedOutputsEnum,requestedoutputs,numoutputs));
302  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.steadystate.requested_outputs");
303 
304  int materialstype;
305  iomodel->FindConstant(&materialstype,"md.materials.type");
306 
307  switch(materialstype){
308  case MaticeEnum:
309  case MatdamageiceEnum:
310  case MatenhancediceEnum:
311  case MatestarEnum:
312  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
313  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
314  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
315  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mu_water",MaterialsMuWaterEnum));
316  parameters->AddObject(iomodel->CopyConstantObject("md.materials.heatcapacity",MaterialsHeatcapacityEnum));
317  parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermalconductivity",MaterialsThermalconductivityEnum));
318  parameters->AddObject(iomodel->CopyConstantObject("md.materials.temperateiceconductivity",MaterialsTemperateiceconductivityEnum));
319  parameters->AddObject(iomodel->CopyConstantObject("md.materials.effectiveconductivity_averaging",MaterialsEffectiveconductivityAveragingEnum));
320  parameters->AddObject(iomodel->CopyConstantObject("md.materials.latentheat",MaterialsLatentheatEnum));
321  parameters->AddObject(iomodel->CopyConstantObject("md.materials.beta",MaterialsBetaEnum));
322  parameters->AddObject(iomodel->CopyConstantObject("md.materials.meltingpoint",MaterialsMeltingpointEnum));
323  parameters->AddObject(iomodel->CopyConstantObject("md.constants.referencetemperature",ConstantsReferencetemperatureEnum));
324  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mixed_layer_capacity",MaterialsMixedLayerCapacityEnum));
325  parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermal_exchange_velocity",MaterialsThermalExchangeVelocityEnum));
326  parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum));
327  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
328  parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
329 
330  break;
331  case MaterialsEnum:{
332  int nnat,dummy;
333  int* nature=NULL;
334  iomodel->FetchData(&nature,&nnat,&dummy,"md.materials.nature");
335  for(int i=0;i<nnat;i++){
336  switch(IoCodeToEnumNature(nature[i])){
337  case MatlithoEnum:
338  break;
339  case MaticeEnum:
340  case MatdamageiceEnum:
341  case MatenhancediceEnum:
342  case MatestarEnum:
343  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
344  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
345  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
346  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mu_water",MaterialsMuWaterEnum));
347  parameters->AddObject(iomodel->CopyConstantObject("md.materials.heatcapacity",MaterialsHeatcapacityEnum));
348  parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermalconductivity",MaterialsThermalconductivityEnum));
349  parameters->AddObject(iomodel->CopyConstantObject("md.materials.temperateiceconductivity",MaterialsTemperateiceconductivityEnum));
350  parameters->AddObject(iomodel->CopyConstantObject("md.materials.effectiveconductivity_averaging",MaterialsEffectiveconductivityAveragingEnum));
351  parameters->AddObject(iomodel->CopyConstantObject("md.materials.latentheat",MaterialsLatentheatEnum));
352  parameters->AddObject(iomodel->CopyConstantObject("md.materials.beta",MaterialsBetaEnum));
353  parameters->AddObject(iomodel->CopyConstantObject("md.materials.meltingpoint",MaterialsMeltingpointEnum));
354  parameters->AddObject(iomodel->CopyConstantObject("md.constants.referencetemperature",ConstantsReferencetemperatureEnum));
355  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mixed_layer_capacity",MaterialsMixedLayerCapacityEnum));
356  parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermal_exchange_velocity",MaterialsThermalExchangeVelocityEnum));
357  parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum));
358  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
359 
360  /*slr:*/
361  parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
362  break;
363  case MathydroEnum:
364  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
365  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
366  parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
367  parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
368  break;
369  }
370  }
371  /*Free rssources:*/
372  xDelete<int>(nature);
373  break;
374 
375  }
376  default:
377  _error_("Material "<< EnumToStringx(materialstype) <<" not supported yet");
378  }
379 
380  int smb_model;
381  iomodel->FindConstant(&smb_model,"md.smb.model");
382  switch(smb_model){
383  case SMBforcingEnum:
384  case SMBgradientsEnum:
385  case SMBgradientselaEnum:
386  case SMBhenningEnum:
387  case SMBcomponentsEnum:
390  /*Nothing to add*/
391  break;
392  case SMBgembEnum:
393  parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIce",SmbAIceEnum));
394  parameters->AddObject(iomodel->CopyConstantObject("md.smb.aSnow",SmbASnowEnum));
395  break;
396  case SMBpddEnum:
397  parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
398  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
399  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
400  break;
401  case SMBpddSicopolisEnum:
402  parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
403  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
404  break;
405  case SMBd18opddEnum:
406  parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
407  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
408  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
409  parameters->AddObject(iomodel->CopyConstantObject("md.smb.dpermil",SmbDpermilEnum));
410  break;
411  case SMBsemicEnum:
412  parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
413  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
414  parameters->AddObject(iomodel->CopyConstantObject("md.smb.rdl",SmbRdlEnum));
415  break;
416  default:
417  _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
418  }
419 
420  int hydrology_model;
421  iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
422  if(hydrology_model==HydrologydcEnum){
423  /*FIXME: this cshould go to Analysis!!!*/
424  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sediment_compressibility",HydrologydcSedimentCompressibilityEnum));
425  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sediment_porosity",HydrologydcSedimentPorosityEnum));
426  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sediment_thickness",HydrologydcSedimentThicknessEnum));
427  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.water_compressibility",HydrologydcWaterCompressibilityEnum));
428  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.isefficientlayer",HydrologydcIsefficientlayerEnum));
429 
430  bool isefficientlayer;
431  iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
432  if(isefficientlayer){
433  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_compressibility",HydrologydcEplCompressibilityEnum));
434  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_porosity",HydrologydcEplPorosityEnum));
435  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_initial_thickness",HydrologydcEplInitialThicknessEnum));
436  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_colapse_thickness",HydrologydcEplColapseThicknessEnum));
437  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_max_thickness",HydrologydcEplMaxThicknessEnum));
438  parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_conductivity",HydrologydcEplConductivityEnum));
439  }
440  }
441  else if(hydrology_model==HydrologyshreveEnum){
442  /*Nothing to add*/
443  }
444  else if(hydrology_model==HydrologyshaktiEnum){
445  /*Nothing to add*/
446  }
447  else if(hydrology_model==HydrologypismEnum){
448  /*Nothing to add*/
449  }
450  else if(hydrology_model==HydrologyGlaDSEnum){
451  /*Nothing to add*/
452  }
453  else{
454  _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
455  }
456 
457  if(materialstype==MatdamageiceEnum){
458  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.damage.requested_outputs");
459  parameters->AddObject(new IntParam(DamageEvolutionNumRequestedOutputsEnum,numoutputs));
460  if(numoutputs)parameters->AddObject(new StringArrayParam(DamageEvolutionRequestedOutputsEnum,requestedoutputs,numoutputs));
461  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.damage.requested_outputs");
462  }
463 
464  /*Deal with mass flux segments: {{{*/
465  iomodel->FetchData(&qmu_mass_flux_present,"md.qmu.mass_flux_segments_present");
466  iomodel->FetchData(&autodiff_mass_flux_present,"md.autodiff.mass_flux_segments_present");
467 
468  if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=true;
469  else mass_flux_present=false;
470  parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present));
471 
472  if(mass_flux_present){
473 
474  /*Fetch the mass flux segments necessary to compute the mass fluxes. Build a DoubleMatArrayParam object out of them: */
475  iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,"md.qmu.mass_flux_segments");
476  if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!");
477 
478  /*Go through segments, and extract those that belong to this cpu: */
479  for(i=0;i<mass_flux_num_profiles;i++){
480  temp_matrix=array[i];
481  temp_m=mdims_array[i];
482  temp_n=ndims_array[i];
483  _assert_(temp_n==5);
484 
485  m=0;
486  for(j=0;j<temp_m;j++){
487  if ( iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
488  }
489  if(m){
490  matrix=xNewZeroInit<IssmDouble>(5*m);
491  count=0;
492  for(j=0;j<temp_m;j++){
493  if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
494  for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
495  count++;
496  }
497  }
498  }
499  else{
500  matrix=NULL;
501  }
502 
503  /*Assign: */
504  array[i]=matrix;
505  mdims_array[i]=m;
506  ndims_array[i]=5;
507 
508  /*Free temporary matrix: */
509  xDelete<IssmDouble>(temp_matrix);
510  }
511 
512  /*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */
513  parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array));
514 
515  /*Free data: */
516  for(i=0;i<mass_flux_num_profiles;i++){
517  IssmDouble* matrix=array[i];
518  xDelete<IssmDouble>(matrix);
519  }
520  xDelete<int>(mdims_array);
521  xDelete<int>(ndims_array);
522  xDelete<IssmDouble*>(array);
523  }
524  /*}}}*/
525 
526  /*Before returning, create parameters in case we are running Qmu or control types runs: */
527  CreateParametersControl(parameters,iomodel,solution_type);
528 
529  #ifdef _HAVE_DAKOTA_
530  CreateParametersDakota(parameters,iomodel,rootpath);
531  #endif
532 
533  /*Now, deal with toolkits options, which need to be put into the parameters dataset: */
534  ParseToolkitsOptionsx(parameters,toolkitsoptionsfid);
535 
536  #ifdef _HAVE_AD_
537  if(VerboseMProcessor()) _printf0_(" starting autodiff parameters \n");
538  CreateParametersAutodiff(parameters,iomodel);
539  if(VerboseMProcessor()) _printf0_(" ending autodiff parameters \n");
540  #endif
541 }
AmrNeopzEnum
@ AmrNeopzEnum
Definition: EnumDefinitions.h:975
MaterialsThermalconductivityEnum
@ MaterialsThermalconductivityEnum
Definition: EnumDefinitions.h:268
SmbAIceEnum
@ SmbAIceEnum
Definition: EnumDefinitions.h:342
TimesteppingFinalTimeEnum
@ TimesteppingFinalTimeEnum
Definition: EnumDefinitions.h:430
SaveResultsEnum
@ SaveResultsEnum
Definition: EnumDefinitions.h:302
SMBgradientselaEnum
@ SMBgradientselaEnum
Definition: EnumDefinitions.h:1249
SMBd18opddEnum
@ SMBd18opddEnum
Definition: EnumDefinitions.h:1243
TransientNumRequestedOutputsEnum
@ TransientNumRequestedOutputsEnum
Definition: EnumDefinitions.h:456
AmrGroundingLineDistanceEnum
@ AmrGroundingLineDistanceEnum
Definition: EnumDefinitions.h:20
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
TransientIsmasstransportEnum
@ TransientIsmasstransportEnum
Definition: EnumDefinitions.h:449
IssmDouble
double IssmDouble
Definition: types.h:37
CreateParametersDakota
void CreateParametersDakota(Parameters *parameters, IoModel *iomodel, char *rootpath)
Definition: CreateParametersDakota.cpp:11
HydrologydcEplColapseThicknessEnum
@ HydrologydcEplColapseThicknessEnum
Definition: EnumDefinitions.h:177
GroundinglineMigrationEnum
@ GroundinglineMigrationEnum
Definition: EnumDefinitions.h:161
BasalforcingsIsmip6IsLocalEnum
@ BasalforcingsIsmip6IsLocalEnum
Definition: EnumDefinitions.h:69
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
TransientRequestedOutputsEnum
@ TransientRequestedOutputsEnum
Definition: EnumDefinitions.h:457
AmrThicknessErrorResolutionEnum
@ AmrThicknessErrorResolutionEnum
Definition: EnumDefinitions.h:32
SMBcomponentsEnum
@ SMBcomponentsEnum
Definition: EnumDefinitions.h:1242
BasalforcingsEnum
@ BasalforcingsEnum
Definition: EnumDefinitions.h:64
StepEnum
@ StepEnum
Definition: EnumDefinitions.h:403
BasalforcingsThresholdThicknessEnum
@ BasalforcingsThresholdThicknessEnum
Definition: EnumDefinitions.h:89
HydrologydcEnum
@ HydrologydcEnum
Definition: EnumDefinitions.h:1106
DebugProfilingEnum
@ DebugProfilingEnum
Definition: EnumDefinitions.h:122
MathydroEnum
@ MathydroEnum
Definition: EnumDefinitions.h:1171
HydrologydcEplInitialThicknessEnum
@ HydrologydcEplInitialThicknessEnum
Definition: EnumDefinitions.h:180
MaterialsEarthDensityEnum
@ MaterialsEarthDensityEnum
Definition: EnumDefinitions.h:251
MeshNumberoflayersEnum
@ MeshNumberoflayersEnum
Definition: EnumDefinitions.h:272
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
TransientSolutionEnum
@ TransientSolutionEnum
Definition: EnumDefinitions.h:1317
VerboseMProcessor
bool VerboseMProcessor(void)
Definition: Verbosity.cpp:22
TimeEnum
@ TimeEnum
Definition: EnumDefinitions.h:427
MaterialsRhoFreshwaterEnum
@ MaterialsRhoFreshwaterEnum
Definition: EnumDefinitions.h:263
MaterialsMeltingpointEnum
@ MaterialsMeltingpointEnum
Definition: EnumDefinitions.h:259
TimesteppingTimeStepEnum
@ TimesteppingTimeStepEnum
Definition: EnumDefinitions.h:433
BasalforcingsIsmip6TfDepthsEnum
@ BasalforcingsIsmip6TfDepthsEnum
Definition: EnumDefinitions.h:71
AdaptiveTimesteppingEnum
@ AdaptiveTimesteppingEnum
Definition: EnumDefinitions.h:969
AmrThicknessErrorThresholdEnum
@ AmrThicknessErrorThresholdEnum
Definition: EnumDefinitions.h:33
InversionIscontrolEnum
@ InversionIscontrolEnum
Definition: EnumDefinitions.h:218
MeshAverageVertexConnectivityEnum
@ MeshAverageVertexConnectivityEnum
Definition: EnumDefinitions.h:270
AmrLagEnum
@ AmrLagEnum
Definition: EnumDefinitions.h:27
BasalforcingsPicoGammaTEnum
@ BasalforcingsPicoGammaTEnum
Definition: EnumDefinitions.h:82
BasalforcingsCrustthicknessEnum
@ BasalforcingsCrustthicknessEnum
Definition: EnumDefinitions.h:60
HydrologydcIsefficientlayerEnum
@ HydrologydcIsefficientlayerEnum
Definition: EnumDefinitions.h:185
TransientIsslrEnum
@ TransientIsslrEnum
Definition: EnumDefinitions.h:452
CreateParameters
void CreateParameters(Parameters *parameters, IoModel *iomodel, char *rootpath, FILE *toolkitsoptionsfid, const int solution_type)
Definition: CreateParameters.cpp:18
MaterialsLatentheatEnum
@ MaterialsLatentheatEnum
Definition: EnumDefinitions.h:254
MaterialsRhoIceEnum
@ MaterialsRhoIceEnum
Definition: EnumDefinitions.h:264
BasalforcingsUppercrustheatEnum
@ BasalforcingsUppercrustheatEnum
Definition: EnumDefinitions.h:91
MismipFloatingMeltRateEnum
@ MismipFloatingMeltRateEnum
Definition: EnumDefinitions.h:1190
MeshNumberofverticesEnum
@ MeshNumberofverticesEnum
Definition: EnumDefinitions.h:273
SmbDpermilEnum
@ SmbDpermilEnum
Definition: EnumDefinitions.h:351
SMBhenningEnum
@ SMBhenningEnum
Definition: EnumDefinitions.h:1250
IoModel::my_elements
bool * my_elements
Definition: IoModel.h:66
AmrGroundingLineResolutionEnum
@ AmrGroundingLineResolutionEnum
Definition: EnumDefinitions.h:21
BasalforcingsPicoEnum
@ BasalforcingsPicoEnum
Definition: EnumDefinitions.h:990
HydrologydcSedimentPorosityEnum
@ HydrologydcSedimentPorosityEnum
Definition: EnumDefinitions.h:194
TransientArrayParam
Definition: TransientArrayParam.h:20
SettingsSbCouplingFrequencyEnum
@ SettingsSbCouplingFrequencyEnum
Definition: EnumDefinitions.h:339
AmrRestartEnum
@ AmrRestartEnum
Definition: EnumDefinitions.h:29
ConstantsYtsEnum
@ ConstantsYtsEnum
Definition: EnumDefinitions.h:104
SteadystateNumRequestedOutputsEnum
@ SteadystateNumRequestedOutputsEnum
Definition: EnumDefinitions.h:400
AmrLevelMaxEnum
@ AmrLevelMaxEnum
Definition: EnumDefinitions.h:28
AmrHmaxEnum
@ AmrHmaxEnum
Definition: EnumDefinitions.h:22
BasalforcingsUpperwaterElevationEnum
@ BasalforcingsUpperwaterElevationEnum
Definition: EnumDefinitions.h:94
StressbalanceRiftPenaltyThresholdEnum
@ StressbalanceRiftPenaltyThresholdEnum
Definition: EnumDefinitions.h:413
SettingsResultsOnNodesEnum
@ SettingsResultsOnNodesEnum
Definition: EnumDefinitions.h:338
TransientIsgroundinglineEnum
@ TransientIsgroundinglineEnum
Definition: EnumDefinitions.h:447
BasalforcingsIsmip6NumBasinsEnum
@ BasalforcingsIsmip6NumBasinsEnum
Definition: EnumDefinitions.h:70
BasalforcingsTopplumedepthEnum
@ BasalforcingsTopplumedepthEnum
Definition: EnumDefinitions.h:90
SealevelriseRunCountEnum
@ SealevelriseRunCountEnum
Definition: EnumDefinitions.h:331
AmrDeviatoricErrorThresholdEnum
@ AmrDeviatoricErrorThresholdEnum
Definition: EnumDefinitions.h:16
SteadystateRequestedOutputsEnum
@ SteadystateRequestedOutputsEnum
Definition: EnumDefinitions.h:402
DamageEvolutionNumRequestedOutputsEnum
@ DamageEvolutionNumRequestedOutputsEnum
Definition: EnumDefinitions.h:113
SettingsSolverResidueThresholdEnum
@ SettingsSolverResidueThresholdEnum
Definition: EnumDefinitions.h:340
ConstantsReferencetemperatureEnum
@ ConstantsReferencetemperatureEnum
Definition: EnumDefinitions.h:103
BasalforcingsDeepwaterMeltingRateEnum
@ BasalforcingsDeepwaterMeltingRateEnum
Definition: EnumDefinitions.h:62
SMBgradientsEnum
@ SMBgradientsEnum
Definition: EnumDefinitions.h:1247
BasalforcingsLowercrustheatEnum
@ BasalforcingsLowercrustheatEnum
Definition: EnumDefinitions.h:72
Parameters::AddObject
void AddObject(Param *newparam)
Definition: Parameters.cpp:67
CalvingLawEnum
@ CalvingLawEnum
Definition: EnumDefinitions.h:98
StressbalanceMaxiterEnum
@ StressbalanceMaxiterEnum
Definition: EnumDefinitions.h:407
AmrHminEnum
@ AmrHminEnum
Definition: EnumDefinitions.h:23
BasalforcingsPicoNumBasinsEnum
@ BasalforcingsPicoNumBasinsEnum
Definition: EnumDefinitions.h:85
SMBsemicEnum
@ SMBsemicEnum
Definition: EnumDefinitions.h:1254
HydrologydcSedimentCompressibilityEnum
@ HydrologydcSedimentCompressibilityEnum
Definition: EnumDefinitions.h:191
IoModel::DeleteData
void DeleteData(int num,...)
Definition: IoModel.cpp:500
DoubleParam
Definition: DoubleParam.h:20
BasalforcingsNusseltEnum
@ BasalforcingsNusseltEnum
Definition: EnumDefinitions.h:75
IoModel::CopyConstantObject
Param * CopyConstantObject(const char *constant_name, int param_enum)
Definition: IoModel.cpp:418
IoCodeToEnumNature
int IoCodeToEnumNature(int enum_in)
Definition: IoCodeConversions.cpp:270
ConstantsGEnum
@ ConstantsGEnum
Definition: EnumDefinitions.h:102
BasalforcingsPlumeyEnum
@ BasalforcingsPlumeyEnum
Definition: EnumDefinitions.h:88
TimesteppingTypeEnum
@ TimesteppingTypeEnum
Definition: EnumDefinitions.h:436
DomainTypeEnum
@ DomainTypeEnum
Definition: EnumDefinitions.h:124
MaterialsMuWaterEnum
@ MaterialsMuWaterEnum
Definition: EnumDefinitions.h:261
MatestarEnum
@ MatestarEnum
Definition: EnumDefinitions.h:1168
MaterialsEffectiveconductivityAveragingEnum
@ MaterialsEffectiveconductivityAveragingEnum
Definition: EnumDefinitions.h:252
TimesteppingCflCoefficientEnum
@ TimesteppingCflCoefficientEnum
Definition: EnumDefinitions.h:428
BasalforcingsIsmip6DeltaTEnum
@ BasalforcingsIsmip6DeltaTEnum
Definition: EnumDefinitions.h:67
FloatingMeltRateEnum
@ FloatingMeltRateEnum
Definition: EnumDefinitions.h:1069
MaterialsThermalExchangeVelocityEnum
@ MaterialsThermalExchangeVelocityEnum
Definition: EnumDefinitions.h:267
EnumToStringx
const char * EnumToStringx(int enum_in)
Definition: EnumToStringx.cpp:15
LinearFloatingMeltRateEnum
@ LinearFloatingMeltRateEnum
Definition: EnumDefinitions.h:1143
TransientIssmbEnum
@ TransientIssmbEnum
Definition: EnumDefinitions.h:453
MaterialsBetaEnum
@ MaterialsBetaEnum
Definition: EnumDefinitions.h:250
StressbalanceAbstolEnum
@ StressbalanceAbstolEnum
Definition: EnumDefinitions.h:404
BeckmannGoosseFloatingMeltRateEnum
@ BeckmannGoosseFloatingMeltRateEnum
Definition: EnumDefinitions.h:991
MantlePlumeGeothermalFluxEnum
@ MantlePlumeGeothermalFluxEnum
Definition: EnumDefinitions.h:1158
DomainDimensionEnum
@ DomainDimensionEnum
Definition: EnumDefinitions.h:123
SMBgradientscomponentsEnum
@ SMBgradientscomponentsEnum
Definition: EnumDefinitions.h:1248
AmrIceFrontDistanceEnum
@ AmrIceFrontDistanceEnum
Definition: EnumDefinitions.h:24
MatdamageiceEnum
@ MatdamageiceEnum
Definition: EnumDefinitions.h:1165
TransientIsgiaEnum
@ TransientIsgiaEnum
Definition: EnumDefinitions.h:446
StressbalanceReltolEnum
@ StressbalanceReltolEnum
Definition: EnumDefinitions.h:410
IoModel::FindConstant
void FindConstant(bool *pvalue, const char *constant_name)
Definition: IoModel.cpp:2362
TransientIsoceancouplingEnum
@ TransientIsoceancouplingEnum
Definition: EnumDefinitions.h:451
StringArrayParam
Definition: StringArrayParam.h:20
GroundinglineMeltInterpolationEnum
@ GroundinglineMeltInterpolationEnum
Definition: EnumDefinitions.h:160
AmrErrEnum
@ AmrErrEnum
Definition: EnumDefinitions.h:17
MaterialsHeatcapacityEnum
@ MaterialsHeatcapacityEnum
Definition: EnumDefinitions.h:253
MeshElementtypeEnum
@ MeshElementtypeEnum
Definition: EnumDefinitions.h:271
CreateParametersAutodiff
void CreateParametersAutodiff(Parameters *parameters, IoModel *iomodel)
Definition: CreateParametersAutodiff.cpp:10
SettingsNumResultsOnNodesEnum
@ SettingsNumResultsOnNodesEnum
Definition: EnumDefinitions.h:335
QmuIsdakotaEnum
@ QmuIsdakotaEnum
Definition: EnumDefinitions.h:288
IntParam
Definition: IntParam.h:20
AutodiffIsautodiffEnum
@ AutodiffIsautodiffEnum
Definition: EnumDefinitions.h:50
SpatialLinearFloatingMeltRateEnum
@ SpatialLinearFloatingMeltRateEnum
Definition: EnumDefinitions.h:1278
FixedTimesteppingEnum
@ FixedTimesteppingEnum
Definition: EnumDefinitions.h:1066
SolutionTypeEnum
@ SolutionTypeEnum
Definition: EnumDefinitions.h:398
HydrologydcEplMaxThicknessEnum
@ HydrologydcEplMaxThicknessEnum
Definition: EnumDefinitions.h:181
HydrologydcEplConductivityEnum
@ HydrologydcEplConductivityEnum
Definition: EnumDefinitions.h:179
TransientIshydrologyEnum
@ TransientIshydrologyEnum
Definition: EnumDefinitions.h:448
MaterialsRheologyLawEnum
@ MaterialsRheologyLawEnum
Definition: EnumDefinitions.h:262
IoModel::FetchData
void FetchData(bool *pboolean, const char *data_name)
Definition: IoModel.cpp:933
TransientAmrFrequencyEnum
@ TransientAmrFrequencyEnum
Definition: EnumDefinitions.h:442
AmrThicknessErrorMaximumEnum
@ AmrThicknessErrorMaximumEnum
Definition: EnumDefinitions.h:31
TransientIscouplerEnum
@ TransientIscouplerEnum
Definition: EnumDefinitions.h:443
BasalforcingsPlumexEnum
@ BasalforcingsPlumexEnum
Definition: EnumDefinitions.h:87
SettingsRecordingFrequencyEnum
@ SettingsRecordingFrequencyEnum
Definition: EnumDefinitions.h:337
BasalforcingsUpperwaterMeltingRateEnum
@ BasalforcingsUpperwaterMeltingRateEnum
Definition: EnumDefinitions.h:95
BasalforcingsPicoFarOceantemperatureEnum
@ BasalforcingsPicoFarOceantemperatureEnum
Definition: EnumDefinitions.h:81
TransientIsthermalEnum
@ TransientIsthermalEnum
Definition: EnumDefinitions.h:455
Domain3DEnum
@ Domain3DEnum
Definition: EnumDefinitions.h:536
MaterialsRhoSeawaterEnum
@ MaterialsRhoSeawaterEnum
Definition: EnumDefinitions.h:265
BasalforcingsIsmip6Enum
@ BasalforcingsIsmip6Enum
Definition: EnumDefinitions.h:989
SMBgembEnum
@ SMBgembEnum
Definition: EnumDefinitions.h:1246
AmrGradationEnum
@ AmrGradationEnum
Definition: EnumDefinitions.h:19
BasalforcingsIsmip6Gamma0Enum
@ BasalforcingsIsmip6Gamma0Enum
Definition: EnumDefinitions.h:68
TransientIsstressbalanceEnum
@ TransientIsstressbalanceEnum
Definition: EnumDefinitions.h:454
HydrologydcWaterCompressibilityEnum
@ HydrologydcWaterCompressibilityEnum
Definition: EnumDefinitions.h:198
AmrDeviatoricErrorMaximumEnum
@ AmrDeviatoricErrorMaximumEnum
Definition: EnumDefinitions.h:14
TimesteppingStartTimeEnum
@ TimesteppingStartTimeEnum
Definition: EnumDefinitions.h:432
StringToEnumx
int StringToEnumx(const char *string_in, bool notfounderror=true)
Definition: StringToEnumx.cpp:14
TimesteppingCouplingTimeEnum
@ TimesteppingCouplingTimeEnum
Definition: EnumDefinitions.h:429
AmrDeviatoricErrorResolutionEnum
@ AmrDeviatoricErrorResolutionEnum
Definition: EnumDefinitions.h:15
MaterialsEnum
@ MaterialsEnum
Definition: EnumDefinitions.h:1167
AmrIceFrontResolutionEnum
@ AmrIceFrontResolutionEnum
Definition: EnumDefinitions.h:25
TimesteppingInterpForcingsEnum
@ TimesteppingInterpForcingsEnum
Definition: EnumDefinitions.h:431
MatlithoEnum
@ MatlithoEnum
Definition: EnumDefinitions.h:1170
FrontalForcingsParamEnum
@ FrontalForcingsParamEnum
Definition: EnumDefinitions.h:154
HydrologyshaktiEnum
@ HydrologyshaktiEnum
Definition: EnumDefinitions.h:1108
BasalforcingsPicoMaxboxcountEnum
@ BasalforcingsPicoMaxboxcountEnum
Definition: EnumDefinitions.h:84
TransientIsesaEnum
@ TransientIsesaEnum
Definition: EnumDefinitions.h:445
TimesteppingTimeStepMinEnum
@ TimesteppingTimeStepMinEnum
Definition: EnumDefinitions.h:435
BasalforcingsDeepwaterElevationEnum
@ BasalforcingsDeepwaterElevationEnum
Definition: EnumDefinitions.h:61
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
AmrTypeEnum
@ AmrTypeEnum
Definition: EnumDefinitions.h:34
FlowequationIsFSEnum
@ FlowequationIsFSEnum
Definition: EnumDefinitions.h:138
StressbalanceRestolEnum
@ StressbalanceRestolEnum
Definition: EnumDefinitions.h:412
HydrologypismEnum
@ HydrologypismEnum
Definition: EnumDefinitions.h:1107
HydrologydcSedimentThicknessEnum
@ HydrologydcSedimentThicknessEnum
Definition: EnumDefinitions.h:195
BasalforcingsDtbgEnum
@ BasalforcingsDtbgEnum
Definition: EnumDefinitions.h:63
TransientIsmovingfrontEnum
@ TransientIsmovingfrontEnum
Definition: EnumDefinitions.h:450
DoubleVecParam
Definition: DoubleVecParam.h:20
SettingsOutputFrequencyEnum
@ SettingsOutputFrequencyEnum
Definition: EnumDefinitions.h:336
AmrBamgEnum
@ AmrBamgEnum
Definition: EnumDefinitions.h:974
DamageEvolutionRequestedOutputsEnum
@ DamageEvolutionRequestedOutputsEnum
Definition: EnumDefinitions.h:114
BasalforcingsPicoFarOceansalinityEnum
@ BasalforcingsPicoFarOceansalinityEnum
Definition: EnumDefinitions.h:80
InversionTypeEnum
@ InversionTypeEnum
Definition: EnumDefinitions.h:226
AmrKeepMetricEnum
@ AmrKeepMetricEnum
Definition: EnumDefinitions.h:26
SteadystateMaxiterEnum
@ SteadystateMaxiterEnum
Definition: EnumDefinitions.h:399
BasalforcingsUppercrustthicknessEnum
@ BasalforcingsUppercrustthicknessEnum
Definition: EnumDefinitions.h:92
HydrologyGlaDSEnum
@ HydrologyGlaDSEnum
Definition: EnumDefinitions.h:1101
MatenhancediceEnum
@ MatenhancediceEnum
Definition: EnumDefinitions.h:1166
AmrThicknessErrorGroupThresholdEnum
@ AmrThicknessErrorGroupThresholdEnum
Definition: EnumDefinitions.h:30
CreateParametersControl
void CreateParametersControl(Parameters *parameters, IoModel *iomodel, int solution_type)
Definition: CreateParametersControl.cpp:10
GroundinglineFrictionInterpolationEnum
@ GroundinglineFrictionInterpolationEnum
Definition: EnumDefinitions.h:159
MaticeEnum
@ MaticeEnum
Definition: EnumDefinitions.h:1169
SMBpddSicopolisEnum
@ SMBpddSicopolisEnum
Definition: EnumDefinitions.h:1253
IoModel
Definition: IoModel.h:48
ParseToolkitsOptionsx
void ParseToolkitsOptionsx(Parameters *parameters, FILE *fid)
Definition: ParseToolkitsOptionsx.cpp:19
SettingsWaitonlockEnum
@ SettingsWaitonlockEnum
Definition: EnumDefinitions.h:341
ModelProcessorx.h
HydrologydcEplCompressibilityEnum
@ HydrologydcEplCompressibilityEnum
Definition: EnumDefinitions.h:178
BoolParam
Definition: BoolParam.h:20
MaterialsTemperateiceconductivityEnum
@ MaterialsTemperateiceconductivityEnum
Definition: EnumDefinitions.h:266
HydrologyshreveEnum
@ HydrologyshreveEnum
Definition: EnumDefinitions.h:1109
TimesteppingTimeStepMaxEnum
@ TimesteppingTimeStepMaxEnum
Definition: EnumDefinitions.h:434
BasalforcingsUpperdepthMeltEnum
@ BasalforcingsUpperdepthMeltEnum
Definition: EnumDefinitions.h:93
MassFluxSegmentsPresentEnum
@ MassFluxSegmentsPresentEnum
Definition: EnumDefinitions.h:242
SmbASnowEnum
@ SmbASnowEnum
Definition: EnumDefinitions.h:344
SmbRlapslgmEnum
@ SmbRlapslgmEnum
Definition: EnumDefinitions.h:384
MassFluxSegmentsEnum
@ MassFluxSegmentsEnum
Definition: EnumDefinitions.h:241
SteadystateReltolEnum
@ SteadystateReltolEnum
Definition: EnumDefinitions.h:401
IoModel::domaintype
int domaintype
Definition: IoModel.h:78
SmbRlapsEnum
@ SmbRlapsEnum
Definition: EnumDefinitions.h:383
TransientParam
Definition: TransientParam.h:20
SMBmeltcomponentsEnum
@ SMBmeltcomponentsEnum
Definition: EnumDefinitions.h:1251
SmbDesfacEnum
@ SmbDesfacEnum
Definition: EnumDefinitions.h:350
HydrologydcEplPorosityEnum
@ HydrologydcEplPorosityEnum
Definition: EnumDefinitions.h:182
SmbRdlEnum
@ SmbRdlEnum
Definition: EnumDefinitions.h:381
AmrDeviatoricErrorGroupThresholdEnum
@ AmrDeviatoricErrorGroupThresholdEnum
Definition: EnumDefinitions.h:13
DoubleMatArrayParam
Definition: DoubleMatArrayParam.h:20
BasalforcingsMeltrateFactorEnum
@ BasalforcingsMeltrateFactorEnum
Definition: EnumDefinitions.h:74
SettingsIoGatherEnum
@ SettingsIoGatherEnum
Definition: EnumDefinitions.h:334
AmrFieldEnum
@ AmrFieldEnum
Definition: EnumDefinitions.h:18
SMBforcingEnum
@ SMBforcingEnum
Definition: EnumDefinitions.h:1244
SMBpddEnum
@ SMBpddEnum
Definition: EnumDefinitions.h:1252
MaterialsMixedLayerCapacityEnum
@ MaterialsMixedLayerCapacityEnum
Definition: EnumDefinitions.h:260
BasalforcingsPicoIsplumeEnum
@ BasalforcingsPicoIsplumeEnum
Definition: EnumDefinitions.h:83
BasalforcingsBottomplumedepthEnum
@ BasalforcingsBottomplumedepthEnum
Definition: EnumDefinitions.h:59
BasalforcingsPlumeradiusEnum
@ BasalforcingsPlumeradiusEnum
Definition: EnumDefinitions.h:86
TransientIsdamageevolutionEnum
@ TransientIsdamageevolutionEnum
Definition: EnumDefinitions.h:444
BasalforcingsMantleconductivityEnum
@ BasalforcingsMantleconductivityEnum
Definition: EnumDefinitions.h:73