Merge lp:~schnetter/pocl/pocl into lp:~pocl/pocl/trunk

Proposed by Erik Schnetter
Status: Merged
Merged at revision: 461
Proposed branch: lp:~schnetter/pocl/pocl
Merge into: lp:~pocl/pocl/trunk
Diff against target: 11103 lines (+9300/-209)
112 files modified
configure.ac (+4/-1)
doc/binary_format.txt (+1/-1)
doc/envs.txt (+1/-1)
doc/handling_loops.txt (+1/-1)
examples/EinsteinToolkit/EinsteinToolkit.c (+1380/-0)
examples/EinsteinToolkit/ML_BSSN_CL_RHS1.cl (+3477/-0)
examples/EinsteinToolkit/ML_BSSN_CL_RHS2.cl (+3877/-0)
examples/EinsteinToolkit/Makefile.am (+31/-0)
examples/Makefile.am (+1/-5)
examples/example1/Makefile.am (+1/-1)
examples/example2/Makefile.am (+1/-1)
examples/example2a/Makefile.am (+1/-1)
examples/kernel/Makefile.am (+1/-1)
examples/scalarwave/Makefile.am (+1/-1)
examples/trig/Makefile.am (+1/-1)
fix-include/CL/cl_platform.h (+24/-7)
fix-include/OpenCL/cl.h (+1/-0)
fix-include/OpenCL/cl_platform.h (+1/-0)
lib/CL/Makefile.am (+2/-2)
lib/CL/clBuildProgram.c (+1/-1)
lib/CL/clCreateBuffer.c (+2/-2)
lib/CL/clCreateCommandQueue.c (+1/-1)
lib/CL/clCreateContext.c (+2/-2)
lib/CL/clCreateContextFromType.c (+2/-2)
lib/CL/clCreateFromGLTexture2D.c (+1/-1)
lib/CL/clCreateFromGLTexture3D.c (+1/-1)
lib/CL/clCreateImage.c (+2/-2)
lib/CL/clCreateImage2D.c (+2/-2)
lib/CL/clCreateImage3D.c (+1/-1)
lib/CL/clCreateKernel.c (+3/-3)
lib/CL/clCreateKernelsInProgram.c (+1/-1)
lib/CL/clCreateProgramWithBinary.c (+1/-1)
lib/CL/clCreateProgramWithSource.c (+1/-1)
lib/CL/clCreateSampler.c (+1/-1)
lib/CL/clCreateSubBuffer.c (+1/-1)
lib/CL/clCreateUserEvent.c (+1/-1)
lib/CL/clEnqueueBarrier.c (+1/-1)
lib/CL/clEnqueueCopyBuffer.c (+4/-4)
lib/CL/clEnqueueCopyBufferRect.c (+7/-7)
lib/CL/clEnqueueCopyBufferToImage.c (+1/-1)
lib/CL/clEnqueueCopyImage.c (+1/-1)
lib/CL/clEnqueueCopyImageToBuffer.c (+1/-1)
lib/CL/clEnqueueMapBuffer.c (+4/-4)
lib/CL/clEnqueueMapImage.c (+1/-1)
lib/CL/clEnqueueMarker.c (+2/-2)
lib/CL/clEnqueueNDRangeKernel.c (+6/-6)
lib/CL/clEnqueueNativeKernel.c (+1/-1)
lib/CL/clEnqueueReadBuffer.c (+6/-6)
lib/CL/clEnqueueReadBufferRect.c (+5/-5)
lib/CL/clEnqueueReadImage.c (+1/-1)
lib/CL/clEnqueueTask.c (+2/-2)
lib/CL/clEnqueueUnmapMemObject.c (+3/-3)
lib/CL/clEnqueueWaitForEvents.c (+1/-1)
lib/CL/clEnqueueWriteBuffer.c (+6/-6)
lib/CL/clEnqueueWriteBufferRect.c (+4/-4)
lib/CL/clEnqueueWriteImage.c (+1/-1)
lib/CL/clFinish.c (+7/-7)
lib/CL/clFlush.c (+2/-2)
lib/CL/clGetCommandQueueInfo.c (+21/-6)
lib/CL/clGetContextInfo.c (+1/-1)
lib/CL/clGetDeviceIDs.c (+1/-1)
lib/CL/clGetDeviceInfo.c (+2/-2)
lib/CL/clGetEventInfo.c (+1/-1)
lib/CL/clGetEventProfilingInfo.c (+1/-1)
lib/CL/clGetExtensionFunctionAddress.c (+3/-3)
lib/CL/clGetImageInfo.c (+1/-1)
lib/CL/clGetKernelInfo.c (+3/-1)
lib/CL/clGetKernelWorkGroupInfo.c (+2/-2)
lib/CL/clGetMemObjectInfo.c (+3/-1)
lib/CL/clGetPlatformIDs.c (+1/-1)
lib/CL/clGetPlatformInfo.c (+1/-1)
lib/CL/clGetProgramBuildInfo.c (+1/-1)
lib/CL/clGetProgramInfo.c (+1/-1)
lib/CL/clGetSamplerInfo.c (+1/-1)
lib/CL/clGetSupportedImageFormats.c (+1/-1)
lib/CL/clIcdGetPlatformIDsKHR.c (+2/-2)
lib/CL/clReleaseCommandQueue.c (+2/-2)
lib/CL/clReleaseContext.c (+2/-2)
lib/CL/clReleaseDevice.c (+1/-1)
lib/CL/clReleaseEvent.c (+2/-2)
lib/CL/clReleaseKernel.c (+2/-2)
lib/CL/clReleaseMemObject.c (+1/-1)
lib/CL/clReleaseProgram.c (+1/-1)
lib/CL/clReleaseSampler.c (+1/-1)
lib/CL/clRetainCommandQueue.c (+1/-1)
lib/CL/clRetainContext.c (+1/-1)
lib/CL/clRetainDevice.c (+1/-1)
lib/CL/clRetainEvent.c (+1/-1)
lib/CL/clRetainKernel.c (+1/-1)
lib/CL/clRetainMemObject.c (+1/-1)
lib/CL/clRetainProgram.c (+1/-1)
lib/CL/clRetainSampler.c (+1/-1)
lib/CL/clSetEventCallback.c (+1/-1)
lib/CL/clSetKernelArg.c (+1/-1)
lib/CL/clSetMemObjectDestructorCallback.c (+1/-1)
lib/CL/clSetUserEventStatus.c (+1/-1)
lib/CL/clUnloadCompiler.c (+1/-1)
lib/CL/clWaitForEvents.c (+2/-2)
lib/CL/devices/basic/basic.h (+1/-1)
lib/CL/devices/pthread/pocl-pthread.h (+1/-1)
lib/CL/pocl_cl.h (+26/-14)
lib/kernel/x86_64/Makefile.am (+2/-2)
lib/kernel/x86_64/fmax.cl (+123/-0)
lib/kernel/x86_64/fmin.cl (+123/-0)
lib/llvmopencl/Makefile.am (+1/-1)
lib/poclu/Makefile.am (+1/-1)
scripts/pocl-build.in (+14/-5)
scripts/pocl-kernel.in (+5/-1)
scripts/pocl-standalone.in (+19/-7)
scripts/pocl-workgroup.in (+10/-4)
tests/runtime/Makefile.am (+1/-1)
tests/workgroup/Makefile.am (+1/-1)
To merge this branch: bzr merge lp:~schnetter/pocl/pocl
Reviewer Review Type Date Requested Status
Erik Schnetter Needs Resubmitting
Pekka Jääskeläinen Needs Fixing
Review via email: mp+138622@code.launchpad.net

Description of the change

Make things work on OSX

Configure:
Capture, and later use TARGET

Include:
Add fix-include directory named OpenCL
Add several missing #defines for API and EXT versions
Use fix-include directory in all makefiles

Libraries:
Add PO prefix for run-time function names via a macro
Do not add PO prefix for OSX (which thus does not support ICD)

Scripts:
Hide linker warning about mis-matching architectures

To post a comment you must log in.
Revision history for this message
Pekka Jääskeläinen (pekka-jaaskelainen) wrote :

clEnqueueCopyImageToBuffer.c and scripts/pocl-build.in have bzr conflict markers.

Why do you use TARGET instead of HOST_CPU in the pthread driver? I think HOST_CPU is more descriptive as pthread/basic are supposed to be always driver for the same CPU as the host (and share memory with it).

What is the POCL_ALIAS_OPENCL_SYMBOL change? Is the attribute 'alias' portable or is it gcc-only? Can you add a comment to the file where it's defined of its purpose?

About the comment in scripts/pocl-workgroup.in where you wonder the bitcode triplet incompatibility warning when linking bitcodes: This is a regression if the warning is again there. There used to be a detection of what is the host cpu's target triplet and it used it instead of the hard coded one when building the host cpu's kernel library. E.g. x86_64 was then build with your OSx triplet. It was just because of this, to make the warning go away -- and who knows if a kernel lib compiled with an inaccurate triplet has other more serious implications later on.

review: Needs Fixing
lp:~schnetter/pocl/pocl updated
453. By Pekka Jääskeläinen

Template-generated static web pages. Generate by running 'make'.
You need python and Mako templates (0.7.3) installed.

454. By Pekka Jääskeläinen

Forgot the Makefile.

455. By Pekka Jääskeläinen

Added a 'publish' rule. You need a source forge account to upload
the web pages to get them visible at pocl.sourceforge.net.

456. By Pekka Jääskeläinen

Added a link to the info on how to publish the web pages in SF.

457. By Pekka Jääskeläinen

Events were not recorded in case the profiling queue was not enabled.

The proactive memory allocation strategy was too aggressive leading to
overflows in the allocated memory region size and thus memory allocation
failutres.

Now the MatrixMultiplication case of the AMD SDK works also in the benchmark
mode with larger matrix inputs.

Revision history for this message
Erik Schnetter (schnetter) wrote :

I don't see the conflict markers in my checkout; there is nothing in the files, bzr status reports nothing, and neither does bzr resolve. How do I see these conflict markers?

HOST_CPU is just the CPU, i.e. the first part of the triple. TARGET contains the full triple. Passing just the CPU to clang via the -target flag fails in the pocl-* scripts. The failure mode is that the assembler reports errors about unrecognised pseudo-ops. (The assembler code looks fine, though.) Passing the full triple works fine. I assume I could use HOST instead of TARGET, but TARGET seemed cleaner. Making this work required the changes to the build scripts, as well as to the pthread driver where TARGET is stored as well. The comment there says "target triple", which is TARGET, so I put this there instead of HOST_CPU. I could change TARGET to HOST, but HOST_CPU alone doesn't work for me.

OSX doesn't use the ELF binary format, and doesn't support aliases. (It supports apparently "weakref" aliases, but these require static symbols, so this doesn't help.) I googled, and the consensus seems to be that aliases just don't work on OSX. OSX doesn't really support ICD anyway (at least I get an error about it when I enable it, and the /etc/OpenCL directory doesn't exist), and building without ICD didn't seem to require the PO... names. I will add more comments there.

I have no idea where the warning is coming from. As far I can see, all files are compiled with the respective -target flag. What is more puzzling is that HOST_CPU (and TARGET_CPU) are x86_64, and the target triple is x86_64-apple-darwin12.2.1 (I even specified this explicitly to configure), yet the architecture reported in the warning is x86_64-macos10.8.2. I don't know where this architecture specification is coming from. Given that we don't care about the GUI, I think that the "macos" architecture triple is wrong, and the "darwin" one is right. I'd be glad if you could point me to further information to track this down.

lp:~schnetter/pocl/pocl updated
458. By Pekka Jääskeläinen

Added the first AMD APP SDK test case (MatrixMultiplication) to the
test suite (enabled only for ocl-icd build). Removed some 'untested'
warnings (now tested with this test suite case).

Automatic disabling of test cases that do not yet work when built with ocl-icd.
Thus, make check should now pass successfully also with the ocl-icd build.

Revision history for this message
Pekka Jääskeläinen (pekka-jaaskelainen) wrote :

Did you merge from lp:pocl before sending the request? The above "Diff against target"-link says (has conflicts), so maybe it's the Launchpad branch differ that creates those (search from this page with <<<) when it compares against lp:pocl which is not merged to your branch. Thus, you should merge from lp:pocl first.

For tracking the bitcode linkage warning, use the llvm-dis to disassemble the bitcode files. You can also check the bitcode intermediate files in the temp dir (export POCL_LEAVE_TEMP_DIRS=1; export POCL_TEMP_DIR=tmp; mkdir tmp).

The triplet of the bitcode is printed in the header of the disassembly. First check if the kernel library has the correct triplet by llvm-dis one of the modules in the kernel build dir:

E.g.,
lib/kernel/x86_64/llvm-dis vload.o -o -|grep trip
target triple = "x86_64"

So, it seems it's nowadays not a triple but just the CPU part, like you say. I didn't know that is legal in the bitcode.

Are the "pseudo ops" related to your operating system's assembler variant then? I.e., LLVM outputs the asm in some default format which is not supported by darwin. How the kernel libs can be built with the CPU only in the triple and the kernel itself (pocl-*) cannot, I do not understand. The Makefile.am of the kernel build dir also just uses -target x86_64 as you can see.

You can debug the pocl-* scripts by adding set -x to the beginning of each of the scripts so it outputs the commands to the shell. Then you can spot the command that produce bitcodes, and you could find the one that for some reason uses x86_64-macos10.8.2 as a triple.

Revision history for this message
Erik Schnetter (schnetter) wrote :
Download full text (3.7 KiB)

