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

: go through our finite elements, and see what results they have stored within. Then output them into serialized patch arrays, and dump to disk. More...

#include <stdio.h>
#include "./OutputResultsx.h"
#include "../../shared/io/io.h"
#include "../../classes/classes.h"

Go to the source code of this file.

Functions

void OutputResultsx (FemModel *femmodel)
 

Detailed Description

: go through our finite elements, and see what results they have stored within. Then output them into serialized patch arrays, and dump to disk.

Definition in file OutputResultsx.cpp.

Function Documentation

◆ OutputResultsx()

void OutputResultsx ( FemModel femmodel)

Definition at line 17 of file OutputResultsx.cpp.

17  {
18 
19  int my_rank;
20  FILE *fid = NULL;
21  char *outputfilename = NULL;
22  char outputfilename2[100]; //easier to convert an integer with sprintf
23  bool io_gather;
24  int solutiontype;
25  char* solutiontypestring = NULL;
26 
27 
28  /*recover my_rank:*/
29  my_rank=IssmComm::GetRank();
30 
31  /*If we are running dakota, do we want to output?*/
32  bool dakota_analysis;
33  femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
34  if(dakota_analysis){
35  bool dakota_output;
36  femmodel->parameters->FindParam(&dakota_output,QmuOutputEnum);
37  if(!dakota_output) return;
38  }
39 
40  /*Results do not include the type of solution being run . In parallel, we output results to a filename,
41  *therefore, we need to include the solutiontype into the filename: */
42  if(my_rank==0){
44  EnumToStringx(&solutiontypestring,solutiontype);
46  xDelete<char>(solutiontypestring);
47  }
48 
49 #ifdef _HAVE_JAVASCRIPT_
51 #else
52 
53  /*Now, open file for writing*/
57 
58  if(io_gather){
59  /*Just open the file for output on cpu 0. We are gathering the data on cpu 0 from all other cpus: */
60  if(!dakota_analysis){
61  if(my_rank==0) fid=pfopen0(outputfilename ,"ab+");
62  }
63  else{
64  if(my_rank==0){
65  int currEvalId ;
67  sprintf(outputfilename2,"%s.%i",outputfilename,currEvalId);
68  fid=pfopen0(outputfilename2,"ab+");
69  }
70  }
71  }
72  else{
73  /*We are opening different files for output on all cpus. Append the rank to the filename, and open: */
74  sprintf(outputfilename2,"%s.%i",outputfilename,my_rank);
75  fid=pfopen(outputfilename2 ,"ab+");
76  }
77 
78  /*Add file pointer in parameters for further calls to OutputResultsx: */
80 #endif
81 
82  /*Write results to disk: */
84 
85 #ifdef _HAVE_JAVASCRIPT_
86  /*Delete and reinitialize results, in parallel: */
88 #else
90 
91  /*Delete and reinitialize results, in parallel: */
93 
94  /*Close output file? :*/
95  if(io_gather){
96  if(!dakota_analysis){
97  if(my_rank==0) pfclose(fid,outputfilename);
98  }
99  else{
100  if(my_rank==0) pfclose(fid,outputfilename2);
101  }
102  }
103  else pfclose(fid,outputfilename2);
104 #endif
105 
106  /*Clean up and return*/
107  xDelete<char>(outputfilename);
108 }
DataSet::Size
int Size()
Definition: DataSet.cpp:399
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
Parameters::Exist
bool Exist(int enum_type)
Definition: Parameters.cpp:254
FemModel::parameters
Parameters * parameters
Definition: FemModel.h:46
OutputFileNameEnum
@ OutputFileNameEnum
Definition: EnumDefinitions.h:283
Results::Write
void Write(Parameters *parameters)
Definition: Results.cpp:92
FemModel::results
Results * results
Definition: FemModel.h:48
pfopen
FILE * pfopen(char *filename, const char *format, bool errorout=true)
Definition: pfopen.cpp:30
QmuOutputEnum
@ QmuOutputEnum
Definition: EnumDefinitions.h:290
pfopen0
FILE * pfopen0(char *filename, const char *format)
Definition: pfopen.cpp:16
Parameters::SetParam
void SetParam(bool boolean, int enum_type)
Definition: Parameters.cpp:441
EnumToStringx
const char * EnumToStringx(int enum_in)
Definition: EnumToStringx.cpp:15
QmuCurrEvalIdEnum
@ QmuCurrEvalIdEnum
Definition: EnumDefinitions.h:291
QmuIsdakotaEnum
@ QmuIsdakotaEnum
Definition: EnumDefinitions.h:288
SolutionTypeEnum
@ SolutionTypeEnum
Definition: EnumDefinitions.h:398
Results::AddResult
int AddResult(ExternalResult *result)
Definition: Results.cpp:33
DataSet::clear
void clear()
Definition: DataSet.cpp:260
GenericExternalResult
Definition: GenericExternalResult.h:21
IssmComm::GetRank
static int GetRank(void)
Definition: IssmComm.cpp:34
Parameters::Delete
void Delete(int enum_type)
Definition: Parameters.cpp:243
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition: Parameters.cpp:262
pfclose
void pfclose(FILE *fid, char *filename)
Definition: pfclose.cpp:14
OutputFilePointerEnum
@ OutputFilePointerEnum
Definition: EnumDefinitions.h:284
SettingsIoGatherEnum
@ SettingsIoGatherEnum
Definition: EnumDefinitions.h:334
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16