From 0d07ac21bf7db6765b83ea1bc88f9f4f05d63af7 Mon Sep 17 00:00:00 2001 From: sbrandt Date: Mon, 18 Jun 2012 17:48:27 +0000 Subject: Changes for ticket #768 Change per thorn -DTHORN_IS_xxx to a per thorn -I bindings/include/xxx git-svn-id: http://svn.cactuscode.org/flesh/trunk@4839 17b73243-c579-4c4c-a9d2-2d5706c11dac --- src/include/cctk.h | 385 ------------------------------------------------ src/include/cctk_core.h | 382 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 382 insertions(+), 385 deletions(-) delete mode 100644 src/include/cctk.h create mode 100644 src/include/cctk_core.h (limited to 'src/include') diff --git a/src/include/cctk.h b/src/include/cctk.h deleted file mode 100644 index f47c0a39..00000000 --- a/src/include/cctk.h +++ /dev/null @@ -1,385 +0,0 @@ -/*@@ - @header cctk.h - @date Tue Jan 26 17:29:34 1999 - @author Tom Goodale - @desc - Main include file for the CCTK. - All thorns should include this. - @enddesc - @version $Header$ - @@*/ - -#ifndef _CCTK_H_ -#define _CCTK_H_ 1 - -/* Grab the main configuration info. */ -#include "cctk_Config.h" - -/* Define which thorn the file is in */ -#include "definethisthorn.h" - -/* Include the constants */ -#include "cctk_Constants.h" - -/* Define some stuff */ - -#ifdef FCODE - -#include "cctk_Faces.h" -#include "cctk_Interp.h" -#include "cctk_Loop.h" -#include "cctk_WarnLevel.h" - -/* Include definitions provided by capabilities */ -#include "cctk_Capabilities.h" - -#define CCTK_PRINTSEPARATOR\ - print '("--------------------------------------------------------------------------------")' - -#define _CCTK_FARGUMENTS \ -cctk_dim,cctk_gsh,cctk_lsh,cctk_lbnd,cctk_ubnd,cctk_lssh,cctk_from,cctk_to,\ -cctk_bbox,cctk_delta_time,cctk_time,cctk_delta_space,cctk_origin_space,\ -cctk_levfac,cctk_levoff,cctk_levoffdenom,cctk_timefac,cctk_convlevel,\ -cctk_convfac,cctk_nghostzones,cctk_iteration,cctkGH,\ -cctk_lsh1,cctk_lsh2,cctk_lsh3 - -#define _DECLARE_CCTK_ARGUMENTS _DECLARE_CCTK_FARGUMENTS -#define _DECLARE_CCTK_FARGUMENTS &&\ - CCTK_DECLARE(INTEGER,cctk_dim,)&&\ - CCTK_DECLARE(INTEGER,cctk_gsh,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_lsh,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_lbnd,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_ubnd,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_lssh,(CCTK_NSTAGGER*cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_from,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_to,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_bbox,(2*cctk_dim))&&\ - CCTK_DECLARE(CCTK_REAL,cctk_delta_time,)&&\ - CCTK_DECLARE(CCTK_REAL,cctk_time,)&&\ - CCTK_DECLARE(CCTK_REAL,cctk_delta_space,(cctk_dim))&&\ - CCTK_DECLARE(CCTK_REAL,cctk_origin_space,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_levfac,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_levoff,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_levoffdenom,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_timefac,)&&\ - CCTK_DECLARE(INTEGER,cctk_convlevel,)&&\ - CCTK_DECLARE(INTEGER,cctk_convfac,)&&\ - CCTK_DECLARE(INTEGER,cctk_nghostzones,(cctk_dim))&&\ - CCTK_DECLARE(INTEGER,cctk_iteration,)&&\ - CCTK_DECLARE(CCTK_POINTER,cctkGH,)&&\ - CCTK_DECLARE(INTEGER,cctk_lsh1,)&&\ - CCTK_DECLARE(INTEGER,cctk_lsh2,)&&\ - CCTK_DECLARE(INTEGER,cctk_lsh3,)&& - -#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FORTRANFILE__,CCTK_THORNSTRING,b) - -#define CCTK_CoordRegisterSystem(a,b,c) CCTKi_CoordRegisterSystem(a,b,CCTK_THORNSTRING,c) - -/* John Shalf says that the operator .ne. needs to be enclosed by - spaces, because ANSI C preprocessors otherwise interpret the - character sequence ".0" as preprocessor token */ -#define CCTK_EQUALS(a,b) (CCTK_Equals(a,b) .ne. 0) - -#define CCTK_PASS_FTOF CCTK_FARGUMENTS - -#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space(x)+cctk_delta_space(x)/cctk_levfac(x)*cctk_levoff(x)/cctk_levoffdenom(x)) -#define CCTK_DELTA_SPACE(x) (cctk_delta_space(x)/cctk_levfac(x)) -#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) -/* The "stagger index" stag is zero-based (0,1,...), the direction dim - is one-based in Fortran (1,2,3,...) */ -#define CCTK_LSSH(stag,dim) cctk_lssh(CCTK_LSSH_IDX(stag,dim)) -#define CCTK_LSSH_IDX(stag,dim) (1+(stag)+CCTK_NSTAGGER*((dim)-1)) - -#ifdef F90CODE - -#define _DECLARE_CCTK_FUNCTIONS \ - external CCTK_PointerTo &&\ - CCTK_POINTER CCTK_PointerTo &&\ - interface &&\ - integer function CCTK_Equals (arg1, arg2) &&\ - implicit none &&\ - CCTK_POINTER_TO_CONST arg1 &&\ - character(*) arg2 &&\ - end function CCTK_Equals &&\ - integer function CCTK_MyProc (cctkGH) &&\ - implicit none &&\ - CCTK_POINTER_TO_CONST cctkGH &&\ - end function CCTK_MyProc &&\ - integer function CCTK_nProcs (cctkGH) &&\ - implicit none &&\ - CCTK_POINTER_TO_CONST cctkGH &&\ - end function CCTK_nProcs &&\ - integer function CCTK_IsThornActive (name) &&\ - implicit none &&\ - character(*) name &&\ - end function CCTK_IsThornActive &&\ - CCTK_POINTER function CCTK_NullPointer () &&\ - implicit none &&\ - end function CCTK_NullPointer &&\ - end interface && - -#else /* ! F90CODE */ - -#define _DECLARE_CCTK_FUNCTIONS \ - integer CCTK_Equals, CCTK_MyProc, CCTK_nProcs, CCTK_IsThornActive &&\ - external CCTK_Equals, CCTK_MyProc, CCTK_nProcs, CCTK_IsThornActive &&\ - CCTK_POINTER CCTK_PointerTo, CCTK_NullPointer &&\ - external CCTK_PointerTo, CCTK_NullPointer && - -#endif /* ! F90CODE */ - -#endif /*FCODE*/ - -#ifdef CCODE - -/* get the definition of ptrdiff_t */ -#include - -#include "cGH.h" - -#include "cctk_ActiveThorns.h" -#include "cctk_Banner.h" -#include "cctk_Cache.h" -#include "cctk_Coord.h" -#include "cctk_Comm.h" -#include "cctk_CommandLine.h" -#include "cctk_Complex.h" -#include "cctk_DebugDefines.h" -#include "cctk_Faces.h" -#include "cctk_File.h" -#include "cctk_Flesh.h" -#include "cctk_FortranString.h" -#include "cctk_Functions.h" -#include "cctk_GHExtensions.h" -#include "cctk_Groups.h" -#include "cctk_GroupsOnGH.h" -#include "cctk_Interp.h" -#include "cctk_IO.h" -#include "cctk_IOMethods.h" -#include "cctk_Loop.h" -#include "cctk_Main.h" -#include "cctk_Malloc.h" -#include "cctk_Misc.h" -#include "cctk_Parameter.h" -#include "cctk_Reduction.h" -#include "cctk_Stagger.h" -#include "cctk_Sync.h" -#include "cctk_Timers.h" -#include "cctk_Termination.h" -#include "cctk_WarnLevel.h" - -/* Include prototypes for scheduled functions */ -#include "cctk_ScheduleFunctions.h" - -/* Include prototypes for scheduled functions */ -#include "cctk_ScheduleFunctions.h" - -/* Include definitions provided by capabilities */ -#include "cctk_Capabilities.h" - - - -/* - * Routines to compute the linear index of a grid funtion element from - * its i,j,k indices - */ - -#ifdef CCTK_DEBUG - -/* - * For CCTK_DEBUG, call the external C routines defined in - * DebugDefines.c - */ - -# define CCTK_GFINDEX0D(cctkGH) CCTK_GFIndex0D(cctkGH) -# define CCTK_GFINDEX1D(cctkGH,i) CCTK_GFIndex1D(cctkGH,i) -# define CCTK_GFINDEX2D(cctkGH,i,j) CCTK_GFIndex2D(cctkGH,i,j) -# define CCTK_GFINDEX3D(cctkGH,i,j,k) CCTK_GFIndex3D(cctkGH,i,j,k) -# define CCTK_GFINDEX4D(cctkGH,i,j,k,l) CCTK_GFIndex4D(cctkGH,i,j,k,l) - -# define CCTK_VECTGFINDEX0D(cctkGH,n) CCTK_VectGFIndex0D(cctkGH,n) -# define CCTK_VECTGFINDEX1D(cctkGH,i,n) CCTK_VectGFIndex1D(cctkGH,i,n) -# define CCTK_VECTGFINDEX2D(cctkGH,i,j,n) CCTK_VectGFIndex2D(cctkGH,i,j,n) -# define CCTK_VECTGFINDEX3D(cctkGH,i,j,k,n) CCTK_VectGFIndex3D(cctkGH,i,j,k,n) -# define CCTK_VECTGFINDEX4D(cctkGH,i,j,k,l,n) CCTK_VectGFIndex4D(cctkGH,i,j,k,l,n) - -#else - -/* - * Without CCTK_DEBUG, define the calculations directly - */ - -static inline int CCTK_GFINDEX0D (const cGH *restrict cctkGH) -{ - return 0; -} - -static inline int CCTK_GFINDEX1D (const cGH *restrict cctkGH, - int i) -{ - return i; -} - -static inline int CCTK_GFINDEX2D (const cGH *restrict cctkGH, - int i, int j) -{ - return i + cctkGH->cctk_lsh[0] * j; -} - -static inline int CCTK_GFINDEX3D (const cGH *restrict cctkGH, - int i, int j, int k) -{ - return (i + cctkGH->cctk_lsh[0] * - (j + cctkGH->cctk_lsh[1] * k)); -} - -static inline int CCTK_GFINDEX4D (const cGH *restrict cctkGH, - int i, int j, int k, int l) -{ - return (i + cctkGH->cctk_lsh[0] * - (j + cctkGH->cctk_lsh[1] * - (k + cctkGH->cctk_lsh[2] * l))); -} - -static inline int CCTK_VECTGFINDEX0D (const cGH *restrict cctkGH, - int n) -{ - return n; -} - -static inline int CCTK_VECTGFINDEX1D (const cGH *restrict cctkGH, - int i, int n) -{ - return i + cctkGH->cctk_lsh[0] * n; -} - -static inline int CCTK_VECTGFINDEX2D (const cGH *restrict cctkGH, - int i, int j, int n) -{ - return (i + cctkGH->cctk_lsh[0] * - (j + cctkGH->cctk_lsh[1] * n)); -} - -static inline int CCTK_VECTGFINDEX3D (const cGH *restrict cctkGH, - int i, int j, int k, int n) -{ - return (i + cctkGH->cctk_lsh[0] * - (j + cctkGH->cctk_lsh[1] * - (k + cctkGH->cctk_lsh[2] * n))); -} - -static inline int CCTK_VECTGFINDEX4D (const cGH *restrict cctkGH, - int i, int j, int k, int l, int n) -{ - return (i + cctkGH->cctk_lsh[0] * - (j + cctkGH->cctk_lsh[1] * - (k + cctkGH->cctk_lsh[2] * - (l + cctkGH->cctk_lsh[3] * n)))); -} - -#endif - - - - -#define CCTK_PRINTSEPARATOR \ - printf("--------------------------------------------------------------------------------\n"); - -#define _DECLARE_CCTK_ARGUMENTS _DECLARE_CCTK_CARGUMENTS -#define _DECLARE_CCTK_CARGUMENTS \ - CCTK_DECLARE_INIT(ptrdiff_t,cctki_dummy_int,0);\ - CCTK_DECLARE_INIT(int const,cctk_dim,cctkGH->cctk_dim);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_gsh,cctkGH->cctk_gsh);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_lsh,cctkGH->cctk_lsh);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_lbnd,cctkGH->cctk_lbnd);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_ubnd,cctkGH->cctk_ubnd);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_lssh,cctkGH->cctk_lssh);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_from,cctkGH->cctk_from);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_to,cctkGH->cctk_to);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_bbox,cctkGH->cctk_bbox);\ - CCTK_DECLARE_INIT(CCTK_REAL const,cctk_delta_time,cctkGH->cctk_delta_time);\ - CCTK_DECLARE_INIT(CCTK_REAL const,cctk_time,cctkGH->cctk_time);\ - CCTK_DECLARE_INIT(CCTK_REAL const *restrict const,cctk_delta_space,cctkGH->cctk_delta_space);\ - CCTK_DECLARE_INIT(CCTK_REAL const *restrict const,cctk_origin_space,cctkGH->cctk_origin_space);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_levfac,cctkGH->cctk_levfac);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_levoff,cctkGH->cctk_levoff);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_levoffdenom,cctkGH->cctk_levoffdenom);\ - CCTK_DECLARE_INIT(int const,cctk_timefac,cctkGH->cctk_timefac);\ - CCTK_DECLARE_INIT(int const,cctk_convlevel,cctkGH->cctk_convlevel);\ - CCTK_DECLARE_INIT(int const,cctk_convfac,cctkGH->cctk_convfac);\ - CCTK_DECLARE_INIT(int const *restrict const,cctk_nghostzones,cctkGH->cctk_nghostzones);\ - CCTK_DECLARE_INIT(int const,cctk_iteration,cctkGH->cctk_iteration);\ - -#define _INITIALISE_CCTK_C2F -#define _DECLARE_CCTK_C2F -#define _PASS_CCTK_C2F(xGH) &((xGH)->cctk_dim),\ - (xGH)->cctk_gsh,(xGH)->cctk_lsh,\ - (xGH)->cctk_lbnd,(xGH)->cctk_ubnd,\ - (xGH)->cctk_lssh,\ - (xGH)->cctk_from,(xGH)->cctk_to,\ - (xGH)->cctk_bbox,\ - &((xGH)->cctk_delta_time), &((xGH)->cctk_time),\ - (xGH)->cctk_delta_space, (xGH)->cctk_origin_space,\ - (xGH)->cctk_levfac,\ - (xGH)->cctk_levoff,\ - (xGH)->cctk_levoffdenom,\ - &((xGH)->cctk_timefac),\ - &((xGH)->cctk_convlevel),\ - &((xGH)->cctk_convfac),\ - (xGH)->cctk_nghostzones,\ - &((xGH)->cctk_iteration),\ - &(xGH),\ - &(xGH)->cctk_lsh[0],\ - &(xGH)->cctk_lsh[1],\ - &(xGH)->cctk_lsh[2] -#define _CCTK_C2F_PROTO int const *,\ - int const *, int const *,\ - int const *, int const *,\ - int const *,\ - int const *, int const *,\ - int const *,\ - CCTK_REAL const *, CCTK_REAL const *,\ - CCTK_REAL const *, CCTK_REAL const *,\ - int const *,\ - int const *,\ - int const *,\ - int const *,\ - int const *,\ - int const *,\ - int const *,\ - int const *,\ - cGH const *const *,\ - int const *,\ - int const *,\ - int const * - -#define CCTK_EQUALS(a,b) (CCTK_Equals((a),(b))) - -#define CCTK_PASS_CTOC cctkGH - -#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space[x]+cctk_delta_space[x]/cctk_levfac[x]*cctk_levoff[x]/cctk_levoffdenom[x]) -#define CCTK_DELTA_SPACE(x) (cctk_delta_space[x]/cctk_levfac[x]) -#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) -/* The "stagger index" stag is zero-based (0,1,...), the direction dim - is zero-based in C (0,1,2,...) */ -#define CCTK_LSSH(stag,dim) cctk_lssh[CCTK_LSSH_IDX(stag,dim)] -#define CCTK_LSSH_IDX(stag,dim) ((stag)+CCTK_NSTAGGER*(dim)) - -#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FILE__,CCTK_THORNSTRING,b) - -#define CCTK_MALLOC(s) CCTKi_Malloc(s,__LINE__,__FILE__) -#define CCTK_FREE(p) CCTKi_Free(p) - -#endif /*CCODE*/ - -#define CCTK_INFO(a) CCTK_Info(CCTK_THORNSTRING,(a)) -#define CCTK_PARAMWARN(a) CCTK_ParamWarn(CCTK_THORNSTRING,(a)) - -/* -#define CCTK_MAKESTRING(x) CCTK_REALSTRING(x) -#define CCTK_REALSTRING(x) #x -#define CCTK_WARN(a,b) CCTK_Warn(a,CCTK_MAKESTRING(CCTK_THORN),b,__LINE__,__FILE__) -*/ - - -#endif diff --git a/src/include/cctk_core.h b/src/include/cctk_core.h new file mode 100644 index 00000000..7620e823 --- /dev/null +++ b/src/include/cctk_core.h @@ -0,0 +1,382 @@ +/*@@ + @header cctk.h + @date Tue Jan 26 17:29:34 1999 + @author Tom Goodale + @desc + Main include file for the CCTK. + All thorns should include this. + @enddesc + @version $Header$ + @@*/ + +#ifndef _CCTK_CORE_H_ +#define _CCTK_CORE_H_ 1 + +/* Grab the main configuration info. */ +#include "cctk_Config.h" + +/* Define which thorn the file is in */ +#include "definethisthorn.h" + +/* Include the constants */ +#include "cctk_Constants.h" + +/* Define some stuff */ + +#ifdef FCODE + +#include "cctk_Faces.h" +#include "cctk_Interp.h" +#include "cctk_Loop.h" +#include "cctk_WarnLevel.h" + +#define CCTK_PRINTSEPARATOR\ + print '("--------------------------------------------------------------------------------")' + +#define _CCTK_FARGUMENTS \ +cctk_dim,cctk_gsh,cctk_lsh,cctk_lbnd,cctk_ubnd,cctk_lssh,cctk_from,cctk_to,\ +cctk_bbox,cctk_delta_time,cctk_time,cctk_delta_space,cctk_origin_space,\ +cctk_levfac,cctk_levoff,cctk_levoffdenom,cctk_timefac,cctk_convlevel,\ +cctk_convfac,cctk_nghostzones,cctk_iteration,cctkGH,\ +cctk_lsh1,cctk_lsh2,cctk_lsh3 + +#define _DECLARE_CCTK_ARGUMENTS _DECLARE_CCTK_FARGUMENTS +#define _DECLARE_CCTK_FARGUMENTS &&\ + CCTK_DECLARE(INTEGER,cctk_dim,)&&\ + CCTK_DECLARE(INTEGER,cctk_gsh,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_lsh,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_lbnd,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_ubnd,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_lssh,(CCTK_NSTAGGER*cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_from,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_to,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_bbox,(2*cctk_dim))&&\ + CCTK_DECLARE(CCTK_REAL,cctk_delta_time,)&&\ + CCTK_DECLARE(CCTK_REAL,cctk_time,)&&\ + CCTK_DECLARE(CCTK_REAL,cctk_delta_space,(cctk_dim))&&\ + CCTK_DECLARE(CCTK_REAL,cctk_origin_space,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_levfac,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_levoff,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_levoffdenom,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_timefac,)&&\ + CCTK_DECLARE(INTEGER,cctk_convlevel,)&&\ + CCTK_DECLARE(INTEGER,cctk_convfac,)&&\ + CCTK_DECLARE(INTEGER,cctk_nghostzones,(cctk_dim))&&\ + CCTK_DECLARE(INTEGER,cctk_iteration,)&&\ + CCTK_DECLARE(CCTK_POINTER,cctkGH,)&&\ + CCTK_DECLARE(INTEGER,cctk_lsh1,)&&\ + CCTK_DECLARE(INTEGER,cctk_lsh2,)&&\ + CCTK_DECLARE(INTEGER,cctk_lsh3,)&& + +#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FORTRANFILE__,CCTK_THORNSTRING,b) + +#define CCTK_CoordRegisterSystem(a,b,c) CCTKi_CoordRegisterSystem(a,b,CCTK_THORNSTRING,c) + +/* John Shalf says that the operator .ne. needs to be enclosed by + spaces, because ANSI C preprocessors otherwise interpret the + character sequence ".0" as preprocessor token */ +#define CCTK_EQUALS(a,b) (CCTK_Equals(a,b) .ne. 0) + +#define CCTK_PASS_FTOF CCTK_FARGUMENTS + +#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space(x)+cctk_delta_space(x)/cctk_levfac(x)*cctk_levoff(x)/cctk_levoffdenom(x)) +#define CCTK_DELTA_SPACE(x) (cctk_delta_space(x)/cctk_levfac(x)) +#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) +/* The "stagger index" stag is zero-based (0,1,...), the direction dim + is one-based in Fortran (1,2,3,...) */ +#define CCTK_LSSH(stag,dim) cctk_lssh(CCTK_LSSH_IDX(stag,dim)) +#define CCTK_LSSH_IDX(stag,dim) (1+(stag)+CCTK_NSTAGGER*((dim)-1)) + +#ifdef F90CODE + +#define _DECLARE_CCTK_FUNCTIONS \ + external CCTK_PointerTo &&\ + CCTK_POINTER CCTK_PointerTo &&\ + interface &&\ + integer function CCTK_Equals (arg1, arg2) &&\ + implicit none &&\ + CCTK_POINTER_TO_CONST arg1 &&\ + character(*) arg2 &&\ + end function CCTK_Equals &&\ + integer function CCTK_MyProc (cctkGH) &&\ + implicit none &&\ + CCTK_POINTER_TO_CONST cctkGH &&\ + end function CCTK_MyProc &&\ + integer function CCTK_nProcs (cctkGH) &&\ + implicit none &&\ + CCTK_POINTER_TO_CONST cctkGH &&\ + end function CCTK_nProcs &&\ + integer function CCTK_IsThornActive (name) &&\ + implicit none &&\ + character(*) name &&\ + end function CCTK_IsThornActive &&\ + CCTK_POINTER function CCTK_NullPointer () &&\ + implicit none &&\ + end function CCTK_NullPointer &&\ + end interface && + +#else /* ! F90CODE */ + +#define _DECLARE_CCTK_FUNCTIONS \ + integer CCTK_Equals, CCTK_MyProc, CCTK_nProcs, CCTK_IsThornActive &&\ + external CCTK_Equals, CCTK_MyProc, CCTK_nProcs, CCTK_IsThornActive &&\ + CCTK_POINTER CCTK_PointerTo, CCTK_NullPointer &&\ + external CCTK_PointerTo, CCTK_NullPointer && + +#endif /* ! F90CODE */ + +#endif /*FCODE*/ + +#ifdef CCODE + +/* get the definition of ptrdiff_t */ +#include + +#include "cGH.h" + +#include "cctk_ActiveThorns.h" +#include "cctk_Banner.h" +#include "cctk_Cache.h" +#include "cctk_Coord.h" +#include "cctk_Comm.h" +#include "cctk_CommandLine.h" +#include "cctk_Complex.h" +#include "cctk_DebugDefines.h" +#include "cctk_Faces.h" +#include "cctk_File.h" +#include "cctk_Flesh.h" +#include "cctk_FortranString.h" +#include "cctk_Functions.h" +#include "cctk_GHExtensions.h" +#include "cctk_Groups.h" +#include "cctk_GroupsOnGH.h" +#include "cctk_Interp.h" +#include "cctk_IO.h" +#include "cctk_IOMethods.h" +#include "cctk_Loop.h" +#include "cctk_Main.h" +#include "cctk_Malloc.h" +#include "cctk_Misc.h" +#include "cctk_Parameter.h" +#include "cctk_Reduction.h" +#include "cctk_Stagger.h" +#include "cctk_Sync.h" +#include "cctk_Timers.h" +#include "cctk_Termination.h" +#include "cctk_WarnLevel.h" + +/* Include prototypes for scheduled functions */ +#include "cctk_ScheduleFunctions.h" + +/* Include prototypes for scheduled functions */ +#include "cctk_ScheduleFunctions.h" + +/* Include definitions provided by capabilities */ +#include "cctk_Capabilities.h" + + + +/* + * Routines to compute the linear index of a grid funtion element from + * its i,j,k indices + */ + +#ifdef CCTK_DEBUG + +/* + * For CCTK_DEBUG, call the external C routines defined in + * DebugDefines.c + */ + +# define CCTK_GFINDEX0D(cctkGH) CCTK_GFIndex0D(cctkGH) +# define CCTK_GFINDEX1D(cctkGH,i) CCTK_GFIndex1D(cctkGH,i) +# define CCTK_GFINDEX2D(cctkGH,i,j) CCTK_GFIndex2D(cctkGH,i,j) +# define CCTK_GFINDEX3D(cctkGH,i,j,k) CCTK_GFIndex3D(cctkGH,i,j,k) +# define CCTK_GFINDEX4D(cctkGH,i,j,k,l) CCTK_GFIndex4D(cctkGH,i,j,k,l) + +# define CCTK_VECTGFINDEX0D(cctkGH,n) CCTK_VectGFIndex0D(cctkGH,n) +# define CCTK_VECTGFINDEX1D(cctkGH,i,n) CCTK_VectGFIndex1D(cctkGH,i,n) +# define CCTK_VECTGFINDEX2D(cctkGH,i,j,n) CCTK_VectGFIndex2D(cctkGH,i,j,n) +# define CCTK_VECTGFINDEX3D(cctkGH,i,j,k,n) CCTK_VectGFIndex3D(cctkGH,i,j,k,n) +# define CCTK_VECTGFINDEX4D(cctkGH,i,j,k,l,n) CCTK_VectGFIndex4D(cctkGH,i,j,k,l,n) + +#else + +/* + * Without CCTK_DEBUG, define the calculations directly + */ + +static inline int CCTK_GFINDEX0D (const cGH *restrict cctkGH) +{ + return 0; +} + +static inline int CCTK_GFINDEX1D (const cGH *restrict cctkGH, + int i) +{ + return i; +} + +static inline int CCTK_GFINDEX2D (const cGH *restrict cctkGH, + int i, int j) +{ + return i + cctkGH->cctk_lsh[0] * j; +} + +static inline int CCTK_GFINDEX3D (const cGH *restrict cctkGH, + int i, int j, int k) +{ + return (i + cctkGH->cctk_lsh[0] * + (j + cctkGH->cctk_lsh[1] * k)); +} + +static inline int CCTK_GFINDEX4D (const cGH *restrict cctkGH, + int i, int j, int k, int l) +{ + return (i + cctkGH->cctk_lsh[0] * + (j + cctkGH->cctk_lsh[1] * + (k + cctkGH->cctk_lsh[2] * l))); +} + +static inline int CCTK_VECTGFINDEX0D (const cGH *restrict cctkGH, + int n) +{ + return n; +} + +static inline int CCTK_VECTGFINDEX1D (const cGH *restrict cctkGH, + int i, int n) +{ + return i + cctkGH->cctk_lsh[0] * n; +} + +static inline int CCTK_VECTGFINDEX2D (const cGH *restrict cctkGH, + int i, int j, int n) +{ + return (i + cctkGH->cctk_lsh[0] * + (j + cctkGH->cctk_lsh[1] * n)); +} + +static inline int CCTK_VECTGFINDEX3D (const cGH *restrict cctkGH, + int i, int j, int k, int n) +{ + return (i + cctkGH->cctk_lsh[0] * + (j + cctkGH->cctk_lsh[1] * + (k + cctkGH->cctk_lsh[2] * n))); +} + +static inline int CCTK_VECTGFINDEX4D (const cGH *restrict cctkGH, + int i, int j, int k, int l, int n) +{ + return (i + cctkGH->cctk_lsh[0] * + (j + cctkGH->cctk_lsh[1] * + (k + cctkGH->cctk_lsh[2] * + (l + cctkGH->cctk_lsh[3] * n)))); +} + +#endif + + + + +#define CCTK_PRINTSEPARATOR \ + printf("--------------------------------------------------------------------------------\n"); + +#define _DECLARE_CCTK_ARGUMENTS _DECLARE_CCTK_CARGUMENTS +#define _DECLARE_CCTK_CARGUMENTS \ + CCTK_DECLARE_INIT(ptrdiff_t,cctki_dummy_int,0);\ + CCTK_DECLARE_INIT(int const,cctk_dim,cctkGH->cctk_dim);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_gsh,cctkGH->cctk_gsh);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_lsh,cctkGH->cctk_lsh);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_lbnd,cctkGH->cctk_lbnd);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_ubnd,cctkGH->cctk_ubnd);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_lssh,cctkGH->cctk_lssh);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_from,cctkGH->cctk_from);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_to,cctkGH->cctk_to);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_bbox,cctkGH->cctk_bbox);\ + CCTK_DECLARE_INIT(CCTK_REAL const,cctk_delta_time,cctkGH->cctk_delta_time);\ + CCTK_DECLARE_INIT(CCTK_REAL const,cctk_time,cctkGH->cctk_time);\ + CCTK_DECLARE_INIT(CCTK_REAL const *restrict const,cctk_delta_space,cctkGH->cctk_delta_space);\ + CCTK_DECLARE_INIT(CCTK_REAL const *restrict const,cctk_origin_space,cctkGH->cctk_origin_space);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_levfac,cctkGH->cctk_levfac);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_levoff,cctkGH->cctk_levoff);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_levoffdenom,cctkGH->cctk_levoffdenom);\ + CCTK_DECLARE_INIT(int const,cctk_timefac,cctkGH->cctk_timefac);\ + CCTK_DECLARE_INIT(int const,cctk_convlevel,cctkGH->cctk_convlevel);\ + CCTK_DECLARE_INIT(int const,cctk_convfac,cctkGH->cctk_convfac);\ + CCTK_DECLARE_INIT(int const *restrict const,cctk_nghostzones,cctkGH->cctk_nghostzones);\ + CCTK_DECLARE_INIT(int const,cctk_iteration,cctkGH->cctk_iteration);\ + +#define _INITIALISE_CCTK_C2F +#define _DECLARE_CCTK_C2F +#define _PASS_CCTK_C2F(xGH) &((xGH)->cctk_dim),\ + (xGH)->cctk_gsh,(xGH)->cctk_lsh,\ + (xGH)->cctk_lbnd,(xGH)->cctk_ubnd,\ + (xGH)->cctk_lssh,\ + (xGH)->cctk_from,(xGH)->cctk_to,\ + (xGH)->cctk_bbox,\ + &((xGH)->cctk_delta_time), &((xGH)->cctk_time),\ + (xGH)->cctk_delta_space, (xGH)->cctk_origin_space,\ + (xGH)->cctk_levfac,\ + (xGH)->cctk_levoff,\ + (xGH)->cctk_levoffdenom,\ + &((xGH)->cctk_timefac),\ + &((xGH)->cctk_convlevel),\ + &((xGH)->cctk_convfac),\ + (xGH)->cctk_nghostzones,\ + &((xGH)->cctk_iteration),\ + &(xGH),\ + &(xGH)->cctk_lsh[0],\ + &(xGH)->cctk_lsh[1],\ + &(xGH)->cctk_lsh[2] +#define _CCTK_C2F_PROTO int const *,\ + int const *, int const *,\ + int const *, int const *,\ + int const *,\ + int const *, int const *,\ + int const *,\ + CCTK_REAL const *, CCTK_REAL const *,\ + CCTK_REAL const *, CCTK_REAL const *,\ + int const *,\ + int const *,\ + int const *,\ + int const *,\ + int const *,\ + int const *,\ + int const *,\ + int const *,\ + cGH const *const *,\ + int const *,\ + int const *,\ + int const * + +#define CCTK_EQUALS(a,b) (CCTK_Equals((a),(b))) + +#define CCTK_PASS_CTOC cctkGH + +#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space[x]+cctk_delta_space[x]/cctk_levfac[x]*cctk_levoff[x]/cctk_levoffdenom[x]) +#define CCTK_DELTA_SPACE(x) (cctk_delta_space[x]/cctk_levfac[x]) +#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) +/* The "stagger index" stag is zero-based (0,1,...), the direction dim + is zero-based in C (0,1,2,...) */ +#define CCTK_LSSH(stag,dim) cctk_lssh[CCTK_LSSH_IDX(stag,dim)] +#define CCTK_LSSH_IDX(stag,dim) ((stag)+CCTK_NSTAGGER*(dim)) + +#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FILE__,CCTK_THORNSTRING,b) + +#define CCTK_MALLOC(s) CCTKi_Malloc(s,__LINE__,__FILE__) +#define CCTK_FREE(p) CCTKi_Free(p) + +#endif /*CCODE*/ + +#define CCTK_INFO(a) CCTK_Info(CCTK_THORNSTRING,(a)) +#define CCTK_PARAMWARN(a) CCTK_ParamWarn(CCTK_THORNSTRING,(a)) + +/* +#define CCTK_MAKESTRING(x) CCTK_REALSTRING(x) +#define CCTK_REALSTRING(x) #x +#define CCTK_WARN(a,b) CCTK_Warn(a,CCTK_MAKESTRING(CCTK_THORN),b,__LINE__,__FILE__) +*/ + + +#endif -- cgit v1.2.3