Ice Sheet System Model  4.18
Code documentation
Public Member Functions
SmbAnalysis Class Reference

#include <SmbAnalysis.h>

Inheritance diagram for SmbAnalysis:
Analysis

Public Member Functions

void CreateConstraints (Constraints *constraints, IoModel *iomodel)
 
void CreateLoads (Loads *loads, IoModel *iomodel)
 
void CreateNodes (Nodes *nodes, IoModel *iomodel, bool isamr=false)
 
int DofsPerNode (int **doflist, int domaintype, int approximation)
 
void UpdateElements (Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
 
void UpdateParameters (Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
 
void Core (FemModel *femmodel)
 
ElementVectorCreateDVector (Element *element)
 
ElementMatrixCreateJacobianMatrix (Element *element)
 
ElementMatrixCreateKMatrix (Element *element)
 
ElementVectorCreatePVector (Element *element)
 
void GetSolutionFromInputs (Vector< IssmDouble > *solution, Element *element)
 
void GradientJ (Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
 
void InputUpdateFromSolution (IssmDouble *solution, Element *element)
 
void UpdateConstraints (FemModel *femmodel)
 
- Public Member Functions inherited from Analysis
virtual ~Analysis ()
 

Detailed Description

Definition at line 11 of file SmbAnalysis.h.

Member Function Documentation

◆ CreateConstraints()

void SmbAnalysis::CreateConstraints ( Constraints constraints,
IoModel iomodel 
)
virtual

Implements Analysis.

Definition at line 11 of file SmbAnalysis.cpp.

11  {/*{{{*/
12  /*No constraints*/
13 }/*}}}*/

◆ CreateLoads()

void SmbAnalysis::CreateLoads ( Loads loads,
IoModel iomodel 
)
virtual

Implements Analysis.

Definition at line 14 of file SmbAnalysis.cpp.

14  {/*{{{*/
15  /*No loads*/
16 }/*}}}*/

◆ CreateNodes()

void SmbAnalysis::CreateNodes ( Nodes nodes,
IoModel iomodel,
bool  isamr = false 
)
virtual

Implements Analysis.

Definition at line 17 of file SmbAnalysis.cpp.

17  {/*{{{*/
18  ::CreateNodes(nodes,iomodel,SmbAnalysisEnum,P1Enum);
19 }/*}}}*/

◆ DofsPerNode()

int SmbAnalysis::DofsPerNode ( int **  doflist,
int  domaintype,
int  approximation 
)
virtual

Implements Analysis.

Definition at line 20 of file SmbAnalysis.cpp.

20  {/*{{{*/
21  return 1;
22 }/*}}}*/

◆ UpdateElements()

void SmbAnalysis::UpdateElements ( Elements elements,
Inputs2 inputs2,
IoModel iomodel,
int  analysis_counter,
int  analysis_type 
)
virtual

Implements Analysis.

Definition at line 23 of file SmbAnalysis.cpp.

23  {/*{{{*/
24 
25  int smb_model;
26  bool isdelta18o,ismungsm,isd18opd,issetpddfac,isprecipscaled,istemperaturescaled,isfirnwarming;
27 
28  /*Update elements: */
29  int counter=0;
30  for(int i=0;i<iomodel->numberofelements;i++){
31  if(iomodel->my_elements[i]){
32  Element* element=(Element*)elements->GetObjectByOffset(counter);
33  element->Update(inputs2,i,iomodel,analysis_counter,analysis_type,P1Enum);
34  counter++;
35  }
36  }
37 
38  /*Figure out smb model: */
39  iomodel->FindConstant(&smb_model,"md.smb.model");
40  switch(smb_model){
41  case SMBforcingEnum:
42  iomodel->FetchDataToInput(inputs2,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
43  break;
44  case SMBgembEnum:
45  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Ta",SmbTaEnum);
46  iomodel->FetchDataToInput(inputs2,elements,"md.smb.V",SmbVEnum);
47  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dswrf",SmbDswrfEnum);
48  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dlwrf",SmbDlwrfEnum);
49  iomodel->FetchDataToInput(inputs2,elements,"md.smb.P",SmbPEnum);
50  iomodel->FetchDataToInput(inputs2,elements,"md.smb.eAir",SmbEAirEnum);
51  iomodel->FetchDataToInput(inputs2,elements,"md.smb.pAir",SmbPAirEnum);
52  iomodel->FetchDataToInput(inputs2,elements,"md.smb.zTop",SmbZTopEnum);
53  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dzTop",SmbDzTopEnum);
54  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dzMin",SmbDzMinEnum);
55  iomodel->FetchDataToInput(inputs2,elements,"md.smb.zY",SmbZYEnum);
56  iomodel->FetchDataToInput(inputs2,elements,"md.smb.zMax",SmbZMaxEnum);
57  iomodel->FetchDataToInput(inputs2,elements,"md.smb.zMin",SmbZMinEnum);
58  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tmean",SmbTmeanEnum);
59  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Vmean",SmbVmeanEnum);
60  iomodel->FetchDataToInput(inputs2,elements,"md.smb.C",SmbCEnum);
61  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tz",SmbTzEnum);
62  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Vz",SmbVzEnum);
63  InputUpdateFromConstantx(inputs2,elements,false,SmbIsInitializedEnum);
64  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Dzini",SmbDziniEnum);
65  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Dini",SmbDiniEnum);
66  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Reini",SmbReiniEnum);
67  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Gdnini",SmbGdniniEnum);
68  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Gspini",SmbGspiniEnum);
69  iomodel->FetchDataToInput(inputs2,elements,"md.smb.ECini",SmbECiniEnum);
70  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Wini",SmbWiniEnum);
71  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Aini",SmbAiniEnum);
72  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tini",SmbTiniEnum);
73  iomodel->FetchDataToInput(inputs2,elements,"md.smb.Sizeini",SmbSizeiniEnum);
74  iomodel->FetchDataToInput(inputs2,elements,"md.smb.aValue",SmbAValueEnum);
75  iomodel->FetchDataToInput(inputs2,elements,"md.smb.teValue",SmbTeValueEnum);
76  break;
77  case SMBpddEnum:
78  iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
79  iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
80  iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
81  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum);
82  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum);
83  if(isdelta18o || ismungsm){
84  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.temperatures_lgm",SmbTemperaturesLgmEnum);
85  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
86  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
87  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum);
88  }else{
89  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitation",SmbPrecipitationEnum);
90  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
91  }
92  break;
94  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum);
95  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum);
96  iomodel->FindConstant(&isfirnwarming,"md.smb.isfirnwarming");
97  iomodel->FetchDataToInput(inputs2,elements,"md.smb.smb_corr",SmbSmbCorrEnum);
98  iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum);
99  iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum);
100  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
101  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitation",SmbPrecipitationEnum);
102  break;
103  case SMBd18opddEnum:
104  iomodel->FindConstant(&istemperaturescaled,"md.smb.istemperaturescaled");
105  iomodel->FindConstant(&isprecipscaled,"md.smb.isprecipscaled");
106  iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
107  iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
108  iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
109  iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
110  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum);
111  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum);
112  if(isd18opd){
113  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
114  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
115  if(!istemperaturescaled){
116  /*Fetch array*/
117  IssmDouble* doublearray = NULL;
118  int M,N;
119  iomodel->FetchData(&doublearray,&M,&N,"md.smb.temperatures_reconstructed");
120  if(M!=iomodel->numberofvertices+1) _error_("md.smb.temperatures_reconstructed should have nbv+1 rows");
121  if(N%12!=0) _error_("md.smb.temperatures_reconstructed should have a multiple of 12 columns (since it is monthly)");
122 
123  /*Build indices*/
124  int* ids = xNew<int>(N); for(int i=0;i<N;i++) ids[i] = i;
125 
126  for(int i=0;i<elements->Size();i++){
127  Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
128  element->DatasetInputCreate(doublearray,M-1,N,ids,N,inputs2,iomodel,SmbTemperaturesReconstructedEnum);
129  }
130  xDelete<int>(ids);
131  iomodel->DeleteData(doublearray,"md.smb.temperatures_reconstructed");
132  }
133  if(!isprecipscaled){
134  /*Fetch array*/
135  IssmDouble* doublearray = NULL;
136  int M,N;
137  iomodel->FetchData(&doublearray,&M,&N,"md.smb.precipitations_reconstructed");
138  if(M!=iomodel->numberofvertices+1) _error_("md.smb.precipitations_reconstructed should have nbv+1 rows");
139  if(N%12!=0) _error_("md.smb.precipitations_reconstructed should have a multiple of 12 columns (since it is monthly)");
140 
141  /*Build indices*/
142  int* ids = xNew<int>(N); for(int i=0;i<N;i++) ids[i] = i;
143 
144  for(int i=0;i<elements->Size();i++){
145  Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
146  element->DatasetInputCreate(doublearray,M-1,N,ids,N,inputs2,iomodel,SmbPrecipitationsReconstructedEnum);
147  }
148  xDelete<int>(ids);
149  iomodel->DeleteData(doublearray,"md.smb.precipitations_reconstructed");
150  }
151  }
152  if(issetpddfac){
153  iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.);
154  iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.);
155  }
156  break;
157  case SMBgradientsEnum:
158  iomodel->FetchDataToInput(inputs2,elements,"md.smb.href",SmbHrefEnum);
159  iomodel->FetchDataToInput(inputs2,elements,"md.smb.smbref",SmbSmbrefEnum);
160  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_pos",SmbBPosEnum);
161  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_neg",SmbBNegEnum);
162  break;
163  case SMBgradientselaEnum:
164  iomodel->FetchDataToInput(inputs2,elements,"md.smb.ela",SmbElaEnum);
165  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_pos",SmbBPosEnum);
166  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_neg",SmbBNegEnum);
167  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_max",SmbBMaxEnum);
168  iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_min",SmbBMinEnum);
169  break;
170  case SMBhenningEnum:
171  iomodel->FetchDataToInput(inputs2,elements,"md.smb.smbref",SmbSmbrefEnum,0.);
172  break;
173  case SMBcomponentsEnum:
174  iomodel->FetchDataToInput(inputs2,elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
175  iomodel->FetchDataToInput(inputs2,elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
176  iomodel->FetchDataToInput(inputs2,elements,"md.smb.runoff",SmbRunoffEnum,0.);
177  break;
179  iomodel->FetchDataToInput(inputs2,elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
180  iomodel->FetchDataToInput(inputs2,elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
181  iomodel->FetchDataToInput(inputs2,elements,"md.smb.melt",SmbMeltEnum,0.);
182  iomodel->FetchDataToInput(inputs2,elements,"md.smb.refreeze",SmbRefreezeEnum,0.);
183  break;
185  /* Nothing to add to input */
186  break;
187  case SMBsemicEnum:
188  iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
189  iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0gcm",SmbS0gcmEnum);
190  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum);
191  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyrainfall",SmbDailyrainfallEnum);
192  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailydsradiation",SmbDailydsradiationEnum);
193  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailydlradiation",SmbDailydlradiationEnum);
194  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailywindspeed",SmbDailywindspeedEnum);
195  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailypressure",SmbDailypressureEnum);
196  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyairdensity",SmbDailyairdensityEnum);
197  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum);
198  iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailytemperature",SmbDailytemperatureEnum);
199  break;
200  default:
201  _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
202  }
203 
204 }/*}}}*/

