Ice Sheet System Model  4.18
Code documentation
Functions
WrapperCorePointerFromSolutionEnum.cpp File Reference

: return type of analyses, number of analyses and core solution function. More...

#include "./cores.h"
#include "../toolkits/toolkits.h"
#include "../classes/classes.h"
#include "../shared/shared.h"
#include "../modules/modules.h"
#include "../solutionsequences/solutionsequences.h"

Go to the source code of this file.

Functions

void WrapperCorePointerFromSolutionEnum (void(**psolutioncore)(FemModel *), Parameters *parameters, int solutiontype, bool nodakotacore)
 

Detailed Description

: return type of analyses, number of analyses and core solution function.

Definition in file WrapperCorePointerFromSolutionEnum.cpp.

Function Documentation

◆ WrapperCorePointerFromSolutionEnum()

void WrapperCorePointerFromSolutionEnum ( void(**)(FemModel *)  psolutioncore,
Parameters parameters,
int  solutiontype,
bool  nodakotacore 
)

Definition at line 17 of file WrapperCorePointerFromSolutionEnum.cpp.

17  {
18 
19  /*output: */
20  void (*solutioncore)(FemModel*)=NULL;
21 
22  /*parameters: */
23  bool control_analysis;
24  bool dakota_analysis;
25  int inversiontype;
26 
27  /* retrieve some parameters that tell us whether wrappers are allowed, or whether we return
28  * a pure core. Wrappers can be dakota_core (which samples many solution_cores) or control_core (which
29  * carries out adjoint based inversion on a certain core: */
30  parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
31  parameters->FindParam(&control_analysis,InversionIscontrolEnum);
32  parameters->FindParam(&inversiontype,InversionTypeEnum);
33 
34  if(nodakotacore)dakota_analysis=false;
35 
36  if(dakota_analysis){
37  #ifdef _HAVE_DAKOTA_
38  solutioncore=dakota_core;
39  #else
40  _error_("ISSM was not compiled with dakota support, cannot carry out dakota analysis!");
41  #endif
42  }
43  else if(control_analysis){
44  switch(inversiontype){
45  case 0: solutioncore=control_core; break;
46  case 1: solutioncore=controltao_core; break;
47  case 2: solutioncore=controlm1qn3_core; break;
48  case 3: solutioncore=controlvalidation_core; break;
49  case 4: solutioncore=controladm1qn3_core; break;
50  default: _error_("control type not supported");
51  }
52  }
53  else CorePointerFromSolutionEnum(&solutioncore,parameters,solutiontype); /*This means we retrieve a core solution that is not a wrapper*/
54 
55  /*Assign output pointer:*/
56  _assert_(psolutioncore);
57  *psolutioncore=solutioncore;
58 
59 }
controlvalidation_core
void controlvalidation_core(FemModel *femmodel)
Definition: controlvalidation_core.cpp:155
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
CorePointerFromSolutionEnum
void CorePointerFromSolutionEnum(void(**psolutioncore)(FemModel *), Parameters *parameters, int solutiontype)
Definition: CorePointerFromSolutionEnum.cpp:18
InversionIscontrolEnum
@ InversionIscontrolEnum
Definition: EnumDefinitions.h:218
control_core
void control_core(FemModel *femmodel)
Definition: control_core.cpp:22
controladm1qn3_core
void controladm1qn3_core(FemModel *femmodel)
Definition: controladm1qn3_core.cpp:657
QmuIsdakotaEnum
@ QmuIsdakotaEnum
Definition: EnumDefinitions.h:288
controlm1qn3_core
void controlm1qn3_core(FemModel *femmodel)
Definition: controlm1qn3_core.cpp:304
dakota_core
void dakota_core(FemModel *femmodel)
Definition: dakota_core.cpp:313
FemModel
Definition: FemModel.h:31
controltao_core
void controltao_core(FemModel *femmodel)
Definition: controltao_core.cpp:213
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition: Parameters.cpp:262
InversionTypeEnum
@ InversionTypeEnum
Definition: EnumDefinitions.h:226