aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpollney <pollney@a491c6a4-70bf-4b89-8b36-d6c0cb1f094e>2002-12-11 15:20:07 +0000
committerpollney <pollney@a491c6a4-70bf-4b89-8b36-d6c0cb1f094e>2002-12-11 15:20:07 +0000
commit07bb3085a50ffcc9b6f9e605781eb54d27d310ca (patch)
tree32fa0b466d4af69405336a72afc9afae1b49d1b1
parent66fe3398c860c4ee61ecbe3074f01a2b80005937 (diff)
Switch mask to CCTK_INT rather than CCTK_INT8, as some fortran compilers
have problems with the latter. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/SpaceMask/trunk@19 a491c6a4-70bf-4b89-8b36-d6c0cb1f094e
-rw-r--r--doc/documentation.tex40
-rw-r--r--interface.ccl2
-rw-r--r--src/MaskUtils.c58
-rw-r--r--src/SpaceMask.h12
4 files changed, 57 insertions, 55 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
index df64445..dc34f34 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -28,10 +28,12 @@ for quickly setting and checking the mask states.
The mask is a grid function which can be used to assign a state to
each point on the grid. It is used as a bit field, with different
bits, or combinations of bits, assigned to represent various states.
-The mask is currently implemented as a CCTK\_INT8 grid function,
-providing 64 bits per point. Appropriate numbers of bits within
-the mask can be allocated to represent individual states of
-a given type.
+The mask is currently implemented as a CCTK\_INT grid function,
+providing 32 bits per point.\footnote{The original implementation of
+these functions used a CCTK\_INT8 for 64 bits, however this data type
+is not supported by some Fortran compilers.} Appropriate numbers of
+bits within the mask can be allocated to represent individual states
+of a given type.
For instance, a programmer wants to record whether each point of the
grid has \emph{state} ``interior'', ``excised'' or ``boundary''. The
@@ -115,7 +117,7 @@ The state of the mask at a given point is set using the function:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-void SpaceMask\_SetState(CCTK\_INT8* \emph{mask}, int \emph{point},
+void SpaceMask\_SetState(CCTK\_INT* \emph{mask}, int \emph{point},
char* \emph{type\_name}, char* \emph{state})
}
\hspace*{10mm}\parbox{\linewidth}{
@@ -132,7 +134,7 @@ The state of the mask at a given point can be checked using:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-int SpaceMask\_CheckState(CCTK\_INT8* \emph{mask}, int \emph{point},
+int SpaceMask\_CheckState(CCTK\_INT* \emph{mask}, int \emph{point},
char* \emph{type\_name}, char* \emph{state})
}
\hspace*{10mm}\parbox{\linewidth}{
@@ -159,7 +161,7 @@ states need to be obtained using the following functions:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-CCTK\_INT8 SpaceMask\_GetTypeBits(char* \emph{type\_name})
+CCTK\_INT SpaceMask\_GetTypeBits(char* \emph{type\_name})
}\\
\hspace*{10mm}\parbox{\linewidth}{
\begin{description}
@@ -170,7 +172,7 @@ CCTK\_INT8 SpaceMask\_GetTypeBits(char* \emph{type\_name})
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-CCTK\_INT8 SpaceMask\_GetStateBits(char* \emph{type\_name},
+CCTK\_INT SpaceMask\_GetStateBits(char* \emph{type\_name},
char* \emph{state\_name})
}
\hspace*{10mm}\parbox{\linewidth}{
@@ -192,8 +194,8 @@ of the mask by direct bitwise operations:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-void SpaceMask\_SetStateBits(CCTK\_INT8* \emph{mask}, int \emph{point},
- CCTK\_INT8 \emph{type\_bits},\\\hspace*{10mm} CCTK\_INT8 \emph{state\_bits})
+void SpaceMask\_SetStateBits(CCTK\_INT* \emph{mask}, int \emph{point},
+ CCTK\_INT \emph{type\_bits},\\\hspace*{10mm} CCTK\_INT \emph{state\_bits})
}\\
\hspace*{10mm}\parbox{\linewidth}{
\begin{description}
@@ -209,8 +211,8 @@ void SpaceMask\_SetStateBits(CCTK\_INT8* \emph{mask}, int \emph{point},
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
-int SpaceMask\_CheckStateBits(CCTK\_INT8* \emph{mask}, int \emph{point},
- CCTK\_INT8 \emph{type\_bits},\\\hspace*{10mm} CCTK\_INT8 \emph{state\_bits})
+int SpaceMask\_CheckStateBits(CCTK\_INT* \emph{mask}, int \emph{point},
+ CCTK\_INT \emph{type\_bits},\\\hspace*{10mm} CCTK\_INT \emph{state\_bits})
}\\
\hspace*{10mm}\parbox{\linewidth}{
\begin{description}
@@ -249,7 +251,7 @@ The mask states can be manipulated using the following functions:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
- SpaceMask\_SetState(CCTK\_INT8 \emph{mask(,,)}, int \emph{point},
+ SpaceMask\_SetState(CCTK\_INT \emph{mask(,,)}, int \emph{point},
character \emph{type\_name},\\\hspace*{10mm} character \emph{state\_name})
}\\
\hspace*{10mm}\parbox{\linewidth}{
@@ -268,7 +270,7 @@ the specified state at the point.
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
- SpaceMask\_CheckState(CCTK\_INT \emph{check}, CCTK\_INT8 \emph{mask(,,)},
+ SpaceMask\_CheckState(CCTK\_INT \emph{check}, CCTK\_INT \emph{mask(,,)},
int \emph{point},\\\hspace*{10mm} character \emph{type\_name},
character \emph{state\_name})
}\\
@@ -294,7 +296,7 @@ in question must first be obtained using the following functions:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
- SpaceMask\_GetTypeBits(CCTK\_INT8 \emph{type\_bits},
+ SpaceMask\_GetTypeBits(CCTK\_INT \emph{type\_bits},
character \emph{type\_name})
}
\hspace*{10mm}\parbox{\linewidth}{
@@ -307,7 +309,7 @@ in question must first be obtained using the following functions:
\indent\parbox{\linewidth}{
\vspace{\baselineskip}\noindent\texttt{
- SpaceMask\_GetStateBits(CCTK\_INT8 \emph{state\_bits},
+ SpaceMask\_GetStateBits(CCTK\_INT \emph{state\_bits},
character \emph{type\_name},\\\hspace*{10mm} character \emph{state\_name})
}\\
\hspace*{10mm}\parbox{\linewidth}{
@@ -425,8 +427,8 @@ void Eg_CheckMaskStates (CCTK_ARGUMENTS)
int i, j, k, ijk;
- CCTK_INT8 excision_mask;
- CCTK_INT8 boundary_mask;
+ CCTK_INT excision_mask;
+ CCTK_INT boundary_mask;
excision_mask = SpaceMask_GetTypeBits("excision");
boundary_mask = SpaceMask_GetStateBits("boundary");
@@ -505,7 +507,7 @@ subroutine Eg_SetExcisedRegionByBitmask(CCTK_ARGUMENTS)
integer ni, nj, nk
integer i, j, k, ijk
- CCTK_INT8 type_bits, excised
+ CCTK_INT type_bits, excised
ni = cctk_lsh(1)
nj = cctk_lsh(2)
diff --git a/interface.ccl b/interface.ccl
index 70433bd..68d00da 100644
--- a/interface.ccl
+++ b/interface.ccl
@@ -8,7 +8,7 @@ USES INCLUDE: Symmetry.h
public:
-CCTK_INT8 space_mask_group type=GF
+CCTK_INT space_mask_group type=GF
{
space_mask
}
diff --git a/src/MaskUtils.c b/src/MaskUtils.c
index f8c5a75..5815eee 100644
--- a/src/MaskUtils.c
+++ b/src/MaskUtils.c
@@ -57,11 +57,11 @@ SpaceMask_get_bit_nbr(int nstates)
@enddesc
@@*/
-CCTK_INT8
+CCTK_INT
SpaceMask_get_free_bits(int nbits)
{
- CCTK_INT8 used_bits;
- CCTK_INT8 new_bits;
+ CCTK_INT used_bits;
+ CCTK_INT new_bits;
int i;
int j;
int n;
@@ -76,7 +76,7 @@ SpaceMask_get_free_bits(int nbits)
n=1;
new_bits = 0;
j = 0;
- for (i=0; i<sizeof(CCTK_INT8)*8 & j<nbits; ++i)
+ for (i=0; i<sizeof(CCTK_INT)*8 & j<nbits; ++i)
{
if (!(n & used_bits))
{
@@ -105,17 +105,17 @@ SpaceMask_get_free_bits(int nbits)
@enddesc
@@*/
-CCTK_INT8*
-SpaceMask_determine_state_mask(CCTK_INT8 allocated_bits, int nstates)
+CCTK_INT*
+SpaceMask_determine_state_mask(CCTK_INT allocated_bits, int nstates)
{
- CCTK_INT8* state_mask;
+ CCTK_INT* state_mask;
int n;
int bit;
int i;
int j;
state_mask =
- (CCTK_INT8*) malloc (nstates*sizeof(CCTK_INT8));
+ (CCTK_INT*) malloc (nstates*sizeof(CCTK_INT));
for (j=0; j<nstates; ++j)
state_mask[j] = 0;
@@ -123,7 +123,7 @@ SpaceMask_determine_state_mask(CCTK_INT8 allocated_bits, int nstates)
n=1;
bit=1;
- for (i=0; i<sizeof(CCTK_INT8)*8; ++i)
+ for (i=0; i<sizeof(CCTK_INT)*8; ++i)
{
if (n & allocated_bits)
{
@@ -151,7 +151,7 @@ SpaceMask_determine_state_mask(CCTK_INT8 allocated_bits, int nstates)
@@*/
SpaceMask_State*
-SpaceMask_setup_new_state(CCTK_INT8 state_mask, char* name)
+SpaceMask_setup_new_state(CCTK_INT state_mask, char* name)
{
SpaceMask_State* new_state;
@@ -175,9 +175,9 @@ SpaceMask_setup_new_state(CCTK_INT8 state_mask, char* name)
@@*/
SpaceMask_Type*
-SpaceMask_setup_new_type(CCTK_INT8 new_bits, char* type_name,
+SpaceMask_setup_new_type(CCTK_INT new_bits, char* type_name,
int nstates, char** state_list,
- CCTK_INT8* state_mask)
+ CCTK_INT* state_mask)
{
SpaceMask_Type* new_type;
int j;
@@ -248,8 +248,8 @@ int
SpaceMask_RegisterType(char* type_name, int nstates, char** state_list)
{
SpaceMask_Type* new_type;
- CCTK_INT8 new_bits;
- CCTK_INT8* state_mask;
+ CCTK_INT new_bits;
+ CCTK_INT* state_mask;
int bit_nbr;
bit_nbr = SpaceMask_get_bit_nbr(nstates);
@@ -279,9 +279,9 @@ SpaceMask_RegisterType(char* type_name, int nstates, char** state_list)
int
SpaceMask_AppendStatesToType(char* type_name, int nstates, char** state_list)
{
- CCTK_INT8 new_bits;
- CCTK_INT8 allocated_bits;
- CCTK_INT8* state_mask;
+ CCTK_INT new_bits;
+ CCTK_INT allocated_bits;
+ CCTK_INT* state_mask;
SpaceMask_Type* old_type;
SpaceMask_Type* new_type;
char** new_state_list;
@@ -345,7 +345,7 @@ SpaceMask_AppendStatesToType(char* type_name, int nstates, char** state_list)
@enddesc
@@*/
-CCTK_INT8
+CCTK_INT
SpaceMask_GetTypeBits(char* type_name)
{
int i;
@@ -371,7 +371,7 @@ SpaceMask_GetTypeBits(char* type_name)
@enddesc
@@*/
-CCTK_INT8
+CCTK_INT
SpaceMask_GetStateBits(char* type_name, char* state_name)
{
SpaceMask_Type* type;
@@ -407,10 +407,10 @@ SpaceMask_GetStateBits(char* type_name, char* state_name)
@@*/
void
-SpaceMask_SetState(CCTK_INT8* mask, int point, char* type_name, char* state)
+SpaceMask_SetState(CCTK_INT* mask, int point, char* type_name, char* state)
{
- CCTK_INT8 type_bits;
- CCTK_INT8 state_bits;
+ CCTK_INT type_bits;
+ CCTK_INT state_bits;
type_bits = SpaceMask_GetTypeBits(type_name);
state_bits = SpaceMask_GetStateBits(type_name, state);
@@ -429,10 +429,10 @@ SpaceMask_SetState(CCTK_INT8* mask, int point, char* type_name, char* state)
@@*/
int
-SpaceMask_CheckState(CCTK_INT8* mask, int point, char* type_name, char* state)
+SpaceMask_CheckState(CCTK_INT* mask, int point, char* type_name, char* state)
{
- CCTK_INT8 type_bits;
- CCTK_INT8 state_bits;
+ CCTK_INT type_bits;
+ CCTK_INT state_bits;
type_bits = SpaceMask_GetTypeBits(type_name);
state_bits = SpaceMask_GetStateBits(type_name, state);
@@ -455,7 +455,7 @@ CCTK_FCALL CCTK_FNAME(SpaceMask_RegisterType)(int* ierr, char* type_name,
*/
void
-CCTK_FCALL CCTK_FNAME(SpaceMask_GetTypeBits)(CCTK_INT8* type_bits,
+CCTK_FCALL CCTK_FNAME(SpaceMask_GetTypeBits)(CCTK_INT* type_bits,
ONE_FORTSTRING_ARG)
{
ONE_FORTSTRING_CREATE(type_name)
@@ -466,7 +466,7 @@ CCTK_FCALL CCTK_FNAME(SpaceMask_GetTypeBits)(CCTK_INT8* type_bits,
}
void
-CCTK_FCALL CCTK_FNAME(SpaceMask_GetStateBits)(CCTK_INT8* state_bits,
+CCTK_FCALL CCTK_FNAME(SpaceMask_GetStateBits)(CCTK_INT* state_bits,
TWO_FORTSTRING_ARG)
{
@@ -476,7 +476,7 @@ CCTK_FCALL CCTK_FNAME(SpaceMask_GetStateBits)(CCTK_INT8* state_bits,
}
void
-CCTK_FCALL CCTK_FNAME(SpaceMask_SetState)(CCTK_INT8* mask,
+CCTK_FCALL CCTK_FNAME(SpaceMask_SetState)(CCTK_INT* mask,
CCTK_INT* point, TWO_FORTSTRING_ARG)
{
TWO_FORTSTRING_CREATE(type_name, state)
@@ -486,7 +486,7 @@ CCTK_FCALL CCTK_FNAME(SpaceMask_SetState)(CCTK_INT8* mask,
void
CCTK_FCALL CCTK_FNAME(SpaceMask_CheckState)(int* retval,
- CCTK_INT8* mask,
+ CCTK_INT* mask,
CCTK_INT* point,
TWO_FORTSTRING_ARG)
{
diff --git a/src/SpaceMask.h b/src/SpaceMask.h
index bbcecdf..143574a 100644
--- a/src/SpaceMask.h
+++ b/src/SpaceMask.h
@@ -25,10 +25,10 @@ extern "C"
int SpaceMask_RegisterType(char*, int, char**);
int SpaceMask_AppendStatesToType(char*, int, char**);
-void SpaceMask_SetState(CCTK_INT8*, int, char*, char*);
-int SpaceMask_CheckState(CCTK_INT8*, int, char*, char*);
-CCTK_INT8 SpaceMask_GetTypeBits(char*);
-CCTK_INT8 SpaceMask_GetStateBits(char*, char*);
+void SpaceMask_SetState(CCTK_INT*, int, char*, char*);
+int SpaceMask_CheckState(CCTK_INT*, int, char*, char*);
+CCTK_INT SpaceMask_GetTypeBits(char*);
+CCTK_INT SpaceMask_GetStateBits(char*, char*);
#ifdef __cplusplus
}
@@ -45,14 +45,14 @@ CCTK_INT8 SpaceMask_GetStateBits(char*, char*);
typedef struct
{
char* name;
- CCTK_INT8 bitmask;
+ CCTK_INT bitmask;
} SpaceMask_State;
typedef struct
{
char* name;
int nstates;
- CCTK_INT8 bitmask;
+ CCTK_INT bitmask;
SpaceMask_State** state_list;
} SpaceMask_Type;