◆ UpdateParameters()

void SmbAnalysis::UpdateParameters ( Parameters parameters,
IoModel iomodel,
int  solution_enum,
int  analysis_enum 
)
virtual

Implements Analysis.

Definition at line 205 of file SmbAnalysis.cpp.

205  {/*{{{*/
206 
207  int numoutputs;
208  char** requestedoutputs = NULL;
209  bool isdelta18o,ismungsm,isd18opd,issetpddfac,interp,isfirnwarming;
210  int smb_model, smbslices, averaging;
211  IssmDouble *temp = NULL;
212  int N,M;
213 
214  parameters->AddObject(iomodel->CopyConstantObject("md.smb.model",SmbEnum));
215 
216  iomodel->FindConstant(&smb_model,"md.smb.model");
217  iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
218 
219  iomodel->FindConstant(&smbslices,"md.smb.steps_per_step");
220  parameters->AddObject(new IntParam(SmbStepsPerStepEnum,smbslices));
221 
222 
223  parameters->AddObject(iomodel->CopyConstantObject("md.smb.averaging",SmbAveragingEnum));
224 
225  switch(smb_model){
226  case SMBforcingEnum:
227  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));
228  break;
229  case SMBgembEnum:
230  parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIdx",SmbAIdxEnum));
231  parameters->AddObject(iomodel->CopyConstantObject("md.smb.swIdx",SmbSwIdxEnum));
232  parameters->AddObject(iomodel->CopyConstantObject("md.smb.denIdx",SmbDenIdxEnum));
233  parameters->AddObject(iomodel->CopyConstantObject("md.smb.dsnowIdx",SmbDsnowIdxEnum));
234  parameters->AddObject(iomodel->CopyConstantObject("md.smb.cldFrac",SmbCldFracEnum));
235  parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0wet",SmbT0wetEnum));
236  parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0dry",SmbT0dryEnum));
237  parameters->AddObject(iomodel->CopyConstantObject("md.smb.K",SmbKEnum));
238  parameters->AddObject(iomodel->CopyConstantObject("md.smb.aSnow",SmbASnowEnum));
239  parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIce",SmbAIceEnum));
240  parameters->AddObject(iomodel->CopyConstantObject("md.smb.dt",SmbDtEnum));
241  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isgraingrowth",SmbIsgraingrowthEnum));
242  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isalbedo",SmbIsalbedoEnum));
243  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isshortwave",SmbIsshortwaveEnum));
244  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isthermal",SmbIsthermalEnum));
245  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isaccumulation",SmbIsaccumulationEnum));
246  parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismelt",SmbIsmeltEnum));
247  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdensification",SmbIsdensificationEnum));
248  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isturbulentflux",SmbIsturbulentfluxEnum));
249  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));
250  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isconstrainsurfaceT",SmbIsconstrainsurfaceTEnum));
251  parameters->AddObject(iomodel->CopyConstantObject("md.smb.InitDensityScaling",SmbInitDensityScalingEnum));
252  parameters->AddObject(iomodel->CopyConstantObject("md.smb.ThermoDeltaTScaling",SmbThermoDeltaTScalingEnum));
253  parameters->AddObject(iomodel->CopyConstantObject("md.smb.adThresh",SmbAdThreshEnum));
254  break;
255  case SMBpddEnum:
256  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdelta18o",SmbIsdelta18oEnum));
257  parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
258  parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum));
259  iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
260  iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
261 
262  if(ismungsm){
263  iomodel->FetchData(&temp,&N,&M,"md.smb.Pfac"); _assert_(N==2);
264  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
265  iomodel->DeleteData(temp,"md.smb.Pfac");
266 
267  iomodel->FetchData(&temp,&N,&M,"md.smb.Tdiff"); _assert_(N==2);
268  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
269  iomodel->DeleteData(temp,"md.smb.Tdiff");
270 
271  iomodel->FetchData(&temp,&N,&M,"md.smb.sealev"); _assert_(N==2);
272  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
273  iomodel->DeleteData(temp,"md.smb.sealev");
274  }
275  if(isdelta18o){
276  iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
277  parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
278  iomodel->DeleteData(temp,"md.smb.delta18o");
279 
280  iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o_surface"); _assert_(N==2);
281  parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
282  iomodel->DeleteData(temp,"md.smb.delta18o_surface");
283  }
284 
285  break;
286  case SMBpddSicopolisEnum:
287  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isfirnwarming",SmbIsfirnwarmingEnum));
288  break;
289  case SMBd18opddEnum:
290  parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
291  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isd18opd",SmbIsd18opdEnum));
292  parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum));
293  iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
294  iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
295  iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
296  if(isd18opd){
297  parameters->AddObject(iomodel->CopyConstantObject("md.smb.f",SmbFEnum));
298  parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum));
299  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isprecipscaled",SmbIsprecipscaledEnum));
300  iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
301  parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
302  iomodel->DeleteData(temp,"md.smb.delta18o");
303 
304  IssmDouble yts;
305  bool istemperaturescaled,isprecipscaled;
306  iomodel->FindConstant(&yts,"md.constants.yts");
307  iomodel->FindConstant(&istemperaturescaled,"md.smb.istemperaturescaled");
308  iomodel->FindConstant(&isprecipscaled,"md.smb.isprecipscaled");
309  if(!istemperaturescaled){
310  /*Fetch array*/
311  IssmDouble* doublearray = NULL;
312  int M,N;
313  iomodel->FetchData(&doublearray,&M,&N,"md.smb.temperatures_reconstructed");
314  if(M!=iomodel->numberofvertices+1) _error_("md.smb.temperatures_reconstructed should have nbv+1 rows");
315  if(N%12!=0) _error_("md.smb.temperatures_reconstructed should have a multiple of 12 columns (since it is monthly)");
316  int numyears = N/12; _assert_(numyears*12==N);
317 
318  /*Check times*/
319  #ifdef _ISSM_DEBUG_
320  for(int i=0;i<numyears;i++){
321  for(int j=1;j<12;j++){
322  //_assert_(floor(doublearray[(M-1)*N+i*12+j]/yts)==floor(doublearray[(M-1)*N+i*12]/yts));
323  _assert_(doublearray[(M-1)*N+i*12+j]>doublearray[(M-1)*N+i*12+j-1]);
324  }
325  }
326  #endif
327 
328  /*Build time*/
329  IssmDouble* times = xNew<IssmDouble>(numyears); for(int i=0;i<numyears;i++) times[i] = doublearray[(M-1)*N+i*12];
330  parameters->AddObject(new DoubleVecParam(SmbTemperaturesReconstructedYearsEnum,times,numyears));
331  xDelete<IssmDouble>(times);
332  iomodel->DeleteData(doublearray,"md.smb.temperatures_reconstructed");
333  }
334  if(!isprecipscaled){
335  /*Fetch array*/
336  IssmDouble* doublearray = NULL;
337  int M,N;
338  iomodel->FetchData(&doublearray,&M,&N,"md.smb.precipitations_reconstructed");
339  if(M!=iomodel->numberofvertices+1) _error_("md.smb.precipitations_reconstructed should have nbv+1 rows");
340  if(N%12!=0) _error_("md.smb.precipitations_reconstructed should have a multiple of 12 columns (since it is monthly)");
341  int numyears = N/12; _assert_(numyears*12==N);
342 
343  /*Check times*/
344  #ifdef _ISSM_DEBUG_
345  for(int i=0;i<numyears;i++){
346  for(int j=1;j<12;j++){
347  //_assert_(floor(doublearray[(M-1)*N+i*12+j]/yts)==floor(doublearray[(M-1)*N+i*12]/yts));
348  _assert_(doublearray[(M-1)*N+i*12+j]>doublearray[(M-1)*N+i*12+j-1]);
349  }
350  }
351  #endif
352 
353  /*Build time*/
354  IssmDouble* times = xNew<IssmDouble>(numyears); for(int i=0;i<numyears;i++) times[i] = doublearray[(M-1)*N+i*12];
355  parameters->AddObject(new DoubleVecParam(SmbPrecipitationsReconstructedYearsEnum,times,numyears));
356  xDelete<IssmDouble>(times);
357  iomodel->DeleteData(doublearray,"md.smb.precipitations_reconstructed");
358  }
359  }
360 
361  break;
362  case SMBgradientsEnum:
363  /*Nothing to add to parameters*/
364  break;
365  case SMBgradientselaEnum:
366  /*Nothing to add to parameters*/
367  break;
368  case SMBhenningEnum:
369  /*Nothing to add to parameters*/
370  break;
371  case SMBcomponentsEnum:
372  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));
373  break;
375  parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));
376  break;
378  parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum));
379  parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum));
380  parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum));
381  parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum));
382 
383  iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
384  parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
385  iomodel->DeleteData(temp,"md.smb.accuref");
386 
387  iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
388  parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
389  iomodel->DeleteData(temp,"md.smb.runoffref");
390  break;
391  case SMBsemicEnum:
392  /*Nothing to add to parameters*/
393  break;
394  default:
395  _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
396  }
397 
398  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.smb.requested_outputs");
399  parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs));
400  if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs));
401  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.smb.requested_outputs");
402 
403 }/*}}}*/

