aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/CarpetIOSer/src/ioser.hh
blob: 978a54a9c198ed41f4bbdfae36c3140b52e82d4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/CarpetIOSer/src/ioser.hh,v 1.1.1.1 2002/02/08 14:55:31 shawley Exp $

#include <vector>

#include "cctk.h"

using namespace std;



// scheduled functions
extern "C" {
  int CarpetIOSerStartup();
}



// Everything is a template class, so that it can easily be
// instantiated for all output dimensions.

template<int outdim>
struct CarpetIOSer {
  
  // handle from CCTK_RegisterGHExtension
  static int GHExtension;
  
  // handles from CCTK_RegisterIOMethed
  static int IOMethod;
  
  
  
  // Do truncate the output files for a variable
  static vector<bool> do_truncate;
  
  // Last iteration on which a refinement level of a variable was
  // output (INT_MIN for none)
  static vector<vector<int> > last_output; // [rl][var]
  
  
  
  // scheduled functions
  static int Startup();
  
  
  
  // registered functions
  
  static void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cgh);
  
  static int OutputGH (const cGH* cgh);
  static int OutputVarAs (const cGH* cgh,
			  const char* varname, const char* alias);
  static int TimeToOutput (const cGH* cgh, int vindex);
  static int TriggerOutput (const cGH* cgh, int vindex);
  
  static int GetGridOffset (const cGH* cgh, int dir,
			    const char* itempl, const char* iglobal,
			    const char* ctempl, const char* cglobal,
			    CCTK_REAL cfallback);
  static int CoordToOffset (const cGH* cgh, int dir, CCTK_REAL coord,
			    int ifallback);
  
  static const char* GetStringParameter
  (const char* parametertemplate, const char* fallback);
  static int GetIntParameter (const char* parametertemplate, int fallback);
  
};