aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/variables.hh
blob: 281b2ec3cab261f42aea905e7aab86a1405399dc (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// $Header:$

// It is assumed that each group has at least one map.  All arrays
// have exactly one map.  All maps have the same number of refinement
// levels.

// It is assumed that each group has at least one component.

// It is assumed that the number of components of all arrays is equal
// to the number of components of the grid functions, and that their
// distribution onto the processors is the same, and that all
// processors own the same number of components.

#ifndef VARIABLES_HH
#define VARIABLES_HH

#include <vector>

#include "cctk.h"

#include "data.hh"
#include "dh.hh"
#include "ggf.hh"
#include "gh.hh"
#include "operators.hh"
#include "th.hh"
#include "vect.hh"

#include "carpet_public.h"
#include "defines.hh"



namespace Carpet {
  
  using namespace std;
  
  
  
  // Handle from CCTK_RegisterGHExtension
  extern int GHExtension;
  
  // Maximum number of refinement levels
  extern int maxreflevels;
  
  // Refinement levels
  extern int reflevels;
  
  // Refinement factor
  extern int reffact;
  
  // Refinement factor on finest possible grid
  extern int maxreflevelfact;
  
  // Base multigrid level
  extern int basemglevel;
  
  // Multigrid levels
  extern int mglevels;
  
  // Multigrid factor
  extern int mgfact;
  
  // Multigrid factor on coarsest grid
  extern int maxmglevelfact;
  
  // Maps
  extern int maps;
  
  
  
  // Current position on the grid hierarchy
  extern int reflevel;
  extern int mglevel;
  extern int map;
  extern int component;
  
  // Current refinement factor
  extern int reflevelfact;
  
  // Current multigrid factor
  extern int mglevelfact;
  
  
  
  // Carpet's GH
  extern CarpetGH carpetGH;
  
  
  
  // Times and spaces on the refinement levels
  extern CCTK_REAL global_time;
  extern vector<vector<CCTK_REAL> > leveltimes; // [mglevel][reflevel]
  extern CCTK_REAL delta_time;
  
  extern vector<vect<CCTK_REAL,dim> > origin_space; // [mglevel]
  extern vect<CCTK_REAL,dim> delta_space;
  
  
  
  // Is this the time for a global mode call?
  extern bool do_meta_mode;
  extern bool do_global_mode;
  
  // Is prolongation enabled?
  extern bool do_prolongate;
  
  
  
  // Data for grid functions
  
  // The grid hierarchy
  extern vector<gh<dim>*> vhh;  // [map]
  extern vector<dh<dim>*> vdd;  // [map]
  extern vector<th<dim>*> vtt;  // [map]
  
  // Data for the groups
  struct groupdesc {
    cGroupDynamicData info;
    operator_type transport_operator; // prolongation and restriction
  };
  extern vector<groupdesc> groupdata; // [group]
  
  // Data for everything
  struct arrdesc {
    // points to hh etc. for GF, and is unique for SCALAR and ARRAY
    gh<dim>* hh;
    dh<dim>* dd;
    th<dim>* tt;
    vector<ggf<dim>*> data;     // [var]
  };
  extern vector<vector<arrdesc> > arrdata; // [group][map]
  
} // namespace Carpet

#endif // !defined(VARIABLES_HH)