diff options
author | schnetter <schnetter@082bdb00-0f4f-0410-b49e-b1835e5f2039> | 2004-06-01 16:09:35 +0000 |
---|---|---|
committer | schnetter <schnetter@082bdb00-0f4f-0410-b49e-b1835e5f2039> | 2004-06-01 16:09:35 +0000 |
commit | d02895af18ae9c3673202d6231da078cb3d74bac (patch) | |
tree | 8c8d99d5d3120685e345bf220dd416b76b86aabc /src/register.c | |
parent | 27ed7b1ede1863200d140d1f148a0199ac41df4f (diff) |
A thorn that applies reflection symmetry boundary conditions,
including symmetry interpolation.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/ReflectionSymmetry/trunk@2 082bdb00-0f4f-0410-b49e-b1835e5f2039
Diffstat (limited to 'src/register.c')
-rw-r--r-- | src/register.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/register.c b/src/register.c new file mode 100644 index 0000000..2ae4b58 --- /dev/null +++ b/src/register.c @@ -0,0 +1,66 @@ +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "reflection.h" + + + +static const char rcsid[] = "$Header$"; +CCTK_FILEVERSION(AEIDevelopment_ReflectionSymmetry_register_c); + + + +void +ReflectionSymmetry_Register (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + int do_reflection[6]; + CCTK_INT handle; + CCTK_INT faces[6]; + CCTK_INT width[6]; + int f; + CCTK_INT ierr; + + do_reflection[0] = reflection_x; + do_reflection[1] = reflection_upper_x; + do_reflection[2] = reflection_y; + do_reflection[3] = reflection_upper_y; + do_reflection[4] = reflection_z; + do_reflection[5] = reflection_upper_z; + + for (f=0; f<6; ++f) + { + if (do_reflection[f]) + { + faces[f] = 1; + width[f] = cctk_nghostzones[f/2]; + } + else + { + faces[f] = 0; + width[f] = 0; + } + } + + handle = SymmetryRegister ("reflection_symmetry"); + if (handle < 0) + { + CCTK_WARN (0, "Could not register symmetry boundary condition"); + } + + ierr = SymmetryRegisterGrid (cctkGH, handle, faces, width); + if (ierr < 0) + { + CCTK_WARN (0, "Could not register the symmetry boundaries -- probably some other thorn has already registered the same boundary faces for a different symmetry"); + } + + ierr = SymmetryRegisterGridInterpolator + (cctkGH, handle, ReflectionSymmetry_Interpolate); + if (ierr < 0) + { + CCTK_WARN (0, "Could not register the symmetry interpolator"); + } +} |