◆ Core()

void SmbAnalysis::Core ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 406 of file SmbAnalysis.cpp.

406  {/*{{{*/
407 
408  int smb_model;
409 
410  /*Figure out smb model: */
411  femmodel->parameters->FindParam(&smb_model,SmbEnum);
412 
413  /*branch to correct module*/
414  switch(smb_model){
415  case SMBforcingEnum:
417  break;
418  case SMBgembEnum:
419  Gembx(femmodel);
420  break;
421  case SMBpddEnum:
422  bool isdelta18o,ismungsm;
425  if(isdelta18o){
426  if(VerboseSolution()) _printf0_(" call Delta18oParameterization module\n");
428  }
429  if(ismungsm){
430  if(VerboseSolution()) _printf0_(" call MungsmtpParameterization module\n");
432  }
433  if(VerboseSolution()) _printf0_(" call positive degree day module\n");
435  break;
436  case SMBpddSicopolisEnum:
437  if(VerboseSolution()) _printf0_(" call SICOPOLIS positive degree day module\n");
439  break;
440  case SMBd18opddEnum:
441  bool isd18opd;
443  if(isd18opd){
444  if(VerboseSolution()) _printf0_(" call Delta18opdParameterization module\n");
446  if(VerboseSolution()) _printf0_(" call positive degree day module\n");
448  }
449  break;
450  case SMBgradientsEnum:
451  if(VerboseSolution())_printf0_(" call smb gradients module\n");
453  break;
454  case SMBgradientselaEnum:
455  if(VerboseSolution())_printf0_(" call smb gradients ela module\n");
457  break;
458  case SMBhenningEnum:
459  if(VerboseSolution())_printf0_(" call smb Henning module\n");
461  break;
462  case SMBcomponentsEnum:
463  if(VerboseSolution())_printf0_(" call smb Components module\n");
465  break;
467  if(VerboseSolution())_printf0_(" call smb Melt Components module\n");
469  break;
470  case SMBgcmEnum:
471  /*Nothing to be done*/
472  break;
474  if(VerboseSolution())_printf0_(" call smb gradients components module\n");
476  break;
477  case SMBsemicEnum:
478  #ifdef _HAVE_SEMIC_
479  if(VerboseSolution())_printf0_(" call smb SEMIC module\n");
481  #else
482  _error_("SEMIC not installed");
483  #endif //_HAVE_SEMIC_
484  break;
485  default:
486  _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
487  }
488 
489 }/*}}}*/

