aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/carpet.hh
blob: 587f2174b49716def60d0cdcbc5f49095dacae3b (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
68
#ifndef CARPET_HH
#define CARPET_HH

#include <vector>

#include "cctk.h"
#include "cctk_Arguments.h"
#include "cctk_Functions.h"

#include "gh.hh"

#include "carpet_public.hh"



namespace Carpet {
  
  using namespace std;
  
  // Scheduled functions
  extern "C" {
    void CarpetParamCheck (CCTK_ARGUMENTS);
    void CarpetStartup (void);
  }
  
  // Registered functions
  void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cgh);
  
  int Initialise (tFleshConfig* config);
  int Evolve (tFleshConfig* config);
  int Shutdown (tFleshConfig* config);
  int CallFunction (void* function, cFunctionData* attribute, void* data);
  
  // Other functions
  bool Regrid (const cGH* cgh, const bool force_recompose, const bool do_init);
  void CycleTimeLevels (const cGH* cgh);
  void FlipTimeLevels (const cGH* cgh);
  void Restrict (const cGH* cgh);
  
  // Sanity checks
  enum checktimes { currenttime,
		    currenttimebutnotifonly,
                    previoustime,
		    allbutlasttime,
		    allbutcurrenttime,
		    alltimes };
  
  int mintl (checktimes where, int num_tl);
  int maxtl (checktimes where, int num_tl);
  
  void Poison (const cGH* cgh, checktimes where);
  void PoisonGroup (const cGH* cgh, int group, checktimes where);
  void PoisonCheck (const cGH* cgh, checktimes where);
  
  void CalculateChecksums (const cGH* cgh, checktimes where);
  void CheckChecksums (const cGH* cgh, checktimes where);
  
  // Debugging output
  void Output (const char* fmt, ...);
  void Waypoint (const char* fmt, ...);
  void Checkpoint (const char* fmt, ...);
  
  // Error output
  void UnsupportedVarType (int vindex);
  
} // namespace Carpet

#endif // !defined(CARPET_HH)