summaryrefslogtreecommitdiff
path: root/src/include/cctk_Groups.h
blob: 8e5c58c9206f2a2cbb4b93d322f5f004b1072350 (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
 /*@@
   @header    cctk_Groups.h
   @date      Mon Feb  8 14:47:10 1999
   @author    Tom Goodale
   @desc 
   Prototypes and constants for group functions.
   @enddesc 
   @version $Header$
 @@*/

#ifndef _CCTK_GROUPS_H_
#define _CCTK_GROUPS_H_ 1

typedef struct
{
  int grouptype;
  int vartype;
  int disttype;
  int stagtype;
  int dim;
  int numvars;
  int numtimelevels;
  int vectorgroup;
  int vectorlength;
} cGroup;

/* Prototypes */

#ifdef __cplusplus 
extern "C" 
{
#endif

#include "cctk_Types.h"

int         CCTK_StaggerVars(void);

int         CCTK_DecomposeName(const char *fullname, 
                              char **implementation, 
                              char **name);

int         CCTK_FirstVarIndex(const char *group);
int         CCTK_FirstVarIndexI(int group);
char      * CCTK_FullName(int var);

int         CCTK_GroupData(int group, cGroup *gp);
int         CCTK_GroupDimI(int group);
int         CCTK_GroupDimFromVarI(int vi);
int         CCTK_GroupDistribNumber(const char *dtype);
CCTK_INT ** CCTK_GroupGhostsizesI(int group);
const char *CCTK_GroupImplementationI(int group);
int         CCTK_GroupIndex(const char *groupname);
int         CCTK_GroupIndexFromVar(const char *var);
int         CCTK_GroupIndexFromVarI(int var);
char      * CCTK_GroupName(int groupnum);
char      * CCTK_GroupNameFromVarI(int varnum);
int         CCTK_GroupScopeNumber(const char *type);
CCTK_INT ** CCTK_GroupSizesI(int group);
int         CCTK_GroupTypeFromVarI(int var);
int         CCTK_GroupTypeNumber(const char *type);
int         CCTK_GroupTypeI(int group);
int         CCTK_NumTimeLevelsI(int group);

const char *CCTK_ImpFromVarI(int var);

int         CCTK_MaxDim(void);

int         CCTK_NumGroups(void);

/* DEPRECATED BETA 13 */
int         CCTK_NumTimeLevelsFromVar(const char *var);
int         CCTK_NumTimeLevelsFromVarI(int var);
int         CCTK_NumTimeLevels(const char *group);
int         CCTK_NumTimeLevelsI(int group);

int         CCTK_MaxTimeLevels(const char *group);
int         CCTK_MaxTimeLevelsVN(const char *var);
int         CCTK_MaxTimeLevelsVI(int var);
int         CCTK_MaxTimeLevelsGN(const char *group);
int         CCTK_MaxTimeLevelsGI(int group);


int         CCTK_NumVars(void);
int         CCTK_NumVarsInGroup(const char *group);
int         CCTK_NumVarsInGroupI(int group);

int         CCTK_VarIndex(const char *variablename);
const char *CCTK_VarName(int varnum);
int         CCTK_VarTypeI(int var);
int         CCTK_VarTypeNumber(const char *type);
const char *CCTK_VarTypeName(int vartype);

int         CCTK_VarTypeSize(int vtype);

const int *CCTKi_GroupLengthAsPointer(const char *fullgroupname);

/* traverse a string of group and/or variable names */
int CCTK_TraverseString (const char *parsestring,
                         void (*callback) (int index,
                                           const char *optstring,
                                           void *callback_arg),
                         void *callback_arg,
                         int selection);

int CCTK_GroupTagsTable(const char *group);
int CCTK_GroupTagsTableI(int group);

#ifdef __cplusplus 
}
#endif


/* Group Types */

#define CCTK_DISTRIB_CONSTANT 301
#define CCTK_DISTRIB_DEFAULT  302

#define CCTK_SCALAR 401
#define CCTK_GF     402
#define CCTK_ARRAY  403

#define CCTK_PRIVATE   501
#define CCTK_PROTECTED 502
#define CCTK_PUBLIC    503

/* constants for CCTK_TraverseString() */
#define CCTK_VAR          601
#define CCTK_GROUP        602
#define CCTK_GROUP_OR_VAR 603

#endif /* _CCTK_GROUPS_H_ */