◆ CreateDVector()

ElementVector * SmbAnalysis::CreateDVector ( Element element)
virtual

Implements Analysis.

Definition at line 490 of file SmbAnalysis.cpp.

490  {/*{{{*/
491  _error_("not implemented");
492 }/*}}}*/

◆ CreateJacobianMatrix()

ElementMatrix * SmbAnalysis::CreateJacobianMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 493 of file SmbAnalysis.cpp.

493  {/*{{{*/
494 _error_("Not implemented");
495 }/*}}}*/

◆ CreateKMatrix()

ElementMatrix * SmbAnalysis::CreateKMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 496 of file SmbAnalysis.cpp.

496  {/*{{{*/
497  _error_("not implemented yet");
498 }/*}}}*/

◆ CreatePVector()

ElementVector * SmbAnalysis::CreatePVector ( Element element)
virtual

Implements Analysis.

Definition at line 499 of file SmbAnalysis.cpp.

499  {/*{{{*/
500 _error_("not implemented yet");
501 }/*}}}*/

◆ GetSolutionFromInputs()

void SmbAnalysis::GetSolutionFromInputs ( Vector< IssmDouble > *  solution,
Element element 
)
virtual

Implements Analysis.

Definition at line 502 of file SmbAnalysis.cpp.

502  {/*{{{*/
503  _error_("not implemented yet");
504 }/*}}}*/

