aboutsummaryrefslogtreecommitdiff
path: root/src/SymBase.h
blob: 397c0a1fd5ad4c59355ae16b7e69bd59e69a1c7e (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
/*@@
  @file      SymBase.h
  @author    Erik Schnetter
  @date      2004/03/07 09:48:53
  @desc
             Declarations for thorn SymBase
  @version   $Header$
  @enddesc
@@*/

#ifndef SYMBASE_H
#define SYMBASE_H



#include "cctk.h"



/* SymBase's GH extension */
struct SymBase
{
  /* Grid symmetry table handle */
  int sym_table;

  /* Grid array symmetry table handles */
  int *array_sym_tables;
};



/* Number of registered symmetries */
extern size_t SymBase_num_symmetries;

/* The names of these symmetries */
extern const char **SymBase_symmetry_names;



/* Startup.c */
int SymBase_Startup (void);
void *SymBase_Setup (tFleshConfig * const config,
                     int const convlev, cGH * const cctkGH);

/* Handles.c */
CCTK_INT SymBase_SymmetryRegister (CCTK_STRING const sym_name);
CCTK_INT SymBase_SymmetryHandleOfName (CCTK_STRING const sym_name);
CCTK_POINTER_TO_CONST SymBase_SymmetryNameOfHandle (CCTK_INT const
                                                    sym_handle);

/* Faces.c */
CCTK_INT
SymBase_SymmetryRegisterFaces (CCTK_INT const sym_table,
                               CCTK_INT const group_dim,
                               CCTK_INT const sym_handle,
                               CCTK_INT const *const which_faces,
                               CCTK_INT const *const new_symmetry_zone_width);
CCTK_INT
SymBase_SymmetryRegisterGrid (CCTK_POINTER const cctkGH_,
                              CCTK_INT const sym_handle,
                              CCTK_INT const *const which_faces,
                              CCTK_INT const *const new_symmetry_zone_width);
CCTK_INT
SymBase_SymmetryRegisterGI (CCTK_POINTER const cctkGH_,
                            CCTK_INT const sym_handle,
                            CCTK_INT const *const which_faces,
                            CCTK_INT const *const new_symmetry_zone_width,
                            CCTK_INT const group_index);
CCTK_INT
SymBase_SymmetryRegisterGN (CCTK_POINTER const cctkGH_,
                            CCTK_INT const sym_handle,
                            CCTK_INT const *const which_faces,
                            CCTK_INT const *const new_symmetry_zone_width,
                            CCTK_STRING const group_name);

/* Table.c */
CCTK_INT
SymBase_SymmetryTableHandleForGrid (CCTK_POINTER_TO_CONST const cctkGH_);
CCTK_INT
SymBase_SymmetryTableHandleForGI (CCTK_POINTER_TO_CONST const cctkGH_,
                                  CCTK_INT const group_index);
CCTK_INT
SymBase_SymmetryTableHandleForGN (CCTK_POINTER_TO_CONST const cctkGH_,
                                  CCTK_STRING const group_name);



#endif /* ! defined SYMBASE_H */