aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/functions.hh
blob: 56170dbedf2d3ba0024c01e40725f074543e576f (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
// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/functions.hh,v 1.4 2004/04/18 13:29:43 schnetter Exp $

#ifndef FUNCTIONS_HH
#define FUNCTIONS_HH

#include <vector>

#include "cctk.h"
#include "cctk_Schedule.h"

#include "bbox.hh"
#include "gh.hh"
#include "vect.hh"

#include "defines.hh"


  
namespace Carpet {
  
  using namespace std;
  
  int SyncGroup (const cGH* cgh, const char* groupname);
  int EnableGroupStorage (const cGH* cgh, const char* groupname);
  int DisableGroupStorage (const cGH* cgh, const char* groupname); 
  int EnableGroupComm (const cGH* cgh, const char* groupname);
  int DisableGroupComm (const cGH* cgh, const char* groupname);
  int Barrier (const cGH* cgh);
  int Exit (cGH* cgh, int retval);
  int Abort (cGH* cgh, int retval);
  int MyProc (const cGH* cgh);
  int nProcs (const cGH* cgh);
  const int* ArrayGroupSizeB (const cGH* cgh, int dir, int group,
			      const char* groupname);
  int QueryGroupStorageB (const cGH* cgh, int group, const char* groupname);
  int GroupDynamicData (const cGH* cgh, int group, cGroupDynamicData* data);
   
   
   
  // Helpers for recomposing the grid hierarchy
  void CheckRegions (const gh<dim>::rexts & bbsss,
                     const gh<dim>::rbnds & obss,
                     const gh<dim>::rprocs& pss);
  
  void OutputGrids (const cGH* cgh, const int m, const gh<dim>& hh);
  
  void OutputGridStructure (const cGH *cgh,
                            const int m,
                            const gh<dim>::rexts & bbsss,
                            const gh<dim>::rbnds & obss,
                            const gh<dim>::rprocs& pss);
  
  
  
  // Functions for recomposing the grid hierarchy
  void SplitRegions (const cGH* cgh, vector<ibbox>& bbs,
		     vector<bbvect>& obs, vector<int>& ps);
  void SplitRegions_AlongZ (const cGH* cgh, vector<ibbox>& bbs,
			    vector<bbvect>& obs, vector<int>& ps);
  void SplitRegions_AlongDir (const cGH* cgh, vector<ibbox>& bbs,
                              vector<bbvect>& obs, vector<int>& ps,
                              const int dir);
  void SplitRegions_Automatic (const cGH* cgh, vector<ibbox>& bbs,
                               vector<bbvect>& obs, vector<int>& ps);
  
  void MakeMultigridBoxes (const cGH* cgh,
                           vector<ibbox> const & bbs,
                           vector<bbvect> const & obs,
                           vector<vector<ibbox> > & bbss);
  
} // namespace Carpet

#endif // !defined(FUNCTIONS_HH)