◆ GradientJ()

void SmbAnalysis::GradientJ ( Vector< IssmDouble > *  gradient,
Element element,
int  control_type,
int  control_index 
)
virtual

Implements Analysis.

Definition at line 505 of file SmbAnalysis.cpp.

505  {/*{{{*/
506  _error_("Not implemented yet");
507 }/*}}}*/

◆ InputUpdateFromSolution()

void SmbAnalysis::InputUpdateFromSolution ( IssmDouble solution,
Element element 
)
virtual

Implements Analysis.

Definition at line 508 of file SmbAnalysis.cpp.

508  {/*{{{*/
509  _error_("not implemented yet");
510 }/*}}}*/

◆ UpdateConstraints()

void SmbAnalysis::UpdateConstraints ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 511 of file SmbAnalysis.cpp.

511  {/*{{{*/
512  /*Default, do nothing*/
513  return;
514 }/*}}}*/

The documentation for this class was generated from the following files:
DataSet::Size
int Size()
Definition: DataSet.cpp:399
SmbAIceEnum
@ SmbAIceEnum
Definition: EnumDefinitions.h:342
SmbRequestedOutputsEnum
@ SmbRequestedOutputsEnum
Definition: EnumDefinitions.h:382
SmbTemperaturesReconstructedEnum
@ SmbTemperaturesReconstructedEnum
Definition: EnumDefinitions.h:787
SMBgradientselaEnum
@ SMBgradientselaEnum
Definition: EnumDefinitions.h:1249
SmbIsalbedoEnum
@ SmbIsalbedoEnum
Definition: EnumDefinitions.h:362
Delta18opdParameterizationx
void Delta18opdParameterizationx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:215
SMBd18opddEnum
@ SMBd18opddEnum
Definition: EnumDefinitions.h:1243
SmbMassBalanceEnum
@ SmbMassBalanceEnum
Definition: EnumDefinitions.h:748
SmbEnum
@ SmbEnum
Definition: EnumDefinitions.h:358
SmbAnalysisEnum
@ SmbAnalysisEnum
Definition: EnumDefinitions.h:1274
SmbBPosEnum
@ SmbBPosEnum
Definition: EnumDefinitions.h:713
SmbZYEnum
@ SmbZYEnum
Definition: EnumDefinitions.h:800
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
SmbIsprecipscaledEnum
@ SmbIsprecipscaledEnum
Definition: EnumDefinitions.h:372
SmbS0tEnum
@ SmbS0tEnum
Definition: EnumDefinitions.h:777
SmbDtEnum
@ SmbDtEnum
Definition: EnumDefinitions.h:357
IssmDouble
double IssmDouble
Definition: types.h:37
SmbAccumulationEnum
@ SmbAccumulationEnum
Definition: EnumDefinitions.h:708
SmbIsturbulentfluxEnum
@ SmbIsturbulentfluxEnum
Definition: EnumDefinitions.h:377
SmbIsdensificationEnum
@ SmbIsdensificationEnum
Definition: EnumDefinitions.h:367
SmbAValueEnum
@ SmbAValueEnum
Definition: EnumDefinitions.h:707
SmbDailydsradiationEnum
@ SmbDailydsradiationEnum
Definition: EnumDefinitions.h:719
SmbWiniEnum
@ SmbWiniEnum
Definition: EnumDefinitions.h:796
SmbSwIdxEnum
@ SmbSwIdxEnum
Definition: EnumDefinitions.h:390
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
SmbAveragingEnum
@ SmbAveragingEnum
Definition: EnumDefinitions.h:349
SmbReiniEnum
@ SmbReiniEnum
Definition: EnumDefinitions.h:771
SmbSealevEnum
@ SmbSealevEnum
Definition: EnumDefinitions.h:388
SMBcomponentsEnum
@ SMBcomponentsEnum
Definition: EnumDefinitions.h:1242
SmbT0dryEnum
@ SmbT0dryEnum
Definition: EnumDefinitions.h:391
SmbGradientsElax
void SmbGradientsElax(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:133
SmbVEnum
@ SmbVEnum
Definition: EnumDefinitions.h:791
SmbTmeanEnum
@ SmbTmeanEnum
Definition: EnumDefinitions.h:789
SmbPAirEnum
@ SmbPAirEnum
Definition: EnumDefinitions.h:760
Delta18oParameterizationx
void Delta18oParameterizationx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:199
SmbDzTopEnum
@ SmbDzTopEnum
Definition: EnumDefinitions.h:731
FemModel::parameters
Parameters * parameters
Definition: FemModel.h:46
SmbAccurefEnum
@ SmbAccurefEnum
Definition: EnumDefinitions.h:347
SMBgcmEnum
@ SMBgcmEnum
Definition: EnumDefinitions.h:1245
SmbSmbrefEnum
@ SmbSmbrefEnum
Definition: EnumDefinitions.h:780
SmbDiniEnum
@ SmbDiniEnum
Definition: EnumDefinitions.h:725
SmbZMaxEnum
@ SmbZMaxEnum
Definition: EnumDefinitions.h:797
SmbAccugradEnum
@ SmbAccugradEnum
Definition: EnumDefinitions.h:346
SmbAiniEnum
@ SmbAiniEnum
Definition: EnumDefinitions.h:709
SmbPrecipitationsReconstructedYearsEnum
@ SmbPrecipitationsReconstructedYearsEnum
Definition: EnumDefinitions.h:396
SmbBMaxEnum
@ SmbBMaxEnum
Definition: EnumDefinitions.h:710
SmbDailytemperatureEnum
@ SmbDailytemperatureEnum
Definition: EnumDefinitions.h:723
SMBhenningEnum
@ SMBhenningEnum
Definition: EnumDefinitions.h:1250
IoModel::my_elements
bool * my_elements
Definition: IoModel.h:66
SmbPrecipitationsPresentdayEnum
@ SmbPrecipitationsPresentdayEnum
Definition: EnumDefinitions.h:767
PositiveDegreeDaySicopolisx
void PositiveDegreeDaySicopolisx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:325
SmbTaEnum
@ SmbTaEnum
Definition: EnumDefinitions.h:782
SmbGspiniEnum
@ SmbGspiniEnum
Definition: EnumDefinitions.h:743
SmbAdThreshEnum
@ SmbAdThreshEnum
Definition: EnumDefinitions.h:348
SmbDzMinEnum
@ SmbDzMinEnum
Definition: EnumDefinitions.h:730
SmbZMinEnum
@ SmbZMinEnum
Definition: EnumDefinitions.h:798
SmbDsnowIdxEnum
@ SmbDsnowIdxEnum
Definition: EnumDefinitions.h:352
SmbTemperaturesAnomalyEnum
@ SmbTemperaturesAnomalyEnum
Definition: EnumDefinitions.h:784
SMBgradientsEnum
@ SMBgradientsEnum
Definition: EnumDefinitions.h:1247
Parameters::AddObject
void AddObject(Param *newparam)
Definition: Parameters.cpp:67
SmbGdniniEnum
@ SmbGdniniEnum
Definition: EnumDefinitions.h:741
SmbDailyairdensityEnum
@ SmbDailyairdensityEnum
Definition: EnumDefinitions.h:716
SmbPddfacSnowEnum
@ SmbPddfacSnowEnum
Definition: EnumDefinitions.h:763
SmbStepsPerStepEnum
@ SmbStepsPerStepEnum
Definition: EnumDefinitions.h:389
Element
Definition: Element.h:41
IoModel::numberofvertices
int numberofvertices
Definition: IoModel.h:99
P1Enum
@ P1Enum
Definition: EnumDefinitions.h:662
SmbPEnum
@ SmbPEnum
Definition: EnumDefinitions.h:761
SmbS0pEnum
@ SmbS0pEnum
Definition: EnumDefinitions.h:776
SmbTeValueEnum
@ SmbTeValueEnum
Definition: EnumDefinitions.h:783
ThermalSpctemperatureEnum
@ ThermalSpctemperatureEnum
Definition: EnumDefinitions.h:835
SmbDailysnowfallEnum
@ SmbDailysnowfallEnum
Definition: EnumDefinitions.h:722
SmbIstemperaturescaledEnum
@ SmbIstemperaturescaledEnum
Definition: EnumDefinitions.h:375
SmbS0gcmEnum
@ SmbS0gcmEnum
Definition: EnumDefinitions.h:775
SmbDenIdxEnum
@ SmbDenIdxEnum
Definition: EnumDefinitions.h:356
SMBsemicEnum
@ SMBsemicEnum
Definition: EnumDefinitions.h:1254
SmbTemperaturesPresentdayEnum
@ SmbTemperaturesPresentdayEnum
Definition: EnumDefinitions.h:786
SmbIsdelta18oEnum
@ SmbIsdelta18oEnum
Definition: EnumDefinitions.h:366
IoModel::DeleteData
void DeleteData(int num,...)
Definition: IoModel.cpp:500
IoModel::numberofelements
int numberofelements
Definition: IoModel.h:96
SmbDailyrainfallEnum
@ SmbDailyrainfallEnum
Definition: EnumDefinitions.h:721
IoModel::CopyConstantObject
Param * CopyConstantObject(const char *constant_name, int param_enum)
Definition: IoModel.cpp:418
SmbVzEnum
@ SmbVzEnum
Definition: EnumDefinitions.h:793
SmbCEnum
@ SmbCEnum
Definition: EnumDefinitions.h:714
PositiveDegreeDayx
void PositiveDegreeDayx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:223
SmbIsfirnwarmingEnum
@ SmbIsfirnwarmingEnum
Definition: EnumDefinitions.h:368
SmbAccualtiEnum
@ SmbAccualtiEnum
Definition: EnumDefinitions.h:345
SmbForcingx
void SmbForcingx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:11
SmbEvaporationEnum
@ SmbEvaporationEnum
Definition: EnumDefinitions.h:738
EnumToStringx
const char * EnumToStringx(int enum_in)
Definition: EnumToStringx.cpp:15
SmbDelta18oEnum
@ SmbDelta18oEnum
Definition: EnumDefinitions.h:354
SmbRunoffrefEnum
@ SmbRunoffrefEnum
Definition: EnumDefinitions.h:387
SmbPddfacIceEnum
@ SmbPddfacIceEnum
Definition: EnumDefinitions.h:762
SMBgradientscomponentsEnum
@ SMBgradientscomponentsEnum
Definition: EnumDefinitions.h:1248
SmbSmbCorrEnum
@ SmbSmbCorrEnum
Definition: EnumDefinitions.h:779
SmbIssetpddfacEnum
@ SmbIssetpddfacEnum
Definition: EnumDefinitions.h:373
SmbIsclimatologyEnum
@ SmbIsclimatologyEnum
Definition: EnumDefinitions.h:363
SmbTemperaturesLgmEnum
@ SmbTemperaturesLgmEnum
Definition: EnumDefinitions.h:785
IoModel::FindConstant
void FindConstant(bool *pvalue, const char *constant_name)
Definition: IoModel.cpp:2362
StringArrayParam
Definition: StringArrayParam.h:20
SmbECiniEnum
@ SmbECiniEnum
Definition: EnumDefinitions.h:736
SmbIsconstrainsurfaceTEnum
@ SmbIsconstrainsurfaceTEnum
Definition: EnumDefinitions.h:364
SmbIsgraingrowthEnum
@ SmbIsgraingrowthEnum
Definition: EnumDefinitions.h:369
SmbPrecipitationsLgmEnum
@ SmbPrecipitationsLgmEnum
Definition: EnumDefinitions.h:766
IntParam
Definition: IntParam.h:20
SmbRefreezeEnum
@ SmbRefreezeEnum
Definition: EnumDefinitions.h:770
SmbIsaccumulationEnum
@ SmbIsaccumulationEnum
Definition: EnumDefinitions.h:361
IoModel::FetchData
void FetchData(bool *pboolean, const char *data_name)
Definition: IoModel.cpp:933
InputUpdateFromConstantx
void InputUpdateFromConstantx(FemModel *femmodel, bool constant, int name)
Definition: InputUpdateFromConstantx.cpp:10
SmbComponentsx
void SmbComponentsx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:404
SMBgembEnum
@ SMBgembEnum
Definition: EnumDefinitions.h:1246
SmbMeltComponentsx
void SmbMeltComponentsx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:503
SmbDswrfEnum
@ SmbDswrfEnum
Definition: EnumDefinitions.h:727
SmbPrecipitationsReconstructedEnum
@ SmbPrecipitationsReconstructedEnum
Definition: EnumDefinitions.h:768
SmbEAirEnum
@ SmbEAirEnum
Definition: EnumDefinitions.h:733
SmbGradientsComponentsx
void SmbGradientsComponentsx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:620
SmbElaEnum
@ SmbElaEnum
Definition: EnumDefinitions.h:737
SmbDlwrfEnum
@ SmbDlwrfEnum
Definition: EnumDefinitions.h:726
SmbBMinEnum
@ SmbBMinEnum
Definition: EnumDefinitions.h:711
SmbGradientsx
void SmbGradientsx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:70
SmbRunoffEnum
@ SmbRunoffEnum
Definition: EnumDefinitions.h:772
SmbSizeiniEnum
@ SmbSizeiniEnum
Definition: EnumDefinitions.h:778
Gembx
void Gembx(FemModel *femmodel)
Definition: Gembx.cpp:34
Element::DatasetInputCreate
virtual void DatasetInputCreate(IssmDouble *array, int M, int N, int *individual_enums, int num_inputs, Inputs2 *inputs2, IoModel *iomodel, int input_enum)
Definition: Element.h:218
SmbDailypressureEnum
@ SmbDailypressureEnum
Definition: EnumDefinitions.h:720
SmbVmeanEnum
@ SmbVmeanEnum
Definition: EnumDefinitions.h:792
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
SmbFEnum
@ SmbFEnum
Definition: EnumDefinitions.h:359
SmbIsd18opdEnum
@ SmbIsd18opdEnum
Definition: EnumDefinitions.h:365
SmbTdiffEnum
@ SmbTdiffEnum
Definition: EnumDefinitions.h:393
VerboseSolution
bool VerboseSolution(void)
Definition: Verbosity.cpp:24
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
SmbHrefEnum
@ SmbHrefEnum
Definition: EnumDefinitions.h:744
SmbIsInitializedEnum
@ SmbIsInitializedEnum
Definition: EnumDefinitions.h:745
DoubleVecParam
Definition: DoubleVecParam.h:20
SmbMonthlytemperaturesEnum
@ SmbMonthlytemperaturesEnum
Definition: EnumDefinitions.h:756
SmbBNegEnum
@ SmbBNegEnum
Definition: EnumDefinitions.h:712
SmbDelta18oSurfaceEnum
@ SmbDelta18oSurfaceEnum
Definition: EnumDefinitions.h:355
SmbDziniEnum
@ SmbDziniEnum
Definition: EnumDefinitions.h:732
SmbDailywindspeedEnum
@ SmbDailywindspeedEnum
Definition: EnumDefinitions.h:724
Element::Update
virtual void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finite_element)=0
SmbSemicx
void SmbSemicx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:638
SmbNumRequestedOutputsEnum
@ SmbNumRequestedOutputsEnum
Definition: EnumDefinitions.h:379
SmbDailyairhumidityEnum
@ SmbDailyairhumidityEnum
Definition: EnumDefinitions.h:717
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition: Parameters.cpp:262
SmbCldFracEnum
@ SmbCldFracEnum
Definition: EnumDefinitions.h:353
SmbInitDensityScalingEnum
@ SmbInitDensityScalingEnum
Definition: EnumDefinitions.h:360
SmbPrecipitationsAnomalyEnum
@ SmbPrecipitationsAnomalyEnum
Definition: EnumDefinitions.h:765
MungsmtpParameterizationx
void MungsmtpParameterizationx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:207
IoModel::FetchDataToInput
void FetchDataToInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
Definition: IoModel.cpp:1651
SmbRunoffgradEnum
@ SmbRunoffgradEnum
Definition: EnumDefinitions.h:386
IoModel::FetchDataToDatasetInput
void FetchDataToDatasetInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
Definition: IoModel.cpp:1735
SmbAIdxEnum
@ SmbAIdxEnum
Definition: EnumDefinitions.h:343
SmbRunoffaltiEnum
@ SmbRunoffaltiEnum
Definition: EnumDefinitions.h:385
SmbTiniEnum
@ SmbTiniEnum
Definition: EnumDefinitions.h:788
SmbKEnum
@ SmbKEnum
Definition: EnumDefinitions.h:378
SmbIsthermalEnum
@ SmbIsthermalEnum
Definition: EnumDefinitions.h:376
SmbPrecipitationEnum
@ SmbPrecipitationEnum
Definition: EnumDefinitions.h:764
SmbTzEnum
@ SmbTzEnum
Definition: EnumDefinitions.h:790
SMBpddSicopolisEnum
@ SMBpddSicopolisEnum
Definition: EnumDefinitions.h:1253
SmbIsmungsmEnum
@ SmbIsmungsmEnum
Definition: EnumDefinitions.h:371
SmbT0wetEnum
@ SmbT0wetEnum
Definition: EnumDefinitions.h:392
SmbPfacEnum
@ SmbPfacEnum
Definition: EnumDefinitions.h:380
SmbASnowEnum
@ SmbASnowEnum
Definition: EnumDefinitions.h:344
SmbAnalysis::CreateNodes
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Definition: SmbAnalysis.cpp:17
SmbMeltEnum
@ SmbMeltEnum
Definition: EnumDefinitions.h:754
TransientParam
Definition: TransientParam.h:20
SmbTemperaturesReconstructedYearsEnum
@ SmbTemperaturesReconstructedYearsEnum
Definition: EnumDefinitions.h:395
SmbDailydlradiationEnum
@ SmbDailydlradiationEnum
Definition: EnumDefinitions.h:718
SMBmeltcomponentsEnum
@ SMBmeltcomponentsEnum
Definition: EnumDefinitions.h:1251
SmbThermoDeltaTScalingEnum
@ SmbThermoDeltaTScalingEnum
Definition: EnumDefinitions.h:394
SmbIsmeltEnum
@ SmbIsmeltEnum
Definition: EnumDefinitions.h:370
SmbIsshortwaveEnum
@ SmbIsshortwaveEnum
Definition: EnumDefinitions.h:374
SmbHenningx
void SmbHenningx(FemModel *femmodel)
Definition: SurfaceMassBalancex.cpp:336
SMBforcingEnum
@ SMBforcingEnum
Definition: EnumDefinitions.h:1244
SMBpddEnum
@ SMBpddEnum
Definition: EnumDefinitions.h:1252
SmbZTopEnum
@ SmbZTopEnum
Definition: EnumDefinitions.h:799
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16