Apparently I merged before the latest changes to the trunk. (Didn't think of this.) Will merge again.

Yes, I used llvm-dis to look at the architecture. Indeed the architecture is only the CPU type, not the full target triple, even if I use the full target triple in clang's -target option. This is with llvm 3.1. This is also how I notice that the translated kernels have x86_64-macos* as architecture in the bitcode files. I don't know why; as far as I can see, these bitcode files are all build via the scripts (are they not?), and I used "set -x" in all the scripts to see all the build commands that are executed.

It turns out the problem was caused by the option "-target x86_64" in the kernel/x86_64 directory. This target architecture is incompatible with x86_64-apple-darwin12.2.1. Changing this to "-target @TARGET@" resolves the issue.

The assembler errors I mention before look like the ones below. They appear when C code is compiled to object code, which happens apparently only for descriptor.so. They do not appear when compiling OpenCL code (-x cl) or when emitting llvm code (-emit-llvm). These errors appear for -target x86_64, but do not appear for -target x86_64-apple-darwin12.2.1.

{{{
+ /Users/eschnett/llvm/bin/clang -target x86_64 -c -o tmp/pthread/dot_product/descriptor.so.o -x c -
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:2:2: warning: ignoring directive for now
        .type _num_args,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:8:2: warning: ignoring directive for now
        .size _num_args, 4
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:10:2: warning: ignoring directive for now
        .type _arg_is_pointer,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:17:2: warning: ignoring directive for now
        .size _arg_is_pointer, 12
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:19:2: warning: ignoring directive for now
        .type _arg_is_local,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:20:2: warning: ignoring directive for now
        .bss
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:25:2: warning: ignoring directive for now
        .size _arg_is_local, 12
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:27:2: warning: ignoring directive for now
        .type _arg_is_image,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:32:2: warning: ignoring directive for now
        .size _arg_is_image, 12
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:34:2: warning: ignoring directive for now
        .type _arg_is_sampler,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:39:2: warning: ignoring directive for now
        .size _arg_is_sampler, 12
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:41:2: warning: ignoring directive for now
        .type _reqd_wg_size,@object
        ^
/var/folders/gl/zvl8d6415vsbkd50nnll95k40000gs/T/--hXKTAU.s:46:2: warning: ignoring directive for now
        .size _reqd_wg_size, 12
...

Read more...

Revision history for this message
Erik Schnetter (schnetter) wrote :

I merged from trunk, and removed the special handling of the llvm warnings.

The code still uses TARGET as target triple instead of HOST_CPU.

review: Needs Resubmitting
Revision history for this message
Pekka Jääskeläinen (pekka-jaaskelainen) wrote :

You do not need the '-target' switch at all in this command:

/Users/eschnett/llvm/bin/clang -target x86_64 -c -o tmp/pthread/dot_product/descriptor.so.o -x c -

The descriptor.so should be always built with the default native flags. The descriptor.so.o is a kludge for getting the info of the kernels via the dlopen() interface. It is separate from the rest of the kernel build process. Can you try if it goes away if you remove the -target altogether?

The proper way for getting the kernel meta info to the OpenCL host APIs could be to use bitcode loading directly. E.g., the non-script version Kalle has been implementing can just call the LLVM pass that produces that info directly from the pocl host code.

Revision history for this message
Kalle Raiskila (kraiskil) wrote :

On 07.12.2012 20:07, Erik Schnetter wrote:
> It turns out the problem was caused by the option "-target x86_64" in
> the kernel/x86_64 directory. This target architecture is incompatible
> with x86_64-apple-darwin12.2.1. Changing this to "-target @TARGET@"
> resolves the issue.

This is the crux of the matter. Why do we have a x86_64 kernel directory
(and all the other platforms too) if we don't use them?
Perhaps we should switch back to compiling these with the HOST/TARGET
flags, and not using a separate lib/kernel/HOST directory for the
basic/pthread devices?

Also note that 'clang -target @TARGET@' will break ARM :)
Could we have a specific, explicit value set in configure
(OCL_NATIVE_DEVICE_TARGET, or something of the sort)

This preferral of HOST over TARGET is, I think, mostly due to the
autoconf lingo. HOST is where the program will run, TARGET is the binary
format the program (if it is a compiler) will produce. In the case of
pocl, when HOST!=TARGET we need a separate device driver anyways (i.e.
TCE, SPU), and the TARGET and HOST variables are ignored. This then
means that it is easy to get confused, and I am happy if it would get
cleared up. So please add extensive comments in the code!

thanks,
kalle

Revision history for this message
Pekka Jääskeläinen (pekka-jaaskelainen) wrote :

> This is the crux of the matter. Why do we have a x86_64 kernel directory
> (and all the other platforms too) if we don't use them?

The idea is to be able to have hand-optimized implementations of selected
kernel APIs. This is used only for x86_64 at the moment, so the rest are useless.
It should be used whenever a x86_64* is the target.

> Perhaps we should switch back to compiling these with the HOST/TARGET
> flags, and not using a separate lib/kernel/HOST directory for the
> basic/pthread devices?

OK for the default, but the hand optimized versions should be picked in case available.

> Also note that 'clang -target @TARGET@' will break ARM :)
> Could we have a specific, explicit value set in configure
> (OCL_NATIVE_DEVICE_TARGET, or something of the sort)

Fine by me, better be explicit.

> This preferral of HOST over TARGET is, I think, mostly due to the
> autoconf lingo. HOST is where the program will run, TARGET is the binary
> format the program (if it is a compiler) will produce. In the case of
> pocl, when HOST!=TARGET we need a separate device driver anyways (i.e.
> TCE, SPU), and the TARGET and HOST variables are ignored. This then
> means that it is easy to get confused, and I am happy if it would get
> cleared up. So please add extensive comments in the code!

Yes, this is currently confusing and affects only the HOST=DEVICE case (and thus the basic&pthread CPU drivers). For HOST!=DEVICE we need to have an explicit configure setting (to setup the default device list) anyways.

Revision history for this message
Erik Schnetter (schnetter) wrote :

On Fri, Dec 7, 2012 at 4:59 PM, Pekka Jääskeläinen <
<email address hidden>> wrote:

> > This is the crux of the matter. Why do we have a x86_64 kernel directory
> > (and all the other platforms too) if we don't use them?
>
> The idea is to be able to have hand-optimized implementations of selected
> kernel APIs. This is used only for x86_64 at the moment, so the rest are
> useless.
> It should be used whenever a x86_64* is the target.

I introduced these optimisations for llvm-3.0, which was really bad with
vectorisation. 3.1 is now much better, and I hear that 3.2 has improved in
this respect even more. My hope is to be able to omit these manual
optimisations, and if this is not possible, to have them performed by llvm
instead of implementing them manually.

-erik

--
Erik Schnetter <email address hidden>
http://www.perimeterinstitute.ca/personal/eschnetter/

Revision history for this message
Erik Schnetter (schnetter) wrote :

This version is the best I could come up with. I wasn't able to use
just x86_64 as target triple; this trips the assembler on OSX. I
therefore have to use HOST (or TARGET, but I'm using HOST now) instead
of HOST_CPU in various places.

review: Needs Resubmitting
lp:~schnetter/pocl/pocl updated
459. By Pekka Jääskeläinen

Test the different alternatives a bit more thoroughly. Doesn't pass at the
moment.

Revision history for this message
Pekka Jääskeläinen (pekka-jaaskelainen) wrote :

It seems to break ICD-enabled (the default) build on x86_64:

In file included from ../../fix-include/CL/cl.h:35,
                 from ../../include/CL/opencl.h:42,
                 from /home/visit0r/local/stow/ocl-icd/include/ocl_icd.h:32,
                 from pocl_icd.h:41,
                 from pocl_cl.h:36,
                 from clGetPlatformIDs.c:26:
../../include/CL/cl.h:1173:2: warning: #warning CL_USE_DEPRECATED_OPENCL_1_0_APIS is defined. These APIs are unsupported and untested in OpenCL 1.1!
In file included from ../../fix-include/CL/cl_gl.h:35,
                 from ../../include/CL/opencl.h:43,
                 from /home/visit0r/local/stow/ocl-icd/include/ocl_icd.h:32,
                 from pocl_icd.h:41,
                 from pocl_cl.h:36,
                 from clGetPlatformIDs.c:26:
../../include/CL/cl_gl.h:107:2: warning: #warning CL_USE_DEPRECATED_OPENCL_1_1_APIS is defined. These APIs are unsupported and untested in OpenCL 1.2!
clGetPlatformIDs.c:30: error: ‘POclGetPlatformIDs’ undeclared here (not in a function)
clGetPlatformIDs.c:30: error: ‘POclGetPlatformInfo’ undeclared here (not in a function)
...

Etc. for all functions.

review: Needs Fixing
Revision history for this message
Erik Schnetter (schnetter) wrote :

I simplified the logic: On OSX, symbol aliasing is not used (and ICD is disabled). On all other architectures, the logic is unchanged.

review: Needs Resubmitting
Revision history for this message
Erik Schnetter (schnetter) wrote :

I tested this on Ubuntu. I configured and built pocl both with and without ICD, and both build fine. However, I managed to run only the version without ICD, since there is a problem with the other OpenCL installations on this machine.

lp:~schnetter/pocl/pocl updated
460. By Pekka Jääskeläinen

run_all_tests now tests both with and without ocl-icd and using the
pthread device driver only. Thus it now passes and should stay that
way. You can pass configure options to it if you want to, e.g., install
the finally built pocl:

Example of use:

tools/scripts/run_all_tests --prefix=/usr/local/stow/pocl && bzr commit -m "My new modifications that passed all the tests."

461. By Pekka Jääskeläinen

Merge from Erik.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'configure.ac'
2--- configure.ac 2012-12-07 16:38:01 +0000
3+++ configure.ac 2012-12-09 00:26:22 +0000
4@@ -587,10 +587,10 @@
5 ;;
6 esac
7
8-AC_DEFINE_UNQUOTED([HOST_CPU], "$default_target", [The host CPU type.])
9 AC_DEFINE_UNQUOTED([KERNEL_DIR], "$kernel_dir", [Use the libkernel from lib/kernel/$KERNEL_DIR/])
10
11 AC_SUBST([TARGET], [$target])
12+AC_DEFINE_UNQUOTED([TARGET], "$target", [The target triple.])
13 AC_SUBST([TARGET_CPU], [$target_cpu])
14 AC_ARG_VAR([TARGET_CLANG_FLAGS],
15 [Parameters to for target compilation.])
16@@ -603,7 +603,9 @@
17 [Parameters to llc for code generation in the target.])
18
19 AC_SUBST([HOST], [$host])
20+AC_DEFINE_UNQUOTED([HOST], "$host", [The host triple.])
21 AC_SUBST([HOST_CPU], [$host_cpu])
22+AC_DEFINE_UNQUOTED([HOST_CPU], "$default_target", [The host CPU type.])
23 AC_ARG_VAR([HOST_CLANG_FLAGS],
24 [Parameters to for host compilation.])
25 AC_DEFINE_UNQUOTED([HOST_CLANG_FLAGS],
26@@ -755,6 +757,7 @@
27 examples/Parboil/Makefile
28 examples/ViennaCL/Makefile
29 examples/AMD/Makefile
30+ examples/EinsteinToolkit/Makefile
31 scripts/Makefile
32 tests/Makefile
33 tests/regression/Makefile
34
35=== modified file 'doc/binary_format.txt'
36--- doc/binary_format.txt 2012-05-03 18:37:44 +0000
37+++ doc/binary_format.txt 2012-12-09 00:26:22 +0000
38@@ -16,7 +16,7 @@
39 mailing list.
40
41 We could create a tar, zip or similar archive of the whole temp directory
42-hierarcy. Implementing the queries for binary sizes etc. is
43+hierarchy. Implementing the queries for binary sizes etc. is
44 problematic as they need to build the archive just for the file size
45 check.
46
47
48=== modified file 'doc/envs.txt'
49--- doc/envs.txt 2012-10-24 07:57:51 +0000
50+++ doc/envs.txt 2012-12-09 00:26:22 +0000
51@@ -40,7 +40,7 @@
52
53 POCL_MAX_WORK_GROUP_SIZE
54
55-Forces the maximum WG size returned by the device or kernel work group quries
56+Forces the maximum WG size returned by the device or kernel work group queries
57 to be at most this number.
58
59 POCL_MAX_PTHREAD_COUNT
60
61=== modified file 'doc/handling_loops.txt'
62--- doc/handling_loops.txt 2012-02-21 19:19:30 +0000
63+++ doc/handling_loops.txt 2012-12-09 00:26:22 +0000
64@@ -6,7 +6,7 @@
65 1) loops that contain barriers
66 2) loops that do not contain barriers
67
68-1) Is handled by adding implict barriers before the loop and replicating
69+1) Is handled by adding implicit barriers before the loop and replicating
70 the header and the body separately (Carlos please clarify the details).
71
72 2) Is handled as a single ParallelRegion. The whole loop is replicated.
73
74=== added directory 'examples/EinsteinToolkit'
75=== added file 'examples/EinsteinToolkit/EinsteinToolkit.c'
76--- examples/EinsteinToolkit/EinsteinToolkit.c 1970-01-01 00:00:00 +0000
77+++ examples/EinsteinToolkit/EinsteinToolkit.c 2012-12-09 00:26:22 +0000
78@@ -0,0 +1,1380 @@
79+/* EinsteinToolkit - Evolve the Einstein equations (BSSN formulation) */
80+
81+/* Note: The number of iterations can be modified. It should be
82+ adapted such that the total run time (reported below) is
83+ approximately between 10 and 100 seconds. The number of iterations
84+ does not influence the benchmark result, it only influences the
85+ benchmark's accuracy. Small numbers of iterations lead to
86+ inaccurate results. */
87+int const niters = 100;
88+
89+
90+
91+/* Build options:
92+
93+ Redshift, Apple's OpenCL:
94+ clang -I/System/Library/Frameworks/OpenCL.framework/Headers -L/System/Library/Frameworks/OpenCL.framework/Libraries -o EinsteinToolkit EinsteinToolkit.c -Wl,-framework,OpenCL
95+
96+ Nvidia, AMD's OpenCL:
97+ clang -I/usr/local/AMD-APP-SDK-v2.8-RC-lnx64/include -L /usr/local/AMD-APP-SDK-v2.8-RC-lnx64/lib -o EinsteinToolkit EinsteinToolkit.c -lOpenCL -lm
98+
99+ Nvidia, Intel's OpenCL:
100+ clang -I/usr/local/intel_ocl_sdk_2012_x64/usr/include -L/usr/local/intel_ocl_sdk_2012_x64/usr/lib64 -o EinsteinToolkit EinsteinToolkit.c -lOpenCL
101+
102+ Nvidia, Nvidia's OpenCL:
103+ clang -I/usr/local/cuda-5.0/include -L/usr/local/cuda-5.0/lib64 -o EinsteinToolkit EinsteinToolkit.c -lOpenCL -lm
104+*/
105+
106+
107+
108+/* Run times on various systems:
109+ *
110+ * Redshift, laptop, OSX, Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz:
111+ * Theoretical best: 0.0393519 usec per gpu
112+ * Apple's OpenCL: 0.213103 usec per gpu (with VECTOR_SIZE_I=2)
113+ * pocl: 0.55614 usec per gpu (with THREAD_COUNT_ENV=4)
114+ *
115+ * Nvidia, workstation, Intel(R) Xeon(R) CPU X5675 @ 3.07GHz
116+ * Theoretical best: 0.0230727 usec per gpu
117+ * pocl: 0.267914 usec per gpu
118+*/
119+
120+
121+
122+#include <assert.h>
123+#include <math.h>
124+#include <stdio.h>
125+#include <stdlib.h>
126+#include <sys/time.h>
127+
128+#ifdef __APPLE__
129+# include <OpenCL/opencl.h>
130+#else
131+# include <CL/opencl.h>
132+#endif
133+
134+
135+
136+// Stringify
137+#define XSTR(x) #x
138+#define STR(x) XSTR(x)
139+
140+// Divide while rounding down
141+static inline size_t divdown(size_t const a, size_t const b)
142+{
143+ return a/b;
144+}
145+
146+// Divide while rounding up
147+static inline size_t divup(size_t const a, size_t const b)
148+{
149+ return (a+b-1)/b;
150+}
151+
152+// Round down
153+static inline size_t rounddown(size_t const a, size_t const b)
154+{
155+ return divdown(a, b) * b;
156+}
157+
158+// Round up
159+static inline size_t roundup(size_t const a, size_t const b)
160+{
161+ return divup(a, b) * b;
162+}
163+
164+
165+
166+// Global OpenCL handles
167+cl_platform_id platform_id;
168+cl_device_id device_id;
169+cl_context context;
170+cl_command_queue cmd_queue;
171+
172+
173+
174+// Code generation choices:
175+#define VECTORISE_ALIGNED_ARRAYS 1
176+
177+// Loop traversal choices:
178+#define VECTOR_SIZE_I 1
179+#define VECTOR_SIZE_J 1
180+#define VECTOR_SIZE_K 1
181+#define UNROLL_SIZE_I 1
182+#define UNROLL_SIZE_J 1
183+#define UNROLL_SIZE_K 1
184+#define GROUP_SIZE_I 1
185+#define GROUP_SIZE_J 1
186+#define GROUP_SIZE_K 1
187+#define TILE_SIZE_I 4
188+#define TILE_SIZE_J 4
189+#define TILE_SIZE_K 4
190+
191+
192+
193+// Cactus definitions
194+
195+#define dim 3
196+
197+typedef int CCTK_INT;
198+typedef double CCTK_REAL;
199+
200+
201+
202+typedef struct {
203+ // Doubles first, then ints, to ensure proper alignment
204+ // Coordinates:
205+ double cctk_origin_space[dim];
206+ double cctk_delta_space[dim];
207+ double cctk_time;
208+ double cctk_delta_time;
209+ // Grid structure properties:
210+ int cctk_gsh[dim];
211+ int cctk_lbnd[dim];
212+ int cctk_lsh[dim];
213+ int cctk_ash[dim];
214+ // Loop settings:
215+ int lmin[dim]; // loop region
216+ int lmax[dim];
217+ int imin[dim]; // active region
218+ int imax[dim];
219+} cGH;
220+
221+
222+
223+// Cactus parameters:
224+typedef struct {
225+ CCTK_REAL A_bound_limit;
226+ CCTK_REAL A_bound_scalar;
227+ CCTK_REAL A_bound_speed;
228+ CCTK_REAL alpha_bound_limit;
229+ CCTK_REAL alpha_bound_scalar;
230+ CCTK_REAL alpha_bound_speed;
231+ CCTK_REAL AlphaDriver;
232+ CCTK_REAL At11_bound_limit;
233+ CCTK_REAL At11_bound_scalar;
234+ CCTK_REAL At11_bound_speed;
235+ CCTK_REAL At12_bound_limit;
236+ CCTK_REAL At12_bound_scalar;
237+ CCTK_REAL At12_bound_speed;
238+ CCTK_REAL At13_bound_limit;
239+ CCTK_REAL At13_bound_scalar;
240+ CCTK_REAL At13_bound_speed;
241+ CCTK_REAL At22_bound_limit;
242+ CCTK_REAL At22_bound_scalar;
243+ CCTK_REAL At22_bound_speed;
244+ CCTK_REAL At23_bound_limit;
245+ CCTK_REAL At23_bound_scalar;
246+ CCTK_REAL At23_bound_speed;
247+ CCTK_REAL At33_bound_limit;
248+ CCTK_REAL At33_bound_scalar;
249+ CCTK_REAL At33_bound_speed;
250+ CCTK_REAL B1_bound_limit;
251+ CCTK_REAL B1_bound_scalar;
252+ CCTK_REAL B1_bound_speed;
253+ CCTK_REAL B2_bound_limit;
254+ CCTK_REAL B2_bound_scalar;
255+ CCTK_REAL B2_bound_speed;
256+ CCTK_REAL B3_bound_limit;
257+ CCTK_REAL B3_bound_scalar;
258+ CCTK_REAL B3_bound_speed;
259+ CCTK_REAL beta1_bound_limit;
260+ CCTK_REAL beta1_bound_scalar;
261+ CCTK_REAL beta1_bound_speed;
262+ CCTK_REAL beta2_bound_limit;
263+ CCTK_REAL beta2_bound_scalar;
264+ CCTK_REAL beta2_bound_speed;
265+ CCTK_REAL beta3_bound_limit;
266+ CCTK_REAL beta3_bound_scalar;
267+ CCTK_REAL beta3_bound_speed;
268+ CCTK_REAL BetaDriver;
269+ CCTK_REAL EpsDiss;
270+ CCTK_REAL gt11_bound_limit;
271+ CCTK_REAL gt11_bound_scalar;
272+ CCTK_REAL gt11_bound_speed;
273+ CCTK_REAL gt12_bound_limit;
274+ CCTK_REAL gt12_bound_scalar;
275+ CCTK_REAL gt12_bound_speed;
276+ CCTK_REAL gt13_bound_limit;
277+ CCTK_REAL gt13_bound_scalar;
278+ CCTK_REAL gt13_bound_speed;
279+ CCTK_REAL gt22_bound_limit;
280+ CCTK_REAL gt22_bound_scalar;
281+ CCTK_REAL gt22_bound_speed;
282+ CCTK_REAL gt23_bound_limit;
283+ CCTK_REAL gt23_bound_scalar;
284+ CCTK_REAL gt23_bound_speed;
285+ CCTK_REAL gt33_bound_limit;
286+ CCTK_REAL gt33_bound_scalar;
287+ CCTK_REAL gt33_bound_speed;
288+ CCTK_REAL harmonicF;
289+ CCTK_REAL LapseACoeff;
290+ CCTK_REAL LapseAdvectionCoeff;
291+ CCTK_REAL MinimumLapse;
292+ CCTK_REAL ML_curv_bound_limit;
293+ CCTK_REAL ML_curv_bound_scalar;
294+ CCTK_REAL ML_curv_bound_speed;
295+ CCTK_REAL ML_dtlapse_bound_limit;
296+ CCTK_REAL ML_dtlapse_bound_scalar;
297+ CCTK_REAL ML_dtlapse_bound_speed;
298+ CCTK_REAL ML_dtshift_bound_limit;
299+ CCTK_REAL ML_dtshift_bound_scalar;
300+ CCTK_REAL ML_dtshift_bound_speed;
301+ CCTK_REAL ML_Gamma_bound_limit;
302+ CCTK_REAL ML_Gamma_bound_scalar;
303+ CCTK_REAL ML_Gamma_bound_speed;
304+ CCTK_REAL ML_lapse_bound_limit;
305+ CCTK_REAL ML_lapse_bound_scalar;
306+ CCTK_REAL ML_lapse_bound_speed;
307+ CCTK_REAL ML_log_confac_bound_limit;
308+ CCTK_REAL ML_log_confac_bound_scalar;
309+ CCTK_REAL ML_log_confac_bound_speed;
310+ CCTK_REAL ML_metric_bound_limit;
311+ CCTK_REAL ML_metric_bound_scalar;
312+ CCTK_REAL ML_metric_bound_speed;
313+ CCTK_REAL ML_shift_bound_limit;
314+ CCTK_REAL ML_shift_bound_scalar;
315+ CCTK_REAL ML_shift_bound_speed;
316+ CCTK_REAL ML_trace_curv_bound_limit;
317+ CCTK_REAL ML_trace_curv_bound_scalar;
318+ CCTK_REAL ML_trace_curv_bound_speed;
319+ CCTK_REAL phi_bound_limit;
320+ CCTK_REAL phi_bound_scalar;
321+ CCTK_REAL phi_bound_speed;
322+ CCTK_REAL ShiftAdvectionCoeff;
323+ CCTK_REAL ShiftBCoeff;
324+ CCTK_REAL ShiftGammaCoeff;
325+ CCTK_REAL SpatialBetaDriverRadius;
326+ CCTK_REAL SpatialShiftGammaCoeffRadius;
327+ CCTK_REAL trK_bound_limit;
328+ CCTK_REAL trK_bound_scalar;
329+ CCTK_REAL trK_bound_speed;
330+ CCTK_REAL Xt1_bound_limit;
331+ CCTK_REAL Xt1_bound_scalar;
332+ CCTK_REAL Xt1_bound_speed;
333+ CCTK_REAL Xt2_bound_limit;
334+ CCTK_REAL Xt2_bound_scalar;
335+ CCTK_REAL Xt2_bound_speed;
336+ CCTK_REAL Xt3_bound_limit;
337+ CCTK_REAL Xt3_bound_scalar;
338+ CCTK_REAL Xt3_bound_speed;
339+ CCTK_INT conformalMethod;
340+ CCTK_INT fdOrder;
341+ CCTK_INT harmonicN;
342+ CCTK_INT harmonicShift;
343+ CCTK_INT ML_BSSN_CL_Advect_calc_every;
344+ CCTK_INT ML_BSSN_CL_Advect_calc_offset;
345+ CCTK_INT ML_BSSN_CL_boundary_calc_every;
346+ CCTK_INT ML_BSSN_CL_boundary_calc_offset;
347+ CCTK_INT ML_BSSN_CL_constraints1_calc_every;
348+ CCTK_INT ML_BSSN_CL_constraints1_calc_offset;
349+ CCTK_INT ML_BSSN_CL_constraints2_calc_every;
350+ CCTK_INT ML_BSSN_CL_constraints2_calc_offset;
351+ CCTK_INT ML_BSSN_CL_convertFromADMBase_calc_every;
352+ CCTK_INT ML_BSSN_CL_convertFromADMBase_calc_offset;
353+ CCTK_INT ML_BSSN_CL_convertFromADMBaseGamma_calc_every;
354+ CCTK_INT ML_BSSN_CL_convertFromADMBaseGamma_calc_offset;
355+ CCTK_INT ML_BSSN_CL_convertToADMBase_calc_every;
356+ CCTK_INT ML_BSSN_CL_convertToADMBase_calc_offset;
357+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_every;
358+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_offset;
359+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_every;
360+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_offset;
361+ CCTK_INT ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_every;
362+ CCTK_INT ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_offset;
363+ CCTK_INT ML_BSSN_CL_Dissipation_calc_every;
364+ CCTK_INT ML_BSSN_CL_Dissipation_calc_offset;
365+ CCTK_INT ML_BSSN_CL_enforce_calc_every;
366+ CCTK_INT ML_BSSN_CL_enforce_calc_offset;
367+ CCTK_INT ML_BSSN_CL_InitGamma_calc_every;
368+ CCTK_INT ML_BSSN_CL_InitGamma_calc_offset;
369+ CCTK_INT ML_BSSN_CL_InitRHS_calc_every;
370+ CCTK_INT ML_BSSN_CL_InitRHS_calc_offset;
371+ CCTK_INT ML_BSSN_CL_MaxNumArrayEvolvedVars;
372+ CCTK_INT ML_BSSN_CL_MaxNumEvolvedVars;
373+ CCTK_INT ML_BSSN_CL_Minkowski_calc_every;
374+ CCTK_INT ML_BSSN_CL_Minkowski_calc_offset;
375+ CCTK_INT ML_BSSN_CL_RHS1_calc_every;
376+ CCTK_INT ML_BSSN_CL_RHS1_calc_offset;
377+ CCTK_INT ML_BSSN_CL_RHS2_calc_every;
378+ CCTK_INT ML_BSSN_CL_RHS2_calc_offset;
379+ CCTK_INT ML_BSSN_CL_RHSStaticBoundary_calc_every;
380+ CCTK_INT ML_BSSN_CL_RHSStaticBoundary_calc_offset;
381+ CCTK_INT other_timelevels;
382+ CCTK_INT rhs_timelevels;
383+ CCTK_INT ShiftAlphaPower;
384+ CCTK_INT timelevels;
385+ CCTK_INT verbose;
386+} cctk_parameters_t;
387+
388+
389+
390+typedef struct {
391+ CCTK_REAL* ptr;
392+ cl_mem mem;
393+} ptr_t;
394+
395+typedef struct {
396+ ptr_t x;
397+ ptr_t y;
398+ ptr_t z;
399+ ptr_t r;
400+ ptr_t At11;
401+ ptr_t At11_p;
402+ ptr_t At11_p_p;
403+ ptr_t At12;
404+ ptr_t At12_p;
405+ ptr_t At12_p_p;
406+ ptr_t At13;
407+ ptr_t At13_p;
408+ ptr_t At13_p_p;
409+ ptr_t At22;
410+ ptr_t At22_p;
411+ ptr_t At22_p_p;
412+ ptr_t At23;
413+ ptr_t At23_p;
414+ ptr_t At23_p_p;
415+ ptr_t At33;
416+ ptr_t At33_p;
417+ ptr_t At33_p_p;
418+ ptr_t A;
419+ ptr_t A_p;
420+ ptr_t A_p_p;
421+ ptr_t Arhs;
422+ ptr_t B1;
423+ ptr_t B1_p;
424+ ptr_t B1_p_p;
425+ ptr_t B2;
426+ ptr_t B2_p;
427+ ptr_t B2_p_p;
428+ ptr_t B3;
429+ ptr_t B3_p;
430+ ptr_t B3_p_p;
431+ ptr_t B1rhs;
432+ ptr_t B2rhs;
433+ ptr_t B3rhs;
434+ ptr_t Xt1;
435+ ptr_t Xt1_p;
436+ ptr_t Xt1_p_p;
437+ ptr_t Xt2;
438+ ptr_t Xt2_p;
439+ ptr_t Xt2_p_p;
440+ ptr_t Xt3;
441+ ptr_t Xt3_p;
442+ ptr_t Xt3_p_p;
443+ ptr_t Xt1rhs;
444+ ptr_t Xt2rhs;
445+ ptr_t Xt3rhs;
446+ ptr_t alpha;
447+ ptr_t alpha_p;
448+ ptr_t alpha_p_p;
449+ ptr_t alpharhs;
450+ ptr_t phi;
451+ ptr_t phi_p;
452+ ptr_t phi_p_p;
453+ ptr_t phirhs;
454+ ptr_t gt11;
455+ ptr_t gt11_p;
456+ ptr_t gt11_p_p;
457+ ptr_t gt12;
458+ ptr_t gt12_p;
459+ ptr_t gt12_p_p;
460+ ptr_t gt13;
461+ ptr_t gt13_p;
462+ ptr_t gt13_p_p;
463+ ptr_t gt22;
464+ ptr_t gt22_p;
465+ ptr_t gt22_p_p;
466+ ptr_t gt23;
467+ ptr_t gt23_p;
468+ ptr_t gt23_p_p;
469+ ptr_t gt33;
470+ ptr_t gt33_p;
471+ ptr_t gt33_p_p;
472+ ptr_t gt11rhs;
473+ ptr_t gt12rhs;
474+ ptr_t gt13rhs;
475+ ptr_t gt22rhs;
476+ ptr_t gt23rhs;
477+ ptr_t gt33rhs;
478+ ptr_t beta1;
479+ ptr_t beta1_p;
480+ ptr_t beta1_p_p;
481+ ptr_t beta2;
482+ ptr_t beta2_p;
483+ ptr_t beta2_p_p;
484+ ptr_t beta3;
485+ ptr_t beta3_p;
486+ ptr_t beta3_p_p;
487+ ptr_t beta1rhs;
488+ ptr_t beta2rhs;
489+ ptr_t beta3rhs;
490+ ptr_t trK;
491+ ptr_t trK_p;
492+ ptr_t trK_p_p;
493+ ptr_t trKrhs;
494+ ptr_t At11rhs;
495+ ptr_t At12rhs;
496+ ptr_t At13rhs;
497+ ptr_t At22rhs;
498+ ptr_t At23rhs;
499+ ptr_t At33rhs;
500+} cctk_arguments_t;
501+
502+
503+
504+static void allocate(cGH const* const cctkGH,
505+ ptr_t* const ptr,
506+ CCTK_REAL const val)
507+{
508+ int const nsize =
509+ cctkGH->cctk_ash[0] * cctkGH->cctk_ash[1] * cctkGH->cctk_ash[2];
510+ ptr->ptr = malloc(nsize * sizeof(CCTK_REAL));
511+ assert(ptr->ptr);
512+ for (int k=0; k<cctkGH->cctk_lsh[2]; ++k) {
513+ for (int j=0; j<cctkGH->cctk_lsh[1]; ++j) {
514+ for (int i=0; i<cctkGH->cctk_lsh[0]; ++i) {
515+ int const ind3d =
516+ i + cctkGH->cctk_ash[0] * (j + cctkGH->cctk_ash[1] * k);
517+ ptr->ptr[ind3d] = val;
518+ }
519+ }
520+ }
521+ ptr->mem = clCreateBuffer(context, CL_MEM_COPY_HOST_PTR,
522+ nsize * sizeof(CCTK_REAL), ptr->ptr, NULL);
523+ assert(ptr->mem);
524+}
525+
526+
527+
528+void setup()
529+{
530+ cl_int cerr;
531+
532+ // Choose a platform and a context (basically a device)
533+ cl_uint num_platforms;
534+ clGetPlatformIDs(0, NULL, &num_platforms);
535+ cl_platform_id platform_ids[num_platforms];
536+ clGetPlatformIDs(num_platforms, &platform_ids[0], &num_platforms);
537+ if (num_platforms <= 0) {
538+ fprintf(stderr, "No OpenCL platforms found\n");
539+ assert(0);
540+ }
541+ assert(num_platforms > 0);
542+
543+ cl_device_type const want_device_types = CL_DEVICE_TYPE_CPU;
544+ // CL_DEVICE_TYPE_GPU
545+ // CL_DEVICE_TYPE_ACCELERATOR
546+ // CL_DEVICE_TYPE_CPU | CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR
547+
548+ // Loop over all platforms
549+ platform_id = 0;
550+ for (cl_uint platform = 0; platform < num_platforms; ++platform) {
551+
552+ cl_platform_id const tmp_platform_id = platform_ids[platform];
553+ printf("OpenCL platform #%d:\n", platform);
554+
555+ size_t platform_name_length;
556+ clGetPlatformInfo(tmp_platform_id, CL_PLATFORM_NAME,
557+ 0, NULL, &platform_name_length);
558+ char platform_name[platform_name_length];
559+ clGetPlatformInfo(tmp_platform_id, CL_PLATFORM_NAME,
560+ platform_name_length, platform_name, NULL);
561+ printf(" OpenCL platform name: %s\n", platform_name);
562+ size_t platform_vendor_length;
563+ clGetPlatformInfo(tmp_platform_id, CL_PLATFORM_VENDOR,
564+ 0, NULL, &platform_vendor_length);
565+ char platform_vendor[platform_vendor_length];
566+ clGetPlatformInfo(tmp_platform_id, CL_PLATFORM_VENDOR,
567+ platform_vendor_length, platform_vendor, NULL);
568+ printf(" OpenCL platform vendor: %s\n", platform_vendor);
569+
570+ cl_context_properties const cprops[] =
571+ {CL_CONTEXT_PLATFORM, (cl_context_properties)tmp_platform_id, 0};
572+ context =
573+ clCreateContextFromType(cprops, want_device_types, NULL, NULL, &cerr);
574+ if (cerr == CL_SUCCESS) {
575+ platform_id = tmp_platform_id;
576+ }
577+ }
578+ if (platform_id == 0) {
579+ // Could not find a context on any platform, abort
580+ fprintf(stderr, "Could not create OpenCL context for selected device type\n");
581+ assert(0);
582+ }
583+
584+ size_t ndevice_ids;
585+ clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &ndevice_ids);
586+ ndevice_ids /= sizeof(cl_device_id);
587+ cl_device_id device_ids[ndevice_ids];
588+ clGetContextInfo(context, CL_CONTEXT_DEVICES,
589+ ndevice_ids*sizeof(cl_device_id), device_ids, NULL);
590+ assert(ndevice_ids >= 1);
591+ device_id = device_ids[0];
592+
593+ size_t device_name_length;
594+ clGetDeviceInfo(device_id, CL_DEVICE_NAME, 0, NULL, &device_name_length);
595+ char device_name[device_name_length];
596+ clGetDeviceInfo(device_id, CL_DEVICE_NAME,
597+ device_name_length, device_name, NULL);
598+ printf("OpenCL device name: %s\n", device_name);
599+
600+ clGetDeviceInfo(device_id, CL_DEVICE_PLATFORM,
601+ sizeof platform_id, &platform_id, NULL);
602+ size_t platform_name_length;
603+ clGetPlatformInfo(platform_id, CL_PLATFORM_NAME,
604+ 0, NULL, &platform_name_length);
605+ char platform_name[platform_name_length];
606+ clGetPlatformInfo(platform_id, CL_PLATFORM_NAME,
607+ platform_name_length, platform_name, NULL);
608+ printf("OpenCL platform name: %s\n", platform_name);
609+ size_t platform_vendor_length;
610+ clGetPlatformInfo(platform_id, CL_PLATFORM_VENDOR,
611+ 0, NULL, &platform_vendor_length);
612+ char platform_vendor[platform_vendor_length];
613+ clGetPlatformInfo(platform_id, CL_PLATFORM_VENDOR,
614+ platform_vendor_length, platform_vendor, NULL);
615+ printf("OpenCL platform vendor: %s\n", platform_vendor);
616+
617+ cmd_queue = clCreateCommandQueue(context, device_id, 0, NULL);
618+ assert(cmd_queue);
619+}
620+
621+
622+
623+void init(cGH * const cctkGH,
624+ cctk_parameters_t* const cctk_parameters,
625+ cctk_arguments_t * const cctk_arguments)
626+{
627+ cctkGH->cctk_origin_space[0] = 0.0;
628+ cctkGH->cctk_origin_space[1] = 0.0;
629+ cctkGH->cctk_origin_space[2] = 0.0;
630+ cctkGH->cctk_delta_space[0] = 1.0;
631+ cctkGH->cctk_delta_space[1] = 1.0;
632+ cctkGH->cctk_delta_space[2] = 1.0;
633+ cctkGH->cctk_time = 0.0;
634+ cctkGH->cctk_delta_time = 1.0;
635+ cctkGH->cctk_gsh[0] = 70;
636+ cctkGH->cctk_gsh[1] = 70;
637+ cctkGH->cctk_gsh[2] = 70;
638+ cctkGH->cctk_lbnd[0] = 0;
639+ cctkGH->cctk_lbnd[1] = 0;
640+ cctkGH->cctk_lbnd[2] = 0;
641+ cctkGH->cctk_lsh[0] = cctkGH->cctk_gsh[0];
642+ cctkGH->cctk_lsh[1] = cctkGH->cctk_gsh[1];
643+ cctkGH->cctk_lsh[2] = cctkGH->cctk_gsh[2];
644+ cctkGH->cctk_ash[0] = roundup(cctkGH->cctk_lsh[0], VECTOR_SIZE_I);
645+ cctkGH->cctk_ash[1] = roundup(cctkGH->cctk_lsh[1], VECTOR_SIZE_J);
646+ cctkGH->cctk_ash[2] = roundup(cctkGH->cctk_lsh[2], VECTOR_SIZE_K);
647+ // Looping region (for all threads combined)
648+ cctkGH->imin[0] = 3;
649+ cctkGH->imin[1] = 3;
650+ cctkGH->imin[2] = 3;
651+ cctkGH->imax[0] = cctkGH->cctk_lsh[0] - 3;
652+ cctkGH->imax[1] = cctkGH->cctk_lsh[1] - 3;
653+ cctkGH->imax[2] = cctkGH->cctk_lsh[2] - 3;
654+ // Active region (for this thread)
655+ cctkGH->lmin[0] = rounddown(cctkGH->imin[0], VECTOR_SIZE_I);
656+ cctkGH->lmin[1] = rounddown(cctkGH->imin[1], VECTOR_SIZE_J);
657+ cctkGH->lmin[2] = rounddown(cctkGH->imin[2], VECTOR_SIZE_K);
658+ cctkGH->lmax[0] = cctkGH->lmin[0] + roundup(cctkGH->imax[0] - cctkGH->lmin[0],
659+ VECTOR_SIZE_I * UNROLL_SIZE_I);
660+ cctkGH->lmax[1] = cctkGH->lmin[1] + roundup(cctkGH->imax[1] - cctkGH->lmin[1],
661+ VECTOR_SIZE_J * UNROLL_SIZE_J);
662+ cctkGH->lmax[2] = cctkGH->lmin[2] + roundup(cctkGH->imax[2] - cctkGH->lmin[2],
663+ VECTOR_SIZE_K * UNROLL_SIZE_K);
664+ printf("cctkGH:\n");
665+ printf(" gsh=[%d,%d,%d]\n", cctkGH->cctk_gsh[0], cctkGH->cctk_gsh[1], cctkGH->cctk_gsh[2]);
666+ printf(" lbnd=[%d,%d,%d]\n", cctkGH->cctk_lbnd[0], cctkGH->cctk_lbnd[1], cctkGH->cctk_lbnd[2]);
667+ printf(" lsh=[%d,%d,%d]\n", cctkGH->cctk_lsh[0], cctkGH->cctk_lsh[1], cctkGH->cctk_lsh[2]);
668+ printf(" ash=[%d,%d,%d]\n", cctkGH->cctk_ash[0], cctkGH->cctk_ash[1], cctkGH->cctk_ash[2]);
669+ printf(" imin=[%d,%d,%d]\n", cctkGH->imin[0], cctkGH->imin[1], cctkGH->imin[2]);
670+ printf(" imax=[%d,%d,%d]\n", cctkGH->imax[0], cctkGH->imax[1], cctkGH->imax[2]);
671+ printf(" lmin=[%d,%d,%d]\n", cctkGH->lmin[0], cctkGH->lmin[1], cctkGH->lmin[2]);
672+ printf(" lmax=[%d,%d,%d]\n", cctkGH->lmax[0], cctkGH->lmax[1], cctkGH->lmax[2]);
673+
674+ /* cctk_parameters->A_bound_limit = 0.0; */
675+ /* cctk_parameters->A_bound_scalar = 0.0; */
676+ /* cctk_parameters->A_bound_speed = 0.0; */
677+ /* cctk_parameters->alpha_bound_limit = 0.0; */
678+ /* cctk_parameters->alpha_bound_scalar = 0.0; */
679+ /* cctk_parameters->alpha_bound_speed = 0.0; */
680+ /* cctk_parameters->AlphaDriver = 1.0; */
681+ /* cctk_parameters->At11_bound_limit = 0.0; */
682+ /* cctk_parameters->At11_bound_scalar = 0.0; */
683+ /* cctk_parameters->At11_bound_speed = 0.0; */
684+ /* cctk_parameters->At12_bound_limit = 0.0; */
685+ /* cctk_parameters->At12_bound_scalar = 0.0; */
686+ /* cctk_parameters->At12_bound_speed = 0.0; */
687+ /* cctk_parameters->At13_bound_limit = 0.0; */
688+ /* cctk_parameters->At13_bound_scalar = 0.0; */
689+ /* cctk_parameters->At13_bound_speed = 0.0; */
690+ /* cctk_parameters->At22_bound_limit = 0.0; */
691+ /* cctk_parameters->At22_bound_scalar = 0.0; */
692+ /* cctk_parameters->At22_bound_speed = 0.0; */
693+ /* cctk_parameters->At23_bound_limit = 0.0; */
694+ /* cctk_parameters->At23_bound_scalar = 0.0; */
695+ /* cctk_parameters->At23_bound_speed = 0.0; */
696+ /* cctk_parameters->At33_bound_limit = 0.0; */
697+ /* cctk_parameters->At33_bound_scalar = 0.0; */
698+ /* cctk_parameters->At33_bound_speed = 0.0; */
699+ /* cctk_parameters->B1_bound_limit = 0.0; */
700+ /* cctk_parameters->B1_bound_scalar = 0.0; */
701+ /* cctk_parameters->B1_bound_speed = 0.0; */
702+ /* cctk_parameters->B2_bound_limit = 0.0; */
703+ /* cctk_parameters->B2_bound_scalar = 0.0; */
704+ /* cctk_parameters->B2_bound_speed = 0.0; */
705+ /* cctk_parameters->B3_bound_limit = 0.0; */
706+ /* cctk_parameters->B3_bound_scalar = 0.0; */
707+ /* cctk_parameters->B3_bound_speed = 0.0; */
708+ /* cctk_parameters->beta1_bound_limit = 0.0; */
709+ /* cctk_parameters->beta1_bound_scalar = 0.0; */
710+ /* cctk_parameters->beta1_bound_speed = 0.0; */
711+ /* cctk_parameters->beta2_bound_limit = 0.0; */
712+ /* cctk_parameters->beta2_bound_scalar = 0.0; */
713+ /* cctk_parameters->beta2_bound_speed = 0.0; */
714+ /* cctk_parameters->beta3_bound_limit = 0.0; */
715+ /* cctk_parameters->beta3_bound_scalar = 0.0; */
716+ /* cctk_parameters->beta3_bound_speed = 0.0; */
717+ /* cctk_parameters->BetaDriver = 1.0; */
718+ /* cctk_parameters->EpsDiss = 0.2; */
719+ /* cctk_parameters->gt11_bound_limit = 0.0; */
720+ /* cctk_parameters->gt11_bound_scalar = 0.0; */
721+ /* cctk_parameters->gt11_bound_speed = 0.0; */
722+ /* cctk_parameters->gt12_bound_limit = 0.0; */
723+ /* cctk_parameters->gt12_bound_scalar = 0.0; */
724+ /* cctk_parameters->gt12_bound_speed = 0.0; */
725+ /* cctk_parameters->gt13_bound_limit = 0.0; */
726+ /* cctk_parameters->gt13_bound_scalar = 0.0; */
727+ /* cctk_parameters->gt13_bound_speed = 0.0; */
728+ /* cctk_parameters->gt22_bound_limit = 0.0; */
729+ /* cctk_parameters->gt22_bound_scalar = 0.0; */
730+ /* cctk_parameters->gt22_bound_speed = 0.0; */
731+ /* cctk_parameters->gt23_bound_limit = 0.0; */
732+ /* cctk_parameters->gt23_bound_scalar = 0.0; */
733+ /* cctk_parameters->gt23_bound_speed = 0.0; */
734+ /* cctk_parameters->gt33_bound_limit = 0.0; */
735+ /* cctk_parameters->gt33_bound_scalar = 0.0; */
736+ /* cctk_parameters->gt33_bound_speed = 0.0; */
737+ /* cctk_parameters->harmonicF = 2.0; */
738+ /* cctk_parameters->LapseACoeff = 1.0; */
739+ /* cctk_parameters->LapseAdvectionCoeff = 1.0; */
740+ /* cctk_parameters->MinimumLapse = 0.0; */
741+ /* cctk_parameters->ML_curv_bound_limit = 0.0; */
742+ /* cctk_parameters->ML_curv_bound_scalar = 0.0; */
743+ /* cctk_parameters->ML_curv_bound_speed = 0.0; */
744+ /* cctk_parameters->ML_dtlapse_bound_limit = 0.0; */
745+ /* cctk_parameters->ML_dtlapse_bound_scalar = 0.0; */
746+ /* cctk_parameters->ML_dtlapse_bound_speed = 0.0; */
747+ /* cctk_parameters->ML_dtshift_bound_limit = 0.0; */
748+ /* cctk_parameters->ML_dtshift_bound_scalar = 0.0; */
749+ /* cctk_parameters->ML_dtshift_bound_speed = 0.0; */
750+ /* cctk_parameters->ML_Gamma_bound_limit = 0.0; */
751+ /* cctk_parameters->ML_Gamma_bound_scalar = 0.0; */
752+ /* cctk_parameters->ML_Gamma_bound_speed = 0.0; */
753+ /* cctk_parameters->ML_lapse_bound_limit = 0.0; */
754+ /* cctk_parameters->ML_lapse_bound_scalar = 0.0; */
755+ /* cctk_parameters->ML_lapse_bound_speed = 0.0; */
756+ /* cctk_parameters->ML_log_confac_bound_limit = 0.0; */
757+ /* cctk_parameters->ML_log_confac_bound_scalar = 0.0; */
758+ /* cctk_parameters->ML_log_confac_bound_speed = 0.0; */
759+ /* cctk_parameters->ML_metric_bound_limit = 0.0; */
760+ /* cctk_parameters->ML_metric_bound_scalar = 0.0; */
761+ /* cctk_parameters->ML_metric_bound_speed = 0.0; */
762+ /* cctk_parameters->ML_shift_bound_limit = 0.0; */
763+ /* cctk_parameters->ML_shift_bound_scalar = 0.0; */
764+ /* cctk_parameters->ML_shift_bound_speed = 0.0; */
765+ /* cctk_parameters->ML_trace_curv_bound_limit = 0.0; */
766+ /* cctk_parameters->ML_trace_curv_bound_scalar = 0.0; */
767+ /* cctk_parameters->ML_trace_curv_bound_speed = 0.0; */
768+ /* cctk_parameters->phi_bound_limit = 0.0; */
769+ /* cctk_parameters->phi_bound_scalar = 0.0; */
770+ /* cctk_parameters->phi_bound_speed = 0.0; */
771+ /* cctk_parameters->ShiftAdvectionCoeff = 1.0; */
772+ /* cctk_parameters->ShiftBCoeff = 1.0; */
773+ /* cctk_parameters->ShiftGammaCoeff = 0.75; */
774+ /* cctk_parameters->SpatialBetaDriverRadius = 1.0e+10; */
775+ /* cctk_parameters->SpatialShiftGammaCoeffRadius = 1.0e+10; */
776+ /* cctk_parameters->trK_bound_limit = 0.0; */
777+ /* cctk_parameters->trK_bound_scalar = 0.0; */
778+ /* cctk_parameters->trK_bound_speed = 0.0; */
779+ /* cctk_parameters->Xt1_bound_limit = 0.0; */
780+ /* cctk_parameters->Xt1_bound_scalar = 0.0; */
781+ /* cctk_parameters->Xt1_bound_speed = 0.0; */
782+ /* cctk_parameters->Xt2_bound_limit = 0.0; */
783+ /* cctk_parameters->Xt2_bound_scalar = 0.0; */
784+ /* cctk_parameters->Xt2_bound_speed = 0.0; */
785+ /* cctk_parameters->Xt3_bound_limit = 0.0; */
786+ /* cctk_parameters->Xt3_bound_scalar = 0.0; */
787+ /* cctk_parameters->Xt3_bound_speed = 0.0; */
788+ /* cctk_parameters->conformalMethod = 0; */
789+ /* cctk_parameters->fdOrder = 4; */
790+ /* cctk_parameters->harmonicN = 1; */
791+ /* cctk_parameters->harmonicShift = 0; */
792+ /* cctk_parameters->ML_BSSN_CL_Advect_calc_every = 0; */
793+ /* cctk_parameters->ML_BSSN_CL_Advect_calc_offset = 0; */
794+ /* cctk_parameters->ML_BSSN_CL_boundary_calc_every = 0; */
795+ /* cctk_parameters->ML_BSSN_CL_boundary_calc_offset = 0; */
796+ /* cctk_parameters->ML_BSSN_CL_constraints1_calc_every = 0; */
797+ /* cctk_parameters->ML_BSSN_CL_constraints1_calc_offset = 0; */
798+ /* cctk_parameters->ML_BSSN_CL_constraints2_calc_every = 0; */
799+ /* cctk_parameters->ML_BSSN_CL_constraints2_calc_offset = 0; */
800+ /* cctk_parameters->ML_BSSN_CL_convertFromADMBase_calc_every = 0; */
801+ /* cctk_parameters->ML_BSSN_CL_convertFromADMBase_calc_offset = 0; */
802+ /* cctk_parameters->ML_BSSN_CL_convertFromADMBaseGamma_calc_every = 0; */
803+ /* cctk_parameters->ML_BSSN_CL_convertFromADMBaseGamma_calc_offset = 0; */
804+ /* cctk_parameters->ML_BSSN_CL_convertToADMBase_calc_every = 0; */
805+ /* cctk_parameters->ML_BSSN_CL_convertToADMBase_calc_offset = 0; */
806+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_every = 0; */
807+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_offset = 0; */
808+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_every = 0; */
809+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_offset = 0; */
810+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_every = 0; */
811+ /* cctk_parameters->ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_offset = 0; */
812+ /* cctk_parameters->ML_BSSN_CL_Dissipation_calc_every = 0; */
813+ /* cctk_parameters->ML_BSSN_CL_Dissipation_calc_offset = 0; */
814+ /* cctk_parameters->ML_BSSN_CL_enforce_calc_every = 0; */
815+ /* cctk_parameters->ML_BSSN_CL_enforce_calc_offset = 0; */
816+ /* cctk_parameters->ML_BSSN_CL_InitGamma_calc_every = 0; */
817+ /* cctk_parameters->ML_BSSN_CL_InitGamma_calc_offset = 0; */
818+ /* cctk_parameters->ML_BSSN_CL_InitRHS_calc_every = 0; */
819+ /* cctk_parameters->ML_BSSN_CL_InitRHS_calc_offset = 0; */
820+ /* cctk_parameters->ML_BSSN_CL_MaxNumArrayEvolvedVars = 0; */
821+ /* cctk_parameters->ML_BSSN_CL_MaxNumEvolvedVars = 0; */
822+ /* cctk_parameters->ML_BSSN_CL_Minkowski_calc_every = 0; */
823+ /* cctk_parameters->ML_BSSN_CL_Minkowski_calc_offset = 0; */
824+ /* cctk_parameters->ML_BSSN_CL_RHS1_calc_every = 0; */
825+ /* cctk_parameters->ML_BSSN_CL_RHS1_calc_offset = 0; */
826+ /* cctk_parameters->ML_BSSN_CL_RHS2_calc_every = 0; */
827+ /* cctk_parameters->ML_BSSN_CL_RHS2_calc_offset = 0; */
828+ /* cctk_parameters->ML_BSSN_CL_RHSStaticBoundary_calc_every = 0; */
829+ /* cctk_parameters->ML_BSSN_CL_RHSStaticBoundary_calc_offset = 0; */
830+ /* cctk_parameters->other_timelevels = 1; */
831+ /* cctk_parameters->rhs_timelevels = 1; */
832+ /* cctk_parameters->ShiftAlphaPower = 0; */
833+ /* cctk_parameters->timelevels = 3; */
834+ /* cctk_parameters->verbose = 0; */
835+
836+ allocate(cctkGH, &cctk_arguments->x, 10.0);
837+ allocate(cctkGH, &cctk_arguments->y, 11.0);
838+ allocate(cctkGH, &cctk_arguments->z, 12.0);
839+ allocate(cctkGH, &cctk_arguments->r, 13.0);
840+ allocate(cctkGH, &cctk_arguments->At11, 0.0);
841+ allocate(cctkGH, &cctk_arguments->At11_p, 0.0);
842+ allocate(cctkGH, &cctk_arguments->At11_p_p, 0.0);
843+ allocate(cctkGH, &cctk_arguments->At12, 0.0);
844+ allocate(cctkGH, &cctk_arguments->At12_p, 0.0);
845+ allocate(cctkGH, &cctk_arguments->At12_p_p, 0.0);
846+ allocate(cctkGH, &cctk_arguments->At13, 0.0);
847+ allocate(cctkGH, &cctk_arguments->At13_p, 0.0);
848+ allocate(cctkGH, &cctk_arguments->At13_p_p, 0.0);
849+ allocate(cctkGH, &cctk_arguments->At22, 0.0);
850+ allocate(cctkGH, &cctk_arguments->At22_p, 0.0);
851+ allocate(cctkGH, &cctk_arguments->At22_p_p, 0.0);
852+ allocate(cctkGH, &cctk_arguments->At23, 0.0);
853+ allocate(cctkGH, &cctk_arguments->At23_p, 0.0);
854+ allocate(cctkGH, &cctk_arguments->At23_p_p, 0.0);
855+ allocate(cctkGH, &cctk_arguments->At33, 0.0);
856+ allocate(cctkGH, &cctk_arguments->At33_p, 0.0);
857+ allocate(cctkGH, &cctk_arguments->At33_p_p, 0.0);
858+ allocate(cctkGH, &cctk_arguments->A, 0.0);
859+ allocate(cctkGH, &cctk_arguments->A_p, 0.0);
860+ allocate(cctkGH, &cctk_arguments->A_p_p, 0.0);
861+ allocate(cctkGH, &cctk_arguments->Arhs, -1.0);
862+ allocate(cctkGH, &cctk_arguments->B1, 0.0);
863+ allocate(cctkGH, &cctk_arguments->B1_p, 0.0);
864+ allocate(cctkGH, &cctk_arguments->B1_p_p, 0.0);
865+ allocate(cctkGH, &cctk_arguments->B2, 0.0);
866+ allocate(cctkGH, &cctk_arguments->B2_p, 0.0);
867+ allocate(cctkGH, &cctk_arguments->B2_p_p, 0.0);
868+ allocate(cctkGH, &cctk_arguments->B3, 0.0);
869+ allocate(cctkGH, &cctk_arguments->B3_p, 0.0);
870+ allocate(cctkGH, &cctk_arguments->B3_p_p, 0.0);
871+ allocate(cctkGH, &cctk_arguments->B1rhs, -1.0);
872+ allocate(cctkGH, &cctk_arguments->B2rhs, -1.0);
873+ allocate(cctkGH, &cctk_arguments->B3rhs, -1.0);
874+ allocate(cctkGH, &cctk_arguments->Xt1, 0.0);
875+ allocate(cctkGH, &cctk_arguments->Xt1_p, 0.0);
876+ allocate(cctkGH, &cctk_arguments->Xt1_p_p, 0.0);
877+ allocate(cctkGH, &cctk_arguments->Xt2, 0.0);
878+ allocate(cctkGH, &cctk_arguments->Xt2_p, 0.0);
879+ allocate(cctkGH, &cctk_arguments->Xt2_p_p, 0.0);
880+ allocate(cctkGH, &cctk_arguments->Xt3, 0.0);
881+ allocate(cctkGH, &cctk_arguments->Xt3_p, 0.0);
882+ allocate(cctkGH, &cctk_arguments->Xt3_p_p, 0.0);
883+ allocate(cctkGH, &cctk_arguments->Xt1rhs, -1.0);
884+ allocate(cctkGH, &cctk_arguments->Xt2rhs, -1.0);
885+ allocate(cctkGH, &cctk_arguments->Xt3rhs, -1.0);
886+ allocate(cctkGH, &cctk_arguments->alpha, 1.0);
887+ allocate(cctkGH, &cctk_arguments->alpha_p, 1.0);
888+ allocate(cctkGH, &cctk_arguments->alpha_p_p, 1.0);
889+ allocate(cctkGH, &cctk_arguments->alpharhs, -1.0);
890+ allocate(cctkGH, &cctk_arguments->phi, 0.0);
891+ allocate(cctkGH, &cctk_arguments->phi_p, 0.0);
892+ allocate(cctkGH, &cctk_arguments->phi_p_p, 0.0);
893+ allocate(cctkGH, &cctk_arguments->phirhs, -1.0);
894+ allocate(cctkGH, &cctk_arguments->gt11, 1.0);
895+ allocate(cctkGH, &cctk_arguments->gt11_p, 1.0);
896+ allocate(cctkGH, &cctk_arguments->gt11_p_p, 1.0);
897+ allocate(cctkGH, &cctk_arguments->gt12, 0.0);
898+ allocate(cctkGH, &cctk_arguments->gt12_p, 0.0);
899+ allocate(cctkGH, &cctk_arguments->gt12_p_p, 0.0);
900+ allocate(cctkGH, &cctk_arguments->gt13, 0.0);
901+ allocate(cctkGH, &cctk_arguments->gt13_p, 0.0);
902+ allocate(cctkGH, &cctk_arguments->gt13_p_p, 0.0);
903+ allocate(cctkGH, &cctk_arguments->gt22, 1.0);
904+ allocate(cctkGH, &cctk_arguments->gt22_p, 1.0);
905+ allocate(cctkGH, &cctk_arguments->gt22_p_p, 1.0);
906+ allocate(cctkGH, &cctk_arguments->gt23, 0.0);
907+ allocate(cctkGH, &cctk_arguments->gt23_p, 0.0);
908+ allocate(cctkGH, &cctk_arguments->gt23_p_p, 0.0);
909+ allocate(cctkGH, &cctk_arguments->gt33, 1.0);
910+ allocate(cctkGH, &cctk_arguments->gt33_p, 1.0);
911+ allocate(cctkGH, &cctk_arguments->gt33_p_p, 1.0);
912+ allocate(cctkGH, &cctk_arguments->gt11rhs, -1.0);
913+ allocate(cctkGH, &cctk_arguments->gt12rhs, -1.0);
914+ allocate(cctkGH, &cctk_arguments->gt13rhs, -1.0);
915+ allocate(cctkGH, &cctk_arguments->gt22rhs, -1.0);
916+ allocate(cctkGH, &cctk_arguments->gt23rhs, -1.0);
917+ allocate(cctkGH, &cctk_arguments->gt33rhs, -1.0);
918+ allocate(cctkGH, &cctk_arguments->beta1, 0.0);
919+ allocate(cctkGH, &cctk_arguments->beta1_p, 0.0);
920+ allocate(cctkGH, &cctk_arguments->beta1_p_p, 0.0);
921+ allocate(cctkGH, &cctk_arguments->beta2, 0.0);
922+ allocate(cctkGH, &cctk_arguments->beta2_p, 0.0);
923+ allocate(cctkGH, &cctk_arguments->beta2_p_p, 0.0);
924+ allocate(cctkGH, &cctk_arguments->beta3, 0.0);
925+ allocate(cctkGH, &cctk_arguments->beta3_p, 0.0);
926+ allocate(cctkGH, &cctk_arguments->beta3_p_p, 0.0);
927+ allocate(cctkGH, &cctk_arguments->beta1rhs, -1.0);
928+ allocate(cctkGH, &cctk_arguments->beta2rhs, -1.0);
929+ allocate(cctkGH, &cctk_arguments->beta3rhs, -1.0);
930+ allocate(cctkGH, &cctk_arguments->trK, 0.0);
931+ allocate(cctkGH, &cctk_arguments->trK_p, 0.0);
932+ allocate(cctkGH, &cctk_arguments->trK_p_p, 0.0);
933+ allocate(cctkGH, &cctk_arguments->trKrhs, -1.0);
934+ allocate(cctkGH, &cctk_arguments->At11rhs, -1.0);
935+ allocate(cctkGH, &cctk_arguments->At12rhs, -1.0);
936+ allocate(cctkGH, &cctk_arguments->At13rhs, -1.0);
937+ allocate(cctkGH, &cctk_arguments->At22rhs, -1.0);
938+ allocate(cctkGH, &cctk_arguments->At23rhs, -1.0);
939+ allocate(cctkGH, &cctk_arguments->At33rhs, -1.0);
940+}
941+
942+
943+
944+static void set_arg(cl_kernel kernel, int arg, cl_mem const* mem)
945+{
946+ int ierr = clSetKernelArg(kernel, arg, sizeof(cl_mem), mem);
947+ assert(!ierr);
948+}
949+
950+
951+
952+int exec_ML_BSSN_CL_RHS1(char const* const program_source,
953+ cGH const* const cctkGH,
954+ cctk_parameters_t const* const cctk_parameters,
955+ cctk_arguments_t const* const cctk_arguments)
956+{
957+ static int initialised = 0;
958+ static cl_program program;
959+ static cl_kernel kernel;
960+ static cl_mem mem_cctkGH;
961+ static cl_mem mem_cctk_parameters;
962+
963+ int ierr;
964+
965+ if (!initialised) {
966+ initialised = 1;
967+
968+ program =
969+ clCreateProgramWithSource(context, 1, (const char**)&program_source,
970+ NULL, NULL);
971+ assert(program);
972+
973+ char const* const options =
974+ "-DVECTORISE_ALIGNED_ARRAYS=" STR(VECTORISE_ALIGNED_ARRAYS) " "
975+ "-DVECTOR_SIZE_I=" STR(VECTOR_SIZE_I) " "
976+ "-DVECTOR_SIZE_J=" STR(VECTOR_SIZE_J) " "
977+ "-DVECTOR_SIZE_K=" STR(VECTOR_SIZE_K) " "
978+ "-DUNROLL_SIZE_I=" STR(UNROLL_SIZE_I) " "
979+ "-DUNROLL_SIZE_J=" STR(UNROLL_SIZE_J) " "
980+ "-DUNROLL_SIZE_K=" STR(UNROLL_SIZE_K) " "
981+ "-DGROUP_SIZE_I=" STR(GROUP_SIZE_I) " "
982+ "-DGROUP_SIZE_J=" STR(GROUP_SIZE_J) " "
983+ "-DGROUP_SIZE_K=" STR(GROUP_SIZE_K) " "
984+ "-DTILE_SIZE_I=" STR(TILE_SIZE_I) " "
985+ "-DTILE_SIZE_J=" STR(TILE_SIZE_J) " "
986+ "-DTILE_SIZE_K=" STR(TILE_SIZE_K) " ";
987+
988+ ierr = clBuildProgram(program, 0, NULL, options, NULL, NULL);
989+ if (ierr) {
990+ size_t log_size;
991+ ierr = clGetProgramBuildInfo(program, device_id,
992+ CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size);
993+ assert(!ierr);
994+ char build_log[log_size];
995+ ierr = clGetProgramBuildInfo(program, device_id,
996+ CL_PROGRAM_BUILD_LOG,
997+ log_size, build_log, NULL);
998+ assert(!ierr);
999+ printf("Build log:\n"
1000+ "********************************************************************************\n"
1001+ "%s\n"
1002+ "********************************************************************************\n", build_log);
1003+ assert(0);
1004+ }
1005+
1006+ kernel = clCreateKernel(program, "ML_BSSN_CL_RHS1", NULL);
1007+ assert(kernel);
1008+
1009+ mem_cctkGH =
1010+ clCreateBuffer(context, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_ONLY,
1011+ sizeof *cctkGH, cctkGH, NULL);
1012+ assert(mem_cctkGH);
1013+
1014+ mem_cctk_parameters =
1015+ clCreateBuffer(context, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_ONLY,
1016+ sizeof *cctk_parameters, cctk_parameters, NULL);
1017+ assert(mem_cctk_parameters);
1018+ }
1019+
1020+ int nargs = 0;
1021+ set_arg(kernel, nargs++, &mem_cctkGH);
1022+ set_arg(kernel, nargs++, &mem_cctk_parameters);
1023+ set_arg(kernel, nargs++, &cctk_arguments->x.mem);
1024+ set_arg(kernel, nargs++, &cctk_arguments->y.mem);
1025+ set_arg(kernel, nargs++, &cctk_arguments->z.mem);
1026+ set_arg(kernel, nargs++, &cctk_arguments->r.mem);
1027+ set_arg(kernel, nargs++, &cctk_arguments->At11.mem);
1028+ set_arg(kernel, nargs++, &cctk_arguments->At11_p.mem);
1029+ set_arg(kernel, nargs++, &cctk_arguments->At11_p_p.mem);
1030+ set_arg(kernel, nargs++, &cctk_arguments->At12.mem);
1031+ set_arg(kernel, nargs++, &cctk_arguments->At12_p.mem);
1032+ set_arg(kernel, nargs++, &cctk_arguments->At12_p_p.mem);
1033+ set_arg(kernel, nargs++, &cctk_arguments->At13.mem);
1034+ set_arg(kernel, nargs++, &cctk_arguments->At13_p.mem);
1035+ set_arg(kernel, nargs++, &cctk_arguments->At13_p_p.mem);
1036+ set_arg(kernel, nargs++, &cctk_arguments->At22.mem);
1037+ set_arg(kernel, nargs++, &cctk_arguments->At22_p.mem);
1038+ set_arg(kernel, nargs++, &cctk_arguments->At22_p_p.mem);
1039+ set_arg(kernel, nargs++, &cctk_arguments->At23.mem);
1040+ set_arg(kernel, nargs++, &cctk_arguments->At23_p.mem);
1041+ set_arg(kernel, nargs++, &cctk_arguments->At23_p_p.mem);
1042+ set_arg(kernel, nargs++, &cctk_arguments->At33.mem);
1043+ set_arg(kernel, nargs++, &cctk_arguments->At33_p.mem);
1044+ set_arg(kernel, nargs++, &cctk_arguments->At33_p_p.mem);
1045+ set_arg(kernel, nargs++, &cctk_arguments->A.mem);
1046+ set_arg(kernel, nargs++, &cctk_arguments->A_p.mem);
1047+ set_arg(kernel, nargs++, &cctk_arguments->A_p_p.mem);
1048+ set_arg(kernel, nargs++, &cctk_arguments->Arhs.mem);
1049+ set_arg(kernel, nargs++, &cctk_arguments->B1.mem);
1050+ set_arg(kernel, nargs++, &cctk_arguments->B1_p.mem);
1051+ set_arg(kernel, nargs++, &cctk_arguments->B1_p_p.mem);
1052+ set_arg(kernel, nargs++, &cctk_arguments->B2.mem);
1053+ set_arg(kernel, nargs++, &cctk_arguments->B2_p.mem);
1054+ set_arg(kernel, nargs++, &cctk_arguments->B2_p_p.mem);
1055+ set_arg(kernel, nargs++, &cctk_arguments->B3.mem);
1056+ set_arg(kernel, nargs++, &cctk_arguments->B3_p.mem);
1057+ set_arg(kernel, nargs++, &cctk_arguments->B3_p_p.mem);
1058+ set_arg(kernel, nargs++, &cctk_arguments->B1rhs.mem);
1059+ set_arg(kernel, nargs++, &cctk_arguments->B2rhs.mem);
1060+ set_arg(kernel, nargs++, &cctk_arguments->B3rhs.mem);
1061+ set_arg(kernel, nargs++, &cctk_arguments->Xt1.mem);
1062+ set_arg(kernel, nargs++, &cctk_arguments->Xt1_p.mem);
1063+ set_arg(kernel, nargs++, &cctk_arguments->Xt1_p_p.mem);
1064+ set_arg(kernel, nargs++, &cctk_arguments->Xt2.mem);
1065+ set_arg(kernel, nargs++, &cctk_arguments->Xt2_p.mem);
1066+ set_arg(kernel, nargs++, &cctk_arguments->Xt2_p_p.mem);
1067+ set_arg(kernel, nargs++, &cctk_arguments->Xt3.mem);
1068+ set_arg(kernel, nargs++, &cctk_arguments->Xt3_p.mem);
1069+ set_arg(kernel, nargs++, &cctk_arguments->Xt3_p_p.mem);
1070+ set_arg(kernel, nargs++, &cctk_arguments->Xt1rhs.mem);
1071+ set_arg(kernel, nargs++, &cctk_arguments->Xt2rhs.mem);
1072+ set_arg(kernel, nargs++, &cctk_arguments->Xt3rhs.mem);
1073+ set_arg(kernel, nargs++, &cctk_arguments->alpha.mem);
1074+ set_arg(kernel, nargs++, &cctk_arguments->alpha_p.mem);
1075+ set_arg(kernel, nargs++, &cctk_arguments->alpha_p_p.mem);
1076+ set_arg(kernel, nargs++, &cctk_arguments->alpharhs.mem);
1077+ set_arg(kernel, nargs++, &cctk_arguments->phi.mem);
1078+ set_arg(kernel, nargs++, &cctk_arguments->phi_p.mem);
1079+ set_arg(kernel, nargs++, &cctk_arguments->phi_p_p.mem);
1080+ set_arg(kernel, nargs++, &cctk_arguments->phirhs.mem);
1081+ set_arg(kernel, nargs++, &cctk_arguments->gt11.mem);
1082+ set_arg(kernel, nargs++, &cctk_arguments->gt11_p.mem);
1083+ set_arg(kernel, nargs++, &cctk_arguments->gt11_p_p.mem);
1084+ set_arg(kernel, nargs++, &cctk_arguments->gt12.mem);
1085+ set_arg(kernel, nargs++, &cctk_arguments->gt12_p.mem);
1086+ set_arg(kernel, nargs++, &cctk_arguments->gt12_p_p.mem);
1087+ set_arg(kernel, nargs++, &cctk_arguments->gt13.mem);
1088+ set_arg(kernel, nargs++, &cctk_arguments->gt13_p.mem);
1089+ set_arg(kernel, nargs++, &cctk_arguments->gt13_p_p.mem);
1090+ set_arg(kernel, nargs++, &cctk_arguments->gt22.mem);
1091+ set_arg(kernel, nargs++, &cctk_arguments->gt22_p.mem);
1092+ set_arg(kernel, nargs++, &cctk_arguments->gt22_p_p.mem);
1093+ set_arg(kernel, nargs++, &cctk_arguments->gt23.mem);
1094+ set_arg(kernel, nargs++, &cctk_arguments->gt23_p.mem);
1095+ set_arg(kernel, nargs++, &cctk_arguments->gt23_p_p.mem);
1096+ set_arg(kernel, nargs++, &cctk_arguments->gt33.mem);
1097+ set_arg(kernel, nargs++, &cctk_arguments->gt33_p.mem);
1098+ set_arg(kernel, nargs++, &cctk_arguments->gt33_p_p.mem);
1099+ set_arg(kernel, nargs++, &cctk_arguments->gt11rhs.mem);
1100+ set_arg(kernel, nargs++, &cctk_arguments->gt12rhs.mem);
1101+ set_arg(kernel, nargs++, &cctk_arguments->gt13rhs.mem);
1102+ set_arg(kernel, nargs++, &cctk_arguments->gt22rhs.mem);
1103+ set_arg(kernel, nargs++, &cctk_arguments->gt23rhs.mem);
1104+ set_arg(kernel, nargs++, &cctk_arguments->gt33rhs.mem);
1105+ set_arg(kernel, nargs++, &cctk_arguments->beta1.mem);
1106+ set_arg(kernel, nargs++, &cctk_arguments->beta1_p.mem);
1107+ set_arg(kernel, nargs++, &cctk_arguments->beta1_p_p.mem);
1108+ set_arg(kernel, nargs++, &cctk_arguments->beta2.mem);
1109+ set_arg(kernel, nargs++, &cctk_arguments->beta2_p.mem);
1110+ set_arg(kernel, nargs++, &cctk_arguments->beta2_p_p.mem);
1111+ set_arg(kernel, nargs++, &cctk_arguments->beta3.mem);
1112+ set_arg(kernel, nargs++, &cctk_arguments->beta3_p.mem);
1113+ set_arg(kernel, nargs++, &cctk_arguments->beta3_p_p.mem);
1114+ set_arg(kernel, nargs++, &cctk_arguments->beta1rhs.mem);
1115+ set_arg(kernel, nargs++, &cctk_arguments->beta2rhs.mem);
1116+ set_arg(kernel, nargs++, &cctk_arguments->beta3rhs.mem);
1117+ set_arg(kernel, nargs++, &cctk_arguments->trK.mem);
1118+ set_arg(kernel, nargs++, &cctk_arguments->trK_p.mem);
1119+ set_arg(kernel, nargs++, &cctk_arguments->trK_p_p.mem);
1120+ set_arg(kernel, nargs++, &cctk_arguments->trKrhs.mem);
1121+
1122+ size_t const local_work_size[3] =
1123+ { GROUP_SIZE_I, GROUP_SIZE_J, GROUP_SIZE_K };
1124+ size_t const global_work_size[3] =
1125+ {
1126+ divup(cctkGH->lmax[0] - cctkGH->lmin[0],
1127+ VECTOR_SIZE_I * UNROLL_SIZE_I * GROUP_SIZE_I * TILE_SIZE_I) *
1128+ GROUP_SIZE_I,
1129+ divup(cctkGH->lmax[1] - cctkGH->lmin[1],
1130+ VECTOR_SIZE_J * UNROLL_SIZE_J * GROUP_SIZE_J * TILE_SIZE_J) *
1131+ GROUP_SIZE_J,
1132+ divup(cctkGH->lmax[2] - cctkGH->lmin[2],
1133+ VECTOR_SIZE_K * UNROLL_SIZE_K * GROUP_SIZE_K * TILE_SIZE_K) *
1134+ GROUP_SIZE_K,
1135+ };
1136+ {
1137+ static int did_print = 0;
1138+ if (!did_print) {
1139+ did_print = 1;
1140+ printf("Global work group size: %4d %4d %4d\n",
1141+ (int)global_work_size[0],
1142+ (int)global_work_size[1],
1143+ (int)global_work_size[2]);
1144+ printf("Local work group size: %4d %4d %4d\n",
1145+ (int)local_work_size[0],
1146+ (int)local_work_size[1],
1147+ (int)local_work_size[2]);
1148+ }
1149+ }
1150+
1151+ ierr = clEnqueueNDRangeKernel(cmd_queue, kernel, dim,
1152+ NULL, global_work_size, local_work_size,
1153+ 0, NULL, NULL);
1154+ assert(!ierr);
1155+
1156+ ierr = clFinish(cmd_queue);
1157+ assert(!ierr);
1158+
1159+ return 0;
1160+}
1161+
1162+
1163+
1164+int exec_ML_BSSN_CL_RHS2(char const* const program_source,
1165+ cGH const* const cctkGH,
1166+ cctk_parameters_t const* const cctk_parameters,
1167+ cctk_arguments_t const* const cctk_arguments)
1168+{
1169+ static int initialised = 0;
1170+ static cl_program program;
1171+ static cl_kernel kernel;
1172+ static cl_mem mem_cctkGH;
1173+ static cl_mem mem_cctk_parameters;
1174+
1175+ int ierr;
1176+
1177+ if (!initialised) {
1178+ initialised = 1;
1179+
1180+ program =
1181+ clCreateProgramWithSource(context, 1, (const char**)&program_source,
1182+ NULL, NULL);
1183+ assert(program);
1184+
1185+ char const* const options =
1186+ "-DVECTORISE_ALIGNED_ARRAYS=" STR(VECTORISE_ALIGNED_ARRAYS) " "
1187+ "-DVECTOR_SIZE_I=" STR(VECTOR_SIZE_I) " "
1188+ "-DVECTOR_SIZE_J=" STR(VECTOR_SIZE_J) " "
1189+ "-DVECTOR_SIZE_K=" STR(VECTOR_SIZE_K) " "
1190+ "-DUNROLL_SIZE_I=" STR(UNROLL_SIZE_I) " "
1191+ "-DUNROLL_SIZE_J=" STR(UNROLL_SIZE_J) " "
1192+ "-DUNROLL_SIZE_K=" STR(UNROLL_SIZE_K) " "
1193+ "-DGROUP_SIZE_I=" STR(GROUP_SIZE_I) " "
1194+ "-DGROUP_SIZE_J=" STR(GROUP_SIZE_J) " "
1195+ "-DGROUP_SIZE_K=" STR(GROUP_SIZE_K) " "
1196+ "-DTILE_SIZE_I=" STR(TILE_SIZE_I) " "
1197+ "-DTILE_SIZE_J=" STR(TILE_SIZE_J) " "
1198+ "-DTILE_SIZE_K=" STR(TILE_SIZE_K) " ";
1199+
1200+ ierr = clBuildProgram(program, 0, NULL, options, NULL, NULL);
1201+ assert(!ierr);
1202+
1203+ kernel = clCreateKernel(program, "ML_BSSN_CL_RHS2", NULL);
1204+ assert(kernel);
1205+
1206+ mem_cctkGH =
1207+ clCreateBuffer(context, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_ONLY,
1208+ sizeof *cctkGH, cctkGH, NULL);
1209+ assert(mem_cctkGH);
1210+
1211+ mem_cctk_parameters =
1212+ clCreateBuffer(context, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_ONLY,
1213+ sizeof *cctk_parameters, cctk_parameters, NULL);
1214+ assert(mem_cctk_parameters);
1215+ }
1216+
1217+ int nargs = 0;
1218+ set_arg(kernel, nargs++, &mem_cctkGH);
1219+ set_arg(kernel, nargs++, &mem_cctk_parameters);
1220+ set_arg(kernel, nargs++, &cctk_arguments->At11.mem);
1221+ set_arg(kernel, nargs++, &cctk_arguments->At11_p.mem);
1222+ set_arg(kernel, nargs++, &cctk_arguments->At11_p_p.mem);
1223+ set_arg(kernel, nargs++, &cctk_arguments->At12.mem);
1224+ set_arg(kernel, nargs++, &cctk_arguments->At12_p.mem);
1225+ set_arg(kernel, nargs++, &cctk_arguments->At12_p_p.mem);
1226+ set_arg(kernel, nargs++, &cctk_arguments->At13.mem);
1227+ set_arg(kernel, nargs++, &cctk_arguments->At13_p.mem);
1228+ set_arg(kernel, nargs++, &cctk_arguments->At13_p_p.mem);
1229+ set_arg(kernel, nargs++, &cctk_arguments->At22.mem);
1230+ set_arg(kernel, nargs++, &cctk_arguments->At22_p.mem);
1231+ set_arg(kernel, nargs++, &cctk_arguments->At22_p_p.mem);
1232+ set_arg(kernel, nargs++, &cctk_arguments->At23.mem);
1233+ set_arg(kernel, nargs++, &cctk_arguments->At23_p.mem);
1234+ set_arg(kernel, nargs++, &cctk_arguments->At23_p_p.mem);
1235+ set_arg(kernel, nargs++, &cctk_arguments->At33.mem);
1236+ set_arg(kernel, nargs++, &cctk_arguments->At33_p.mem);
1237+ set_arg(kernel, nargs++, &cctk_arguments->At33_p_p.mem);
1238+ set_arg(kernel, nargs++, &cctk_arguments->At11rhs.mem);
1239+ set_arg(kernel, nargs++, &cctk_arguments->At12rhs.mem);
1240+ set_arg(kernel, nargs++, &cctk_arguments->At13rhs.mem);
1241+ set_arg(kernel, nargs++, &cctk_arguments->At22rhs.mem);
1242+ set_arg(kernel, nargs++, &cctk_arguments->At23rhs.mem);
1243+ set_arg(kernel, nargs++, &cctk_arguments->At33rhs.mem);
1244+ set_arg(kernel, nargs++, &cctk_arguments->Xt1.mem);
1245+ set_arg(kernel, nargs++, &cctk_arguments->Xt1_p.mem);
1246+ set_arg(kernel, nargs++, &cctk_arguments->Xt1_p_p.mem);
1247+ set_arg(kernel, nargs++, &cctk_arguments->Xt2.mem);
1248+ set_arg(kernel, nargs++, &cctk_arguments->Xt2_p.mem);
1249+ set_arg(kernel, nargs++, &cctk_arguments->Xt2_p_p.mem);
1250+ set_arg(kernel, nargs++, &cctk_arguments->Xt3.mem);
1251+ set_arg(kernel, nargs++, &cctk_arguments->Xt3_p.mem);
1252+ set_arg(kernel, nargs++, &cctk_arguments->Xt3_p_p.mem);
1253+ set_arg(kernel, nargs++, &cctk_arguments->alpha.mem);
1254+ set_arg(kernel, nargs++, &cctk_arguments->alpha_p.mem);
1255+ set_arg(kernel, nargs++, &cctk_arguments->alpha_p_p.mem);
1256+ set_arg(kernel, nargs++, &cctk_arguments->phi.mem);
1257+ set_arg(kernel, nargs++, &cctk_arguments->phi_p.mem);
1258+ set_arg(kernel, nargs++, &cctk_arguments->phi_p_p.mem);
1259+ set_arg(kernel, nargs++, &cctk_arguments->gt11.mem);
1260+ set_arg(kernel, nargs++, &cctk_arguments->gt11_p.mem);
1261+ set_arg(kernel, nargs++, &cctk_arguments->gt11_p_p.mem);
1262+ set_arg(kernel, nargs++, &cctk_arguments->gt12.mem);
1263+ set_arg(kernel, nargs++, &cctk_arguments->gt12_p.mem);
1264+ set_arg(kernel, nargs++, &cctk_arguments->gt12_p_p.mem);
1265+ set_arg(kernel, nargs++, &cctk_arguments->gt13.mem);
1266+ set_arg(kernel, nargs++, &cctk_arguments->gt13_p.mem);
1267+ set_arg(kernel, nargs++, &cctk_arguments->gt13_p_p.mem);
1268+ set_arg(kernel, nargs++, &cctk_arguments->gt22.mem);
1269+ set_arg(kernel, nargs++, &cctk_arguments->gt22_p.mem);
1270+ set_arg(kernel, nargs++, &cctk_arguments->gt22_p_p.mem);
1271+ set_arg(kernel, nargs++, &cctk_arguments->gt23.mem);
1272+ set_arg(kernel, nargs++, &cctk_arguments->gt23_p.mem);
1273+ set_arg(kernel, nargs++, &cctk_arguments->gt23_p_p.mem);
1274+ set_arg(kernel, nargs++, &cctk_arguments->gt33.mem);
1275+ set_arg(kernel, nargs++, &cctk_arguments->gt33_p.mem);
1276+ set_arg(kernel, nargs++, &cctk_arguments->gt33_p_p.mem);
1277+ set_arg(kernel, nargs++, &cctk_arguments->beta1.mem);
1278+ set_arg(kernel, nargs++, &cctk_arguments->beta1_p.mem);
1279+ set_arg(kernel, nargs++, &cctk_arguments->beta1_p_p.mem);
1280+ set_arg(kernel, nargs++, &cctk_arguments->beta2.mem);
1281+ set_arg(kernel, nargs++, &cctk_arguments->beta2_p.mem);
1282+ set_arg(kernel, nargs++, &cctk_arguments->beta2_p_p.mem);
1283+ set_arg(kernel, nargs++, &cctk_arguments->beta3.mem);
1284+ set_arg(kernel, nargs++, &cctk_arguments->beta3_p.mem);
1285+ set_arg(kernel, nargs++, &cctk_arguments->beta3_p_p.mem);
1286+ set_arg(kernel, nargs++, &cctk_arguments->trK.mem);
1287+ set_arg(kernel, nargs++, &cctk_arguments->trK_p.mem);
1288+ set_arg(kernel, nargs++, &cctk_arguments->trK_p_p.mem);
1289+
1290+ size_t const global_work_size[3] =
1291+ { cctkGH->cctk_ash[0], cctkGH->cctk_ash[1], cctkGH->cctk_ash[2] };
1292+ size_t const local_work_size[3] =
1293+ { GROUP_SIZE_I, GROUP_SIZE_J, GROUP_SIZE_K };
1294+
1295+ ierr = clEnqueueNDRangeKernel(cmd_queue, kernel, dim,
1296+ NULL, global_work_size, local_work_size,
1297+ 0, NULL, NULL);
1298+ assert(!ierr);
1299+
1300+ ierr = clFinish(cmd_queue);
1301+ assert(!ierr);
1302+
1303+ return 0;
1304+}
1305+
1306+
1307+
1308+static void check_var(cGH const* const cctkGH,
1309+ char const* const name,
1310+ ptr_t* const ptr,
1311+ CCTK_REAL const val_int, CCTK_REAL const val_bnd)
1312+{
1313+ int const nsize =
1314+ cctkGH->cctk_ash[0] * cctkGH->cctk_ash[1] * cctkGH->cctk_ash[2];
1315+ int ierr = clEnqueueReadBuffer
1316+ (cmd_queue, ptr->mem, 1, 0, nsize * sizeof(CCTK_REAL), ptr->ptr,
1317+ 0, NULL, NULL);
1318+ for (int k=0; k<cctkGH->cctk_lsh[2]; ++k) {
1319+ for (int j=0; j<cctkGH->cctk_lsh[1]; ++j) {
1320+ for (int i=0; i<cctkGH->cctk_lsh[0]; ++i) {
1321+ int const is_int = (i>=cctkGH->imin[0] && i<cctkGH->imax[0] &&
1322+ j>=cctkGH->imin[1] && j<cctkGH->imax[1] &&
1323+ k>=cctkGH->imin[2] && k<cctkGH->imax[2]);
1324+ double const val = is_int ? val_int : val_bnd;
1325+ int const ind3d =
1326+ i + cctkGH->cctk_ash[0] * (j + cctkGH->cctk_ash[1] * k);
1327+ if (! (fabs(ptr->ptr[ind3d] - val) <= 1.0e-15)) {
1328+ printf("%s[%d,%d,%d] is:%.17g should:%.17g\n",
1329+ name, i,j,k, ptr->ptr[ind3d], val);
1330+ }
1331+ assert(fabs(ptr->ptr[ind3d] - val) <= 1.0e-15);
1332+ }
1333+ }
1334+ }
1335+}
1336+
1337+
1338+
1339+void check(cGH * const cctkGH,
1340+ cctk_parameters_t* const cctk_parameters,
1341+ cctk_arguments_t * const cctk_arguments)
1342+{
1343+ check_var(cctkGH, "Arhs", &cctk_arguments->Arhs, 0.0, -1.0);
1344+ check_var(cctkGH, "B1rhs", &cctk_arguments->B1rhs, 0.0, -1.0);
1345+ check_var(cctkGH, "B2rhs", &cctk_arguments->B2rhs, 0.0, -1.0);
1346+ check_var(cctkGH, "B3rhs", &cctk_arguments->B3rhs, 0.0, -1.0);
1347+ check_var(cctkGH, "Xt1rhs", &cctk_arguments->Xt1rhs, 0.0, -1.0);
1348+ check_var(cctkGH, "Xt2rhs", &cctk_arguments->Xt2rhs, 0.0, -1.0);
1349+ check_var(cctkGH, "Xt3rhs", &cctk_arguments->Xt3rhs, 0.0, -1.0);
1350+ check_var(cctkGH, "alpharhs", &cctk_arguments->alpharhs, 0.0, -1.0);
1351+ check_var(cctkGH, "phirhs", &cctk_arguments->phirhs, 0.0, -1.0);
1352+ check_var(cctkGH, "gt11rhs", &cctk_arguments->gt11rhs, 0.0, -1.0);
1353+ check_var(cctkGH, "gt12rhs", &cctk_arguments->gt12rhs, 0.0, -1.0);
1354+ check_var(cctkGH, "gt13rhs", &cctk_arguments->gt13rhs, 0.0, -1.0);
1355+ check_var(cctkGH, "gt22rhs", &cctk_arguments->gt22rhs, 0.0, -1.0);
1356+ check_var(cctkGH, "gt23rhs", &cctk_arguments->gt23rhs, 0.0, -1.0);
1357+ check_var(cctkGH, "beta1rhs", &cctk_arguments->beta1rhs, 0.0, -1.0);
1358+ check_var(cctkGH, "beta2rhs", &cctk_arguments->beta2rhs, 0.0, -1.0);
1359+ check_var(cctkGH, "beta3rhs", &cctk_arguments->beta3rhs, 0.0, -1.0);
1360+ check_var(cctkGH, "trKrhs", &cctk_arguments->trKrhs, 0.0, -1.0);
1361+ check_var(cctkGH, "At11rhs", &cctk_arguments->At11rhs, 0.0, -1.0);
1362+ check_var(cctkGH, "At12rhs", &cctk_arguments->At12rhs, 0.0, -1.0);
1363+ check_var(cctkGH, "At13rhs", &cctk_arguments->At13rhs, 0.0, -1.0);
1364+ check_var(cctkGH, "At22rhs", &cctk_arguments->At22rhs, 0.0, -1.0);
1365+ check_var(cctkGH, "At23rhs", &cctk_arguments->At23rhs, 0.0, -1.0);
1366+ check_var(cctkGH, "At33rhs", &cctk_arguments->At33rhs, 0.0, -1.0);
1367+}
1368+
1369+
1370+
1371+#ifndef SRCDIR
1372+# define SRCDIR "."
1373+#endif
1374+
1375+int main(int argc, char** argv)
1376+{
1377+ printf("EinsteinToolkit test\n");
1378+
1379+
1380+
1381+ printf("Reading sources...\n");
1382+ FILE *const source1_file = fopen(SRCDIR "/ML_BSSN_CL_RHS1.cl", "r");
1383+ assert(source1_file != NULL && "ML_BSSN_CL_RHS1.cl not found!");
1384+ fseek(source1_file, 0, SEEK_END);
1385+ size_t const source1_size = ftell(source1_file);
1386+ fseek(source1_file, 0, SEEK_SET);
1387+ char source1[source1_size + 1];
1388+ fread(source1, source1_size, 1, source1_file);
1389+ source1[source1_size] = '\0';
1390+ fclose(source1_file);
1391+
1392+ FILE *const source2_file = fopen(SRCDIR "/ML_BSSN_CL_RHS2.cl", "r");
1393+ assert(source2_file != NULL && "ML_BSSN_CL_RHS2.cl not found!");
1394+ fseek(source2_file, 0, SEEK_END);
1395+ size_t const source2_size = ftell(source2_file);
1396+ fseek(source2_file, 0, SEEK_SET);
1397+ char source2[source2_size + 1];
1398+ fread(source2, source2_size, 1, source2_file);
1399+ source2[source2_size] = '\0';
1400+ fclose(source2_file);
1401+
1402+
1403+
1404+ printf("Initialise...\n");
1405+ setup();
1406+ cGH cctkGH;
1407+ cctk_parameters_t cctk_parameters;
1408+ cctk_arguments_t cctk_arguments;
1409+ init(&cctkGH, &cctk_parameters, &cctk_arguments);
1410+
1411+ printf("RHS1...\n");
1412+ exec_ML_BSSN_CL_RHS1(source1, &cctkGH, &cctk_parameters, &cctk_arguments);
1413+ printf("RHS2...\n");
1414+ exec_ML_BSSN_CL_RHS2(source2, &cctkGH, &cctk_parameters, &cctk_arguments);
1415+
1416+ check(&cctkGH, &cctk_parameters, &cctk_arguments);
1417+
1418+
1419+
1420+ printf("Begin timing %d iterations...\n", niters);
1421+ struct timeval tv0;
1422+ gettimeofday(&tv0, NULL);
1423+ for (int n=0; n<niters; ++n) {
1424+ exec_ML_BSSN_CL_RHS1(source1, &cctkGH, &cctk_parameters, &cctk_arguments);
1425+ exec_ML_BSSN_CL_RHS2(source2, &cctkGH, &cctk_parameters, &cctk_arguments);
1426+ }
1427+ struct timeval tv1;
1428+ gettimeofday(&tv1, NULL);
1429+ printf("End timing\n");
1430+
1431+
1432+
1433+ double const elapsed =
1434+ (tv1.tv_sec + 1.0e-6 * tv1.tv_usec) -
1435+ (tv0.tv_sec + 1.0e-6 * tv0.tv_usec);
1436+ int const npoints =
1437+ cctkGH.cctk_lsh[0] * cctkGH.cctk_lsh[1] * cctkGH.cctk_lsh[2];
1438+ double const time_per_point = elapsed / niters / npoints;
1439+ printf("Total elapsed time: %g sec\n", elapsed);
1440+ printf("RESULT: Time per grid point update: %g usec\n",
1441+ 1.0e+6 * time_per_point);
1442+ double const flop_per_point = 3400.0;
1443+ printf(" This corresponds to %g GFlop/s\n",
1444+ 1.0e-9 * flop_per_point / time_per_point);
1445+
1446+ printf("\n");
1447+ // VECTOR_SIZE_I=1: 3388 FLop per gpu
1448+ // VECTOR_SIZE_I=2: 3418 Flop per gpu
1449+ printf("Note: This benchmark performs about 3,400 Flop per grid point update.\n");
1450+ printf(" A \"typical\" result is about 1.0 usec.\n");
1451+ printf(" Smaller numbers are better.\n");
1452+ printf("\n");
1453+
1454+
1455+
1456+ printf ("Done.\n");
1457+ return 0;
1458+}
1459
1460=== added file 'examples/EinsteinToolkit/ML_BSSN_CL_RHS1.cl'
1461--- examples/EinsteinToolkit/ML_BSSN_CL_RHS1.cl 1970-01-01 00:00:00 +0000
1462+++ examples/EinsteinToolkit/ML_BSSN_CL_RHS1.cl 2012-12-09 00:26:22 +0000
1463@@ -0,0 +1,3477 @@
1464+// -*-C-*-
1465+
1466+
1467+
1468+#define CCTK_ATTRIBUTE_UNUSED __attribute__((__unused__))
1469+#define CCTK_BUILTIN_EXPECT(a,b) __builtin_expect(a,b)
1470+#define CCTK_UNROLL _Pragma("unroll")
1471+
1472+
1473+
1474+// doubleV vector of double
1475+// convert_doubleV convert to doubleV
1476+// longV vector of long (same size as double)
1477+// indicesV longV containing (0,1,2,...)
1478+// vloadV load unaligned vector
1479+// vstoreV store unaligned vector
1480+
1481+#if VECTOR_SIZE_I == 1
1482+# define doubleV double
1483+# define convert_doubleV convert_double
1484+# define longV long
1485+# define indicesV ((longV)(0))
1486+# define vloadV(i,p) ((p)[i])
1487+# define vstoreV(x,i,p) ((p)[i]=(x))
1488+#elif VECTOR_SIZE_I == 2
1489+# define doubleV double2
1490+# define convert_doubleV convert_double2
1491+# define longV long2
1492+# define indicesV ((longV)(0,1))
1493+# define vloadV vload2
1494+# define vstoreV vstore2
1495+#elif VECTOR_SIZE_I == 4
1496+# define doubleV double4
1497+# define convert_doubleV convert_double4
1498+# define longV long4
1499+# define indicesV ((longV)(0,1,2,3))
1500+# define vloadV vload4
1501+# define vstoreV vstore4
1502+#elif VECTOR_SIZE_I == 8
1503+# define doubleV double8
1504+# define convert_doubleV convert_double8
1505+# define longV long8
1506+# define indicesV ((longV)(0,1,2,3,4,5,6,7))
1507+# define vloadV vload8
1508+# define vstoreV vstore8
1509+#elif VECTOR_SIZE_I == 16
1510+# define doubleV double16
1511+# define convert_doubleV convert_double16
1512+# define longV long16
1513+# define indicesV ((longV)(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
1514+# define vloadV vload16
1515+# define vstoreV vstore16
1516+#else
1517+# error
1518+#endif
1519+
1520+#if VECTOR_SIZE_J!=1 || VECTOR_SIZE_K!=1
1521+# error
1522+#endif
1523+
1524+
1525+
1526+#define CCTK_REAL double
1527+#define CCTK_INT int
1528+#define CCTK_LONG long
1529+
1530+#define CCTK_REAL_VEC_SIZE VECTOR_SIZE_I
1531+#define CCTK_REAL_VEC doubleV
1532+#define CCTK_INT_VEC longV
1533+#define convert_real_vec convert_doubleV
1534+#define vec_index convert_real_vec(indicesV)
1535+
1536+
1537+
1538+// vec_loada load aligned vector
1539+// vec_loadu load unaligned vector
1540+// vec_load load regular vector
1541+// vec_loadu_maybe3 load unaligned vector
1542+// vec_storea store aligned vector
1543+// vec_storeu store unaligned vector
1544+// vec_store_nta store regular vector
1545+// vec_store_nta_partial store regular vector partially
1546+
1547+// VECTORISE_ALIGNED_ARRAYS assumes that all grid points [0,j,k] are
1548+// aligned, and arrays are padded as necessary
1549+
1550+#define vec_loada(p) (* (CCTK_REAL_VEC const global *) & (p))
1551+#define vec_loadu(p) vloadV(0, & (p))
1552+
1553+#if VECTORISE_ALIGNED_ARRAYS
1554+# define vec_load(p) vec_loada(p)
1555+# define vec_loadu_maybe3(off1,off2,off3, p) \
1556+ ((off1) % CCTK_REAL_VEC_SIZE == 0 ? vec_loada(p) : vec_loadu(p))
1557+#else
1558+# define vec_load(p) vec_loadu(p)
1559+# define vec_loadu_maybe3(off1,off2,off3, p) vec_loadu(p)
1560+#endif
1561+
1562+#define vec_storea(p, x) (* (CCTK_REAL_VEC global *) & (p) = (x))
1563+#define vec_storeu(p, x) vstoreV(x, 0, & (p))
1564+
1565+#if VECTORISE_ALIGNED_ARRAYS
1566+# define vec_store_nta(p, x) vec_storea(p, x)
1567+#else
1568+# define vec_store_nta(p, x) vec_storeu(p, x)
1569+#endif
1570+
1571+#define vec_store_partial_prepare(i, imin, imax)
1572+
1573+#if CCTK_REAL_VEC_SIZE == 1
1574+
1575+# define vec_store_nta_partial(p, x) \
1576+ do { \
1577+ if (CCTK_BUILTIN_EXPECT(lc_vec_any_I && lc_vec_any_J && lc_vec_any_K, \
1578+ true)) \
1579+ { \
1580+ vec_store_nta(p, x); \
1581+ } \
1582+ } while(0)
1583+
1584+#elif CCTK_REAL_VEC_SIZE == 2
1585+
1586+# define vec_store_nta_partial(p, x) \
1587+ do { \
1588+ if (CCTK_BUILTIN_EXPECT(lc_vec_any_I && lc_vec_any_J && lc_vec_any_K, \
1589+ true)) \
1590+ { \
1591+ if (CCTK_BUILTIN_EXPECT(lc_vec_all_I, true)) { \
1592+ vec_store_nta(p, x); \
1593+ } else { \
1594+ if (lc_vec_lo_I) { \
1595+ (&(p))[0] = (x).s0; \
1596+ } else { \
1597+ (&(p))[1] = (x).s1; \
1598+ } \
1599+ } \
1600+ } \
1601+ } while (0)
1602+
1603+#else
1604+
1605+# define vec_store_nta_partial(p, x) \
1606+ do { \
1607+ if (CCTK_BUILTIN_EXPECT(lc_vec_any_I && lc_vec_any_J && lc_vec_any_K, \
1608+ true)) \
1609+ { \
1610+ if (CCTK_BUILTIN_EXPECT(lc_vec_all_I, true)) { \
1611+ vec_store_nta(p, x); \
1612+ } else { \
1613+ /* select(a,b,c) = MSB(c) ? b : a */ \
1614+ vec_store_nta(p, select(vec_load(p), x, lc_vec_mask_I)); \
1615+ } \
1616+ } \
1617+ } while(0)
1618+
1619+#endif
1620+
1621+
1622+
1623+#define kneg(x) (-(x))
1624+
1625+#define kadd(x,y) ((x)+(y))
1626+#define ksub(x,y) ((x)-(y))
1627+#define kmul(x,y) ((x)*(y))
1628+#define kdiv(x,y) ((x)/(y))
1629+
1630+#define kmadd(x,y,z) mad(x,y,z) // faster than fma(x,y,z)
1631+#define kmsub(x,y,z) mad(x,y,-(z))
1632+#define knmadd(x,y,z) (-mad(x,y,z))
1633+#define knmsub(x,y,z) (-mad(x,y,-(z)))
1634+
1635+#define kcopysign(x,y) copysign(x,y)
1636+#define kfabs(x) fabs(x)
1637+#define kfmax(x,y) fmax(x,y)
1638+#define kfmin(x,y) fmin(x,y)
1639+#define kfnabs(x) (-fabs(x))
1640+#define ksqrt(x) sqrt(x)
1641+
1642+#define kacos(x) acos(x)
1643+#define kacosh(x) acosh(x)
1644+#define kasin(x) asin(x)
1645+#define kasinh(x) asinh(x)
1646+#define katan(x) atan(x)
1647+#define katan2(x,y) atan2(x,y)
1648+#define katanh(x) atanh(x)
1649+#define kcos(x) cos(x)
1650+#define kcosh(x) cosh(x)
1651+#define kexp(x) exp(x)
1652+#define klog(x) log(x)
1653+#define kpow(x,a) pow(x,a)
1654+#define ksin(x) sin(x)
1655+#define ksinh(x) sinh(x)
1656+#define ktan(x) tan(x)
1657+#define ktanh(x) tanh(x)
1658+
1659+// Choice [sign(x)>0 ? y : z]
1660+#define kifpos(x,y,z) select(y,z,x)
1661+#define kifneg(x,y,z) select(z,y,x)
1662+
1663+// Choice [x ? y : z]
1664+#define kifthen(x,y,z) \
1665+ select((CCTK_REAL_VEC)(z), (CCTK_REAL_VEC)(y), (CCTK_INT_VEC)(x))
1666+
1667+
1668+
1669+#if 0 && defined(__APPLE__)
1670+
1671+// Apple's pow implementation is much better than their pown
1672+# undef pown
1673+# define pown pow
1674+
1675+inline CCTK_REAL myfabs(CCTK_REAL x);
1676+inline CCTK_REAL myfabs(CCTK_REAL x)
1677+{
1678+ return x>=0 ? x : -x;
1679+}
1680+
1681+inline CCTK_REAL mycos1(CCTK_REAL x);
1682+inline CCTK_REAL mycos1(CCTK_REAL x)
1683+{
1684+ // 0<=x<=pi/2
1685+ CCTK_REAL const c1 = +1.0;
1686+ CCTK_REAL const c2 = -1.0/2.0;
1687+ CCTK_REAL const c3 = +1.0/24.0;
1688+ CCTK_REAL const c4 = -1.0/720.0;
1689+ CCTK_REAL const c5 = +1.0/40320.0;
1690+ CCTK_REAL const c6 = -1.0/3628800.0;
1691+ CCTK_REAL const c7 = +1.0/479001600.0;
1692+ CCTK_REAL const c8 = -1.0/87178291200.0;
1693+ CCTK_REAL const x2 = pown(x,2);
1694+ return (c1 + x2 *
1695+ (c2 + x2 *
1696+ (c3 + x2 *
1697+ (c4 + x2 *
1698+ (c5 + x2 *
1699+ (c6 + x2 *
1700+ (c7 + x2 * c8)))))));
1701+}
1702+
1703+inline CCTK_REAL mycos(CCTK_REAL x);
1704+inline CCTK_REAL mycos(CCTK_REAL x)
1705+{
1706+ x = myfabs(x);
1707+ x = fmod(x,2*M_PI);
1708+ if (x>M_PI) x=M_PI-x;
1709+ bool const isneg = x>M_PI/2;
1710+ if (isneg) x=M_PI/2-x;
1711+ CCTK_REAL y = mycos1(x);
1712+ if (isneg) y=-y;
1713+ return y;
1714+}
1715+
1716+# undef cos
1717+# define cos mycos
1718+
1719+
1720+
1721+# undef kcos
1722+// Apple's OpenCL compiler segfaults when calling cos on a vector, so
1723+// we serialise this operation explicitly
1724+inline CCTK_REAL_VEC kcos(CCTK_REAL_VEC const x);
1725+# if CCTK_REAL_VEC_SIZE==1
1726+inline CCTK_REAL_VEC kcos(CCTK_REAL_VEC const x)
1727+{
1728+ return cos(x);
1729+}
1730+# elif CCTK_REAL_VEC_SIZE==2
1731+inline CCTK_REAL_VEC kcos(CCTK_REAL_VEC const x)
1732+{
1733+ return (CCTK_REAL_VEC)(cos(x.s0), cos(x.s1));
1734+}
1735+# else
1736+# error
1737+# endif
1738+
1739+#endif
1740+
1741+
1742+
1743+////////////////////////////////////////////////////////////////////////////////
1744+
1745+
1746+
1747+#define dim 3
1748+
1749+
1750+
1751+typedef struct {
1752+ // Doubles first, then ints, to ensure proper alignment
1753+ // Coordinates:
1754+ double cctk_origin_space[dim];
1755+ double cctk_delta_space[dim];
1756+ double cctk_time;
1757+ double cctk_delta_time;
1758+ // Grid structure properties:
1759+ int cctk_gsh[dim];
1760+ int cctk_lbnd[dim];
1761+ int cctk_lsh[dim];
1762+ int cctk_ash[dim];
1763+ // Loop settings:
1764+ int lmin[dim]; // loop region
1765+ int lmax[dim];
1766+ int imin[dim]; // active region
1767+ int imax[dim];
1768+} cGH;
1769+
1770+
1771+
1772+// Cactus compatibility definitions
1773+
1774+#define DECLARE_CCTK_ARGUMENTS \
1775+ ptrdiff_t const cctk_lbnd[] = \
1776+ {cctkGH->cctk_lbnd[0], cctkGH->cctk_lbnd[1], cctkGH->cctk_lbnd[2]}; \
1777+ ptrdiff_t const cctk_lsh[] = \
1778+ {cctkGH->cctk_lsh[0], cctkGH->cctk_lsh[1], cctkGH->cctk_lsh[2]}; \
1779+ ptrdiff_t const imin[] = \
1780+ {cctkGH->imin[0], cctkGH->imin[1], cctkGH->imin[2]}; \
1781+ ptrdiff_t const imax[] = \
1782+ {cctkGH->imax[0], cctkGH->imax[1], cctkGH->imax[2]}; \
1783+ CCTK_REAL const cctk_time = cctkGH->cctk_time; \
1784+ CCTK_REAL const cctk_delta_time = cctkGH->cctk_delta_time; \
1785+ CCTK_REAL constant const *restrict const cctk_origin_space = \
1786+ cctkGH->cctk_origin_space; \
1787+ CCTK_REAL constant const *restrict const cctk_delta_space = \
1788+ cctkGH->cctk_delta_space; \
1789+ bool const stress_energy_state1 = 0;
1790+
1791+#define CCTK_GFINDEX3D(cctkGH,i,j,k) \
1792+ ((i) + cctk_lsh[0] * ((j) + cctk_lsh[1] * (k)))
1793+
1794+#define CCTK_ORIGIN_SPACE(d) (cctkGH->cctk_origin_space[d])
1795+#define CCTK_DELTA_SPACE(d) (cctkGH->cctk_delta_space[d])
1796+#define CCTK_DELTA_TIME (cctkGH->cctk_delta_time)
1797+
1798+
1799+
1800+// Kranc compatibility definitions
1801+
1802+#define Pi M_PI
1803+#define IfThen(c,x,y) ((c)?(x):(y))
1804+#define ToReal(x) ((CCTK_REAL_VEC)(CCTK_REAL)(x))
1805+
1806+CCTK_REAL ScalarINV(CCTK_REAL const x);
1807+CCTK_REAL ScalarINV(CCTK_REAL const x)
1808+{
1809+ return ((CCTK_REAL)1)/x;
1810+}
1811+CCTK_REAL_VEC INV(CCTK_REAL_VEC const x);
1812+CCTK_REAL_VEC INV(CCTK_REAL_VEC const x)
1813+{
1814+ return ToReal(1)/x;
1815+}
1816+/* CCTK_REAL_VEC Sign(CCTK_REAL_VEC const x); */
1817+/* CCTK_REAL_VEC Sign(CCTK_REAL_VEC const x) */
1818+/* { */
1819+/* return x==ToReal(0) ? ToReal(0) : copysign(ToReal(1), x); */
1820+/* } */
1821+// CCTK_REAL_VEC SQR(CCTK_REAL_VEC const x)
1822+// {
1823+// return pown(x,2);
1824+// }
1825+CCTK_REAL_VEC SQR(CCTK_REAL_VEC const x);
1826+CCTK_REAL_VEC SQR(CCTK_REAL_VEC const x)
1827+{
1828+ return x*x;
1829+}
1830+CCTK_REAL_VEC ksgn(CCTK_REAL_VEC x);
1831+CCTK_REAL_VEC ksgn(CCTK_REAL_VEC x)
1832+{
1833+ return kifthen(x==ToReal(0.0), ToReal(0.0), kcopysign(ToReal(1.0), x));
1834+}
1835+CCTK_INT_VEC kisgn(CCTK_REAL_VEC x);
1836+CCTK_INT_VEC kisgn(CCTK_REAL_VEC x)
1837+{
1838+ return select(select((CCTK_INT_VEC)+1,
1839+ (CCTK_INT_VEC)-1, (CCTK_INT_VEC)(x<ToReal(0.0))),
1840+ (CCTK_INT_VEC)0, (CCTK_INT_VEC)(x==ToReal(0.0)));
1841+}
1842+
1843+#define KRANC_GFOFFSET3D(u,i,j,k) \
1844+ vec_loadu_maybe3(i,j,k,(u)[di*(i)+dj*(j)+dk*(k)])
1845+
1846+#define eTtt ((CCTK_REAL global const *)0)
1847+#define eTtx ((CCTK_REAL global const *)0)
1848+#define eTty ((CCTK_REAL global const *)0)
1849+#define eTtz ((CCTK_REAL global const *)0)
1850+#define eTxx ((CCTK_REAL global const *)0)
1851+#define eTxy ((CCTK_REAL global const *)0)
1852+#define eTxz ((CCTK_REAL global const *)0)
1853+#define eTyy ((CCTK_REAL global const *)0)
1854+#define eTyz ((CCTK_REAL global const *)0)
1855+#define eTzz ((CCTK_REAL global const *)0)
1856+#define jacobian_derivative_group ""
1857+#define jacobian_group ""
1858+#define jacobian_identity_map 0
1859+#define stress_energy_state (&stress_energy_state1)
1860+#define CCTK_IsFunctionAliased(x) 0
1861+#define CCTK_WARN(lev,msg) ((void)0)
1862+#define GenericFD_GroupDataPointers(a,b,c,d) ((void)0)
1863+#define MultiPatch_GetMap(x) 0
1864+#define strlen(x) 0
1865+
1866+
1867+
1868+////////////////////////////////////////////////////////////////////////////////
1869+
1870+
1871+
1872+#define LC_SET_GROUP_VARS(D) \
1873+ ptrdiff_t const ind##D CCTK_ATTRIBUTE_UNUSED = \
1874+ (lc_off##D + VECTOR_SIZE_##D * UNROLL_SIZE_##D * \
1875+ (lc_grp##D + GROUP_SIZE_##D * \
1876+ (lc_til##D + TILE_SIZE_##D * lc_grd##D))); \
1877+ bool const lc_grp_done_##D CCTK_ATTRIBUTE_UNUSED = \
1878+ ind##D >= lc_##D##max;
1879+
1880+#define vecVI indicesV
1881+#define vecVJ ((CCTK_INT_VEC)0)
1882+#define vecVK ((CCTK_INT_VEC)0)
1883+
1884+#define LC_SET_VECTOR_VARS(IND,D) \
1885+ ptrdiff_t const IND CCTK_ATTRIBUTE_UNUSED = \
1886+ (lc_off##D + VECTOR_SIZE_##D * \
1887+ (lc_unr##D + UNROLL_SIZE_##D * \
1888+ (lc_grp##D + GROUP_SIZE_##D * \
1889+ (lc_til##D + TILE_SIZE_##D * lc_grd##D)))); \
1890+ bool const lc_vec_trivial_##D CCTK_ATTRIBUTE_UNUSED = \
1891+ VECTOR_SIZE_##D * UNROLL_SIZE_##D == 1; \
1892+ bool const lc_vec_any_##D CCTK_ATTRIBUTE_UNUSED = \
1893+ /*TODO because unroll size is 1*/ \
1894+ 1 /*TODO lc_vec_trivial_##D || \
1895+ (IND+VECTOR_SIZE_##D-1 >= lc_##D##min && IND < lc_##D##max)*/; \
1896+ bool const lc_vec_lo_##D CCTK_ATTRIBUTE_UNUSED = \
1897+ lc_vec_trivial_##D || \
1898+ IND >= lc_##D##min; \
1899+ bool const lc_vec_hi_##D CCTK_ATTRIBUTE_UNUSED = \
1900+ lc_vec_trivial_##D || \
1901+ IND+VECTOR_SIZE_##D-1 < lc_##D##max; \
1902+ bool const lc_vec_all_##D CCTK_ATTRIBUTE_UNUSED = \
1903+ lc_vec_trivial_##D || \
1904+ (lc_vec_lo_##D && lc_vec_hi_##D); \
1905+ CCTK_INT_VEC const lc_vec_mask_##D CCTK_ATTRIBUTE_UNUSED = \
1906+ lc_vec_trivial_##D ? \
1907+ (CCTK_INT_VEC)true : \
1908+ ((CCTK_INT_VEC)IND+vecV##D >= (CCTK_INT_VEC)lc_##D##min) & \
1909+ ((CCTK_INT_VEC)IND+vecV##D < (CCTK_INT_VEC)lc_##D##max);
1910+
1911+#define LC_LOOP3VEC(name, \
1912+ i,j,k, \
1913+ imin,jmin,kmin, \
1914+ imax,jmax,kmax, \
1915+ ilsh,jlsh,klsh, \
1916+ vecsize) \
1917+ do { \
1918+ typedef int lc_loop3_##name; \
1919+ \
1920+ ptrdiff_t const lc_Imin = (imin); \
1921+ ptrdiff_t const lc_Jmin = (jmin); \
1922+ ptrdiff_t const lc_Kmin = (kmin); \
1923+ ptrdiff_t const lc_Imax = (imax); \
1924+ ptrdiff_t const lc_Jmax = (jmax); \
1925+ ptrdiff_t const lc_Kmax = (kmax); \
1926+ ptrdiff_t const lc_offI = cctkGH->lmin[0]; /* offset */ \
1927+ ptrdiff_t const lc_offJ = cctkGH->lmin[1]; \
1928+ ptrdiff_t const lc_offK = cctkGH->lmin[2]; \
1929+ ptrdiff_t const lc_grpI = get_local_id(0); /* index in group */ \
1930+ ptrdiff_t const lc_grpJ = get_local_id(1); \
1931+ ptrdiff_t const lc_grpK = get_local_id(2); \
1932+ ptrdiff_t const lc_grdI = get_group_id(0); /* index in grid */ \
1933+ ptrdiff_t const lc_grdJ = get_group_id(1); \
1934+ ptrdiff_t const lc_grdK = get_group_id(2); \
1935+ \
1936+ ptrdiff_t const lc_imin = lc_Imin; \
1937+ ptrdiff_t const lc_imax = lc_Imax; \
1938+ \
1939+ for (ptrdiff_t lc_tilK = 0; lc_tilK < TILE_SIZE_K; ++lc_tilK) { \
1940+ LC_SET_GROUP_VARS(K); \
1941+ if (CCTK_BUILTIN_EXPECT(lc_grp_done_K, 0)) break; \
1942+ for (ptrdiff_t lc_tilJ = 0; lc_tilJ < TILE_SIZE_J; ++lc_tilJ) { \
1943+ LC_SET_GROUP_VARS(J); \
1944+ if (CCTK_BUILTIN_EXPECT(lc_grp_done_J, 0)) break; \
1945+ for (ptrdiff_t lc_tilI = 0; lc_tilI < TILE_SIZE_I; ++lc_tilI) { \
1946+ LC_SET_GROUP_VARS(I); \
1947+ if (CCTK_BUILTIN_EXPECT(lc_grp_done_I, 0)) break; \
1948+ \
1949+ ptrdiff_t const lc_unrK = 0; \
1950+ /*TODO CCTK_UNROLL \
1951+ for (ptrdiff_t lc_unrK = 0; lc_unrK < UNROLL_SIZE_K; ++lc_unrK)*/ { \
1952+ LC_SET_VECTOR_VARS(k,K); \
1953+ ptrdiff_t const lc_unrJ = 0; \
1954+ /*TODO CCTK_UNROLL \
1955+ for (ptrdiff_t lc_unrJ = 0; lc_unrJ < UNROLL_SIZE_J; ++lc_unrJ)*/ { \
1956+ LC_SET_VECTOR_VARS(j,J); \
1957+ ptrdiff_t const lc_unrI = 0; \
1958+ /*TODO CCTK_UNROLL \
1959+ for (ptrdiff_t lc_unrI = 0; lc_unrI < UNROLL_SIZE_I; ++lc_unrI)*/ { \
1960+ LC_SET_VECTOR_VARS(i,I); \
1961+ \
1962+ {
1963+#define LC_ENDLOOP3VEC(name) \
1964+ } \
1965+ } \
1966+ } \
1967+ } \
1968+ } \
1969+ } \
1970+ } \
1971+ typedef lc_loop3_##name lc_ensure_proper_nesting; \
1972+ } while(0)
1973+
1974+#define LC_LOOP3(name, \
1975+ i,j,k, \
1976+ imin,jmin,kmin, \
1977+ imax,jmax,kmax, \
1978+ ilsh,jlsh,klsh) \
1979+ LC_LOOP3VEC(name, \
1980+ i,j,k, \
1981+ imin,jmin,kmin, \
1982+ imax,jmax,kmax, \
1983+ ilsh,jlsh,klsh, \
1984+ 1)
1985+#define LC_ENDLOOP3(name) \
1986+ LC_ENDLOOP3VEC(name)
1987+
1988+// Cactus parameters:
1989+typedef struct {
1990+ CCTK_REAL A_bound_limit;
1991+ CCTK_REAL A_bound_scalar;
1992+ CCTK_REAL A_bound_speed;
1993+ CCTK_REAL alpha_bound_limit;
1994+ CCTK_REAL alpha_bound_scalar;
1995+ CCTK_REAL alpha_bound_speed;
1996+ CCTK_REAL AlphaDriver;
1997+ CCTK_REAL At11_bound_limit;
1998+ CCTK_REAL At11_bound_scalar;
1999+ CCTK_REAL At11_bound_speed;
2000+ CCTK_REAL At12_bound_limit;
2001+ CCTK_REAL At12_bound_scalar;
2002+ CCTK_REAL At12_bound_speed;
2003+ CCTK_REAL At13_bound_limit;
2004+ CCTK_REAL At13_bound_scalar;
2005+ CCTK_REAL At13_bound_speed;
2006+ CCTK_REAL At22_bound_limit;
2007+ CCTK_REAL At22_bound_scalar;
2008+ CCTK_REAL At22_bound_speed;
2009+ CCTK_REAL At23_bound_limit;
2010+ CCTK_REAL At23_bound_scalar;
2011+ CCTK_REAL At23_bound_speed;
2012+ CCTK_REAL At33_bound_limit;
2013+ CCTK_REAL At33_bound_scalar;
2014+ CCTK_REAL At33_bound_speed;
2015+ CCTK_REAL B1_bound_limit;
2016+ CCTK_REAL B1_bound_scalar;
2017+ CCTK_REAL B1_bound_speed;
2018+ CCTK_REAL B2_bound_limit;
2019+ CCTK_REAL B2_bound_scalar;
2020+ CCTK_REAL B2_bound_speed;
2021+ CCTK_REAL B3_bound_limit;
2022+ CCTK_REAL B3_bound_scalar;
2023+ CCTK_REAL B3_bound_speed;
2024+ CCTK_REAL beta1_bound_limit;
2025+ CCTK_REAL beta1_bound_scalar;
2026+ CCTK_REAL beta1_bound_speed;
2027+ CCTK_REAL beta2_bound_limit;
2028+ CCTK_REAL beta2_bound_scalar;
2029+ CCTK_REAL beta2_bound_speed;
2030+ CCTK_REAL beta3_bound_limit;
2031+ CCTK_REAL beta3_bound_scalar;
2032+ CCTK_REAL beta3_bound_speed;
2033+ CCTK_REAL BetaDriver;
2034+ CCTK_REAL EpsDiss;
2035+ CCTK_REAL gt11_bound_limit;
2036+ CCTK_REAL gt11_bound_scalar;
2037+ CCTK_REAL gt11_bound_speed;
2038+ CCTK_REAL gt12_bound_limit;
2039+ CCTK_REAL gt12_bound_scalar;
2040+ CCTK_REAL gt12_bound_speed;
2041+ CCTK_REAL gt13_bound_limit;
2042+ CCTK_REAL gt13_bound_scalar;
2043+ CCTK_REAL gt13_bound_speed;
2044+ CCTK_REAL gt22_bound_limit;
2045+ CCTK_REAL gt22_bound_scalar;
2046+ CCTK_REAL gt22_bound_speed;
2047+ CCTK_REAL gt23_bound_limit;
2048+ CCTK_REAL gt23_bound_scalar;
2049+ CCTK_REAL gt23_bound_speed;
2050+ CCTK_REAL gt33_bound_limit;
2051+ CCTK_REAL gt33_bound_scalar;
2052+ CCTK_REAL gt33_bound_speed;
2053+ CCTK_REAL harmonicF;
2054+ CCTK_REAL LapseACoeff;
2055+ CCTK_REAL LapseAdvectionCoeff;
2056+ CCTK_REAL MinimumLapse;
2057+ CCTK_REAL ML_curv_bound_limit;
2058+ CCTK_REAL ML_curv_bound_scalar;
2059+ CCTK_REAL ML_curv_bound_speed;
2060+ CCTK_REAL ML_dtlapse_bound_limit;
2061+ CCTK_REAL ML_dtlapse_bound_scalar;
2062+ CCTK_REAL ML_dtlapse_bound_speed;
2063+ CCTK_REAL ML_dtshift_bound_limit;
2064+ CCTK_REAL ML_dtshift_bound_scalar;
2065+ CCTK_REAL ML_dtshift_bound_speed;
2066+ CCTK_REAL ML_Gamma_bound_limit;
2067+ CCTK_REAL ML_Gamma_bound_scalar;
2068+ CCTK_REAL ML_Gamma_bound_speed;
2069+ CCTK_REAL ML_lapse_bound_limit;
2070+ CCTK_REAL ML_lapse_bound_scalar;
2071+ CCTK_REAL ML_lapse_bound_speed;
2072+ CCTK_REAL ML_log_confac_bound_limit;
2073+ CCTK_REAL ML_log_confac_bound_scalar;
2074+ CCTK_REAL ML_log_confac_bound_speed;
2075+ CCTK_REAL ML_metric_bound_limit;
2076+ CCTK_REAL ML_metric_bound_scalar;
2077+ CCTK_REAL ML_metric_bound_speed;
2078+ CCTK_REAL ML_shift_bound_limit;
2079+ CCTK_REAL ML_shift_bound_scalar;
2080+ CCTK_REAL ML_shift_bound_speed;
2081+ CCTK_REAL ML_trace_curv_bound_limit;
2082+ CCTK_REAL ML_trace_curv_bound_scalar;
2083+ CCTK_REAL ML_trace_curv_bound_speed;
2084+ CCTK_REAL phi_bound_limit;
2085+ CCTK_REAL phi_bound_scalar;
2086+ CCTK_REAL phi_bound_speed;
2087+ CCTK_REAL ShiftAdvectionCoeff;
2088+ CCTK_REAL ShiftBCoeff;
2089+ CCTK_REAL ShiftGammaCoeff;
2090+ CCTK_REAL SpatialBetaDriverRadius;
2091+ CCTK_REAL SpatialShiftGammaCoeffRadius;
2092+ CCTK_REAL trK_bound_limit;
2093+ CCTK_REAL trK_bound_scalar;
2094+ CCTK_REAL trK_bound_speed;
2095+ CCTK_REAL Xt1_bound_limit;
2096+ CCTK_REAL Xt1_bound_scalar;
2097+ CCTK_REAL Xt1_bound_speed;
2098+ CCTK_REAL Xt2_bound_limit;
2099+ CCTK_REAL Xt2_bound_scalar;
2100+ CCTK_REAL Xt2_bound_speed;
2101+ CCTK_REAL Xt3_bound_limit;
2102+ CCTK_REAL Xt3_bound_scalar;
2103+ CCTK_REAL Xt3_bound_speed;
2104+ CCTK_INT conformalMethod;
2105+ CCTK_INT fdOrder;
2106+ CCTK_INT harmonicN;
2107+ CCTK_INT harmonicShift;
2108+ CCTK_INT ML_BSSN_CL_Advect_calc_every;
2109+ CCTK_INT ML_BSSN_CL_Advect_calc_offset;
2110+ CCTK_INT ML_BSSN_CL_boundary_calc_every;
2111+ CCTK_INT ML_BSSN_CL_boundary_calc_offset;
2112+ CCTK_INT ML_BSSN_CL_constraints1_calc_every;
2113+ CCTK_INT ML_BSSN_CL_constraints1_calc_offset;
2114+ CCTK_INT ML_BSSN_CL_constraints2_calc_every;
2115+ CCTK_INT ML_BSSN_CL_constraints2_calc_offset;
2116+ CCTK_INT ML_BSSN_CL_convertFromADMBase_calc_every;
2117+ CCTK_INT ML_BSSN_CL_convertFromADMBase_calc_offset;
2118+ CCTK_INT ML_BSSN_CL_convertFromADMBaseGamma_calc_every;
2119+ CCTK_INT ML_BSSN_CL_convertFromADMBaseGamma_calc_offset;
2120+ CCTK_INT ML_BSSN_CL_convertToADMBase_calc_every;
2121+ CCTK_INT ML_BSSN_CL_convertToADMBase_calc_offset;
2122+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_every;
2123+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_offset;
2124+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_every;
2125+ CCTK_INT ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_offset;
2126+ CCTK_INT ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_every;
2127+ CCTK_INT ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_offset;
2128+ CCTK_INT ML_BSSN_CL_Dissipation_calc_every;
2129+ CCTK_INT ML_BSSN_CL_Dissipation_calc_offset;
2130+ CCTK_INT ML_BSSN_CL_enforce_calc_every;
2131+ CCTK_INT ML_BSSN_CL_enforce_calc_offset;
2132+ CCTK_INT ML_BSSN_CL_InitGamma_calc_every;
2133+ CCTK_INT ML_BSSN_CL_InitGamma_calc_offset;
2134+ CCTK_INT ML_BSSN_CL_InitRHS_calc_every;
2135+ CCTK_INT ML_BSSN_CL_InitRHS_calc_offset;
2136+ CCTK_INT ML_BSSN_CL_MaxNumArrayEvolvedVars;
2137+ CCTK_INT ML_BSSN_CL_MaxNumEvolvedVars;
2138+ CCTK_INT ML_BSSN_CL_Minkowski_calc_every;
2139+ CCTK_INT ML_BSSN_CL_Minkowski_calc_offset;
2140+ CCTK_INT ML_BSSN_CL_RHS1_calc_every;
2141+ CCTK_INT ML_BSSN_CL_RHS1_calc_offset;
2142+ CCTK_INT ML_BSSN_CL_RHS2_calc_every;
2143+ CCTK_INT ML_BSSN_CL_RHS2_calc_offset;
2144+ CCTK_INT ML_BSSN_CL_RHSStaticBoundary_calc_every;
2145+ CCTK_INT ML_BSSN_CL_RHSStaticBoundary_calc_offset;
2146+ CCTK_INT other_timelevels;
2147+ CCTK_INT rhs_timelevels;
2148+ CCTK_INT ShiftAlphaPower;
2149+ CCTK_INT timelevels;
2150+ CCTK_INT verbose;
2151+} cctk_parameters_t;
2152+#define DECLARE_CCTK_PARAMETERS \
2153+ CCTK_REAL const A_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2154+ CCTK_REAL const A_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2155+ CCTK_REAL const A_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2156+ CCTK_REAL const alpha_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2157+ CCTK_REAL const alpha_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2158+ CCTK_REAL const alpha_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2159+ CCTK_REAL const AlphaDriver CCTK_ATTRIBUTE_UNUSED = 1; \
2160+ CCTK_REAL const At11_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2161+ CCTK_REAL const At11_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2162+ CCTK_REAL const At11_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2163+ CCTK_REAL const At12_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2164+ CCTK_REAL const At12_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2165+ CCTK_REAL const At12_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2166+ CCTK_REAL const At13_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2167+ CCTK_REAL const At13_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2168+ CCTK_REAL const At13_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2169+ CCTK_REAL const At22_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2170+ CCTK_REAL const At22_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2171+ CCTK_REAL const At22_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2172+ CCTK_REAL const At23_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2173+ CCTK_REAL const At23_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2174+ CCTK_REAL const At23_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2175+ CCTK_REAL const At33_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2176+ CCTK_REAL const At33_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2177+ CCTK_REAL const At33_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2178+ CCTK_REAL const B1_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2179+ CCTK_REAL const B1_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2180+ CCTK_REAL const B1_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2181+ CCTK_REAL const B2_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2182+ CCTK_REAL const B2_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2183+ CCTK_REAL const B2_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2184+ CCTK_REAL const B3_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2185+ CCTK_REAL const B3_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2186+ CCTK_REAL const B3_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2187+ CCTK_REAL const beta1_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2188+ CCTK_REAL const beta1_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2189+ CCTK_REAL const beta1_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2190+ CCTK_REAL const beta2_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2191+ CCTK_REAL const beta2_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2192+ CCTK_REAL const beta2_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2193+ CCTK_REAL const beta3_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2194+ CCTK_REAL const beta3_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2195+ CCTK_REAL const beta3_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2196+ CCTK_REAL const BetaDriver CCTK_ATTRIBUTE_UNUSED = 1; \
2197+ CCTK_REAL const EpsDiss CCTK_ATTRIBUTE_UNUSED = 0.20000000000000001; \
2198+ CCTK_REAL const gt11_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2199+ CCTK_REAL const gt11_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2200+ CCTK_REAL const gt11_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2201+ CCTK_REAL const gt12_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2202+ CCTK_REAL const gt12_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2203+ CCTK_REAL const gt12_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2204+ CCTK_REAL const gt13_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2205+ CCTK_REAL const gt13_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2206+ CCTK_REAL const gt13_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2207+ CCTK_REAL const gt22_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2208+ CCTK_REAL const gt22_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2209+ CCTK_REAL const gt22_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2210+ CCTK_REAL const gt23_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2211+ CCTK_REAL const gt23_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2212+ CCTK_REAL const gt23_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2213+ CCTK_REAL const gt33_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2214+ CCTK_REAL const gt33_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2215+ CCTK_REAL const gt33_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2216+ CCTK_REAL const harmonicF CCTK_ATTRIBUTE_UNUSED = 2; \
2217+ CCTK_REAL const LapseACoeff CCTK_ATTRIBUTE_UNUSED = 1; \
2218+ CCTK_REAL const LapseAdvectionCoeff CCTK_ATTRIBUTE_UNUSED = 1; \
2219+ CCTK_REAL const MinimumLapse CCTK_ATTRIBUTE_UNUSED = 1e-08; \
2220+ CCTK_REAL const ML_curv_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2221+ CCTK_REAL const ML_curv_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2222+ CCTK_REAL const ML_curv_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2223+ CCTK_REAL const ML_dtlapse_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2224+ CCTK_REAL const ML_dtlapse_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2225+ CCTK_REAL const ML_dtlapse_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2226+ CCTK_REAL const ML_dtshift_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2227+ CCTK_REAL const ML_dtshift_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2228+ CCTK_REAL const ML_dtshift_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2229+ CCTK_REAL const ML_Gamma_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2230+ CCTK_REAL const ML_Gamma_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2231+ CCTK_REAL const ML_Gamma_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2232+ CCTK_REAL const ML_lapse_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2233+ CCTK_REAL const ML_lapse_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2234+ CCTK_REAL const ML_lapse_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2235+ CCTK_REAL const ML_log_confac_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2236+ CCTK_REAL const ML_log_confac_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2237+ CCTK_REAL const ML_log_confac_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2238+ CCTK_REAL const ML_metric_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2239+ CCTK_REAL const ML_metric_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2240+ CCTK_REAL const ML_metric_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2241+ CCTK_REAL const ML_shift_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2242+ CCTK_REAL const ML_shift_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2243+ CCTK_REAL const ML_shift_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2244+ CCTK_REAL const ML_trace_curv_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2245+ CCTK_REAL const ML_trace_curv_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2246+ CCTK_REAL const ML_trace_curv_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2247+ CCTK_REAL const phi_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2248+ CCTK_REAL const phi_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2249+ CCTK_REAL const phi_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2250+ CCTK_REAL const ShiftAdvectionCoeff CCTK_ATTRIBUTE_UNUSED = 1; \
2251+ CCTK_REAL const ShiftBCoeff CCTK_ATTRIBUTE_UNUSED = 1; \
2252+ CCTK_REAL const ShiftGammaCoeff CCTK_ATTRIBUTE_UNUSED = 0.75; \
2253+ CCTK_REAL const SpatialBetaDriverRadius CCTK_ATTRIBUTE_UNUSED = 1000000000000; \
2254+ CCTK_REAL const SpatialShiftGammaCoeffRadius CCTK_ATTRIBUTE_UNUSED = 1000000000000; \
2255+ CCTK_REAL const trK_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2256+ CCTK_REAL const trK_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2257+ CCTK_REAL const trK_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2258+ CCTK_REAL const Xt1_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2259+ CCTK_REAL const Xt1_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2260+ CCTK_REAL const Xt1_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2261+ CCTK_REAL const Xt2_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2262+ CCTK_REAL const Xt2_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2263+ CCTK_REAL const Xt2_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2264+ CCTK_REAL const Xt3_bound_limit CCTK_ATTRIBUTE_UNUSED = 0; \
2265+ CCTK_REAL const Xt3_bound_scalar CCTK_ATTRIBUTE_UNUSED = 0; \
2266+ CCTK_REAL const Xt3_bound_speed CCTK_ATTRIBUTE_UNUSED = 1; \
2267+ CCTK_INT const conformalMethod CCTK_ATTRIBUTE_UNUSED = 0; \
2268+ CCTK_INT const fdOrder CCTK_ATTRIBUTE_UNUSED = 4; \
2269+ CCTK_INT const harmonicN CCTK_ATTRIBUTE_UNUSED = 1; \
2270+ CCTK_INT const harmonicShift CCTK_ATTRIBUTE_UNUSED = 0; \
2271+ CCTK_INT const ML_BSSN_CL_Advect_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2272+ CCTK_INT const ML_BSSN_CL_Advect_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2273+ CCTK_INT const ML_BSSN_CL_boundary_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2274+ CCTK_INT const ML_BSSN_CL_boundary_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2275+ CCTK_INT const ML_BSSN_CL_constraints1_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2276+ CCTK_INT const ML_BSSN_CL_constraints1_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2277+ CCTK_INT const ML_BSSN_CL_constraints2_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2278+ CCTK_INT const ML_BSSN_CL_constraints2_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2279+ CCTK_INT const ML_BSSN_CL_convertFromADMBase_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2280+ CCTK_INT const ML_BSSN_CL_convertFromADMBase_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2281+ CCTK_INT const ML_BSSN_CL_convertFromADMBaseGamma_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2282+ CCTK_INT const ML_BSSN_CL_convertFromADMBaseGamma_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2283+ CCTK_INT const ML_BSSN_CL_convertToADMBase_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2284+ CCTK_INT const ML_BSSN_CL_convertToADMBase_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2285+ CCTK_INT const ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2286+ CCTK_INT const ML_BSSN_CL_convertToADMBaseDtLapseShift_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2287+ CCTK_INT const ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2288+ CCTK_INT const ML_BSSN_CL_convertToADMBaseDtLapseShiftBoundary_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2289+ CCTK_INT const ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2290+ CCTK_INT const ML_BSSN_CL_convertToADMBaseFakeDtLapseShift_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2291+ CCTK_INT const ML_BSSN_CL_Dissipation_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2292+ CCTK_INT const ML_BSSN_CL_Dissipation_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2293+ CCTK_INT const ML_BSSN_CL_enforce_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2294+ CCTK_INT const ML_BSSN_CL_enforce_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2295+ CCTK_INT const ML_BSSN_CL_InitGamma_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2296+ CCTK_INT const ML_BSSN_CL_InitGamma_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2297+ CCTK_INT const ML_BSSN_CL_InitRHS_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2298+ CCTK_INT const ML_BSSN_CL_InitRHS_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2299+ CCTK_INT const ML_BSSN_CL_MaxNumArrayEvolvedVars CCTK_ATTRIBUTE_UNUSED = 0; \
2300+ CCTK_INT const ML_BSSN_CL_MaxNumEvolvedVars CCTK_ATTRIBUTE_UNUSED = 25; \
2301+ CCTK_INT const ML_BSSN_CL_Minkowski_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2302+ CCTK_INT const ML_BSSN_CL_Minkowski_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2303+ CCTK_INT const ML_BSSN_CL_RHS1_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2304+ CCTK_INT const ML_BSSN_CL_RHS1_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2305+ CCTK_INT const ML_BSSN_CL_RHS2_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2306+ CCTK_INT const ML_BSSN_CL_RHS2_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2307+ CCTK_INT const ML_BSSN_CL_RHSStaticBoundary_calc_every CCTK_ATTRIBUTE_UNUSED = 1; \
2308+ CCTK_INT const ML_BSSN_CL_RHSStaticBoundary_calc_offset CCTK_ATTRIBUTE_UNUSED = 0; \
2309+ CCTK_INT const other_timelevels CCTK_ATTRIBUTE_UNUSED = 1; \
2310+ CCTK_INT const rhs_timelevels CCTK_ATTRIBUTE_UNUSED = 1; \
2311+ CCTK_INT const ShiftAlphaPower CCTK_ATTRIBUTE_UNUSED = 0; \
2312+ CCTK_INT const timelevels CCTK_ATTRIBUTE_UNUSED = 3; \
2313+ CCTK_INT const verbose CCTK_ATTRIBUTE_UNUSED = 0;
2314+
2315+// Kranc's FD operators:
2316+#ifndef KRANC_DIFF_FUNCTIONS
2317+# define PDstandardNthfdOrder21(u) (kmul(p1o2dx,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,-1,0,0))))
2318+#else
2319+# define PDstandardNthfdOrder21(u) (PDstandardNthfdOrder21_impl(u,p1o2dx,cdj,cdk))
2320+static CCTK_REAL_VEC PDstandardNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2321+static CCTK_REAL_VEC PDstandardNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2322+{
2323+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2324+ return kmul(p1o2dx,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,-1,0,0)));
2325+}
2326+#endif
2327+
2328+#ifndef KRANC_DIFF_FUNCTIONS
2329+# define PDstandardNthfdOrder22(u) (kmul(p1o2dy,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,-1,0))))
2330+#else
2331+# define PDstandardNthfdOrder22(u) (PDstandardNthfdOrder22_impl(u,p1o2dy,cdj,cdk))
2332+static CCTK_REAL_VEC PDstandardNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2333+static CCTK_REAL_VEC PDstandardNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2334+{
2335+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2336+ return kmul(p1o2dy,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,-1,0)));
2337+}
2338+#endif
2339+
2340+#ifndef KRANC_DIFF_FUNCTIONS
2341+# define PDstandardNthfdOrder23(u) (kmul(p1o2dz,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,-1))))
2342+#else
2343+# define PDstandardNthfdOrder23(u) (PDstandardNthfdOrder23_impl(u,p1o2dz,cdj,cdk))
2344+static CCTK_REAL_VEC PDstandardNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2345+static CCTK_REAL_VEC PDstandardNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2346+{
2347+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2348+ return kmul(p1o2dz,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,-1)));
2349+}
2350+#endif
2351+
2352+#ifndef KRANC_DIFF_FUNCTIONS
2353+# define PDstandardNthfdOrder41(u) (kmul(p1o12dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(8),KRANC_GFOFFSET3D(u,2,0,0))))))
2354+#else
2355+# define PDstandardNthfdOrder41(u) (PDstandardNthfdOrder41_impl(u,p1o12dx,cdj,cdk))
2356+static CCTK_REAL_VEC PDstandardNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2357+static CCTK_REAL_VEC PDstandardNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2358+{
2359+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2360+ return kmul(p1o12dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(8),KRANC_GFOFFSET3D(u,2,0,0)))));
2361+}
2362+#endif
2363+
2364+#ifndef KRANC_DIFF_FUNCTIONS
2365+# define PDstandardNthfdOrder42(u) (kmul(p1o12dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(8),KRANC_GFOFFSET3D(u,0,2,0))))))
2366+#else
2367+# define PDstandardNthfdOrder42(u) (PDstandardNthfdOrder42_impl(u,p1o12dy,cdj,cdk))
2368+static CCTK_REAL_VEC PDstandardNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2369+static CCTK_REAL_VEC PDstandardNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2370+{
2371+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2372+ return kmul(p1o12dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(8),KRANC_GFOFFSET3D(u,0,2,0)))));
2373+}
2374+#endif
2375+
2376+#ifndef KRANC_DIFF_FUNCTIONS
2377+# define PDstandardNthfdOrder43(u) (kmul(p1o12dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(8),KRANC_GFOFFSET3D(u,0,0,2))))))
2378+#else
2379+# define PDstandardNthfdOrder43(u) (PDstandardNthfdOrder43_impl(u,p1o12dz,cdj,cdk))
2380+static CCTK_REAL_VEC PDstandardNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2381+static CCTK_REAL_VEC PDstandardNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2382+{
2383+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2384+ return kmul(p1o12dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(8),KRANC_GFOFFSET3D(u,0,0,2)))));
2385+}
2386+#endif
2387+
2388+#ifndef KRANC_DIFF_FUNCTIONS
2389+# define PDstandardNthfdOrder61(u) (kmul(p1o60dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(45))),KRANC_GFOFFSET3D(u,-3,0,0)))))))
2390+#else
2391+# define PDstandardNthfdOrder61(u) (PDstandardNthfdOrder61_impl(u,p1o60dx,cdj,cdk))
2392+static CCTK_REAL_VEC PDstandardNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2393+static CCTK_REAL_VEC PDstandardNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2394+{
2395+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2396+ return kmul(p1o60dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(45))),KRANC_GFOFFSET3D(u,-3,0,0))))));
2397+}
2398+#endif
2399+
2400+#ifndef KRANC_DIFF_FUNCTIONS
2401+# define PDstandardNthfdOrder62(u) (kmul(p1o60dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(45))),KRANC_GFOFFSET3D(u,0,-3,0)))))))
2402+#else
2403+# define PDstandardNthfdOrder62(u) (PDstandardNthfdOrder62_impl(u,p1o60dy,cdj,cdk))
2404+static CCTK_REAL_VEC PDstandardNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2405+static CCTK_REAL_VEC PDstandardNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2406+{
2407+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2408+ return kmul(p1o60dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(45))),KRANC_GFOFFSET3D(u,0,-3,0))))));
2409+}
2410+#endif
2411+
2412+#ifndef KRANC_DIFF_FUNCTIONS
2413+# define PDstandardNthfdOrder63(u) (kmul(p1o60dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(45))),KRANC_GFOFFSET3D(u,0,0,-3)))))))
2414+#else
2415+# define PDstandardNthfdOrder63(u) (PDstandardNthfdOrder63_impl(u,p1o60dz,cdj,cdk))
2416+static CCTK_REAL_VEC PDstandardNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2417+static CCTK_REAL_VEC PDstandardNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2418+{
2419+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2420+ return kmul(p1o60dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(45))),KRANC_GFOFFSET3D(u,0,0,-3))))));
2421+}
2422+#endif
2423+
2424+#ifndef KRANC_DIFF_FUNCTIONS
2425+# define PDstandardNthfdOrder81(u) (kmul(p1o840dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(672)))))))))))
2426+#else
2427+# define PDstandardNthfdOrder81(u) (PDstandardNthfdOrder81_impl(u,p1o840dx,cdj,cdk))
2428+static CCTK_REAL_VEC PDstandardNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2429+static CCTK_REAL_VEC PDstandardNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2430+{
2431+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2432+ return kmul(p1o840dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(672))))))))));
2433+}
2434+#endif
2435+
2436+#ifndef KRANC_DIFF_FUNCTIONS
2437+# define PDstandardNthfdOrder82(u) (kmul(p1o840dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(672)))))))))))
2438+#else
2439+# define PDstandardNthfdOrder82(u) (PDstandardNthfdOrder82_impl(u,p1o840dy,cdj,cdk))
2440+static CCTK_REAL_VEC PDstandardNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2441+static CCTK_REAL_VEC PDstandardNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2442+{
2443+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2444+ return kmul(p1o840dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(672))))))))));
2445+}
2446+#endif
2447+
2448+#ifndef KRANC_DIFF_FUNCTIONS
2449+# define PDstandardNthfdOrder83(u) (kmul(p1o840dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(672)))))))))))
2450+#else
2451+# define PDstandardNthfdOrder83(u) (PDstandardNthfdOrder83_impl(u,p1o840dz,cdj,cdk))
2452+static CCTK_REAL_VEC PDstandardNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2453+static CCTK_REAL_VEC PDstandardNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2454+{
2455+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2456+ return kmul(p1o840dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(672))))))))));
2457+}
2458+#endif
2459+
2460+#ifndef KRANC_DIFF_FUNCTIONS
2461+# define PDstandardNthfdOrder211(u) (kmul(p1odx2,kadd(KRANC_GFOFFSET3D(u,-1,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,1,0,0)))))
2462+#else
2463+# define PDstandardNthfdOrder211(u) (PDstandardNthfdOrder211_impl(u,p1odx2,cdj,cdk))
2464+static CCTK_REAL_VEC PDstandardNthfdOrder211_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2465+static CCTK_REAL_VEC PDstandardNthfdOrder211_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2466+{
2467+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2468+ return kmul(p1odx2,kadd(KRANC_GFOFFSET3D(u,-1,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,1,0,0))));
2469+}
2470+#endif
2471+
2472+#ifndef KRANC_DIFF_FUNCTIONS
2473+# define PDstandardNthfdOrder222(u) (kmul(p1ody2,kadd(KRANC_GFOFFSET3D(u,0,-1,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,1,0)))))
2474+#else
2475+# define PDstandardNthfdOrder222(u) (PDstandardNthfdOrder222_impl(u,p1ody2,cdj,cdk))
2476+static CCTK_REAL_VEC PDstandardNthfdOrder222_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2477+static CCTK_REAL_VEC PDstandardNthfdOrder222_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2478+{
2479+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2480+ return kmul(p1ody2,kadd(KRANC_GFOFFSET3D(u,0,-1,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,1,0))));
2481+}
2482+#endif
2483+
2484+#ifndef KRANC_DIFF_FUNCTIONS
2485+# define PDstandardNthfdOrder233(u) (kmul(p1odz2,kadd(KRANC_GFOFFSET3D(u,0,0,-1),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,0,1)))))
2486+#else
2487+# define PDstandardNthfdOrder233(u) (PDstandardNthfdOrder233_impl(u,p1odz2,cdj,cdk))
2488+static CCTK_REAL_VEC PDstandardNthfdOrder233_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2489+static CCTK_REAL_VEC PDstandardNthfdOrder233_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2490+{
2491+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2492+ return kmul(p1odz2,kadd(KRANC_GFOFFSET3D(u,0,0,-1),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,0,1))));
2493+}
2494+#endif
2495+
2496+#ifndef KRANC_DIFF_FUNCTIONS
2497+# define PDstandardNthfdOrder411(u) (kmul(pm1o12dx2,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
2498+#else
2499+# define PDstandardNthfdOrder411(u) (PDstandardNthfdOrder411_impl(u,pm1o12dx2,cdj,cdk))
2500+static CCTK_REAL_VEC PDstandardNthfdOrder411_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2501+static CCTK_REAL_VEC PDstandardNthfdOrder411_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2502+{
2503+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2504+ return kmul(pm1o12dx2,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
2505+}
2506+#endif
2507+
2508+#ifndef KRANC_DIFF_FUNCTIONS
2509+# define PDstandardNthfdOrder422(u) (kmul(pm1o12dy2,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
2510+#else
2511+# define PDstandardNthfdOrder422(u) (PDstandardNthfdOrder422_impl(u,pm1o12dy2,cdj,cdk))
2512+static CCTK_REAL_VEC PDstandardNthfdOrder422_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2513+static CCTK_REAL_VEC PDstandardNthfdOrder422_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2514+{
2515+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2516+ return kmul(pm1o12dy2,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
2517+}
2518+#endif
2519+
2520+#ifndef KRANC_DIFF_FUNCTIONS
2521+# define PDstandardNthfdOrder433(u) (kmul(pm1o12dz2,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
2522+#else
2523+# define PDstandardNthfdOrder433(u) (PDstandardNthfdOrder433_impl(u,pm1o12dz2,cdj,cdk))
2524+static CCTK_REAL_VEC PDstandardNthfdOrder433_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2525+static CCTK_REAL_VEC PDstandardNthfdOrder433_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2526+{
2527+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2528+ return kmul(pm1o12dz2,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
2529+}
2530+#endif
2531+
2532+#ifndef KRANC_DIFF_FUNCTIONS
2533+# define PDstandardNthfdOrder611(u) (kmul(p1o180dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(270)))))))
2534+#else
2535+# define PDstandardNthfdOrder611(u) (PDstandardNthfdOrder611_impl(u,p1o180dx2,cdj,cdk))
2536+static CCTK_REAL_VEC PDstandardNthfdOrder611_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2537+static CCTK_REAL_VEC PDstandardNthfdOrder611_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2538+{
2539+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2540+ return kmul(p1o180dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(270))))));
2541+}
2542+#endif
2543+
2544+#ifndef KRANC_DIFF_FUNCTIONS
2545+# define PDstandardNthfdOrder622(u) (kmul(p1o180dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(270)))))))
2546+#else
2547+# define PDstandardNthfdOrder622(u) (PDstandardNthfdOrder622_impl(u,p1o180dy2,cdj,cdk))
2548+static CCTK_REAL_VEC PDstandardNthfdOrder622_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2549+static CCTK_REAL_VEC PDstandardNthfdOrder622_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2550+{
2551+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2552+ return kmul(p1o180dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(270))))));
2553+}
2554+#endif
2555+
2556+#ifndef KRANC_DIFF_FUNCTIONS
2557+# define PDstandardNthfdOrder633(u) (kmul(p1o180dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(270)))))))
2558+#else
2559+# define PDstandardNthfdOrder633(u) (PDstandardNthfdOrder633_impl(u,p1o180dz2,cdj,cdk))
2560+static CCTK_REAL_VEC PDstandardNthfdOrder633_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2561+static CCTK_REAL_VEC PDstandardNthfdOrder633_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2562+{
2563+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2564+ return kmul(p1o180dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(270))))));
2565+}
2566+#endif
2567+
2568+#ifndef KRANC_DIFF_FUNCTIONS
2569+# define PDstandardNthfdOrder811(u) (kmul(p1o5040dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(8064))))))))
2570+#else
2571+# define PDstandardNthfdOrder811(u) (PDstandardNthfdOrder811_impl(u,p1o5040dx2,cdj,cdk))
2572+static CCTK_REAL_VEC PDstandardNthfdOrder811_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2573+static CCTK_REAL_VEC PDstandardNthfdOrder811_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2574+{
2575+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2576+ return kmul(p1o5040dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(8064)))))));
2577+}
2578+#endif
2579+
2580+#ifndef KRANC_DIFF_FUNCTIONS
2581+# define PDstandardNthfdOrder822(u) (kmul(p1o5040dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(8064))))))))
2582+#else
2583+# define PDstandardNthfdOrder822(u) (PDstandardNthfdOrder822_impl(u,p1o5040dy2,cdj,cdk))
2584+static CCTK_REAL_VEC PDstandardNthfdOrder822_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2585+static CCTK_REAL_VEC PDstandardNthfdOrder822_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2586+{
2587+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2588+ return kmul(p1o5040dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(8064)))))));
2589+}
2590+#endif
2591+
2592+#ifndef KRANC_DIFF_FUNCTIONS
2593+# define PDstandardNthfdOrder833(u) (kmul(p1o5040dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(8064))))))))
2594+#else
2595+# define PDstandardNthfdOrder833(u) (PDstandardNthfdOrder833_impl(u,p1o5040dz2,cdj,cdk))
2596+static CCTK_REAL_VEC PDstandardNthfdOrder833_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2597+static CCTK_REAL_VEC PDstandardNthfdOrder833_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
2598+{
2599+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2600+ return kmul(p1o5040dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(8064)))))));
2601+}
2602+#endif
2603+
2604+#ifndef KRANC_DIFF_FUNCTIONS
2605+# define PDstandardNthfdOrder212(u) (kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0))))))
2606+#else
2607+# define PDstandardNthfdOrder212(u) (PDstandardNthfdOrder212_impl(u,p1o4dxdy,cdj,cdk))
2608+static CCTK_REAL_VEC PDstandardNthfdOrder212_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2609+static CCTK_REAL_VEC PDstandardNthfdOrder212_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2610+{
2611+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2612+ return kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0)))));
2613+}
2614+#endif
2615+
2616+#ifndef KRANC_DIFF_FUNCTIONS
2617+# define PDstandardNthfdOrder213(u) (kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1))))))
2618+#else
2619+# define PDstandardNthfdOrder213(u) (PDstandardNthfdOrder213_impl(u,p1o4dxdz,cdj,cdk))
2620+static CCTK_REAL_VEC PDstandardNthfdOrder213_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2621+static CCTK_REAL_VEC PDstandardNthfdOrder213_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2622+{
2623+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2624+ return kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1)))));
2625+}
2626+#endif
2627+
2628+#ifndef KRANC_DIFF_FUNCTIONS
2629+# define PDstandardNthfdOrder221(u) (kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0))))))
2630+#else
2631+# define PDstandardNthfdOrder221(u) (PDstandardNthfdOrder221_impl(u,p1o4dxdy,cdj,cdk))
2632+static CCTK_REAL_VEC PDstandardNthfdOrder221_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2633+static CCTK_REAL_VEC PDstandardNthfdOrder221_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2634+{
2635+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2636+ return kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0)))));
2637+}
2638+#endif
2639+
2640+#ifndef KRANC_DIFF_FUNCTIONS
2641+# define PDstandardNthfdOrder223(u) (kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1))))))
2642+#else
2643+# define PDstandardNthfdOrder223(u) (PDstandardNthfdOrder223_impl(u,p1o4dydz,cdj,cdk))
2644+static CCTK_REAL_VEC PDstandardNthfdOrder223_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2645+static CCTK_REAL_VEC PDstandardNthfdOrder223_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2646+{
2647+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2648+ return kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1)))));
2649+}
2650+#endif
2651+
2652+#ifndef KRANC_DIFF_FUNCTIONS
2653+# define PDstandardNthfdOrder231(u) (kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1))))))
2654+#else
2655+# define PDstandardNthfdOrder231(u) (PDstandardNthfdOrder231_impl(u,p1o4dxdz,cdj,cdk))
2656+static CCTK_REAL_VEC PDstandardNthfdOrder231_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2657+static CCTK_REAL_VEC PDstandardNthfdOrder231_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2658+{
2659+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2660+ return kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1)))));
2661+}
2662+#endif
2663+
2664+#ifndef KRANC_DIFF_FUNCTIONS
2665+# define PDstandardNthfdOrder232(u) (kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1))))))
2666+#else
2667+# define PDstandardNthfdOrder232(u) (PDstandardNthfdOrder232_impl(u,p1o4dydz,cdj,cdk))
2668+static CCTK_REAL_VEC PDstandardNthfdOrder232_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2669+static CCTK_REAL_VEC PDstandardNthfdOrder232_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2670+{
2671+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2672+ return kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1)))));
2673+}
2674+#endif
2675+
2676+#ifndef KRANC_DIFF_FUNCTIONS
2677+# define PDstandardNthfdOrder412(u) (kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0))))))))
2678+#else
2679+# define PDstandardNthfdOrder412(u) (PDstandardNthfdOrder412_impl(u,p1o144dxdy,cdj,cdk))
2680+static CCTK_REAL_VEC PDstandardNthfdOrder412_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2681+static CCTK_REAL_VEC PDstandardNthfdOrder412_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2682+{
2683+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2684+ return kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0)))))));
2685+}
2686+#endif
2687+
2688+#ifndef KRANC_DIFF_FUNCTIONS
2689+# define PDstandardNthfdOrder413(u) (kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2))))))))
2690+#else
2691+# define PDstandardNthfdOrder413(u) (PDstandardNthfdOrder413_impl(u,p1o144dxdz,cdj,cdk))
2692+static CCTK_REAL_VEC PDstandardNthfdOrder413_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2693+static CCTK_REAL_VEC PDstandardNthfdOrder413_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2694+{
2695+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2696+ return kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2)))))));
2697+}
2698+#endif
2699+
2700+#ifndef KRANC_DIFF_FUNCTIONS
2701+# define PDstandardNthfdOrder421(u) (kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0))))))))
2702+#else
2703+# define PDstandardNthfdOrder421(u) (PDstandardNthfdOrder421_impl(u,p1o144dxdy,cdj,cdk))
2704+static CCTK_REAL_VEC PDstandardNthfdOrder421_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2705+static CCTK_REAL_VEC PDstandardNthfdOrder421_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2706+{
2707+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2708+ return kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0)))))));
2709+}
2710+#endif
2711+
2712+#ifndef KRANC_DIFF_FUNCTIONS
2713+# define PDstandardNthfdOrder423(u) (kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2))))))))
2714+#else
2715+# define PDstandardNthfdOrder423(u) (PDstandardNthfdOrder423_impl(u,p1o144dydz,cdj,cdk))
2716+static CCTK_REAL_VEC PDstandardNthfdOrder423_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2717+static CCTK_REAL_VEC PDstandardNthfdOrder423_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2718+{
2719+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2720+ return kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2)))))));
2721+}
2722+#endif
2723+
2724+#ifndef KRANC_DIFF_FUNCTIONS
2725+# define PDstandardNthfdOrder431(u) (kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2))))))))
2726+#else
2727+# define PDstandardNthfdOrder431(u) (PDstandardNthfdOrder431_impl(u,p1o144dxdz,cdj,cdk))
2728+static CCTK_REAL_VEC PDstandardNthfdOrder431_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2729+static CCTK_REAL_VEC PDstandardNthfdOrder431_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2730+{
2731+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2732+ return kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2)))))));
2733+}
2734+#endif
2735+
2736+#ifndef KRANC_DIFF_FUNCTIONS
2737+# define PDstandardNthfdOrder432(u) (kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2))))))))
2738+#else
2739+# define PDstandardNthfdOrder432(u) (PDstandardNthfdOrder432_impl(u,p1o144dydz,cdj,cdk))
2740+static CCTK_REAL_VEC PDstandardNthfdOrder432_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2741+static CCTK_REAL_VEC PDstandardNthfdOrder432_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2742+{
2743+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2744+ return kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2)))))));
2745+}
2746+#endif
2747+
2748+#ifndef KRANC_DIFF_FUNCTIONS
2749+# define PDstandardNthfdOrder612(u) (kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0)))))))))))
2750+#else
2751+# define PDstandardNthfdOrder612(u) (PDstandardNthfdOrder612_impl(u,p1o3600dxdy,cdj,cdk))
2752+static CCTK_REAL_VEC PDstandardNthfdOrder612_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2753+static CCTK_REAL_VEC PDstandardNthfdOrder612_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2754+{
2755+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2756+ return kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0))))))))));
2757+}
2758+#endif
2759+
2760+#ifndef KRANC_DIFF_FUNCTIONS
2761+# define PDstandardNthfdOrder613(u) (kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3)))))))))))
2762+#else
2763+# define PDstandardNthfdOrder613(u) (PDstandardNthfdOrder613_impl(u,p1o3600dxdz,cdj,cdk))
2764+static CCTK_REAL_VEC PDstandardNthfdOrder613_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2765+static CCTK_REAL_VEC PDstandardNthfdOrder613_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2766+{
2767+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2768+ return kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3))))))))));
2769+}
2770+#endif
2771+
2772+#ifndef KRANC_DIFF_FUNCTIONS
2773+# define PDstandardNthfdOrder621(u) (kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0)))))))))))
2774+#else
2775+# define PDstandardNthfdOrder621(u) (PDstandardNthfdOrder621_impl(u,p1o3600dxdy,cdj,cdk))
2776+static CCTK_REAL_VEC PDstandardNthfdOrder621_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2777+static CCTK_REAL_VEC PDstandardNthfdOrder621_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2778+{
2779+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2780+ return kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0))))))))));
2781+}
2782+#endif
2783+
2784+#ifndef KRANC_DIFF_FUNCTIONS
2785+# define PDstandardNthfdOrder623(u) (kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3)))))))))))
2786+#else
2787+# define PDstandardNthfdOrder623(u) (PDstandardNthfdOrder623_impl(u,p1o3600dydz,cdj,cdk))
2788+static CCTK_REAL_VEC PDstandardNthfdOrder623_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2789+static CCTK_REAL_VEC PDstandardNthfdOrder623_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2790+{
2791+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2792+ return kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3))))))))));
2793+}
2794+#endif
2795+
2796+#ifndef KRANC_DIFF_FUNCTIONS
2797+# define PDstandardNthfdOrder631(u) (kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3)))))))))))
2798+#else
2799+# define PDstandardNthfdOrder631(u) (PDstandardNthfdOrder631_impl(u,p1o3600dxdz,cdj,cdk))
2800+static CCTK_REAL_VEC PDstandardNthfdOrder631_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2801+static CCTK_REAL_VEC PDstandardNthfdOrder631_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2802+{
2803+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2804+ return kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3))))))))));
2805+}
2806+#endif
2807+
2808+#ifndef KRANC_DIFF_FUNCTIONS
2809+# define PDstandardNthfdOrder632(u) (kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3)))))))))))
2810+#else
2811+# define PDstandardNthfdOrder632(u) (PDstandardNthfdOrder632_impl(u,p1o3600dydz,cdj,cdk))
2812+static CCTK_REAL_VEC PDstandardNthfdOrder632_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2813+static CCTK_REAL_VEC PDstandardNthfdOrder632_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2814+{
2815+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2816+ return kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3))))))))));
2817+}
2818+#endif
2819+
2820+#ifndef KRANC_DIFF_FUNCTIONS
2821+# define PDstandardNthfdOrder812(u) (kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584)))))))))))))))))))))))
2822+#else
2823+# define PDstandardNthfdOrder812(u) (PDstandardNthfdOrder812_impl(u,p1o705600dxdy,cdj,cdk))
2824+static CCTK_REAL_VEC PDstandardNthfdOrder812_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2825+static CCTK_REAL_VEC PDstandardNthfdOrder812_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2826+{
2827+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2828+ return kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584))))))))))))))))))))));
2829+}
2830+#endif
2831+
2832+#ifndef KRANC_DIFF_FUNCTIONS
2833+# define PDstandardNthfdOrder813(u) (kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584)))))))))))))))))))))))
2834+#else
2835+# define PDstandardNthfdOrder813(u) (PDstandardNthfdOrder813_impl(u,p1o705600dxdz,cdj,cdk))
2836+static CCTK_REAL_VEC PDstandardNthfdOrder813_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2837+static CCTK_REAL_VEC PDstandardNthfdOrder813_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2838+{
2839+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2840+ return kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584))))))))))))))))))))));
2841+}
2842+#endif
2843+
2844+#ifndef KRANC_DIFF_FUNCTIONS
2845+# define PDstandardNthfdOrder821(u) (kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584)))))))))))))))))))))))
2846+#else
2847+# define PDstandardNthfdOrder821(u) (PDstandardNthfdOrder821_impl(u,p1o705600dxdy,cdj,cdk))
2848+static CCTK_REAL_VEC PDstandardNthfdOrder821_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2849+static CCTK_REAL_VEC PDstandardNthfdOrder821_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2850+{
2851+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2852+ return kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584))))))))))))))))))))));
2853+}
2854+#endif
2855+
2856+#ifndef KRANC_DIFF_FUNCTIONS
2857+# define PDstandardNthfdOrder823(u) (kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584)))))))))))))))))))))))
2858+#else
2859+# define PDstandardNthfdOrder823(u) (PDstandardNthfdOrder823_impl(u,p1o705600dydz,cdj,cdk))
2860+static CCTK_REAL_VEC PDstandardNthfdOrder823_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2861+static CCTK_REAL_VEC PDstandardNthfdOrder823_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2862+{
2863+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2864+ return kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584))))))))))))))))))))));
2865+}
2866+#endif
2867+
2868+#ifndef KRANC_DIFF_FUNCTIONS
2869+# define PDstandardNthfdOrder831(u) (kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584)))))))))))))))))))))))
2870+#else
2871+# define PDstandardNthfdOrder831(u) (PDstandardNthfdOrder831_impl(u,p1o705600dxdz,cdj,cdk))
2872+static CCTK_REAL_VEC PDstandardNthfdOrder831_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2873+static CCTK_REAL_VEC PDstandardNthfdOrder831_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2874+{
2875+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2876+ return kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584))))))))))))))))))))));
2877+}
2878+#endif
2879+
2880+#ifndef KRANC_DIFF_FUNCTIONS
2881+# define PDstandardNthfdOrder832(u) (kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584)))))))))))))))))))))))
2882+#else
2883+# define PDstandardNthfdOrder832(u) (PDstandardNthfdOrder832_impl(u,p1o705600dydz,cdj,cdk))
2884+static CCTK_REAL_VEC PDstandardNthfdOrder832_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2885+static CCTK_REAL_VEC PDstandardNthfdOrder832_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2886+{
2887+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2888+ return kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584))))))))))))))))))))));
2889+}
2890+#endif
2891+
2892+#ifndef KRANC_DIFF_FUNCTIONS
2893+# define PDdissipationNthfdOrder21(u) (kmul(p1o16dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
2894+#else
2895+# define PDdissipationNthfdOrder21(u) (PDdissipationNthfdOrder21_impl(u,p1o16dx,cdj,cdk))
2896+static CCTK_REAL_VEC PDdissipationNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2897+static CCTK_REAL_VEC PDdissipationNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2898+{
2899+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2900+ return kmul(p1o16dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
2901+}
2902+#endif
2903+
2904+#ifndef KRANC_DIFF_FUNCTIONS
2905+# define PDdissipationNthfdOrder22(u) (kmul(p1o16dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
2906+#else
2907+# define PDdissipationNthfdOrder22(u) (PDdissipationNthfdOrder22_impl(u,p1o16dy,cdj,cdk))
2908+static CCTK_REAL_VEC PDdissipationNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2909+static CCTK_REAL_VEC PDdissipationNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2910+{
2911+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2912+ return kmul(p1o16dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
2913+}
2914+#endif
2915+
2916+#ifndef KRANC_DIFF_FUNCTIONS
2917+# define PDdissipationNthfdOrder23(u) (kmul(p1o16dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
2918+#else
2919+# define PDdissipationNthfdOrder23(u) (PDdissipationNthfdOrder23_impl(u,p1o16dz,cdj,cdk))
2920+static CCTK_REAL_VEC PDdissipationNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2921+static CCTK_REAL_VEC PDdissipationNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2922+{
2923+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2924+ return kmul(p1o16dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
2925+}
2926+#endif
2927+
2928+#ifndef KRANC_DIFF_FUNCTIONS
2929+# define PDdissipationNthfdOrder41(u) (kmul(p1o64dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15))))))))
2930+#else
2931+# define PDdissipationNthfdOrder41(u) (PDdissipationNthfdOrder41_impl(u,p1o64dx,cdj,cdk))
2932+static CCTK_REAL_VEC PDdissipationNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2933+static CCTK_REAL_VEC PDdissipationNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2934+{
2935+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2936+ return kmul(p1o64dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15)))))));
2937+}
2938+#endif
2939+
2940+#ifndef KRANC_DIFF_FUNCTIONS
2941+# define PDdissipationNthfdOrder42(u) (kmul(p1o64dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15))))))))
2942+#else
2943+# define PDdissipationNthfdOrder42(u) (PDdissipationNthfdOrder42_impl(u,p1o64dy,cdj,cdk))
2944+static CCTK_REAL_VEC PDdissipationNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2945+static CCTK_REAL_VEC PDdissipationNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2946+{
2947+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2948+ return kmul(p1o64dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15)))))));
2949+}
2950+#endif
2951+
2952+#ifndef KRANC_DIFF_FUNCTIONS
2953+# define PDdissipationNthfdOrder43(u) (kmul(p1o64dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15))))))))
2954+#else
2955+# define PDdissipationNthfdOrder43(u) (PDdissipationNthfdOrder43_impl(u,p1o64dz,cdj,cdk))
2956+static CCTK_REAL_VEC PDdissipationNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2957+static CCTK_REAL_VEC PDdissipationNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2958+{
2959+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2960+ return kmul(p1o64dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15)))))));
2961+}
2962+#endif
2963+
2964+#ifndef KRANC_DIFF_FUNCTIONS
2965+# define PDdissipationNthfdOrder61(u) (kmul(p1o256dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
2966+#else
2967+# define PDdissipationNthfdOrder61(u) (PDdissipationNthfdOrder61_impl(u,p1o256dx,cdj,cdk))
2968+static CCTK_REAL_VEC PDdissipationNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2969+static CCTK_REAL_VEC PDdissipationNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
2970+{
2971+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2972+ return kmul(p1o256dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
2973+}
2974+#endif
2975+
2976+#ifndef KRANC_DIFF_FUNCTIONS
2977+# define PDdissipationNthfdOrder62(u) (kmul(p1o256dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
2978+#else
2979+# define PDdissipationNthfdOrder62(u) (PDdissipationNthfdOrder62_impl(u,p1o256dy,cdj,cdk))
2980+static CCTK_REAL_VEC PDdissipationNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2981+static CCTK_REAL_VEC PDdissipationNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
2982+{
2983+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2984+ return kmul(p1o256dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
2985+}
2986+#endif
2987+
2988+#ifndef KRANC_DIFF_FUNCTIONS
2989+# define PDdissipationNthfdOrder63(u) (kmul(p1o256dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
2990+#else
2991+# define PDdissipationNthfdOrder63(u) (PDdissipationNthfdOrder63_impl(u,p1o256dz,cdj,cdk))
2992+static CCTK_REAL_VEC PDdissipationNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
2993+static CCTK_REAL_VEC PDdissipationNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
2994+{
2995+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
2996+ return kmul(p1o256dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
2997+}
2998+#endif
2999+
3000+#ifndef KRANC_DIFF_FUNCTIONS
3001+# define PDdissipationNthfdOrder81(u) (kmul(p1o1024dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210))))))))))
3002+#else
3003+# define PDdissipationNthfdOrder81(u) (PDdissipationNthfdOrder81_impl(u,p1o1024dx,cdj,cdk))
3004+static CCTK_REAL_VEC PDdissipationNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3005+static CCTK_REAL_VEC PDdissipationNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3006+{
3007+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3008+ return kmul(p1o1024dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210)))))))));
3009+}
3010+#endif
3011+
3012+#ifndef KRANC_DIFF_FUNCTIONS
3013+# define PDdissipationNthfdOrder82(u) (kmul(p1o1024dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210))))))))))
3014+#else
3015+# define PDdissipationNthfdOrder82(u) (PDdissipationNthfdOrder82_impl(u,p1o1024dy,cdj,cdk))
3016+static CCTK_REAL_VEC PDdissipationNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3017+static CCTK_REAL_VEC PDdissipationNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3018+{
3019+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3020+ return kmul(p1o1024dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210)))))))));
3021+}
3022+#endif
3023+
3024+#ifndef KRANC_DIFF_FUNCTIONS
3025+# define PDdissipationNthfdOrder83(u) (kmul(p1o1024dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210))))))))))
3026+#else
3027+# define PDdissipationNthfdOrder83(u) (PDdissipationNthfdOrder83_impl(u,p1o1024dz,cdj,cdk))
3028+static CCTK_REAL_VEC PDdissipationNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3029+static CCTK_REAL_VEC PDdissipationNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3030+{
3031+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3032+ return kmul(p1o1024dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210)))))))));
3033+}
3034+#endif
3035+
3036+#ifndef KRANC_DIFF_FUNCTIONS
3037+# define PDupwindNthfdOrder21(u) (kmul(pm1o2dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
3038+#else
3039+# define PDupwindNthfdOrder21(u) (PDupwindNthfdOrder21_impl(u,pm1o2dx,cdj,cdk))
3040+static CCTK_REAL_VEC PDupwindNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3041+static CCTK_REAL_VEC PDupwindNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3042+{ assert(0); return ToReal(1e30); /* ERROR */ }
3043+#endif
3044+
3045+#ifndef KRANC_DIFF_FUNCTIONS
3046+# define PDupwindNthfdOrder41(u) (kmul(p1o12dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(18)))))))))
3047+#else
3048+# define PDupwindNthfdOrder41(u) (PDupwindNthfdOrder41_impl(u,p1o12dx,cdj,cdk))
3049+static CCTK_REAL_VEC PDupwindNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3050+static CCTK_REAL_VEC PDupwindNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3051+{ assert(0); return ToReal(1e30); /* ERROR */ }
3052+#endif
3053+
3054+#ifndef KRANC_DIFF_FUNCTIONS
3055+# define PDupwindNthfdOrder61(u) (kmul(pm1o60dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
3056+#else
3057+# define PDupwindNthfdOrder61(u) (PDupwindNthfdOrder61_impl(u,pm1o60dx,cdj,cdk))
3058+static CCTK_REAL_VEC PDupwindNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3059+static CCTK_REAL_VEC PDupwindNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3060+{ assert(0); return ToReal(1e30); /* ERROR */ }
3061+#endif
3062+
3063+#ifndef KRANC_DIFF_FUNCTIONS
3064+# define PDupwindNthfdOrder81(u) (kmul(p1o840dx,kmul(dir1,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,-3,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(84)))))))))))))
3065+#else
3066+# define PDupwindNthfdOrder81(u) (PDupwindNthfdOrder81_impl(u,p1o840dx,cdj,cdk))
3067+static CCTK_REAL_VEC PDupwindNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3068+static CCTK_REAL_VEC PDupwindNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3069+{ assert(0); return ToReal(1e30); /* ERROR */ }
3070+#endif
3071+
3072+#ifndef KRANC_DIFF_FUNCTIONS
3073+# define PDupwindNthAntifdOrder21(u) (kmul(p1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(4),KRANC_GFOFFSET3D(u,2,0,0))))))
3074+#else
3075+# define PDupwindNthAntifdOrder21(u) (PDupwindNthAntifdOrder21_impl(u,p1o4dx,cdj,cdk))
3076+static CCTK_REAL_VEC PDupwindNthAntifdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3077+static CCTK_REAL_VEC PDupwindNthAntifdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3078+{
3079+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3080+ return kmul(p1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(4),KRANC_GFOFFSET3D(u,2,0,0)))));
3081+}
3082+#endif
3083+
3084+#ifndef KRANC_DIFF_FUNCTIONS
3085+# define PDupwindNthAntifdOrder41(u) (kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(21))),KRANC_GFOFFSET3D(u,-3,0,0)))))))
3086+#else
3087+# define PDupwindNthAntifdOrder41(u) (PDupwindNthAntifdOrder41_impl(u,p1o24dx,cdj,cdk))
3088+static CCTK_REAL_VEC PDupwindNthAntifdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3089+static CCTK_REAL_VEC PDupwindNthAntifdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3090+{
3091+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3092+ return kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(21))),KRANC_GFOFFSET3D(u,-3,0,0))))));
3093+}
3094+#endif
3095+
3096+#ifndef KRANC_DIFF_FUNCTIONS
3097+# define PDupwindNthAntifdOrder61(u) (kmul(p1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(104)))),KRANC_GFOFFSET3D(u,4,0,0))))))))
3098+#else
3099+# define PDupwindNthAntifdOrder61(u) (PDupwindNthAntifdOrder61_impl(u,p1o120dx,cdj,cdk))
3100+static CCTK_REAL_VEC PDupwindNthAntifdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3101+static CCTK_REAL_VEC PDupwindNthAntifdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3102+{
3103+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3104+ return kmul(p1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(104)))),KRANC_GFOFFSET3D(u,4,0,0)))))));
3105+}
3106+#endif
3107+
3108+#ifndef KRANC_DIFF_FUNCTIONS
3109+# define PDupwindNthAntifdOrder81(u) (kmul(p1o1680dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,-5,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(1470)))))))))))))
3110+#else
3111+# define PDupwindNthAntifdOrder81(u) (PDupwindNthAntifdOrder81_impl(u,p1o1680dx,cdj,cdk))
3112+static CCTK_REAL_VEC PDupwindNthAntifdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3113+static CCTK_REAL_VEC PDupwindNthAntifdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3114+{
3115+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3116+ return kmul(p1o1680dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,-5,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(1470))))))))))));
3117+}
3118+#endif
3119+
3120+#ifndef KRANC_DIFF_FUNCTIONS
3121+# define PDupwindNthSymmfdOrder21(u) (kmul(pm1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
3122+#else
3123+# define PDupwindNthSymmfdOrder21(u) (PDupwindNthSymmfdOrder21_impl(u,pm1o4dx,cdj,cdk))
3124+static CCTK_REAL_VEC PDupwindNthSymmfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3125+static CCTK_REAL_VEC PDupwindNthSymmfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3126+{
3127+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3128+ return kmul(pm1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
3129+}
3130+#endif
3131+
3132+#ifndef KRANC_DIFF_FUNCTIONS
3133+# define PDupwindNthSymmfdOrder41(u) (kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15))))))))
3134+#else
3135+# define PDupwindNthSymmfdOrder41(u) (PDupwindNthSymmfdOrder41_impl(u,p1o24dx,cdj,cdk))
3136+static CCTK_REAL_VEC PDupwindNthSymmfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3137+static CCTK_REAL_VEC PDupwindNthSymmfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3138+{
3139+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3140+ return kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15)))))));
3141+}
3142+#endif
3143+
3144+#ifndef KRANC_DIFF_FUNCTIONS
3145+# define PDupwindNthSymmfdOrder61(u) (kmul(pm1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
3146+#else
3147+# define PDupwindNthSymmfdOrder61(u) (PDupwindNthSymmfdOrder61_impl(u,pm1o120dx,cdj,cdk))
3148+static CCTK_REAL_VEC PDupwindNthSymmfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3149+static CCTK_REAL_VEC PDupwindNthSymmfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3150+{
3151+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3152+ return kmul(pm1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
3153+}
3154+#endif
3155+
3156+#ifndef KRANC_DIFF_FUNCTIONS
3157+# define PDupwindNthSymmfdOrder81(u) (kmul(p1o560dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210))))))))))
3158+#else
3159+# define PDupwindNthSymmfdOrder81(u) (PDupwindNthSymmfdOrder81_impl(u,p1o560dx,cdj,cdk))
3160+static CCTK_REAL_VEC PDupwindNthSymmfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3161+static CCTK_REAL_VEC PDupwindNthSymmfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3162+{
3163+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3164+ return kmul(p1o560dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210)))))))));
3165+}
3166+#endif
3167+
3168+#ifndef KRANC_DIFF_FUNCTIONS
3169+# define PDonesided1(u) (kmul(p1odx,kmul(dir1,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,0,0,0)))))
3170+#else
3171+# define PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk))
3172+static CCTK_REAL_VEC PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3173+static CCTK_REAL_VEC PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk)
3174+{ assert(0); return ToReal(1e30); /* ERROR */ }
3175+#endif
3176+
3177+#ifndef KRANC_DIFF_FUNCTIONS
3178+# define PDupwindNthfdOrder22(u) (kmul(pm1o2dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
3179+#else
3180+# define PDupwindNthfdOrder22(u) (PDupwindNthfdOrder22_impl(u,pm1o2dy,cdj,cdk))
3181+static CCTK_REAL_VEC PDupwindNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3182+static CCTK_REAL_VEC PDupwindNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3183+{ assert(0); return ToReal(1e30); /* ERROR */ }
3184+#endif
3185+
3186+#ifndef KRANC_DIFF_FUNCTIONS
3187+# define PDupwindNthfdOrder42(u) (kmul(p1o12dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(18)))))))))
3188+#else
3189+# define PDupwindNthfdOrder42(u) (PDupwindNthfdOrder42_impl(u,p1o12dy,cdj,cdk))
3190+static CCTK_REAL_VEC PDupwindNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3191+static CCTK_REAL_VEC PDupwindNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3192+{ assert(0); return ToReal(1e30); /* ERROR */ }
3193+#endif
3194+
3195+#ifndef KRANC_DIFF_FUNCTIONS
3196+# define PDupwindNthfdOrder62(u) (kmul(pm1o60dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
3197+#else
3198+# define PDupwindNthfdOrder62(u) (PDupwindNthfdOrder62_impl(u,pm1o60dy,cdj,cdk))
3199+static CCTK_REAL_VEC PDupwindNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3200+static CCTK_REAL_VEC PDupwindNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3201+{ assert(0); return ToReal(1e30); /* ERROR */ }
3202+#endif
3203+
3204+#ifndef KRANC_DIFF_FUNCTIONS
3205+# define PDupwindNthfdOrder82(u) (kmul(p1o840dy,kmul(dir2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,0,-3,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(84)))))))))))))
3206+#else
3207+# define PDupwindNthfdOrder82(u) (PDupwindNthfdOrder82_impl(u,p1o840dy,cdj,cdk))
3208+static CCTK_REAL_VEC PDupwindNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3209+static CCTK_REAL_VEC PDupwindNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3210+{ assert(0); return ToReal(1e30); /* ERROR */ }
3211+#endif
3212+
3213+#ifndef KRANC_DIFF_FUNCTIONS
3214+# define PDupwindNthAntifdOrder22(u) (kmul(p1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(4),KRANC_GFOFFSET3D(u,0,2,0))))))
3215+#else
3216+# define PDupwindNthAntifdOrder22(u) (PDupwindNthAntifdOrder22_impl(u,p1o4dy,cdj,cdk))
3217+static CCTK_REAL_VEC PDupwindNthAntifdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3218+static CCTK_REAL_VEC PDupwindNthAntifdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3219+{
3220+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3221+ return kmul(p1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(4),KRANC_GFOFFSET3D(u,0,2,0)))));
3222+}
3223+#endif
3224+
3225+#ifndef KRANC_DIFF_FUNCTIONS
3226+# define PDupwindNthAntifdOrder42(u) (kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(21))),KRANC_GFOFFSET3D(u,0,-3,0)))))))
3227+#else
3228+# define PDupwindNthAntifdOrder42(u) (PDupwindNthAntifdOrder42_impl(u,p1o24dy,cdj,cdk))
3229+static CCTK_REAL_VEC PDupwindNthAntifdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3230+static CCTK_REAL_VEC PDupwindNthAntifdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3231+{
3232+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3233+ return kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(21))),KRANC_GFOFFSET3D(u,0,-3,0))))));
3234+}
3235+#endif
3236+
3237+#ifndef KRANC_DIFF_FUNCTIONS
3238+# define PDupwindNthAntifdOrder62(u) (kmul(p1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(104)))),KRANC_GFOFFSET3D(u,0,4,0))))))))
3239+#else
3240+# define PDupwindNthAntifdOrder62(u) (PDupwindNthAntifdOrder62_impl(u,p1o120dy,cdj,cdk))
3241+static CCTK_REAL_VEC PDupwindNthAntifdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3242+static CCTK_REAL_VEC PDupwindNthAntifdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3243+{
3244+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3245+ return kmul(p1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(104)))),KRANC_GFOFFSET3D(u,0,4,0)))))));
3246+}
3247+#endif
3248+
3249+#ifndef KRANC_DIFF_FUNCTIONS
3250+# define PDupwindNthAntifdOrder82(u) (kmul(p1o1680dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,-5,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(1470)))))))))))))
3251+#else
3252+# define PDupwindNthAntifdOrder82(u) (PDupwindNthAntifdOrder82_impl(u,p1o1680dy,cdj,cdk))
3253+static CCTK_REAL_VEC PDupwindNthAntifdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3254+static CCTK_REAL_VEC PDupwindNthAntifdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3255+{
3256+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3257+ return kmul(p1o1680dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,-5,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(1470))))))))))));
3258+}
3259+#endif
3260+
3261+#ifndef KRANC_DIFF_FUNCTIONS
3262+# define PDupwindNthSymmfdOrder22(u) (kmul(pm1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
3263+#else
3264+# define PDupwindNthSymmfdOrder22(u) (PDupwindNthSymmfdOrder22_impl(u,pm1o4dy,cdj,cdk))
3265+static CCTK_REAL_VEC PDupwindNthSymmfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3266+static CCTK_REAL_VEC PDupwindNthSymmfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3267+{
3268+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3269+ return kmul(pm1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
3270+}
3271+#endif
3272+
3273+#ifndef KRANC_DIFF_FUNCTIONS
3274+# define PDupwindNthSymmfdOrder42(u) (kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15))))))))
3275+#else
3276+# define PDupwindNthSymmfdOrder42(u) (PDupwindNthSymmfdOrder42_impl(u,p1o24dy,cdj,cdk))
3277+static CCTK_REAL_VEC PDupwindNthSymmfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3278+static CCTK_REAL_VEC PDupwindNthSymmfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3279+{
3280+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3281+ return kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15)))))));
3282+}
3283+#endif
3284+
3285+#ifndef KRANC_DIFF_FUNCTIONS
3286+# define PDupwindNthSymmfdOrder62(u) (kmul(pm1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
3287+#else
3288+# define PDupwindNthSymmfdOrder62(u) (PDupwindNthSymmfdOrder62_impl(u,pm1o120dy,cdj,cdk))
3289+static CCTK_REAL_VEC PDupwindNthSymmfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3290+static CCTK_REAL_VEC PDupwindNthSymmfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3291+{
3292+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3293+ return kmul(pm1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
3294+}
3295+#endif
3296+
3297+#ifndef KRANC_DIFF_FUNCTIONS
3298+# define PDupwindNthSymmfdOrder82(u) (kmul(p1o560dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210))))))))))
3299+#else
3300+# define PDupwindNthSymmfdOrder82(u) (PDupwindNthSymmfdOrder82_impl(u,p1o560dy,cdj,cdk))
3301+static CCTK_REAL_VEC PDupwindNthSymmfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3302+static CCTK_REAL_VEC PDupwindNthSymmfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
3303+{
3304+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3305+ return kmul(p1o560dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210)))))))));
3306+}
3307+#endif
3308+
3309+#ifndef KRANC_DIFF_FUNCTIONS
3310+# define PDonesided2(u) (kmul(p1ody,kmul(dir2,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,0,0)))))
3311+#else
3312+# define PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk))
3313+static CCTK_REAL_VEC PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3314+static CCTK_REAL_VEC PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk)
3315+{ assert(0); return ToReal(1e30); /* ERROR */ }
3316+#endif
3317+
3318+#ifndef KRANC_DIFF_FUNCTIONS
3319+# define PDupwindNthfdOrder23(u) (kmul(pm1o2dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
3320+#else
3321+# define PDupwindNthfdOrder23(u) (PDupwindNthfdOrder23_impl(u,pm1o2dz,cdj,cdk))
3322+static CCTK_REAL_VEC PDupwindNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3323+static CCTK_REAL_VEC PDupwindNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3324+{ assert(0); return ToReal(1e30); /* ERROR */ }
3325+#endif
3326+
3327+#ifndef KRANC_DIFF_FUNCTIONS
3328+# define PDupwindNthfdOrder43(u) (kmul(p1o12dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(18)))))))))
3329+#else
3330+# define PDupwindNthfdOrder43(u) (PDupwindNthfdOrder43_impl(u,p1o12dz,cdj,cdk))
3331+static CCTK_REAL_VEC PDupwindNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3332+static CCTK_REAL_VEC PDupwindNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3333+{ assert(0); return ToReal(1e30); /* ERROR */ }
3334+#endif
3335+
3336+#ifndef KRANC_DIFF_FUNCTIONS
3337+# define PDupwindNthfdOrder63(u) (kmul(pm1o60dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
3338+#else
3339+# define PDupwindNthfdOrder63(u) (PDupwindNthfdOrder63_impl(u,pm1o60dz,cdj,cdk))
3340+static CCTK_REAL_VEC PDupwindNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3341+static CCTK_REAL_VEC PDupwindNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3342+{ assert(0); return ToReal(1e30); /* ERROR */ }
3343+#endif
3344+
3345+#ifndef KRANC_DIFF_FUNCTIONS
3346+# define PDupwindNthfdOrder83(u) (kmul(p1o840dz,kmul(dir3,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,0,0,-3),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(84)))))))))))))
3347+#else
3348+# define PDupwindNthfdOrder83(u) (PDupwindNthfdOrder83_impl(u,p1o840dz,cdj,cdk))
3349+static CCTK_REAL_VEC PDupwindNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3350+static CCTK_REAL_VEC PDupwindNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3351+{ assert(0); return ToReal(1e30); /* ERROR */ }
3352+#endif
3353+
3354+#ifndef KRANC_DIFF_FUNCTIONS
3355+# define PDupwindNthAntifdOrder23(u) (kmul(p1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(4),KRANC_GFOFFSET3D(u,0,0,2))))))
3356+#else
3357+# define PDupwindNthAntifdOrder23(u) (PDupwindNthAntifdOrder23_impl(u,p1o4dz,cdj,cdk))
3358+static CCTK_REAL_VEC PDupwindNthAntifdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3359+static CCTK_REAL_VEC PDupwindNthAntifdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3360+{
3361+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3362+ return kmul(p1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(4),KRANC_GFOFFSET3D(u,0,0,2)))));
3363+}
3364+#endif
3365+
3366+#ifndef KRANC_DIFF_FUNCTIONS
3367+# define PDupwindNthAntifdOrder43(u) (kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(21))),KRANC_GFOFFSET3D(u,0,0,-3)))))))
3368+#else
3369+# define PDupwindNthAntifdOrder43(u) (PDupwindNthAntifdOrder43_impl(u,p1o24dz,cdj,cdk))
3370+static CCTK_REAL_VEC PDupwindNthAntifdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3371+static CCTK_REAL_VEC PDupwindNthAntifdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3372+{
3373+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3374+ return kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(21))),KRANC_GFOFFSET3D(u,0,0,-3))))));
3375+}
3376+#endif
3377+
3378+#ifndef KRANC_DIFF_FUNCTIONS
3379+# define PDupwindNthAntifdOrder63(u) (kmul(p1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(104)))),KRANC_GFOFFSET3D(u,0,0,4))))))))
3380+#else
3381+# define PDupwindNthAntifdOrder63(u) (PDupwindNthAntifdOrder63_impl(u,p1o120dz,cdj,cdk))
3382+static CCTK_REAL_VEC PDupwindNthAntifdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3383+static CCTK_REAL_VEC PDupwindNthAntifdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3384+{
3385+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3386+ return kmul(p1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(104)))),KRANC_GFOFFSET3D(u,0,0,4)))))));
3387+}
3388+#endif
3389+
3390+#ifndef KRANC_DIFF_FUNCTIONS
3391+# define PDupwindNthAntifdOrder83(u) (kmul(p1o1680dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,0,-5),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(1470)))))))))))))
3392+#else
3393+# define PDupwindNthAntifdOrder83(u) (PDupwindNthAntifdOrder83_impl(u,p1o1680dz,cdj,cdk))
3394+static CCTK_REAL_VEC PDupwindNthAntifdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3395+static CCTK_REAL_VEC PDupwindNthAntifdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3396+{
3397+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3398+ return kmul(p1o1680dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,0,-5),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(1470))))))))))));
3399+}
3400+#endif
3401+
3402+#ifndef KRANC_DIFF_FUNCTIONS
3403+# define PDupwindNthSymmfdOrder23(u) (kmul(pm1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
3404+#else
3405+# define PDupwindNthSymmfdOrder23(u) (PDupwindNthSymmfdOrder23_impl(u,pm1o4dz,cdj,cdk))
3406+static CCTK_REAL_VEC PDupwindNthSymmfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3407+static CCTK_REAL_VEC PDupwindNthSymmfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3408+{
3409+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3410+ return kmul(pm1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
3411+}
3412+#endif
3413+
3414+#ifndef KRANC_DIFF_FUNCTIONS
3415+# define PDupwindNthSymmfdOrder43(u) (kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15))))))))
3416+#else
3417+# define PDupwindNthSymmfdOrder43(u) (PDupwindNthSymmfdOrder43_impl(u,p1o24dz,cdj,cdk))
3418+static CCTK_REAL_VEC PDupwindNthSymmfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3419+static CCTK_REAL_VEC PDupwindNthSymmfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3420+{
3421+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3422+ return kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15)))))));
3423+}
3424+#endif
3425+
3426+#ifndef KRANC_DIFF_FUNCTIONS
3427+# define PDupwindNthSymmfdOrder63(u) (kmul(pm1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
3428+#else
3429+# define PDupwindNthSymmfdOrder63(u) (PDupwindNthSymmfdOrder63_impl(u,pm1o120dz,cdj,cdk))
3430+static CCTK_REAL_VEC PDupwindNthSymmfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3431+static CCTK_REAL_VEC PDupwindNthSymmfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3432+{
3433+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3434+ return kmul(pm1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
3435+}
3436+#endif
3437+
3438+#ifndef KRANC_DIFF_FUNCTIONS
3439+# define PDupwindNthSymmfdOrder83(u) (kmul(p1o560dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210))))))))))
3440+#else
3441+# define PDupwindNthSymmfdOrder83(u) (PDupwindNthSymmfdOrder83_impl(u,p1o560dz,cdj,cdk))
3442+static CCTK_REAL_VEC PDupwindNthSymmfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3443+static CCTK_REAL_VEC PDupwindNthSymmfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3444+{
3445+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
3446+ return kmul(p1o560dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210)))))))));
3447+}
3448+#endif
3449+
3450+#ifndef KRANC_DIFF_FUNCTIONS
3451+# define PDonesided3(u) (kmul(p1odz,kmul(dir3,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,0)))))
3452+#else
3453+# define PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk))
3454+static CCTK_REAL_VEC PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
3455+static CCTK_REAL_VEC PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk)
3456+{ assert(0); return ToReal(1e30); /* ERROR */ }
3457+#endif
3458+
3459+
3460+// Kernel Function:
3461+kernel
3462+__attribute__((vec_type_hint(CCTK_REAL_VEC)))
3463+__attribute__((reqd_work_group_size(GROUP_SIZE_I, GROUP_SIZE_J, GROUP_SIZE_K)))
3464+void ML_BSSN_CL_RHS1
3465+ (cGH constant *restrict const cctkGH,
3466+ cctk_parameters_t constant *restrict const cctk_parameters,
3467+ CCTK_REAL global *restrict const x,
3468+ CCTK_REAL global *restrict const y,
3469+ CCTK_REAL global *restrict const z,
3470+ CCTK_REAL global *restrict const r,
3471+ CCTK_REAL global *restrict const At11,
3472+ CCTK_REAL global *restrict const At11_p,
3473+ CCTK_REAL global *restrict const At11_p_p,
3474+ CCTK_REAL global *restrict const At12,
3475+ CCTK_REAL global *restrict const At12_p,
3476+ CCTK_REAL global *restrict const At12_p_p,
3477+ CCTK_REAL global *restrict const At13,
3478+ CCTK_REAL global *restrict const At13_p,
3479+ CCTK_REAL global *restrict const At13_p_p,
3480+ CCTK_REAL global *restrict const At22,
3481+ CCTK_REAL global *restrict const At22_p,
3482+ CCTK_REAL global *restrict const At22_p_p,
3483+ CCTK_REAL global *restrict const At23,
3484+ CCTK_REAL global *restrict const At23_p,
3485+ CCTK_REAL global *restrict const At23_p_p,
3486+ CCTK_REAL global *restrict const At33,
3487+ CCTK_REAL global *restrict const At33_p,
3488+ CCTK_REAL global *restrict const At33_p_p,
3489+ CCTK_REAL global *restrict const A,
3490+ CCTK_REAL global *restrict const A_p,
3491+ CCTK_REAL global *restrict const A_p_p,
3492+ CCTK_REAL global *restrict const Arhs,
3493+ CCTK_REAL global *restrict const B1,
3494+ CCTK_REAL global *restrict const B1_p,
3495+ CCTK_REAL global *restrict const B1_p_p,
3496+ CCTK_REAL global *restrict const B2,
3497+ CCTK_REAL global *restrict const B2_p,
3498+ CCTK_REAL global *restrict const B2_p_p,
3499+ CCTK_REAL global *restrict const B3,
3500+ CCTK_REAL global *restrict const B3_p,
3501+ CCTK_REAL global *restrict const B3_p_p,
3502+ CCTK_REAL global *restrict const B1rhs,
3503+ CCTK_REAL global *restrict const B2rhs,
3504+ CCTK_REAL global *restrict const B3rhs,
3505+ CCTK_REAL global *restrict const Xt1,
3506+ CCTK_REAL global *restrict const Xt1_p,
3507+ CCTK_REAL global *restrict const Xt1_p_p,
3508+ CCTK_REAL global *restrict const Xt2,
3509+ CCTK_REAL global *restrict const Xt2_p,
3510+ CCTK_REAL global *restrict const Xt2_p_p,
3511+ CCTK_REAL global *restrict const Xt3,
3512+ CCTK_REAL global *restrict const Xt3_p,
3513+ CCTK_REAL global *restrict const Xt3_p_p,
3514+ CCTK_REAL global *restrict const Xt1rhs,
3515+ CCTK_REAL global *restrict const Xt2rhs,
3516+ CCTK_REAL global *restrict const Xt3rhs,
3517+ CCTK_REAL global *restrict const alpha,
3518+ CCTK_REAL global *restrict const alpha_p,
3519+ CCTK_REAL global *restrict const alpha_p_p,
3520+ CCTK_REAL global *restrict const alpharhs,
3521+ CCTK_REAL global *restrict const phi,
3522+ CCTK_REAL global *restrict const phi_p,
3523+ CCTK_REAL global *restrict const phi_p_p,
3524+ CCTK_REAL global *restrict const phirhs,
3525+ CCTK_REAL global *restrict const gt11,
3526+ CCTK_REAL global *restrict const gt11_p,
3527+ CCTK_REAL global *restrict const gt11_p_p,
3528+ CCTK_REAL global *restrict const gt12,
3529+ CCTK_REAL global *restrict const gt12_p,
3530+ CCTK_REAL global *restrict const gt12_p_p,
3531+ CCTK_REAL global *restrict const gt13,
3532+ CCTK_REAL global *restrict const gt13_p,
3533+ CCTK_REAL global *restrict const gt13_p_p,
3534+ CCTK_REAL global *restrict const gt22,
3535+ CCTK_REAL global *restrict const gt22_p,
3536+ CCTK_REAL global *restrict const gt22_p_p,
3537+ CCTK_REAL global *restrict const gt23,
3538+ CCTK_REAL global *restrict const gt23_p,
3539+ CCTK_REAL global *restrict const gt23_p_p,
3540+ CCTK_REAL global *restrict const gt33,
3541+ CCTK_REAL global *restrict const gt33_p,
3542+ CCTK_REAL global *restrict const gt33_p_p,
3543+ CCTK_REAL global *restrict const gt11rhs,
3544+ CCTK_REAL global *restrict const gt12rhs,
3545+ CCTK_REAL global *restrict const gt13rhs,
3546+ CCTK_REAL global *restrict const gt22rhs,
3547+ CCTK_REAL global *restrict const gt23rhs,
3548+ CCTK_REAL global *restrict const gt33rhs,
3549+ CCTK_REAL global *restrict const beta1,
3550+ CCTK_REAL global *restrict const beta1_p,
3551+ CCTK_REAL global *restrict const beta1_p_p,
3552+ CCTK_REAL global *restrict const beta2,
3553+ CCTK_REAL global *restrict const beta2_p,
3554+ CCTK_REAL global *restrict const beta2_p_p,
3555+ CCTK_REAL global *restrict const beta3,
3556+ CCTK_REAL global *restrict const beta3_p,
3557+ CCTK_REAL global *restrict const beta3_p_p,
3558+ CCTK_REAL global *restrict const beta1rhs,
3559+ CCTK_REAL global *restrict const beta2rhs,
3560+ CCTK_REAL global *restrict const beta3rhs,
3561+ CCTK_REAL global *restrict const trK,
3562+ CCTK_REAL global *restrict const trK_p,
3563+ CCTK_REAL global *restrict const trK_p_p,
3564+ CCTK_REAL global *restrict const trKrhs)
3565+{
3566+ DECLARE_CCTK_ARGUMENTS
3567+ DECLARE_CCTK_PARAMETERS
3568+
3569+ // The Kernel:
3570+
3571+/* Include user-supplied include files */
3572+
3573+/* Initialise finite differencing variables */
3574+ptrdiff_t const di CCTK_ATTRIBUTE_UNUSED = 1;
3575+ptrdiff_t const dj CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0);
3576+ptrdiff_t const dk CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0);
3577+ptrdiff_t const cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * di;
3578+ptrdiff_t const cdj CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dj;
3579+ptrdiff_t const cdk CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dk;
3580+CCTK_REAL_VEC const dx CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(0));
3581+CCTK_REAL_VEC const dy CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(1));
3582+CCTK_REAL_VEC const dz CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(2));
3583+CCTK_REAL_VEC const dt CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_TIME);
3584+CCTK_REAL_VEC const t CCTK_ATTRIBUTE_UNUSED = ToReal(cctk_time);
3585+CCTK_REAL_VEC const dxi CCTK_ATTRIBUTE_UNUSED = INV(dx);
3586+CCTK_REAL_VEC const dyi CCTK_ATTRIBUTE_UNUSED = INV(dy);
3587+CCTK_REAL_VEC const dzi CCTK_ATTRIBUTE_UNUSED = INV(dz);
3588+CCTK_REAL_VEC const khalf CCTK_ATTRIBUTE_UNUSED = ToReal(0.5);
3589+CCTK_REAL_VEC const kthird CCTK_ATTRIBUTE_UNUSED = ToReal(1.0/3.0);
3590+CCTK_REAL_VEC const ktwothird CCTK_ATTRIBUTE_UNUSED = ToReal(2.0/3.0);
3591+CCTK_REAL_VEC const kfourthird CCTK_ATTRIBUTE_UNUSED = ToReal(4.0/3.0);
3592+CCTK_REAL_VEC const keightthird CCTK_ATTRIBUTE_UNUSED = ToReal(8.0/3.0);
3593+CCTK_REAL_VEC const hdxi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dxi);
3594+CCTK_REAL_VEC const hdyi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dyi);
3595+CCTK_REAL_VEC const hdzi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dzi);
3596+
3597+/* Initialize predefined quantities */
3598+CCTK_REAL_VEC const p1o1024dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0009765625),dx);
3599+CCTK_REAL_VEC const p1o1024dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0009765625),dy);
3600+CCTK_REAL_VEC const p1o1024dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0009765625),dz);
3601+CCTK_REAL_VEC const p1o120dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00833333333333333333333333333333),dx);
3602+CCTK_REAL_VEC const p1o120dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00833333333333333333333333333333),dy);
3603+CCTK_REAL_VEC const p1o120dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00833333333333333333333333333333),dz);
3604+CCTK_REAL_VEC const p1o12dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dx);
3605+CCTK_REAL_VEC const p1o12dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dy);
3606+CCTK_REAL_VEC const p1o12dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dz);
3607+CCTK_REAL_VEC const p1o144dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));
3608+CCTK_REAL_VEC const p1o144dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));
3609+CCTK_REAL_VEC const p1o144dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));
3610+CCTK_REAL_VEC const p1o1680dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000595238095238095238095238095238),dx);
3611+CCTK_REAL_VEC const p1o1680dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000595238095238095238095238095238),dy);
3612+CCTK_REAL_VEC const p1o1680dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000595238095238095238095238095238),dz);
3613+CCTK_REAL_VEC const p1o16dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0625),dx);
3614+CCTK_REAL_VEC const p1o16dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0625),dy);
3615+CCTK_REAL_VEC const p1o16dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0625),dz);
3616+CCTK_REAL_VEC const p1o180dx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00555555555555555555555555555556),kmul(dx,dx));
3617+CCTK_REAL_VEC const p1o180dy2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00555555555555555555555555555556),kmul(dy,dy));
3618+CCTK_REAL_VEC const p1o180dz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00555555555555555555555555555556),kmul(dz,dz));
3619+CCTK_REAL_VEC const p1o24dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0416666666666666666666666666667),dx);
3620+CCTK_REAL_VEC const p1o24dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0416666666666666666666666666667),dy);
3621+CCTK_REAL_VEC const p1o24dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0416666666666666666666666666667),dz);
3622+CCTK_REAL_VEC const p1o256dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00390625),dx);
3623+CCTK_REAL_VEC const p1o256dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00390625),dy);
3624+CCTK_REAL_VEC const p1o256dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00390625),dz);
3625+CCTK_REAL_VEC const p1o2dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.5),dx);
3626+CCTK_REAL_VEC const p1o2dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.5),dy);
3627+CCTK_REAL_VEC const p1o2dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.5),dz);
3628+CCTK_REAL_VEC const p1o3600dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000277777777777777777777777777778),kmul(dy,dx));
3629+CCTK_REAL_VEC const p1o3600dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000277777777777777777777777777778),kmul(dz,dx));
3630+CCTK_REAL_VEC const p1o3600dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000277777777777777777777777777778),kmul(dz,dy));
3631+CCTK_REAL_VEC const p1o4dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),dx);
3632+CCTK_REAL_VEC const p1o4dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),kmul(dy,dx));
3633+CCTK_REAL_VEC const p1o4dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),kmul(dz,dx));
3634+CCTK_REAL_VEC const p1o4dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),dy);
3635+CCTK_REAL_VEC const p1o4dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),kmul(dz,dy));
3636+CCTK_REAL_VEC const p1o4dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.25),dz);
3637+CCTK_REAL_VEC const p1o5040dx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000198412698412698412698412698413),kmul(dx,dx));
3638+CCTK_REAL_VEC const p1o5040dy2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000198412698412698412698412698413),kmul(dy,dy));
3639+CCTK_REAL_VEC const p1o5040dz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.000198412698412698412698412698413),kmul(dz,dz));
3640+CCTK_REAL_VEC const p1o560dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00178571428571428571428571428571),dx);
3641+CCTK_REAL_VEC const p1o560dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00178571428571428571428571428571),dy);
3642+CCTK_REAL_VEC const p1o560dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00178571428571428571428571428571),dz);
3643+CCTK_REAL_VEC const p1o60dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0166666666666666666666666666667),dx);
3644+CCTK_REAL_VEC const p1o60dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0166666666666666666666666666667),dy);
3645+CCTK_REAL_VEC const p1o60dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0166666666666666666666666666667),dz);
3646+CCTK_REAL_VEC const p1o64dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.015625),dx);
3647+CCTK_REAL_VEC const p1o64dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.015625),dy);
3648+CCTK_REAL_VEC const p1o64dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.015625),dz);
3649+CCTK_REAL_VEC const p1o705600dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1.41723356009070294784580498866e-6),kmul(dy,dx));
3650+CCTK_REAL_VEC const p1o705600dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1.41723356009070294784580498866e-6),kmul(dz,dx));
3651+CCTK_REAL_VEC const p1o705600dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1.41723356009070294784580498866e-6),kmul(dz,dy));
3652+CCTK_REAL_VEC const p1o840dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00119047619047619047619047619048),dx);
3653+CCTK_REAL_VEC const p1o840dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00119047619047619047619047619048),dy);
3654+CCTK_REAL_VEC const p1o840dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00119047619047619047619047619048),dz);
3655+CCTK_REAL_VEC const p1odx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),dx);
3656+CCTK_REAL_VEC const p1odx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),kmul(dx,dx));
3657+CCTK_REAL_VEC const p1ody CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),dy);
3658+CCTK_REAL_VEC const p1ody2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),kmul(dy,dy));
3659+CCTK_REAL_VEC const p1odz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),dz);
3660+CCTK_REAL_VEC const p1odz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(1),kmul(dz,dz));
3661+CCTK_REAL_VEC const pm1o120dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.00833333333333333333333333333333),dx);
3662+CCTK_REAL_VEC const pm1o120dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.00833333333333333333333333333333),dy);
3663+CCTK_REAL_VEC const pm1o120dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.00833333333333333333333333333333),dz);
3664+CCTK_REAL_VEC const pm1o12dx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));
3665+CCTK_REAL_VEC const pm1o12dy2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));
3666+CCTK_REAL_VEC const pm1o12dz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));
3667+CCTK_REAL_VEC const pm1o2dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.5),dx);
3668+CCTK_REAL_VEC const pm1o2dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.5),dy);
3669+CCTK_REAL_VEC const pm1o2dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.5),dz);
3670+CCTK_REAL_VEC const pm1o4dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.25),dx);
3671+CCTK_REAL_VEC const pm1o4dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.25),dy);
3672+CCTK_REAL_VEC const pm1o4dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.25),dz);
3673+CCTK_REAL_VEC const pm1o60dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0166666666666666666666666666667),dx);
3674+CCTK_REAL_VEC const pm1o60dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0166666666666666666666666666667),dy);
3675+CCTK_REAL_VEC const pm1o60dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0166666666666666666666666666667),dz);
3676+
3677+/* Jacobian variable pointers */
3678+bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
3679+ && strlen(jacobian_group) > 0;
3680+bool const usejacobian = use_jacobian;
3681+if (use_jacobian && (strlen(jacobian_determinant_group) == 0 || strlen(jacobian_inverse_group) == 0 || strlen(jacobian_derivative_group) == 0))
3682+{
3683+ CCTK_WARN (1, "GenericFD::jacobian_group, GenericFD::jacobian_determinant_group, GenericFD::jacobian_inverse_group, and GenericFD::jacobian_derivative_group must all be set to valid group names");
3684+}
3685+
3686+CCTK_REAL const *restrict jacobian_ptrs[9];
3687+if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
3688+ 9, jacobian_ptrs);
3689+
3690+CCTK_REAL const *restrict const J11 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[0] : 0;
3691+CCTK_REAL const *restrict const J12 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[1] : 0;
3692+CCTK_REAL const *restrict const J13 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[2] : 0;
3693+CCTK_REAL const *restrict const J21 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[3] : 0;
3694+CCTK_REAL const *restrict const J22 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[4] : 0;
3695+CCTK_REAL const *restrict const J23 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[5] : 0;
3696+CCTK_REAL const *restrict const J31 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[6] : 0;
3697+CCTK_REAL const *restrict const J32 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[7] : 0;
3698+CCTK_REAL const *restrict const J33 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[8] : 0;
3699+
3700+CCTK_REAL const *restrict jacobian_determinant_ptrs[1] CCTK_ATTRIBUTE_UNUSED;
3701+if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_determinant_group,
3702+ 1, jacobian_determinant_ptrs);
3703+
3704+CCTK_REAL const *restrict const detJ CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_ptrs[0] : 0;
3705+
3706+CCTK_REAL const *restrict jacobian_inverse_ptrs[9] CCTK_ATTRIBUTE_UNUSED;
3707+if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_inverse_group,
3708+ 9, jacobian_inverse_ptrs);
3709+
3710+CCTK_REAL const *restrict const iJ11 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[0] : 0;
3711+CCTK_REAL const *restrict const iJ12 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[1] : 0;
3712+CCTK_REAL const *restrict const iJ13 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[2] : 0;
3713+CCTK_REAL const *restrict const iJ21 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[3] : 0;
3714+CCTK_REAL const *restrict const iJ22 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[4] : 0;
3715+CCTK_REAL const *restrict const iJ23 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[5] : 0;
3716+CCTK_REAL const *restrict const iJ31 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[6] : 0;
3717+CCTK_REAL const *restrict const iJ32 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[7] : 0;
3718+CCTK_REAL const *restrict const iJ33 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_inverse_ptrs[8] : 0;
3719+
3720+CCTK_REAL const *restrict jacobian_derivative_ptrs[18] CCTK_ATTRIBUTE_UNUSED;
3721+if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
3722+ 18, jacobian_derivative_ptrs);
3723+
3724+CCTK_REAL const *restrict const dJ111 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
3725+CCTK_REAL const *restrict const dJ112 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
3726+CCTK_REAL const *restrict const dJ113 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
3727+CCTK_REAL const *restrict const dJ122 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
3728+CCTK_REAL const *restrict const dJ123 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
3729+CCTK_REAL const *restrict const dJ133 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
3730+CCTK_REAL const *restrict const dJ211 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
3731+CCTK_REAL const *restrict const dJ212 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
3732+CCTK_REAL const *restrict const dJ213 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
3733+CCTK_REAL const *restrict const dJ222 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
3734+CCTK_REAL const *restrict const dJ223 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
3735+CCTK_REAL const *restrict const dJ233 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
3736+CCTK_REAL const *restrict const dJ311 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
3737+CCTK_REAL const *restrict const dJ312 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
3738+CCTK_REAL const *restrict const dJ313 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
3739+CCTK_REAL const *restrict const dJ322 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
3740+CCTK_REAL const *restrict const dJ323 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
3741+CCTK_REAL const *restrict const dJ333 CCTK_ATTRIBUTE_UNUSED = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
3742+
3743+/* Assign local copies of arrays functions */
3744+
3745+
3746+
3747+/* Calculate temporaries and arrays functions */
3748+
3749+/* Copy local copies back to grid functions */
3750+
3751+/* Loop over the grid points */
3752+#pragma omp parallel
3753+LC_LOOP3VEC(ML_BSSN_CL_RHS1,
3754+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
3755+ cctk_ash[0],cctk_ash[1],cctk_ash[2],
3756+ CCTK_REAL_VEC_SIZE)
3757+{
3758+ ptrdiff_t const index CCTK_ATTRIBUTE_UNUSED = di*i + dj*j + dk*k;
3759+
3760+ /* Assign local copies of grid functions */
3761+
3762+ CCTK_REAL_VEC AL CCTK_ATTRIBUTE_UNUSED = vec_load(A[index]);
3763+ CCTK_REAL_VEC alphaL CCTK_ATTRIBUTE_UNUSED = vec_load(alpha[index]);
3764+ CCTK_REAL_VEC At11L CCTK_ATTRIBUTE_UNUSED = vec_load(At11[index]);
3765+ CCTK_REAL_VEC At12L CCTK_ATTRIBUTE_UNUSED = vec_load(At12[index]);
3766+ CCTK_REAL_VEC At13L CCTK_ATTRIBUTE_UNUSED = vec_load(At13[index]);
3767+ CCTK_REAL_VEC At22L CCTK_ATTRIBUTE_UNUSED = vec_load(At22[index]);
3768+ CCTK_REAL_VEC At23L CCTK_ATTRIBUTE_UNUSED = vec_load(At23[index]);
3769+ CCTK_REAL_VEC At33L CCTK_ATTRIBUTE_UNUSED = vec_load(At33[index]);
3770+ CCTK_REAL_VEC B1L CCTK_ATTRIBUTE_UNUSED = vec_load(B1[index]);
3771+ CCTK_REAL_VEC B2L CCTK_ATTRIBUTE_UNUSED = vec_load(B2[index]);
3772+ CCTK_REAL_VEC B3L CCTK_ATTRIBUTE_UNUSED = vec_load(B3[index]);
3773+ CCTK_REAL_VEC beta1L CCTK_ATTRIBUTE_UNUSED = vec_load(beta1[index]);
3774+ CCTK_REAL_VEC beta2L CCTK_ATTRIBUTE_UNUSED = vec_load(beta2[index]);
3775+ CCTK_REAL_VEC beta3L CCTK_ATTRIBUTE_UNUSED = vec_load(beta3[index]);
3776+ CCTK_REAL_VEC gt11L CCTK_ATTRIBUTE_UNUSED = vec_load(gt11[index]);
3777+ CCTK_REAL_VEC gt12L CCTK_ATTRIBUTE_UNUSED = vec_load(gt12[index]);
3778+ CCTK_REAL_VEC gt13L CCTK_ATTRIBUTE_UNUSED = vec_load(gt13[index]);
3779+ CCTK_REAL_VEC gt22L CCTK_ATTRIBUTE_UNUSED = vec_load(gt22[index]);
3780+ CCTK_REAL_VEC gt23L CCTK_ATTRIBUTE_UNUSED = vec_load(gt23[index]);
3781+ CCTK_REAL_VEC gt33L CCTK_ATTRIBUTE_UNUSED = vec_load(gt33[index]);
3782+ CCTK_REAL_VEC phiL CCTK_ATTRIBUTE_UNUSED = vec_load(phi[index]);
3783+ CCTK_REAL_VEC rL CCTK_ATTRIBUTE_UNUSED = vec_load(r[index]);
3784+ CCTK_REAL_VEC trKL CCTK_ATTRIBUTE_UNUSED = vec_load(trK[index]);
3785+ CCTK_REAL_VEC Xt1L CCTK_ATTRIBUTE_UNUSED = vec_load(Xt1[index]);
3786+ CCTK_REAL_VEC Xt2L CCTK_ATTRIBUTE_UNUSED = vec_load(Xt2[index]);
3787+ CCTK_REAL_VEC Xt3L CCTK_ATTRIBUTE_UNUSED = vec_load(Xt3[index]);
3788+
3789+ CCTK_REAL_VEC eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL CCTK_ATTRIBUTE_UNUSED ;
3790+
3791+ if (*stress_energy_state)
3792+ {
3793+ eTttL = vec_load(eTtt[index]);
3794+ eTtxL = vec_load(eTtx[index]);
3795+ eTtyL = vec_load(eTty[index]);
3796+ eTtzL = vec_load(eTtz[index]);
3797+ eTxxL = vec_load(eTxx[index]);
3798+ eTxyL = vec_load(eTxy[index]);
3799+ eTxzL = vec_load(eTxz[index]);
3800+ eTyyL = vec_load(eTyy[index]);
3801+ eTyzL = vec_load(eTyz[index]);
3802+ eTzzL = vec_load(eTzz[index]);
3803+ }
3804+ else
3805+ {
3806+ eTttL = ToReal(0.0);
3807+ eTtxL = ToReal(0.0);
3808+ eTtyL = ToReal(0.0);
3809+ eTtzL = ToReal(0.0);
3810+ eTxxL = ToReal(0.0);
3811+ eTxyL = ToReal(0.0);
3812+ eTxzL = ToReal(0.0);
3813+ eTyyL = ToReal(0.0);
3814+ eTyzL = ToReal(0.0);
3815+ eTzzL = ToReal(0.0);
3816+ }
3817+
3818+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L CCTK_ATTRIBUTE_UNUSED ;
3819+
3820+ if (use_jacobian)
3821+ {
3822+ dJ111L = vec_load(dJ111[index]);
3823+ dJ112L = vec_load(dJ112[index]);
3824+ dJ113L = vec_load(dJ113[index]);
3825+ dJ122L = vec_load(dJ122[index]);
3826+ dJ123L = vec_load(dJ123[index]);
3827+ dJ133L = vec_load(dJ133[index]);
3828+ dJ211L = vec_load(dJ211[index]);
3829+ dJ212L = vec_load(dJ212[index]);
3830+ dJ213L = vec_load(dJ213[index]);
3831+ dJ222L = vec_load(dJ222[index]);
3832+ dJ223L = vec_load(dJ223[index]);
3833+ dJ233L = vec_load(dJ233[index]);
3834+ dJ311L = vec_load(dJ311[index]);
3835+ dJ312L = vec_load(dJ312[index]);
3836+ dJ313L = vec_load(dJ313[index]);
3837+ dJ322L = vec_load(dJ322[index]);
3838+ dJ323L = vec_load(dJ323[index]);
3839+ dJ333L = vec_load(dJ333[index]);
3840+ J11L = vec_load(J11[index]);
3841+ J12L = vec_load(J12[index]);
3842+ J13L = vec_load(J13[index]);
3843+ J21L = vec_load(J21[index]);
3844+ J22L = vec_load(J22[index]);
3845+ J23L = vec_load(J23[index]);
3846+ J31L = vec_load(J31[index]);
3847+ J32L = vec_load(J32[index]);
3848+ J33L = vec_load(J33[index]);
3849+ }
3850+
3851+ /* Include user supplied include files */
3852+
3853+ /* Precompute derivatives */
3854+ CCTK_REAL_VEC PDstandardNth1alpha CCTK_ATTRIBUTE_UNUSED ;
3855+ CCTK_REAL_VEC PDstandardNth2alpha CCTK_ATTRIBUTE_UNUSED ;
3856+ CCTK_REAL_VEC PDstandardNth3alpha CCTK_ATTRIBUTE_UNUSED ;
3857+ CCTK_REAL_VEC PDstandardNth11alpha CCTK_ATTRIBUTE_UNUSED ;
3858+ CCTK_REAL_VEC PDstandardNth22alpha CCTK_ATTRIBUTE_UNUSED ;
3859+ CCTK_REAL_VEC PDstandardNth33alpha CCTK_ATTRIBUTE_UNUSED ;
3860+ CCTK_REAL_VEC PDstandardNth12alpha CCTK_ATTRIBUTE_UNUSED ;
3861+ CCTK_REAL_VEC PDstandardNth13alpha CCTK_ATTRIBUTE_UNUSED ;
3862+ CCTK_REAL_VEC PDstandardNth23alpha CCTK_ATTRIBUTE_UNUSED ;
3863+ CCTK_REAL_VEC PDstandardNth1beta1 CCTK_ATTRIBUTE_UNUSED ;
3864+ CCTK_REAL_VEC PDstandardNth2beta1 CCTK_ATTRIBUTE_UNUSED ;
3865+ CCTK_REAL_VEC PDstandardNth3beta1 CCTK_ATTRIBUTE_UNUSED ;
3866+ CCTK_REAL_VEC PDstandardNth11beta1 CCTK_ATTRIBUTE_UNUSED ;
3867+ CCTK_REAL_VEC PDstandardNth22beta1 CCTK_ATTRIBUTE_UNUSED ;
3868+ CCTK_REAL_VEC PDstandardNth33beta1 CCTK_ATTRIBUTE_UNUSED ;
3869+ CCTK_REAL_VEC PDstandardNth12beta1 CCTK_ATTRIBUTE_UNUSED ;
3870+ CCTK_REAL_VEC PDstandardNth13beta1 CCTK_ATTRIBUTE_UNUSED ;
3871+ CCTK_REAL_VEC PDstandardNth23beta1 CCTK_ATTRIBUTE_UNUSED ;
3872+ CCTK_REAL_VEC PDstandardNth1beta2 CCTK_ATTRIBUTE_UNUSED ;
3873+ CCTK_REAL_VEC PDstandardNth2beta2 CCTK_ATTRIBUTE_UNUSED ;
3874+ CCTK_REAL_VEC PDstandardNth3beta2 CCTK_ATTRIBUTE_UNUSED ;
3875+ CCTK_REAL_VEC PDstandardNth11beta2 CCTK_ATTRIBUTE_UNUSED ;
3876+ CCTK_REAL_VEC PDstandardNth22beta2 CCTK_ATTRIBUTE_UNUSED ;
3877+ CCTK_REAL_VEC PDstandardNth33beta2 CCTK_ATTRIBUTE_UNUSED ;
3878+ CCTK_REAL_VEC PDstandardNth12beta2 CCTK_ATTRIBUTE_UNUSED ;
3879+ CCTK_REAL_VEC PDstandardNth13beta2 CCTK_ATTRIBUTE_UNUSED ;
3880+ CCTK_REAL_VEC PDstandardNth23beta2 CCTK_ATTRIBUTE_UNUSED ;
3881+ CCTK_REAL_VEC PDstandardNth1beta3 CCTK_ATTRIBUTE_UNUSED ;
3882+ CCTK_REAL_VEC PDstandardNth2beta3 CCTK_ATTRIBUTE_UNUSED ;
3883+ CCTK_REAL_VEC PDstandardNth3beta3 CCTK_ATTRIBUTE_UNUSED ;
3884+ CCTK_REAL_VEC PDstandardNth11beta3 CCTK_ATTRIBUTE_UNUSED ;
3885+ CCTK_REAL_VEC PDstandardNth22beta3 CCTK_ATTRIBUTE_UNUSED ;
3886+ CCTK_REAL_VEC PDstandardNth33beta3 CCTK_ATTRIBUTE_UNUSED ;
3887+ CCTK_REAL_VEC PDstandardNth12beta3 CCTK_ATTRIBUTE_UNUSED ;
3888+ CCTK_REAL_VEC PDstandardNth13beta3 CCTK_ATTRIBUTE_UNUSED ;
3889+ CCTK_REAL_VEC PDstandardNth23beta3 CCTK_ATTRIBUTE_UNUSED ;
3890+ CCTK_REAL_VEC PDstandardNth1gt11 CCTK_ATTRIBUTE_UNUSED ;
3891+ CCTK_REAL_VEC PDstandardNth2gt11 CCTK_ATTRIBUTE_UNUSED ;
3892+ CCTK_REAL_VEC PDstandardNth3gt11 CCTK_ATTRIBUTE_UNUSED ;
3893+ CCTK_REAL_VEC PDstandardNth1gt12 CCTK_ATTRIBUTE_UNUSED ;
3894+ CCTK_REAL_VEC PDstandardNth2gt12 CCTK_ATTRIBUTE_UNUSED ;
3895+ CCTK_REAL_VEC PDstandardNth3gt12 CCTK_ATTRIBUTE_UNUSED ;
3896+ CCTK_REAL_VEC PDstandardNth1gt13 CCTK_ATTRIBUTE_UNUSED ;
3897+ CCTK_REAL_VEC PDstandardNth2gt13 CCTK_ATTRIBUTE_UNUSED ;
3898+ CCTK_REAL_VEC PDstandardNth3gt13 CCTK_ATTRIBUTE_UNUSED ;
3899+ CCTK_REAL_VEC PDstandardNth1gt22 CCTK_ATTRIBUTE_UNUSED ;
3900+ CCTK_REAL_VEC PDstandardNth2gt22 CCTK_ATTRIBUTE_UNUSED ;
3901+ CCTK_REAL_VEC PDstandardNth3gt22 CCTK_ATTRIBUTE_UNUSED ;
3902+ CCTK_REAL_VEC PDstandardNth1gt23 CCTK_ATTRIBUTE_UNUSED ;
3903+ CCTK_REAL_VEC PDstandardNth2gt23 CCTK_ATTRIBUTE_UNUSED ;
3904+ CCTK_REAL_VEC PDstandardNth3gt23 CCTK_ATTRIBUTE_UNUSED ;
3905+ CCTK_REAL_VEC PDstandardNth1gt33 CCTK_ATTRIBUTE_UNUSED ;
3906+ CCTK_REAL_VEC PDstandardNth2gt33 CCTK_ATTRIBUTE_UNUSED ;
3907+ CCTK_REAL_VEC PDstandardNth3gt33 CCTK_ATTRIBUTE_UNUSED ;
3908+ CCTK_REAL_VEC PDstandardNth1phi CCTK_ATTRIBUTE_UNUSED ;
3909+ CCTK_REAL_VEC PDstandardNth2phi CCTK_ATTRIBUTE_UNUSED ;
3910+ CCTK_REAL_VEC PDstandardNth3phi CCTK_ATTRIBUTE_UNUSED ;
3911+ CCTK_REAL_VEC PDstandardNth1trK CCTK_ATTRIBUTE_UNUSED ;
3912+ CCTK_REAL_VEC PDstandardNth2trK CCTK_ATTRIBUTE_UNUSED ;
3913+ CCTK_REAL_VEC PDstandardNth3trK CCTK_ATTRIBUTE_UNUSED ;
3914+
3915+ switch(fdOrder)
3916+ {
3917+ case 2:
3918+ PDstandardNth1alpha = PDstandardNthfdOrder21(&alpha[index]);
3919+ PDstandardNth2alpha = PDstandardNthfdOrder22(&alpha[index]);
3920+ PDstandardNth3alpha = PDstandardNthfdOrder23(&alpha[index]);
3921+ PDstandardNth11alpha = PDstandardNthfdOrder211(&alpha[index]);
3922+ PDstandardNth22alpha = PDstandardNthfdOrder222(&alpha[index]);
3923+ PDstandardNth33alpha = PDstandardNthfdOrder233(&alpha[index]);
3924+ PDstandardNth12alpha = PDstandardNthfdOrder212(&alpha[index]);
3925+ PDstandardNth13alpha = PDstandardNthfdOrder213(&alpha[index]);
3926+ PDstandardNth23alpha = PDstandardNthfdOrder223(&alpha[index]);
3927+ PDstandardNth1beta1 = PDstandardNthfdOrder21(&beta1[index]);
3928+ PDstandardNth2beta1 = PDstandardNthfdOrder22(&beta1[index]);
3929+ PDstandardNth3beta1 = PDstandardNthfdOrder23(&beta1[index]);
3930+ PDstandardNth11beta1 = PDstandardNthfdOrder211(&beta1[index]);
3931+ PDstandardNth22beta1 = PDstandardNthfdOrder222(&beta1[index]);
3932+ PDstandardNth33beta1 = PDstandardNthfdOrder233(&beta1[index]);
3933+ PDstandardNth12beta1 = PDstandardNthfdOrder212(&beta1[index]);
3934+ PDstandardNth13beta1 = PDstandardNthfdOrder213(&beta1[index]);
3935+ PDstandardNth23beta1 = PDstandardNthfdOrder223(&beta1[index]);
3936+ PDstandardNth1beta2 = PDstandardNthfdOrder21(&beta2[index]);
3937+ PDstandardNth2beta2 = PDstandardNthfdOrder22(&beta2[index]);
3938+ PDstandardNth3beta2 = PDstandardNthfdOrder23(&beta2[index]);
3939+ PDstandardNth11beta2 = PDstandardNthfdOrder211(&beta2[index]);
3940+ PDstandardNth22beta2 = PDstandardNthfdOrder222(&beta2[index]);
3941+ PDstandardNth33beta2 = PDstandardNthfdOrder233(&beta2[index]);
3942+ PDstandardNth12beta2 = PDstandardNthfdOrder212(&beta2[index]);
3943+ PDstandardNth13beta2 = PDstandardNthfdOrder213(&beta2[index]);
3944+ PDstandardNth23beta2 = PDstandardNthfdOrder223(&beta2[index]);
3945+ PDstandardNth1beta3 = PDstandardNthfdOrder21(&beta3[index]);
3946+ PDstandardNth2beta3 = PDstandardNthfdOrder22(&beta3[index]);
3947+ PDstandardNth3beta3 = PDstandardNthfdOrder23(&beta3[index]);
3948+ PDstandardNth11beta3 = PDstandardNthfdOrder211(&beta3[index]);
3949+ PDstandardNth22beta3 = PDstandardNthfdOrder222(&beta3[index]);
3950+ PDstandardNth33beta3 = PDstandardNthfdOrder233(&beta3[index]);
3951+ PDstandardNth12beta3 = PDstandardNthfdOrder212(&beta3[index]);
3952+ PDstandardNth13beta3 = PDstandardNthfdOrder213(&beta3[index]);
3953+ PDstandardNth23beta3 = PDstandardNthfdOrder223(&beta3[index]);
3954+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
3955+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
3956+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
3957+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
3958+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
3959+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
3960+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
3961+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
3962+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
3963+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
3964+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
3965+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
3966+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
3967+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
3968+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
3969+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
3970+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
3971+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
3972+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
3973+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
3974+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
3975+ PDstandardNth1trK = PDstandardNthfdOrder21(&trK[index]);
3976+ PDstandardNth2trK = PDstandardNthfdOrder22(&trK[index]);
3977+ PDstandardNth3trK = PDstandardNthfdOrder23(&trK[index]);
3978+ break;
3979+
3980+ case 4:
3981+ PDstandardNth1alpha = PDstandardNthfdOrder41(&alpha[index]);
3982+ PDstandardNth2alpha = PDstandardNthfdOrder42(&alpha[index]);
3983+ PDstandardNth3alpha = PDstandardNthfdOrder43(&alpha[index]);
3984+ PDstandardNth11alpha = PDstandardNthfdOrder411(&alpha[index]);
3985+ PDstandardNth22alpha = PDstandardNthfdOrder422(&alpha[index]);
3986+ PDstandardNth33alpha = PDstandardNthfdOrder433(&alpha[index]);
3987+ PDstandardNth12alpha = PDstandardNthfdOrder412(&alpha[index]);
3988+ PDstandardNth13alpha = PDstandardNthfdOrder413(&alpha[index]);
3989+ PDstandardNth23alpha = PDstandardNthfdOrder423(&alpha[index]);
3990+ PDstandardNth1beta1 = PDstandardNthfdOrder41(&beta1[index]);
3991+ PDstandardNth2beta1 = PDstandardNthfdOrder42(&beta1[index]);
3992+ PDstandardNth3beta1 = PDstandardNthfdOrder43(&beta1[index]);
3993+ PDstandardNth11beta1 = PDstandardNthfdOrder411(&beta1[index]);
3994+ PDstandardNth22beta1 = PDstandardNthfdOrder422(&beta1[index]);
3995+ PDstandardNth33beta1 = PDstandardNthfdOrder433(&beta1[index]);
3996+ PDstandardNth12beta1 = PDstandardNthfdOrder412(&beta1[index]);
3997+ PDstandardNth13beta1 = PDstandardNthfdOrder413(&beta1[index]);
3998+ PDstandardNth23beta1 = PDstandardNthfdOrder423(&beta1[index]);
3999+ PDstandardNth1beta2 = PDstandardNthfdOrder41(&beta2[index]);
4000+ PDstandardNth2beta2 = PDstandardNthfdOrder42(&beta2[index]);
4001+ PDstandardNth3beta2 = PDstandardNthfdOrder43(&beta2[index]);
4002+ PDstandardNth11beta2 = PDstandardNthfdOrder411(&beta2[index]);
4003+ PDstandardNth22beta2 = PDstandardNthfdOrder422(&beta2[index]);
4004+ PDstandardNth33beta2 = PDstandardNthfdOrder433(&beta2[index]);
4005+ PDstandardNth12beta2 = PDstandardNthfdOrder412(&beta2[index]);
4006+ PDstandardNth13beta2 = PDstandardNthfdOrder413(&beta2[index]);
4007+ PDstandardNth23beta2 = PDstandardNthfdOrder423(&beta2[index]);
4008+ PDstandardNth1beta3 = PDstandardNthfdOrder41(&beta3[index]);
4009+ PDstandardNth2beta3 = PDstandardNthfdOrder42(&beta3[index]);
4010+ PDstandardNth3beta3 = PDstandardNthfdOrder43(&beta3[index]);
4011+ PDstandardNth11beta3 = PDstandardNthfdOrder411(&beta3[index]);
4012+ PDstandardNth22beta3 = PDstandardNthfdOrder422(&beta3[index]);
4013+ PDstandardNth33beta3 = PDstandardNthfdOrder433(&beta3[index]);
4014+ PDstandardNth12beta3 = PDstandardNthfdOrder412(&beta3[index]);
4015+ PDstandardNth13beta3 = PDstandardNthfdOrder413(&beta3[index]);
4016+ PDstandardNth23beta3 = PDstandardNthfdOrder423(&beta3[index]);
4017+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
4018+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
4019+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
4020+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
4021+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
4022+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
4023+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
4024+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
4025+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
4026+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
4027+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
4028+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
4029+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
4030+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
4031+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
4032+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
4033+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
4034+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
4035+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
4036+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
4037+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
4038+ PDstandardNth1trK = PDstandardNthfdOrder41(&trK[index]);
4039+ PDstandardNth2trK = PDstandardNthfdOrder42(&trK[index]);
4040+ PDstandardNth3trK = PDstandardNthfdOrder43(&trK[index]);
4041+ break;
4042+
4043+ case 6:
4044+ PDstandardNth1alpha = PDstandardNthfdOrder61(&alpha[index]);
4045+ PDstandardNth2alpha = PDstandardNthfdOrder62(&alpha[index]);
4046+ PDstandardNth3alpha = PDstandardNthfdOrder63(&alpha[index]);
4047+ PDstandardNth11alpha = PDstandardNthfdOrder611(&alpha[index]);
4048+ PDstandardNth22alpha = PDstandardNthfdOrder622(&alpha[index]);
4049+ PDstandardNth33alpha = PDstandardNthfdOrder633(&alpha[index]);
4050+ PDstandardNth12alpha = PDstandardNthfdOrder612(&alpha[index]);
4051+ PDstandardNth13alpha = PDstandardNthfdOrder613(&alpha[index]);
4052+ PDstandardNth23alpha = PDstandardNthfdOrder623(&alpha[index]);
4053+ PDstandardNth1beta1 = PDstandardNthfdOrder61(&beta1[index]);
4054+ PDstandardNth2beta1 = PDstandardNthfdOrder62(&beta1[index]);
4055+ PDstandardNth3beta1 = PDstandardNthfdOrder63(&beta1[index]);
4056+ PDstandardNth11beta1 = PDstandardNthfdOrder611(&beta1[index]);
4057+ PDstandardNth22beta1 = PDstandardNthfdOrder622(&beta1[index]);
4058+ PDstandardNth33beta1 = PDstandardNthfdOrder633(&beta1[index]);
4059+ PDstandardNth12beta1 = PDstandardNthfdOrder612(&beta1[index]);
4060+ PDstandardNth13beta1 = PDstandardNthfdOrder613(&beta1[index]);
4061+ PDstandardNth23beta1 = PDstandardNthfdOrder623(&beta1[index]);
4062+ PDstandardNth1beta2 = PDstandardNthfdOrder61(&beta2[index]);
4063+ PDstandardNth2beta2 = PDstandardNthfdOrder62(&beta2[index]);
4064+ PDstandardNth3beta2 = PDstandardNthfdOrder63(&beta2[index]);
4065+ PDstandardNth11beta2 = PDstandardNthfdOrder611(&beta2[index]);
4066+ PDstandardNth22beta2 = PDstandardNthfdOrder622(&beta2[index]);
4067+ PDstandardNth33beta2 = PDstandardNthfdOrder633(&beta2[index]);
4068+ PDstandardNth12beta2 = PDstandardNthfdOrder612(&beta2[index]);
4069+ PDstandardNth13beta2 = PDstandardNthfdOrder613(&beta2[index]);
4070+ PDstandardNth23beta2 = PDstandardNthfdOrder623(&beta2[index]);
4071+ PDstandardNth1beta3 = PDstandardNthfdOrder61(&beta3[index]);
4072+ PDstandardNth2beta3 = PDstandardNthfdOrder62(&beta3[index]);
4073+ PDstandardNth3beta3 = PDstandardNthfdOrder63(&beta3[index]);
4074+ PDstandardNth11beta3 = PDstandardNthfdOrder611(&beta3[index]);
4075+ PDstandardNth22beta3 = PDstandardNthfdOrder622(&beta3[index]);
4076+ PDstandardNth33beta3 = PDstandardNthfdOrder633(&beta3[index]);
4077+ PDstandardNth12beta3 = PDstandardNthfdOrder612(&beta3[index]);
4078+ PDstandardNth13beta3 = PDstandardNthfdOrder613(&beta3[index]);
4079+ PDstandardNth23beta3 = PDstandardNthfdOrder623(&beta3[index]);
4080+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
4081+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
4082+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
4083+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
4084+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
4085+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
4086+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
4087+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
4088+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
4089+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
4090+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
4091+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
4092+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
4093+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
4094+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
4095+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
4096+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
4097+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
4098+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
4099+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
4100+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
4101+ PDstandardNth1trK = PDstandardNthfdOrder61(&trK[index]);
4102+ PDstandardNth2trK = PDstandardNthfdOrder62(&trK[index]);
4103+ PDstandardNth3trK = PDstandardNthfdOrder63(&trK[index]);
4104+ break;
4105+
4106+ case 8:
4107+ PDstandardNth1alpha = PDstandardNthfdOrder81(&alpha[index]);
4108+ PDstandardNth2alpha = PDstandardNthfdOrder82(&alpha[index]);
4109+ PDstandardNth3alpha = PDstandardNthfdOrder83(&alpha[index]);
4110+ PDstandardNth11alpha = PDstandardNthfdOrder811(&alpha[index]);
4111+ PDstandardNth22alpha = PDstandardNthfdOrder822(&alpha[index]);
4112+ PDstandardNth33alpha = PDstandardNthfdOrder833(&alpha[index]);
4113+ PDstandardNth12alpha = PDstandardNthfdOrder812(&alpha[index]);
4114+ PDstandardNth13alpha = PDstandardNthfdOrder813(&alpha[index]);
4115+ PDstandardNth23alpha = PDstandardNthfdOrder823(&alpha[index]);
4116+ PDstandardNth1beta1 = PDstandardNthfdOrder81(&beta1[index]);
4117+ PDstandardNth2beta1 = PDstandardNthfdOrder82(&beta1[index]);
4118+ PDstandardNth3beta1 = PDstandardNthfdOrder83(&beta1[index]);
4119+ PDstandardNth11beta1 = PDstandardNthfdOrder811(&beta1[index]);
4120+ PDstandardNth22beta1 = PDstandardNthfdOrder822(&beta1[index]);
4121+ PDstandardNth33beta1 = PDstandardNthfdOrder833(&beta1[index]);
4122+ PDstandardNth12beta1 = PDstandardNthfdOrder812(&beta1[index]);
4123+ PDstandardNth13beta1 = PDstandardNthfdOrder813(&beta1[index]);
4124+ PDstandardNth23beta1 = PDstandardNthfdOrder823(&beta1[index]);
4125+ PDstandardNth1beta2 = PDstandardNthfdOrder81(&beta2[index]);
4126+ PDstandardNth2beta2 = PDstandardNthfdOrder82(&beta2[index]);
4127+ PDstandardNth3beta2 = PDstandardNthfdOrder83(&beta2[index]);
4128+ PDstandardNth11beta2 = PDstandardNthfdOrder811(&beta2[index]);
4129+ PDstandardNth22beta2 = PDstandardNthfdOrder822(&beta2[index]);
4130+ PDstandardNth33beta2 = PDstandardNthfdOrder833(&beta2[index]);
4131+ PDstandardNth12beta2 = PDstandardNthfdOrder812(&beta2[index]);
4132+ PDstandardNth13beta2 = PDstandardNthfdOrder813(&beta2[index]);
4133+ PDstandardNth23beta2 = PDstandardNthfdOrder823(&beta2[index]);
4134+ PDstandardNth1beta3 = PDstandardNthfdOrder81(&beta3[index]);
4135+ PDstandardNth2beta3 = PDstandardNthfdOrder82(&beta3[index]);
4136+ PDstandardNth3beta3 = PDstandardNthfdOrder83(&beta3[index]);
4137+ PDstandardNth11beta3 = PDstandardNthfdOrder811(&beta3[index]);
4138+ PDstandardNth22beta3 = PDstandardNthfdOrder822(&beta3[index]);
4139+ PDstandardNth33beta3 = PDstandardNthfdOrder833(&beta3[index]);
4140+ PDstandardNth12beta3 = PDstandardNthfdOrder812(&beta3[index]);
4141+ PDstandardNth13beta3 = PDstandardNthfdOrder813(&beta3[index]);
4142+ PDstandardNth23beta3 = PDstandardNthfdOrder823(&beta3[index]);
4143+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
4144+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
4145+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
4146+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
4147+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
4148+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
4149+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
4150+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
4151+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
4152+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
4153+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
4154+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
4155+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
4156+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
4157+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
4158+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
4159+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
4160+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
4161+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
4162+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
4163+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
4164+ PDstandardNth1trK = PDstandardNthfdOrder81(&trK[index]);
4165+ PDstandardNth2trK = PDstandardNthfdOrder82(&trK[index]);
4166+ PDstandardNth3trK = PDstandardNthfdOrder83(&trK[index]);
4167+ break;
4168+ }
4169+
4170+ /* Calculate temporaries and grid functions */
4171+ CCTK_REAL_VEC JacPDstandardNth11alpha CCTK_ATTRIBUTE_UNUSED ;
4172+ CCTK_REAL_VEC JacPDstandardNth11beta1 CCTK_ATTRIBUTE_UNUSED ;
4173+ CCTK_REAL_VEC JacPDstandardNth11beta2 CCTK_ATTRIBUTE_UNUSED ;
4174+ CCTK_REAL_VEC JacPDstandardNth11beta3 CCTK_ATTRIBUTE_UNUSED ;
4175+ CCTK_REAL_VEC JacPDstandardNth12alpha CCTK_ATTRIBUTE_UNUSED ;
4176+ CCTK_REAL_VEC JacPDstandardNth12beta1 CCTK_ATTRIBUTE_UNUSED ;
4177+ CCTK_REAL_VEC JacPDstandardNth12beta2 CCTK_ATTRIBUTE_UNUSED ;
4178+ CCTK_REAL_VEC JacPDstandardNth12beta3 CCTK_ATTRIBUTE_UNUSED ;
4179+ CCTK_REAL_VEC JacPDstandardNth13alpha CCTK_ATTRIBUTE_UNUSED ;
4180+ CCTK_REAL_VEC JacPDstandardNth13beta1 CCTK_ATTRIBUTE_UNUSED ;
4181+ CCTK_REAL_VEC JacPDstandardNth13beta2 CCTK_ATTRIBUTE_UNUSED ;
4182+ CCTK_REAL_VEC JacPDstandardNth13beta3 CCTK_ATTRIBUTE_UNUSED ;
4183+ CCTK_REAL_VEC JacPDstandardNth1alpha CCTK_ATTRIBUTE_UNUSED ;
4184+ CCTK_REAL_VEC JacPDstandardNth1beta1 CCTK_ATTRIBUTE_UNUSED ;
4185+ CCTK_REAL_VEC JacPDstandardNth1beta2 CCTK_ATTRIBUTE_UNUSED ;
4186+ CCTK_REAL_VEC JacPDstandardNth1beta3 CCTK_ATTRIBUTE_UNUSED ;
4187+ CCTK_REAL_VEC JacPDstandardNth1gt11 CCTK_ATTRIBUTE_UNUSED ;
4188+ CCTK_REAL_VEC JacPDstandardNth1gt12 CCTK_ATTRIBUTE_UNUSED ;
4189+ CCTK_REAL_VEC JacPDstandardNth1gt13 CCTK_ATTRIBUTE_UNUSED ;
4190+ CCTK_REAL_VEC JacPDstandardNth1gt22 CCTK_ATTRIBUTE_UNUSED ;
4191+ CCTK_REAL_VEC JacPDstandardNth1gt23 CCTK_ATTRIBUTE_UNUSED ;
4192+ CCTK_REAL_VEC JacPDstandardNth1gt33 CCTK_ATTRIBUTE_UNUSED ;
4193+ CCTK_REAL_VEC JacPDstandardNth1phi CCTK_ATTRIBUTE_UNUSED ;
4194+ CCTK_REAL_VEC JacPDstandardNth1trK CCTK_ATTRIBUTE_UNUSED ;
4195+ CCTK_REAL_VEC JacPDstandardNth21alpha CCTK_ATTRIBUTE_UNUSED ;
4196+ CCTK_REAL_VEC JacPDstandardNth21beta1 CCTK_ATTRIBUTE_UNUSED ;
4197+ CCTK_REAL_VEC JacPDstandardNth21beta2 CCTK_ATTRIBUTE_UNUSED ;
4198+ CCTK_REAL_VEC JacPDstandardNth21beta3 CCTK_ATTRIBUTE_UNUSED ;
4199+ CCTK_REAL_VEC JacPDstandardNth22alpha CCTK_ATTRIBUTE_UNUSED ;
4200+ CCTK_REAL_VEC JacPDstandardNth22beta1 CCTK_ATTRIBUTE_UNUSED ;
4201+ CCTK_REAL_VEC JacPDstandardNth22beta2 CCTK_ATTRIBUTE_UNUSED ;
4202+ CCTK_REAL_VEC JacPDstandardNth22beta3 CCTK_ATTRIBUTE_UNUSED ;
4203+ CCTK_REAL_VEC JacPDstandardNth23alpha CCTK_ATTRIBUTE_UNUSED ;
4204+ CCTK_REAL_VEC JacPDstandardNth23beta1 CCTK_ATTRIBUTE_UNUSED ;
4205+ CCTK_REAL_VEC JacPDstandardNth23beta2 CCTK_ATTRIBUTE_UNUSED ;
4206+ CCTK_REAL_VEC JacPDstandardNth23beta3 CCTK_ATTRIBUTE_UNUSED ;
4207+ CCTK_REAL_VEC JacPDstandardNth2alpha CCTK_ATTRIBUTE_UNUSED ;
4208+ CCTK_REAL_VEC JacPDstandardNth2beta1 CCTK_ATTRIBUTE_UNUSED ;
4209+ CCTK_REAL_VEC JacPDstandardNth2beta2 CCTK_ATTRIBUTE_UNUSED ;
4210+ CCTK_REAL_VEC JacPDstandardNth2beta3 CCTK_ATTRIBUTE_UNUSED ;
4211+ CCTK_REAL_VEC JacPDstandardNth2gt11 CCTK_ATTRIBUTE_UNUSED ;
4212+ CCTK_REAL_VEC JacPDstandardNth2gt12 CCTK_ATTRIBUTE_UNUSED ;
4213+ CCTK_REAL_VEC JacPDstandardNth2gt13 CCTK_ATTRIBUTE_UNUSED ;
4214+ CCTK_REAL_VEC JacPDstandardNth2gt22 CCTK_ATTRIBUTE_UNUSED ;
4215+ CCTK_REAL_VEC JacPDstandardNth2gt23 CCTK_ATTRIBUTE_UNUSED ;
4216+ CCTK_REAL_VEC JacPDstandardNth2gt33 CCTK_ATTRIBUTE_UNUSED ;
4217+ CCTK_REAL_VEC JacPDstandardNth2phi CCTK_ATTRIBUTE_UNUSED ;
4218+ CCTK_REAL_VEC JacPDstandardNth2trK CCTK_ATTRIBUTE_UNUSED ;
4219+ CCTK_REAL_VEC JacPDstandardNth31alpha CCTK_ATTRIBUTE_UNUSED ;
4220+ CCTK_REAL_VEC JacPDstandardNth31beta1 CCTK_ATTRIBUTE_UNUSED ;
4221+ CCTK_REAL_VEC JacPDstandardNth31beta2 CCTK_ATTRIBUTE_UNUSED ;
4222+ CCTK_REAL_VEC JacPDstandardNth31beta3 CCTK_ATTRIBUTE_UNUSED ;
4223+ CCTK_REAL_VEC JacPDstandardNth32alpha CCTK_ATTRIBUTE_UNUSED ;
4224+ CCTK_REAL_VEC JacPDstandardNth32beta1 CCTK_ATTRIBUTE_UNUSED ;
4225+ CCTK_REAL_VEC JacPDstandardNth32beta2 CCTK_ATTRIBUTE_UNUSED ;
4226+ CCTK_REAL_VEC JacPDstandardNth32beta3 CCTK_ATTRIBUTE_UNUSED ;
4227+ CCTK_REAL_VEC JacPDstandardNth33alpha CCTK_ATTRIBUTE_UNUSED ;
4228+ CCTK_REAL_VEC JacPDstandardNth33beta1 CCTK_ATTRIBUTE_UNUSED ;
4229+ CCTK_REAL_VEC JacPDstandardNth33beta2 CCTK_ATTRIBUTE_UNUSED ;
4230+ CCTK_REAL_VEC JacPDstandardNth33beta3 CCTK_ATTRIBUTE_UNUSED ;
4231+ CCTK_REAL_VEC JacPDstandardNth3alpha CCTK_ATTRIBUTE_UNUSED ;
4232+ CCTK_REAL_VEC JacPDstandardNth3beta1 CCTK_ATTRIBUTE_UNUSED ;
4233+ CCTK_REAL_VEC JacPDstandardNth3beta2 CCTK_ATTRIBUTE_UNUSED ;
4234+ CCTK_REAL_VEC JacPDstandardNth3beta3 CCTK_ATTRIBUTE_UNUSED ;
4235+ CCTK_REAL_VEC JacPDstandardNth3gt11 CCTK_ATTRIBUTE_UNUSED ;
4236+ CCTK_REAL_VEC JacPDstandardNth3gt12 CCTK_ATTRIBUTE_UNUSED ;
4237+ CCTK_REAL_VEC JacPDstandardNth3gt13 CCTK_ATTRIBUTE_UNUSED ;
4238+ CCTK_REAL_VEC JacPDstandardNth3gt22 CCTK_ATTRIBUTE_UNUSED ;
4239+ CCTK_REAL_VEC JacPDstandardNth3gt23 CCTK_ATTRIBUTE_UNUSED ;
4240+ CCTK_REAL_VEC JacPDstandardNth3gt33 CCTK_ATTRIBUTE_UNUSED ;
4241+ CCTK_REAL_VEC JacPDstandardNth3phi CCTK_ATTRIBUTE_UNUSED ;
4242+ CCTK_REAL_VEC JacPDstandardNth3trK CCTK_ATTRIBUTE_UNUSED ;
4243+
4244+ if (use_jacobian)
4245+ {
4246+ JacPDstandardNth1alpha =
4247+ kmadd(J11L,PDstandardNth1alpha,kmadd(J21L,PDstandardNth2alpha,kmul(J31L,PDstandardNth3alpha)));
4248+
4249+ JacPDstandardNth1beta1 =
4250+ kmadd(J11L,PDstandardNth1beta1,kmadd(J21L,PDstandardNth2beta1,kmul(J31L,PDstandardNth3beta1)));
4251+
4252+ JacPDstandardNth1beta2 =
4253+ kmadd(J11L,PDstandardNth1beta2,kmadd(J21L,PDstandardNth2beta2,kmul(J31L,PDstandardNth3beta2)));
4254+
4255+ JacPDstandardNth1beta3 =
4256+ kmadd(J11L,PDstandardNth1beta3,kmadd(J21L,PDstandardNth2beta3,kmul(J31L,PDstandardNth3beta3)));
4257+
4258+ JacPDstandardNth1gt11 =
4259+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
4260+
4261+ JacPDstandardNth1gt12 =
4262+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
4263+
4264+ JacPDstandardNth1gt13 =
4265+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
4266+
4267+ JacPDstandardNth1gt22 =
4268+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
4269+
4270+ JacPDstandardNth1gt23 =
4271+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
4272+
4273+ JacPDstandardNth1gt33 =
4274+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
4275+
4276+ JacPDstandardNth1phi =
4277+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
4278+
4279+ JacPDstandardNth1trK =
4280+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
4281+
4282+ JacPDstandardNth2alpha =
4283+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
4284+
4285+ JacPDstandardNth2beta1 =
4286+ kmadd(J12L,PDstandardNth1beta1,kmadd(J22L,PDstandardNth2beta1,kmul(J32L,PDstandardNth3beta1)));
4287+
4288+ JacPDstandardNth2beta2 =
4289+ kmadd(J12L,PDstandardNth1beta2,kmadd(J22L,PDstandardNth2beta2,kmul(J32L,PDstandardNth3beta2)));
4290+
4291+ JacPDstandardNth2beta3 =
4292+ kmadd(J12L,PDstandardNth1beta3,kmadd(J22L,PDstandardNth2beta3,kmul(J32L,PDstandardNth3beta3)));
4293+
4294+ JacPDstandardNth2gt11 =
4295+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
4296+
4297+ JacPDstandardNth2gt12 =
4298+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
4299+
4300+ JacPDstandardNth2gt13 =
4301+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
4302+
4303+ JacPDstandardNth2gt22 =
4304+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
4305+
4306+ JacPDstandardNth2gt23 =
4307+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
4308+
4309+ JacPDstandardNth2gt33 =
4310+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
4311+
4312+ JacPDstandardNth2phi =
4313+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
4314+
4315+ JacPDstandardNth2trK =
4316+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
4317+
4318+ JacPDstandardNth3alpha =
4319+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
4320+
4321+ JacPDstandardNth3beta1 =
4322+ kmadd(J13L,PDstandardNth1beta1,kmadd(J23L,PDstandardNth2beta1,kmul(J33L,PDstandardNth3beta1)));
4323+
4324+ JacPDstandardNth3beta2 =
4325+ kmadd(J13L,PDstandardNth1beta2,kmadd(J23L,PDstandardNth2beta2,kmul(J33L,PDstandardNth3beta2)));
4326+
4327+ JacPDstandardNth3beta3 =
4328+ kmadd(J13L,PDstandardNth1beta3,kmadd(J23L,PDstandardNth2beta3,kmul(J33L,PDstandardNth3beta3)));
4329+
4330+ JacPDstandardNth3gt11 =
4331+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
4332+
4333+ JacPDstandardNth3gt12 =
4334+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
4335+
4336+ JacPDstandardNth3gt13 =
4337+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
4338+
4339+ JacPDstandardNth3gt22 =
4340+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
4341+
4342+ JacPDstandardNth3gt23 =
4343+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
4344+
4345+ JacPDstandardNth3gt33 =
4346+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
4347+
4348+ JacPDstandardNth3phi =
4349+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
4350+
4351+ JacPDstandardNth3trK =
4352+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
4353+
4354+ JacPDstandardNth11alpha =
4355+ kmadd(dJ111L,PDstandardNth1alpha,kmadd(dJ211L,PDstandardNth2alpha,kmadd(dJ311L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,kmul(J11L,J11L),kmadd(PDstandardNth22alpha,kmul(J21L,J21L),kmadd(PDstandardNth33alpha,kmul(J31L,J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha)),kmul(J21L,kmul(J31L,PDstandardNth23alpha))),ToReal(2))))))));
4356+
4357+ JacPDstandardNth11beta1 =
4358+ kmadd(dJ111L,PDstandardNth1beta1,kmadd(dJ211L,PDstandardNth2beta1,kmadd(dJ311L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,kmul(J11L,J11L),kmadd(PDstandardNth22beta1,kmul(J21L,J21L),kmadd(PDstandardNth33beta1,kmul(J31L,J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1)),kmul(J21L,kmul(J31L,PDstandardNth23beta1))),ToReal(2))))))));
4359+
4360+ JacPDstandardNth11beta2 =
4361+ kmadd(dJ111L,PDstandardNth1beta2,kmadd(dJ211L,PDstandardNth2beta2,kmadd(dJ311L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,kmul(J11L,J11L),kmadd(PDstandardNth22beta2,kmul(J21L,J21L),kmadd(PDstandardNth33beta2,kmul(J31L,J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2)),kmul(J21L,kmul(J31L,PDstandardNth23beta2))),ToReal(2))))))));
4362+
4363+ JacPDstandardNth11beta3 =
4364+ kmadd(dJ111L,PDstandardNth1beta3,kmadd(dJ211L,PDstandardNth2beta3,kmadd(dJ311L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,kmul(J11L,J11L),kmadd(PDstandardNth22beta3,kmul(J21L,J21L),kmadd(PDstandardNth33beta3,kmul(J31L,J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3)),kmul(J21L,kmul(J31L,PDstandardNth23beta3))),ToReal(2))))))));
4365+
4366+ JacPDstandardNth22alpha =
4367+ kmadd(dJ122L,PDstandardNth1alpha,kmadd(dJ222L,PDstandardNth2alpha,kmadd(dJ322L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,kmul(J12L,J12L),kmadd(PDstandardNth22alpha,kmul(J22L,J22L),kmadd(PDstandardNth33alpha,kmul(J32L,J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmul(J22L,kmul(J32L,PDstandardNth23alpha))),ToReal(2))))))));
4368+
4369+ JacPDstandardNth22beta1 =
4370+ kmadd(dJ122L,PDstandardNth1beta1,kmadd(dJ222L,PDstandardNth2beta1,kmadd(dJ322L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,kmul(J12L,J12L),kmadd(PDstandardNth22beta1,kmul(J22L,J22L),kmadd(PDstandardNth33beta1,kmul(J32L,J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmul(J22L,kmul(J32L,PDstandardNth23beta1))),ToReal(2))))))));
4371+
4372+ JacPDstandardNth22beta2 =
4373+ kmadd(dJ122L,PDstandardNth1beta2,kmadd(dJ222L,PDstandardNth2beta2,kmadd(dJ322L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,kmul(J12L,J12L),kmadd(PDstandardNth22beta2,kmul(J22L,J22L),kmadd(PDstandardNth33beta2,kmul(J32L,J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmul(J22L,kmul(J32L,PDstandardNth23beta2))),ToReal(2))))))));
4374+
4375+ JacPDstandardNth22beta3 =
4376+ kmadd(dJ122L,PDstandardNth1beta3,kmadd(dJ222L,PDstandardNth2beta3,kmadd(dJ322L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,kmul(J12L,J12L),kmadd(PDstandardNth22beta3,kmul(J22L,J22L),kmadd(PDstandardNth33beta3,kmul(J32L,J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmul(J22L,kmul(J32L,PDstandardNth23beta3))),ToReal(2))))))));
4377+
4378+ JacPDstandardNth33alpha =
4379+ kmadd(dJ133L,PDstandardNth1alpha,kmadd(dJ233L,PDstandardNth2alpha,kmadd(dJ333L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,kmul(J13L,J13L),kmadd(PDstandardNth22alpha,kmul(J23L,J23L),kmadd(PDstandardNth33alpha,kmul(J33L,J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmul(J23L,kmul(J33L,PDstandardNth23alpha))),ToReal(2))))))));
4380+
4381+ JacPDstandardNth33beta1 =
4382+ kmadd(dJ133L,PDstandardNth1beta1,kmadd(dJ233L,PDstandardNth2beta1,kmadd(dJ333L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,kmul(J13L,J13L),kmadd(PDstandardNth22beta1,kmul(J23L,J23L),kmadd(PDstandardNth33beta1,kmul(J33L,J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmul(J23L,kmul(J33L,PDstandardNth23beta1))),ToReal(2))))))));
4383+
4384+ JacPDstandardNth33beta2 =
4385+ kmadd(dJ133L,PDstandardNth1beta2,kmadd(dJ233L,PDstandardNth2beta2,kmadd(dJ333L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,kmul(J13L,J13L),kmadd(PDstandardNth22beta2,kmul(J23L,J23L),kmadd(PDstandardNth33beta2,kmul(J33L,J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmul(J23L,kmul(J33L,PDstandardNth23beta2))),ToReal(2))))))));
4386+
4387+ JacPDstandardNth33beta3 =
4388+ kmadd(dJ133L,PDstandardNth1beta3,kmadd(dJ233L,PDstandardNth2beta3,kmadd(dJ333L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,kmul(J13L,J13L),kmadd(PDstandardNth22beta3,kmul(J23L,J23L),kmadd(PDstandardNth33beta3,kmul(J33L,J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmul(J23L,kmul(J33L,PDstandardNth23beta3))),ToReal(2))))))));
4389+
4390+ JacPDstandardNth12alpha =
4391+ kmadd(J12L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmadd(dJ112L,PDstandardNth1alpha,kmadd(J22L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ212L,PDstandardNth2alpha,kmadd(J32L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ312L,PDstandardNth3alpha)))))));
4392+
4393+ JacPDstandardNth12beta1 =
4394+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmadd(dJ112L,PDstandardNth1beta1,kmadd(J22L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ212L,PDstandardNth2beta1,kmadd(J32L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ312L,PDstandardNth3beta1)))))));
4395+
4396+ JacPDstandardNth12beta2 =
4397+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmadd(dJ112L,PDstandardNth1beta2,kmadd(J22L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ212L,PDstandardNth2beta2,kmadd(J32L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ312L,PDstandardNth3beta2)))))));
4398+
4399+ JacPDstandardNth12beta3 =
4400+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmadd(dJ112L,PDstandardNth1beta3,kmadd(J22L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ212L,PDstandardNth2beta3,kmadd(J32L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ312L,PDstandardNth3beta3)))))));
4401+
4402+ JacPDstandardNth13alpha =
4403+ kmadd(J13L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ113L,PDstandardNth1alpha,kmadd(J23L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ213L,PDstandardNth2alpha,kmadd(J33L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ313L,PDstandardNth3alpha)))))));
4404+
4405+ JacPDstandardNth13beta1 =
4406+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ113L,PDstandardNth1beta1,kmadd(J23L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ213L,PDstandardNth2beta1,kmadd(J33L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ313L,PDstandardNth3beta1)))))));
4407+
4408+ JacPDstandardNth13beta2 =
4409+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ113L,PDstandardNth1beta2,kmadd(J23L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ213L,PDstandardNth2beta2,kmadd(J33L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ313L,PDstandardNth3beta2)))))));
4410+
4411+ JacPDstandardNth13beta3 =
4412+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ113L,PDstandardNth1beta3,kmadd(J23L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ213L,PDstandardNth2beta3,kmadd(J33L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ313L,PDstandardNth3beta3)))))));
4413+
4414+ JacPDstandardNth21alpha =
4415+ kmadd(J12L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmadd(dJ112L,PDstandardNth1alpha,kmadd(J22L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ212L,PDstandardNth2alpha,kmadd(J32L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ312L,PDstandardNth3alpha)))))));
4416+
4417+ JacPDstandardNth21beta1 =
4418+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmadd(dJ112L,PDstandardNth1beta1,kmadd(J22L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ212L,PDstandardNth2beta1,kmadd(J32L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ312L,PDstandardNth3beta1)))))));
4419+
4420+ JacPDstandardNth21beta2 =
4421+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmadd(dJ112L,PDstandardNth1beta2,kmadd(J22L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ212L,PDstandardNth2beta2,kmadd(J32L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ312L,PDstandardNth3beta2)))))));
4422+
4423+ JacPDstandardNth21beta3 =
4424+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmadd(dJ112L,PDstandardNth1beta3,kmadd(J22L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ212L,PDstandardNth2beta3,kmadd(J32L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ312L,PDstandardNth3beta3)))))));
4425+
4426+ JacPDstandardNth23alpha =
4427+ kmadd(J13L,kmadd(J12L,PDstandardNth11alpha,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha))),kmadd(J12L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ123L,PDstandardNth1alpha,kmadd(J23L,kmadd(J22L,PDstandardNth22alpha,kmul(J32L,PDstandardNth23alpha)),kmadd(dJ223L,PDstandardNth2alpha,kmadd(J33L,kmadd(J22L,PDstandardNth23alpha,kmul(J32L,PDstandardNth33alpha)),kmul(dJ323L,PDstandardNth3alpha)))))));
4428+
4429+ JacPDstandardNth23beta1 =
4430+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta1,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ123L,PDstandardNth1beta1,kmadd(J23L,kmadd(J22L,PDstandardNth22beta1,kmul(J32L,PDstandardNth23beta1)),kmadd(dJ223L,PDstandardNth2beta1,kmadd(J33L,kmadd(J22L,PDstandardNth23beta1,kmul(J32L,PDstandardNth33beta1)),kmul(dJ323L,PDstandardNth3beta1)))))));
4431+
4432+ JacPDstandardNth23beta2 =
4433+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta2,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ123L,PDstandardNth1beta2,kmadd(J23L,kmadd(J22L,PDstandardNth22beta2,kmul(J32L,PDstandardNth23beta2)),kmadd(dJ223L,PDstandardNth2beta2,kmadd(J33L,kmadd(J22L,PDstandardNth23beta2,kmul(J32L,PDstandardNth33beta2)),kmul(dJ323L,PDstandardNth3beta2)))))));
4434+
4435+ JacPDstandardNth23beta3 =
4436+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta3,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ123L,PDstandardNth1beta3,kmadd(J23L,kmadd(J22L,PDstandardNth22beta3,kmul(J32L,PDstandardNth23beta3)),kmadd(dJ223L,PDstandardNth2beta3,kmadd(J33L,kmadd(J22L,PDstandardNth23beta3,kmul(J32L,PDstandardNth33beta3)),kmul(dJ323L,PDstandardNth3beta3)))))));
4437+
4438+ JacPDstandardNth31alpha =
4439+ kmadd(J13L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ113L,PDstandardNth1alpha,kmadd(J23L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ213L,PDstandardNth2alpha,kmadd(J33L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ313L,PDstandardNth3alpha)))))));
4440+
4441+ JacPDstandardNth31beta1 =
4442+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ113L,PDstandardNth1beta1,kmadd(J23L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ213L,PDstandardNth2beta1,kmadd(J33L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ313L,PDstandardNth3beta1)))))));
4443+
4444+ JacPDstandardNth31beta2 =
4445+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ113L,PDstandardNth1beta2,kmadd(J23L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ213L,PDstandardNth2beta2,kmadd(J33L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ313L,PDstandardNth3beta2)))))));
4446+
4447+ JacPDstandardNth31beta3 =
4448+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ113L,PDstandardNth1beta3,kmadd(J23L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ213L,PDstandardNth2beta3,kmadd(J33L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ313L,PDstandardNth3beta3)))))));
4449+
4450+ JacPDstandardNth32alpha =
4451+ kmadd(J13L,kmadd(J12L,PDstandardNth11alpha,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha))),kmadd(J12L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ123L,PDstandardNth1alpha,kmadd(J23L,kmadd(J22L,PDstandardNth22alpha,kmul(J32L,PDstandardNth23alpha)),kmadd(dJ223L,PDstandardNth2alpha,kmadd(J33L,kmadd(J22L,PDstandardNth23alpha,kmul(J32L,PDstandardNth33alpha)),kmul(dJ323L,PDstandardNth3alpha)))))));
4452+
4453+ JacPDstandardNth32beta1 =
4454+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta1,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ123L,PDstandardNth1beta1,kmadd(J23L,kmadd(J22L,PDstandardNth22beta1,kmul(J32L,PDstandardNth23beta1)),kmadd(dJ223L,PDstandardNth2beta1,kmadd(J33L,kmadd(J22L,PDstandardNth23beta1,kmul(J32L,PDstandardNth33beta1)),kmul(dJ323L,PDstandardNth3beta1)))))));
4455+
4456+ JacPDstandardNth32beta2 =
4457+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta2,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ123L,PDstandardNth1beta2,kmadd(J23L,kmadd(J22L,PDstandardNth22beta2,kmul(J32L,PDstandardNth23beta2)),kmadd(dJ223L,PDstandardNth2beta2,kmadd(J33L,kmadd(J22L,PDstandardNth23beta2,kmul(J32L,PDstandardNth33beta2)),kmul(dJ323L,PDstandardNth3beta2)))))));
4458+
4459+ JacPDstandardNth32beta3 =
4460+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta3,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ123L,PDstandardNth1beta3,kmadd(J23L,kmadd(J22L,PDstandardNth22beta3,kmul(J32L,PDstandardNth23beta3)),kmadd(dJ223L,PDstandardNth2beta3,kmadd(J33L,kmadd(J22L,PDstandardNth23beta3,kmul(J32L,PDstandardNth33beta3)),kmul(dJ323L,PDstandardNth3beta3)))))));
4461+ }
4462+ else
4463+ {
4464+ JacPDstandardNth1alpha = PDstandardNth1alpha;
4465+
4466+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
4467+
4468+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
4469+
4470+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
4471+
4472+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
4473+
4474+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
4475+
4476+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
4477+
4478+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
4479+
4480+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
4481+
4482+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
4483+
4484+ JacPDstandardNth1phi = PDstandardNth1phi;
4485+
4486+ JacPDstandardNth1trK = PDstandardNth1trK;
4487+
4488+ JacPDstandardNth2alpha = PDstandardNth2alpha;
4489+
4490+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
4491+
4492+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
4493+
4494+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
4495+
4496+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
4497+
4498+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
4499+
4500+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
4501+
4502+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
4503+
4504+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
4505+
4506+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
4507+
4508+ JacPDstandardNth2phi = PDstandardNth2phi;
4509+
4510+ JacPDstandardNth2trK = PDstandardNth2trK;
4511+
4512+ JacPDstandardNth3alpha = PDstandardNth3alpha;
4513+
4514+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
4515+
4516+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
4517+
4518+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
4519+
4520+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
4521+
4522+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
4523+
4524+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
4525+
4526+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
4527+
4528+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
4529+
4530+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
4531+
4532+ JacPDstandardNth3phi = PDstandardNth3phi;
4533+
4534+ JacPDstandardNth3trK = PDstandardNth3trK;
4535+
4536+ JacPDstandardNth11alpha = PDstandardNth11alpha;
4537+
4538+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
4539+
4540+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
4541+
4542+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
4543+
4544+ JacPDstandardNth22alpha = PDstandardNth22alpha;
4545+
4546+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
4547+
4548+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
4549+
4550+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
4551+
4552+ JacPDstandardNth33alpha = PDstandardNth33alpha;
4553+
4554+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
4555+
4556+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
4557+
4558+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
4559+
4560+ JacPDstandardNth12alpha = PDstandardNth12alpha;
4561+
4562+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
4563+
4564+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
4565+
4566+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
4567+
4568+ JacPDstandardNth13alpha = PDstandardNth13alpha;
4569+
4570+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
4571+
4572+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
4573+
4574+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
4575+
4576+ JacPDstandardNth21alpha = PDstandardNth12alpha;
4577+
4578+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
4579+
4580+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
4581+
4582+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
4583+
4584+ JacPDstandardNth23alpha = PDstandardNth23alpha;
4585+
4586+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
4587+
4588+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
4589+
4590+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
4591+
4592+ JacPDstandardNth31alpha = PDstandardNth13alpha;
4593+
4594+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
4595+
4596+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
4597+
4598+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
4599+
4600+ JacPDstandardNth32alpha = PDstandardNth23alpha;
4601+
4602+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
4603+
4604+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
4605+
4606+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
4607+ }
4608+
4609+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED detgt = ToReal(1);
4610+
4611+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu11 =
4612+ kdiv(kmsub(gt22L,gt33L,kmul(gt23L,gt23L)),detgt);
4613+
4614+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu12 =
4615+ kdiv(kmsub(gt13L,gt23L,kmul(gt12L,gt33L)),detgt);
4616+
4617+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu13 =
4618+ kdiv(kmsub(gt12L,gt23L,kmul(gt13L,gt22L)),detgt);
4619+
4620+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu22 =
4621+ kdiv(kmsub(gt11L,gt33L,kmul(gt13L,gt13L)),detgt);
4622+
4623+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu23 =
4624+ kdiv(kmsub(gt12L,gt13L,kmul(gt11L,gt23L)),detgt);
4625+
4626+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gtu33 =
4627+ kdiv(kmsub(gt11L,gt22L,kmul(gt12L,gt12L)),detgt);
4628+
4629+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl111 =
4630+ kmul(JacPDstandardNth1gt11,ToReal(0.5));
4631+
4632+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl112 =
4633+ kmul(JacPDstandardNth2gt11,ToReal(0.5));
4634+
4635+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl113 =
4636+ kmul(JacPDstandardNth3gt11,ToReal(0.5));
4637+
4638+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl122 =
4639+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
4640+
4641+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl123 =
4642+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
4643+
4644+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl133 =
4645+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
4646+
4647+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl211 =
4648+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
4649+
4650+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl212 =
4651+ kmul(JacPDstandardNth1gt22,ToReal(0.5));
4652+
4653+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl213 =
4654+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
4655+
4656+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl222 =
4657+ kmul(JacPDstandardNth2gt22,ToReal(0.5));
4658+
4659+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl223 =
4660+ kmul(JacPDstandardNth3gt22,ToReal(0.5));
4661+
4662+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl233 =
4663+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
4664+
4665+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl311 =
4666+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
4667+
4668+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl312 =
4669+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
4670+
4671+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl313 =
4672+ kmul(JacPDstandardNth1gt33,ToReal(0.5));
4673+
4674+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl322 =
4675+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
4676+
4677+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl323 =
4678+ kmul(JacPDstandardNth2gt33,ToReal(0.5));
4679+
4680+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gtl333 =
4681+ kmul(JacPDstandardNth3gt33,ToReal(0.5));
4682+
4683+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt111 =
4684+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
4685+
4686+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt211 =
4687+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
4688+
4689+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt311 =
4690+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
4691+
4692+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt112 =
4693+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
4694+
4695+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt212 =
4696+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
4697+
4698+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt312 =
4699+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
4700+
4701+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt113 =
4702+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
4703+
4704+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt213 =
4705+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
4706+
4707+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt313 =
4708+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
4709+
4710+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt122 =
4711+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
4712+
4713+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt222 =
4714+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
4715+
4716+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt322 =
4717+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
4718+
4719+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt123 =
4720+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
4721+
4722+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt223 =
4723+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
4724+
4725+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt323 =
4726+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
4727+
4728+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt133 =
4729+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
4730+
4731+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt233 =
4732+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
4733+
4734+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Gt333 =
4735+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
4736+
4737+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xtn1 =
4738+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmul(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2)))));
4739+
4740+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xtn2 =
4741+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmul(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2)))));
4742+
4743+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xtn3 =
4744+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
4745+
4746+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED e4phi = IfThen(conformalMethod ==
4747+ 1,kdiv(ToReal(1),kmul(phiL,phiL)),kexp(kmul(phiL,ToReal(4))));
4748+
4749+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED em4phi = kdiv(ToReal(1),e4phi);
4750+
4751+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED fac1 = IfThen(conformalMethod ==
4752+ 1,kdiv(ToReal(-0.5),phiL),ToReal(1));
4753+
4754+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED cdphi1 =
4755+ kmul(fac1,JacPDstandardNth1phi);
4756+
4757+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED cdphi2 =
4758+ kmul(fac1,JacPDstandardNth2phi);
4759+
4760+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED cdphi3 =
4761+ kmul(fac1,JacPDstandardNth3phi);
4762+
4763+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm11 =
4764+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
4765+
4766+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm21 =
4767+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
4768+
4769+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm31 =
4770+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
4771+
4772+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm12 =
4773+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
4774+
4775+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm22 =
4776+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
4777+
4778+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm32 =
4779+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
4780+
4781+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm13 =
4782+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
4783+
4784+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm23 =
4785+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
4786+
4787+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atm33 =
4788+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
4789+
4790+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu11 =
4791+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
4792+
4793+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu12 =
4794+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
4795+
4796+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu13 =
4797+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
4798+
4799+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu22 =
4800+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
4801+
4802+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu23 =
4803+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
4804+
4805+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Atu33 =
4806+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
4807+
4808+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED rho =
4809+ kdiv(kadd(eTttL,kmadd(eTxxL,kmul(beta1L,beta1L),kmadd(eTyyL,kmul(beta2L,beta2L),kmadd(eTzzL,kmul(beta3L,beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))),kmul(alphaL,alphaL));
4810+
4811+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED S1 =
4812+ kdiv(kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))),alphaL);
4813+
4814+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED S2 =
4815+ kdiv(kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))),alphaL);
4816+
4817+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED S3 =
4818+ kdiv(kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))),alphaL);
4819+
4820+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED trS =
4821+ kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
4822+
4823+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED phirhsL =
4824+ kneg(kmul(IfThen(conformalMethod ==
4825+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
4826+
4827+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt11rhsL =
4828+ kmadd(alphaL,kmul(At11L,ToReal(-2)),kmadd(gt11L,kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667)),kmul(kmadd(gt11L,JacPDstandardNth1beta1,kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3))),ToReal(2))));
4829+
4830+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt12rhsL =
4831+ kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmadd(gt13L,JacPDstandardNth2beta3,kmadd(alphaL,kmul(At12L,ToReal(-2)),kmul(gt12L,kadd(JacPDstandardNth1beta1,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667),JacPDstandardNth2beta2))))))));
4832+
4833+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt13rhsL =
4834+ kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmadd(gt12L,JacPDstandardNth3beta2,kmadd(alphaL,kmul(At13L,ToReal(-2)),kmul(gt13L,kadd(JacPDstandardNth1beta1,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667),JacPDstandardNth3beta3))))))));
4835+
4836+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt22rhsL =
4837+ kmadd(alphaL,kmul(At22L,ToReal(-2)),kmadd(gt22L,kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667)),kmul(kmadd(gt12L,JacPDstandardNth2beta1,kmadd(gt22L,JacPDstandardNth2beta2,kmul(gt23L,JacPDstandardNth2beta3))),ToReal(2))));
4838+
4839+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt23rhsL =
4840+ kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmadd(gt22L,JacPDstandardNth3beta2,kmadd(alphaL,kmul(At23L,ToReal(-2)),kmul(gt23L,kadd(JacPDstandardNth2beta2,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667),JacPDstandardNth3beta3))))))));
4841+
4842+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED gt33rhsL =
4843+ kmadd(alphaL,kmul(At33L,ToReal(-2)),kmadd(gt33L,kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667)),kmul(kmadd(gt13L,JacPDstandardNth3beta1,kmadd(gt23L,JacPDstandardNth3beta2,kmul(gt33L,JacPDstandardNth3beta3))),ToReal(2))));
4844+
4845+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED dotXt1 =
4846+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu11,JacPDstandardNth1alpha,kmadd(Atu12,JacPDstandardNth2alpha,kmul(Atu13,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth2beta1,Xtn2,kmul(JacPDstandardNth3beta1,Xtn3)),ToReal(-3),kmadd(Xtn1,kmsub(JacPDstandardNth3beta3,ToReal(2),JacPDstandardNth1beta1),kmadd(kmadd(gtu12,JacPDstandardNth12beta1,kmadd(gtu13,JacPDstandardNth13beta1,kmadd(gtu22,JacPDstandardNth22beta1,kmadd(gtu23,kadd(JacPDstandardNth23beta1,JacPDstandardNth32beta1),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(ToReal(2),kmadd(JacPDstandardNth2beta2,Xtn1,kmul(alphaL,kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-2),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(6),kmadd(ToReal(3),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(Atu13,kmadd(Gt113,ToReal(6),kmul(cdphi3,ToReal(18))),kmul(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-24*Pi)))))))))))))))));
4847+
4848+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED dotXt2 =
4849+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu12,JacPDstandardNth1alpha,kmadd(Atu22,JacPDstandardNth2alpha,kmul(Atu23,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth1beta2,Xtn1,kmul(JacPDstandardNth3beta2,Xtn3)),ToReal(-3),kmadd(Xtn2,kmsub(JacPDstandardNth3beta3,ToReal(2),JacPDstandardNth2beta2),kmadd(kmadd(gtu11,JacPDstandardNth11beta2,kmadd(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(ToReal(2),kmadd(JacPDstandardNth1beta1,Xtn2,kmul(alphaL,kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-2),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(6),kmadd(ToReal(3),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(Atu23,kmadd(Gt223,ToReal(6),kmul(cdphi3,ToReal(18))),kmul(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-24*Pi)))))))))))))))));
4850+
4851+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED dotXt3 =
4852+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu13,JacPDstandardNth1alpha,kmadd(Atu23,JacPDstandardNth2alpha,kmul(Atu33,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth1beta3,Xtn1,kmul(JacPDstandardNth2beta3,Xtn2)),ToReal(-3),kmadd(Xtn3,kmsub(JacPDstandardNth2beta2,ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(ToReal(2),kmadd(JacPDstandardNth1beta1,Xtn3,kmul(alphaL,kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-2),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(3),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(6),kmadd(Atu33,kmadd(Gt333,ToReal(3),kmul(cdphi3,ToReal(18))),kmul(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-24*Pi)))))))))))))))));
4853+
4854+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xt1rhsL = dotXt1;
4855+
4856+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xt2rhsL = dotXt2;
4857+
4858+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED Xt3rhsL = dotXt3;
4859+
4860+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED dottrK =
4861+ kmsub(alphaL,kmadd(Atm11,Atm11,kmadd(Atm22,Atm22,kmadd(Atm33,Atm33,kmadd(kmul(trKL,trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(4*Pi))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
4862+
4863+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED trKrhsL = dottrK;
4864+
4865+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED alpharhsL =
4866+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(AL,ToReal(LapseACoeff),kmul(kmadd(kadd(alphaL,ToReal(-1)),ToReal(AlphaDriver),trKL),ToReal(1
4867+ - LapseACoeff))))));
4868+
4869+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED ArhsL =
4870+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
4871+
4872+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED eta =
4873+ kdiv(ToReal(SpatialBetaDriverRadius),kfmax(rL,ToReal(SpatialBetaDriverRadius)));
4874+
4875+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED theta =
4876+ kfmin(ToReal(1),kexp(knmsub(rL,ToReal(ScalarINV(SpatialShiftGammaCoeffRadius)),ToReal(1))));
4877+
4878+ CCTK_REAL_VEC beta1rhsL CCTK_ATTRIBUTE_UNUSED ;
4879+ CCTK_REAL_VEC beta2rhsL CCTK_ATTRIBUTE_UNUSED ;
4880+ CCTK_REAL_VEC beta3rhsL CCTK_ATTRIBUTE_UNUSED ;
4881+
4882+ if (harmonicShift)
4883+ {
4884+ beta1rhsL =
4885+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth1gt11,kmul(gtu11,gtu11),kmul(JacPDstandardNth1gt22,kmul(kmul(gtu12,gtu12),ToReal(2)))),kmadd(gtu13,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu22,JacPDstandardNth3gt22))))),kmadd(gtu11,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu12,JacPDstandardNth2gt11,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,kmul(JacPDstandardNth1gt23,ToReal(-2)),knmsub(gtu22,JacPDstandardNth1gt22,kmadd(kmadd(gtu12,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt13,kmul(gtu22,JacPDstandardNth2gt12))),ToReal(2),kmadd(gtu23,kmul(JacPDstandardNth2gt13,ToReal(2)),kmadd(gtu23,kmul(JacPDstandardNth3gt12,ToReal(2)),kmul(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33))))))))))),kmul(gtu12,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,kmul(JacPDstandardNth3gt22,ToReal(2)),kmadd(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33),kmul(gtu13,kmul(JacPDstandardNth1gt23,ToReal(4)))))))))))))))));
4886+
4887+ beta2rhsL =
4888+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth2gt22,kmul(gtu22,gtu22),kmul(JacPDstandardNth2gt11,kmul(kmul(gtu12,gtu12),ToReal(2)))),kmadd(gtu23,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu11,JacPDstandardNth3gt11))))),kmadd(gtu22,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu23,JacPDstandardNth3gt22,kmadd(kmadd(gtu23,JacPDstandardNth2gt23,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)))),ToReal(2),kmadd(gtu11,kmsub(JacPDstandardNth1gt12,ToReal(2),JacPDstandardNth2gt11),kmul(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33))))))),kmul(gtu12,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,kmul(JacPDstandardNth3gt11,ToReal(2)),kmadd(gtu22,kmadd(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth2gt13,ToReal(4))))))))))))))))));
4889+
4890+ beta3rhsL =
4891+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmul(kmadd(JacPDstandardNth3gt11,kmul(gtu13,gtu13),kmul(JacPDstandardNth3gt22,kmul(gtu23,gtu23))),ToReal(2)),kmadd(gtu23,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu33,JacPDstandardNth2gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu12,JacPDstandardNth1gt22,kmul(gtu33,JacPDstandardNth3gt23))),ToReal(2),kmul(gtu11,JacPDstandardNth2gt11)))))),kmadd(gtu33,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,knmsub(gtu22,JacPDstandardNth3gt22,kmadd(kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)))),ToReal(2),kmul(gtu11,kmsub(JacPDstandardNth1gt13,ToReal(2),JacPDstandardNth3gt11))))))),kmul(gtu13,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu12,kmul(JacPDstandardNth2gt11,ToReal(2)),kmadd(gtu22,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmadd(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth3gt12,ToReal(4))))))))))))))))));
4892+ }
4893+ else
4894+ {
4895+ beta1rhsL =
4896+ kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,ToReal(BetaDriver*(-1
4897+ + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
4898+
4899+ beta2rhsL =
4900+ kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,ToReal(BetaDriver*(-1
4901+ + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
4902+
4903+ beta3rhsL =
4904+ kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,ToReal(BetaDriver*(-1
4905+ + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
4906+ }
4907+
4908+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED B1rhsL =
4909+ kmul(knmsub(B1L,kmul(eta,ToReal(BetaDriver)),dotXt1),ToReal(ShiftBCoeff));
4910+
4911+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED B2rhsL =
4912+ kmul(knmsub(B2L,kmul(eta,ToReal(BetaDriver)),dotXt2),ToReal(ShiftBCoeff));
4913+
4914+ CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED B3rhsL =
4915+ kmul(knmsub(B3L,kmul(eta,ToReal(BetaDriver)),dotXt3),ToReal(ShiftBCoeff));
4916+
4917+ /* Copy local copies back to grid functions */
4918+ vec_store_partial_prepare(i,lc_imin,lc_imax);
4919+ vec_store_nta_partial(alpharhs[index],alpharhsL);
4920+ vec_store_nta_partial(Arhs[index],ArhsL);
4921+ vec_store_nta_partial(B1rhs[index],B1rhsL);
4922+ vec_store_nta_partial(B2rhs[index],B2rhsL);
4923+ vec_store_nta_partial(B3rhs[index],B3rhsL);
4924+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
4925+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
4926+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
4927+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
4928+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
4929+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
4930+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
4931+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
4932+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
4933+ vec_store_nta_partial(phirhs[index],phirhsL);
4934+ vec_store_nta_partial(trKrhs[index],trKrhsL);
4935+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
4936+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
4937+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
4938+}
4939+LC_ENDLOOP3VEC(ML_BSSN_CL_RHS1);
4940+}
4941
4942=== added file 'examples/EinsteinToolkit/ML_BSSN_CL_RHS2.cl'
4943--- examples/EinsteinToolkit/ML_BSSN_CL_RHS2.cl 1970-01-01 00:00:00 +0000
4944+++ examples/EinsteinToolkit/ML_BSSN_CL_RHS2.cl 2012-12-09 00:26:22 +0000
4945@@ -0,0 +1,3877 @@
4946+// -*-C-*-
4947+
4948+
4949+
4950+#define CCTK_ATTRIBUTE_UNUSED __attribute__((__unused__))
4951+#define CCTK_BUILTIN_EXPECT(a,b) __builtin_expect(a,b)
4952+#define CCTK_UNROLL _Pragma("unroll")
4953+
4954+
4955+
4956+// doubleV vector of double
4957+// convert_doubleV convert to doubleV
4958+// longV vector of long (same size as double)
4959+// indicesV longV containing (0,1,2,...)
4960+// vloadV load unaligned vector
4961+// vstoreV store unaligned vector
4962+
4963+#if VECTOR_SIZE_I == 1
4964+# define doubleV double
4965+# define convert_doubleV convert_double
4966+# define longV long
4967+# define indicesV ((longV)(0))
4968+# define vloadV(i,p) ((p)[i])
4969+# define vstoreV(x,i,p) ((p)[i]=(x))
4970+#elif VECTOR_SIZE_I == 2
4971+# define doubleV double2
4972+# define convert_doubleV convert_double2
4973+# define longV long2
4974+# define indicesV ((longV)(0,1))
4975+# define vloadV vload2
4976+# define vstoreV vstore2
4977+#elif VECTOR_SIZE_I == 4
4978+# define doubleV double4
4979+# define convert_doubleV convert_double4
4980+# define longV long4
4981+# define indicesV ((longV)(0,1,2,3))
4982+# define vloadV vload4
4983+# define vstoreV vstore4
4984+#elif VECTOR_SIZE_I == 8
4985+# define doubleV double8
4986+# define convert_doubleV convert_double8
4987+# define longV long8
4988+# define indicesV ((longV)(0,1,2,3,4,5,6,7))
4989+# define vloadV vload8
4990+# define vstoreV vstore8
4991+#elif VECTOR_SIZE_I == 16
4992+# define doubleV double16
4993+# define convert_doubleV convert_double16
4994+# define longV long16
4995+# define indicesV ((longV)(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
4996+# define vloadV vload16
4997+# define vstoreV vstore16
4998+#else
4999+# error
5000+#endif
The diff has been truncated for viewing.