aboutsummaryrefslogtreecommitdiff
path: root/Examples/SimpleWaveCaKernel
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/SimpleWaveCaKernel')
-rw-r--r--Examples/SimpleWaveCaKernel/cakernel.ccl21
-rw-r--r--Examples/SimpleWaveCaKernel/configuration.ccl6
-rw-r--r--Examples/SimpleWaveCaKernel/interface.ccl40
-rw-r--r--Examples/SimpleWaveCaKernel/param.ccl60
-rw-r--r--Examples/SimpleWaveCaKernel/schedule.ccl52
-rw-r--r--Examples/SimpleWaveCaKernel/src/Boundaries.cc41
-rw-r--r--Examples/SimpleWaveCaKernel/src/Differencing.h72
-rw-r--r--Examples/SimpleWaveCaKernel/src/RegisterMoL.cc18
-rw-r--r--Examples/SimpleWaveCaKernel/src/RegisterSymmetries.cc29
-rw-r--r--Examples/SimpleWaveCaKernel/src/Startup.cc10
-rw-r--r--Examples/SimpleWaveCaKernel/src/initial_sine.code17
-rw-r--r--Examples/SimpleWaveCaKernel/src/make.code.defn3
12 files changed, 369 insertions, 0 deletions
diff --git a/Examples/SimpleWaveCaKernel/cakernel.ccl b/Examples/SimpleWaveCaKernel/cakernel.ccl
new file mode 100644
index 0000000..3926a58
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/cakernel.ccl
@@ -0,0 +1,21 @@
+CCTK_CUDA_KERNEL initial_sine TYPE=gpu_cuda/3dblock STENCIL=0,0,0,0,0,0 TILE=16,16,16 SHARECODE=yes
+{
+ CCTK_CUDA_KERNEL_VARIABLE cached=yes intent=out
+ {
+ phi
+ }
+ "phi"
+
+ CCTK_CUDA_KERNEL_VARIABLE cached=yes intent=out
+ {
+ pi
+ }
+ "pi"
+
+ CCTK_CUDA_KERNEL_VARIABLE cached=yes intent=in
+ {
+ x
+ }
+ "x"
+}
+
diff --git a/Examples/SimpleWaveCaKernel/configuration.ccl b/Examples/SimpleWaveCaKernel/configuration.ccl
new file mode 100644
index 0000000..0a66ec2
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/configuration.ccl
@@ -0,0 +1,6 @@
+# File produced by Kranc
+
+REQUIRES GenericFD
+OPTIONAL LoopControl
+{
+}
diff --git a/Examples/SimpleWaveCaKernel/interface.ccl b/Examples/SimpleWaveCaKernel/interface.ccl
new file mode 100644
index 0000000..0dad3ec
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/interface.ccl
@@ -0,0 +1,40 @@
+# File produced by Kranc
+
+implements: SimpleWaveCaKernel
+
+inherits: Grid GenericFD Boundary
+
+
+
+USES INCLUDE: GenericFD.h
+USES INCLUDE: Symmetry.h
+USES INCLUDE: sbp_calc_coeffs.h
+USES INCLUDE: Boundary.h
+USES INCLUDE: loopcontrol.h
+
+CCTK_INT FUNCTION MoLRegisterEvolved(CCTK_INT IN EvolvedIndex, CCTK_INT IN RHSIndex)
+USES FUNCTION MoLRegisterEvolved
+
+SUBROUTINE Diff_coeff(CCTK_POINTER_TO_CONST IN cctkGH, CCTK_INT IN dir, CCTK_INT IN nsize, CCTK_INT OUT ARRAY imin, CCTK_INT OUT ARRAY imax, CCTK_REAL OUT ARRAY q, CCTK_INT IN table_handle)
+USES FUNCTION Diff_coeff
+
+CCTK_INT FUNCTION MultiPatch_GetMap(CCTK_POINTER_TO_CONST IN cctkGH)
+USES FUNCTION MultiPatch_GetMap
+
+CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, CCTK_STRING IN group_name, CCTK_STRING IN bc_name)
+USES FUNCTION Boundary_SelectGroupForBC
+
+CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, CCTK_STRING IN var_name, CCTK_STRING IN bc_name)
+USES FUNCTION Boundary_SelectVarForBC
+
+public:
+CCTK_REAL phi_g type=GF timelevels=1 tags=''
+{
+ phi
+} "phi_g"
+
+public:
+CCTK_REAL pi_g type=GF timelevels=1 tags=''
+{
+ pi
+} "pi_g"
diff --git a/Examples/SimpleWaveCaKernel/param.ccl b/Examples/SimpleWaveCaKernel/param.ccl
new file mode 100644
index 0000000..0350b70
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/param.ccl
@@ -0,0 +1,60 @@
+# File produced by Kranc
+
+
+shares: GenericFD
+
+
+
+shares: MethodOfLines
+
+USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
+
+restricted:
+CCTK_INT verbose "verbose" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT SimpleWaveCaKernel_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars STEERABLE=RECOVER
+{
+ 0:0 :: "Number of evolved variables used by this thorn"
+} 0
+
+restricted:
+CCTK_INT SimpleWaveCaKernel_MaxNumArrayEvolvedVars "Number of Array evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_ArrayEvolved_Vars STEERABLE=RECOVER
+{
+ 0:0 :: "Number of Array evolved variables used by this thorn"
+} 0
+
+restricted:
+CCTK_INT timelevels "Number of active timelevels" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 3
+
+restricted:
+CCTK_INT rhs_timelevels "Number of active RHS timelevels" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 1
+
+restricted:
+CCTK_INT other_timelevels "Number of active timelevels for non-evolved grid functions" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 1
+
+restricted:
+CCTK_INT initial_sine_calc_every "initial_sine_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT initial_sine_calc_offset "initial_sine_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
diff --git a/Examples/SimpleWaveCaKernel/schedule.ccl b/Examples/SimpleWaveCaKernel/schedule.ccl
new file mode 100644
index 0000000..f28fa89
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/schedule.ccl
@@ -0,0 +1,52 @@
+# File produced by Kranc
+
+
+if (other_timelevels == 1)
+{
+ STORAGE: phi_g[1]
+}
+
+if (other_timelevels == 1)
+{
+ STORAGE: pi_g[1]
+}
+
+schedule SimpleWaveCaKernel_Startup at STARTUP
+{
+ LANG: C
+ OPTIONS: meta
+} "create banner"
+
+schedule SimpleWaveCaKernel_RegisterVars in MoL_Register
+{
+ LANG: C
+ OPTIONS: meta
+} "Register Variables for MoL"
+
+schedule SimpleWaveCaKernel_RegisterSymmetries in SymmetryRegister
+{
+ LANG: C
+ OPTIONS: meta
+} "register symmetries"
+
+schedule initial_sine AT INITIAL
+{
+ LANG: C
+} "initial_sine"
+
+schedule SimpleWaveCaKernel_SelectBoundConds in MoL_PostStep
+{
+ LANG: C
+ OPTIONS: level
+} "select boundary conditions"
+
+schedule SimpleWaveCaKernel_CheckBoundaries at BASEGRID
+{
+ LANG: C
+ OPTIONS: meta
+} "check boundaries treatment"
+
+schedule group ApplyBCs as SimpleWaveCaKernel_ApplyBCs in MoL_PostStep after SimpleWaveCaKernel_SelectBoundConds
+{
+ # no language specified
+} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/Examples/SimpleWaveCaKernel/src/Boundaries.cc b/Examples/SimpleWaveCaKernel/src/Boundaries.cc
new file mode 100644
index 0000000..0417d10
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/Boundaries.cc
@@ -0,0 +1,41 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+#include "cctk_Faces.h"
+#include "util_Table.h"
+#include "Symmetry.h"
+
+
+/* the boundary treatment is split into 3 steps: */
+/* 1. excision */
+/* 2. symmetries */
+/* 3. "other" boundary conditions, e.g. radiative */
+
+/* to simplify scheduling and testing, the 3 steps */
+/* are currently applied in separate functions */
+
+
+extern "C" void SimpleWaveCaKernel_CheckBoundaries(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ return;
+}
+
+extern "C" void SimpleWaveCaKernel_SelectBoundConds(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ CCTK_INT ierr = 0;
+ return;
+}
+
+
+
+/* template for entries in parameter file:
+*/
+
diff --git a/Examples/SimpleWaveCaKernel/src/Differencing.h b/Examples/SimpleWaveCaKernel/src/Differencing.h
new file mode 100644
index 0000000..ef21b0b
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/Differencing.h
@@ -0,0 +1,72 @@
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd1(u) ((-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx)
+#else
+# define PDstandard2nd1(u) (PDstandard2nd1_impl(u,p1o2dx,cdj,cdk))
+static CCTK_REAL PDstandard2nd1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx;
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd2(u) ((-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy)
+#else
+# define PDstandard2nd2(u) (PDstandard2nd2_impl(u,p1o2dy,cdj,cdk))
+static CCTK_REAL PDstandard2nd2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy;
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd3(u) ((-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz)
+#else
+# define PDstandard2nd3(u) (PDstandard2nd3_impl(u,p1o2dz,cdj,cdk))
+static CCTK_REAL PDstandard2nd3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz;
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd11(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2)
+#else
+# define PDstandard2nd11(u) (PDstandard2nd11_impl(u,p1odx2,cdj,cdk))
+static CCTK_REAL PDstandard2nd11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2;
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd22(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2)
+#else
+# define PDstandard2nd22(u) (PDstandard2nd22_impl(u,p1ody2,cdj,cdk))
+static CCTK_REAL PDstandard2nd22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2;
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandard2nd33(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2)
+#else
+# define PDstandard2nd33(u) (PDstandard2nd33_impl(u,p1odz2,cdj,cdk))
+static CCTK_REAL PDstandard2nd33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL PDstandard2nd33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2;
+}
+#endif
+
diff --git a/Examples/SimpleWaveCaKernel/src/RegisterMoL.cc b/Examples/SimpleWaveCaKernel/src/RegisterMoL.cc
new file mode 100644
index 0000000..3e35f8d
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/RegisterMoL.cc
@@ -0,0 +1,18 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+
+extern "C" void SimpleWaveCaKernel_RegisterVars(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ CCTK_INT ierr = 0;
+
+ /* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
+ return;
+}
diff --git a/Examples/SimpleWaveCaKernel/src/RegisterSymmetries.cc b/Examples/SimpleWaveCaKernel/src/RegisterSymmetries.cc
new file mode 100644
index 0000000..128eb50
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/RegisterSymmetries.cc
@@ -0,0 +1,29 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+#include "Symmetry.h"
+
+extern "C" void SimpleWaveCaKernel_RegisterSymmetries(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* array holding symmetry definitions */
+ CCTK_INT sym[3];
+
+
+ /* Register symmetries of grid functions */
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "SimpleWaveCaKernel::phi");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "SimpleWaveCaKernel::pi");
+
+}
diff --git a/Examples/SimpleWaveCaKernel/src/Startup.cc b/Examples/SimpleWaveCaKernel/src/Startup.cc
new file mode 100644
index 0000000..2761c8b
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/Startup.cc
@@ -0,0 +1,10 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+
+extern "C" int SimpleWaveCaKernel_Startup(void)
+{
+ const char * banner = "SimpleWaveCaKernel";
+ CCTK_RegisterBanner(banner);
+ return 0;
+}
diff --git a/Examples/SimpleWaveCaKernel/src/initial_sine.code b/Examples/SimpleWaveCaKernel/src/initial_sine.code
new file mode 100644
index 0000000..1376fa1
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/initial_sine.code
@@ -0,0 +1,17 @@
+CAKERNEL_initial_sine_Declare_Begin_s
+ CAKERNEL_initial_sine_Declare_Cached_Variables_s
+ CAKERNEL_initial_sine_Declare_Flow_Variables_s
+ CAKERNEL_initial_sine_Limit_Threads_To_LSH_Begin_s
+ CAKERNEL_initial_sine_Fetch_Data_To_Cache_s
+ CAKERNEL_initial_sine_Computations_Begin_s
+ CAKERNEL_initial_sine_Iterate_Local_Tile_s
+ CAKERNEL_initial_sine_Fetch_Front_Tile_To_Cache_s
+ CAKERNEL_initial_sine_Limit_Threads_To_Compute_Begin_s
+ // Kernel code
+ CAKERNEL_initial_sine_Limit_Threads_To_Compute_End_s
+
+ CAKERNEL_initial_sine_Computations_End_s
+
+ CAKERNEL_initial_sine_Limit_Threads_To_LSH_End_s
+
+CAKERNEL_initial_sine_Declare_End_s
diff --git a/Examples/SimpleWaveCaKernel/src/make.code.defn b/Examples/SimpleWaveCaKernel/src/make.code.defn
new file mode 100644
index 0000000..5e729f5
--- /dev/null
+++ b/Examples/SimpleWaveCaKernel/src/make.code.defn
@@ -0,0 +1,3 @@
+# File produced by Kranc
+
+SRCS = Startup.cc RegisterMoL.cc RegisterSymmetries.cc Boundaries.cc