Ice Sheet System Model  4.18
Code documentation
masstransport_core.cpp
Go to the documentation of this file.
1 
5 #include "./cores.h"
6 #include "../toolkits/toolkits.h"
7 #include "../classes/classes.h"
8 #include "../shared/shared.h"
9 #include "../modules/modules.h"
10 #include "../solutionsequences/solutionsequences.h"
11 
13 
14  /*Start profiler*/
16 
17  /*parameters: */
18  int numoutputs,domaintype;
19  bool save_results;
20  bool isFS,isfreesurface,dakota_analysis;
21  int solution_type,stabilization;
22  char** requested_outputs = NULL;
23 
24  /*activate configuration*/
26 
27  /*recover parameters: */
35  if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
36 
37  if(VerboseSolution()) _printf0_(" computing mass transport\n");
38 
39  /*Transport mass or free surface*/
40  if(isFS && isfreesurface){
41  if(VerboseSolution()) _printf0_(" call free surface computational core\n");
46 
51  }
52  else{
53  if(VerboseSolution()) _printf0_(" call computational core\n");
57  if(domaintype!=Domain2DverticalEnum){
61  }
67  if(stabilization==4){
69  }
70  else{
72  // ThicknessAverage: method not totally tested
73  //if(stabilization==3){
74  // if(VerboseSolution()) _printf0_(" call thickness average core\n");
75  // femmodel->ThicknessAverage();
76  //}
77  }
84  }
85 
86  if(save_results){
87  if(VerboseSolution()) _printf0_(" saving results\n");
88  femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
89  }
90 
92 
93  /*Free ressources:*/
94  if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
95 
96  /*profiler*/
98 }
FreeSurfaceTopAnalysisEnum
@ FreeSurfaceTopAnalysisEnum
Definition: EnumDefinitions.h:1072
depthaverage_core
void depthaverage_core(FemModel *femmodel)
Definition: depthaverage_core.cpp:12
SaveResultsEnum
@ SaveResultsEnum
Definition: EnumDefinitions.h:302
BaseEnum
@ BaseEnum
Definition: EnumDefinitions.h:495
extrudefrombase_core
void extrudefrombase_core(FemModel *femmodel)
Definition: extrudefrombase_core.cpp:12
InputToDepthaverageOutEnum
@ InputToDepthaverageOutEnum
Definition: EnumDefinitions.h:204
MasstransportAnalysisEnum
@ MasstransportAnalysisEnum
Definition: EnumDefinitions.h:1163
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
SurfaceOldEnum
@ SurfaceOldEnum
Definition: EnumDefinitions.h:824
cores.h
FemModel::parameters
Parameters * parameters
Definition: FemModel.h:46
masstransport_core
void masstransport_core(FemModel *femmodel)
Definition: masstransport_core.cpp:12
FemModel::results
Results * results
Definition: FemModel.h:48
FreeSurfaceBaseAnalysisEnum
@ FreeSurfaceBaseAnalysisEnum
Definition: EnumDefinitions.h:1071
MasstransportStabilizationEnum
@ MasstransportStabilizationEnum
Definition: EnumDefinitions.h:249
MasstransportRequestedOutputsEnum
@ MasstransportRequestedOutputsEnum
Definition: EnumDefinitions.h:248
VyEnum
@ VyEnum
Definition: EnumDefinitions.h:850
solutionsequence_linear
void solutionsequence_linear(FemModel *femmodel)
Definition: solutionsequence_linear.cpp:10
FemModel::RequestedDependentsx
void RequestedDependentsx(void)
Definition: FemModel.cpp:2220
SealevelriseCumDeltathicknessEnum
@ SealevelriseCumDeltathicknessEnum
Definition: EnumDefinitions.h:688
Parameters::SetParam
void SetParam(bool boolean, int enum_type)
Definition: Parameters.cpp:441
InputToExtrudeEnum
@ InputToExtrudeEnum
Definition: EnumDefinitions.h:205
DomainTypeEnum
@ DomainTypeEnum
Definition: EnumDefinitions.h:124
extrudefromtop_core
void extrudefromtop_core(FemModel *femmodel)
Definition: extrudefromtop_core.cpp:12
VxAverageEnum
@ VxAverageEnum
Definition: EnumDefinitions.h:845
MASSTRANSPORTCORE
#define MASSTRANSPORTCORE
Definition: Profiler.h:23
MasstransportSolutionEnum
@ MasstransportSolutionEnum
Definition: EnumDefinitions.h:1164
InputDuplicatex
void InputDuplicatex(FemModel *femmodel, int original_enum, int new_enum)
Definition: InputDuplicatex.cpp:10
SolutionTypeEnum
@ SolutionTypeEnum
Definition: EnumDefinitions.h:398
SurfaceEnum
@ SurfaceEnum
Definition: EnumDefinitions.h:823
Profiler::Stop
void Stop(int tagenum, bool dontmpisync=true)
Definition: Profiler.cpp:179
FemModel::solution_type
int solution_type
Definition: FemModel.h:40
FemModel
Definition: FemModel.h:31
MasstransportIsfreesurfaceEnum
@ MasstransportIsfreesurfaceEnum
Definition: EnumDefinitions.h:244
InputToDepthaverageInEnum
@ InputToDepthaverageInEnum
Definition: EnumDefinitions.h:203
ThicknessOldEnum
@ ThicknessOldEnum
Definition: EnumDefinitions.h:841
FlowequationIsFSEnum
@ FlowequationIsFSEnum
Definition: EnumDefinitions.h:138
Profiler::Start
void Start(int tagenum, bool dontmpisync=true)
Definition: Profiler.cpp:139
VerboseSolution
bool VerboseSolution(void)
Definition: Verbosity.cpp:24
VxEnum
@ VxEnum
Definition: EnumDefinitions.h:846
FemModel::RequestedOutputsx
void RequestedOutputsx(Results **presults, char **requested_outputs, int numoutputs, bool save_results=true)
Definition: FemModel.cpp:2267
FemModel::SetCurrentConfiguration
void SetCurrentConfiguration(int configuration_type)
Definition: FemModel.cpp:634
VyAverageEnum
@ VyAverageEnum
Definition: EnumDefinitions.h:849
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition: Parameters.cpp:262
ThicknessEnum
@ ThicknessEnum
Definition: EnumDefinitions.h:840
SealevelriseCumDeltathicknessOldEnum
@ SealevelriseCumDeltathicknessOldEnum
Definition: EnumDefinitions.h:689
solutionsequence_fct
void solutionsequence_fct(FemModel *femmodel)
Definition: solutionsequence_fct.cpp:388
MasstransportNumRequestedOutputsEnum
@ MasstransportNumRequestedOutputsEnum
Definition: EnumDefinitions.h:246
Domain2DverticalEnum
@ Domain2DverticalEnum
Definition: EnumDefinitions.h:535
BaseOldEnum
@ BaseOldEnum
Definition: EnumDefinitions.h:496
FemModel::profiler
Profiler * profiler
Definition: FemModel.h:42
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16