aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra
diff options
context:
space:
mode:
authorschnetter <>2004-05-07 18:55:00 +0000
committerschnetter <>2004-05-07 18:55:00 +0000
commit9c2a4d40a97be73549fe03b1b69687f775102dd5 (patch)
treed62a6e894c29843690b1f83ed30a06983cd96920 /CarpetExtra
parentb04acd89cd332631495f9880dd4b675cbe35a0f2 (diff)
Provide code to calculate the characteristics.
darcs-hash:20040507185547-07bb3-ee275ba5fa0a403c578a0ff525e77f65bee4969e.gz
Diffstat (limited to 'CarpetExtra')
-rw-r--r--CarpetExtra/WaveToyFO/configuration.ccl4
-rw-r--r--CarpetExtra/WaveToyFO/interface.ccl31
-rw-r--r--CarpetExtra/WaveToyFO/src/calc_inv4.F9010
-rw-r--r--CarpetExtra/WaveToyFO/src/characteristics.c197
-rw-r--r--CarpetExtra/WaveToyFO/src/make.code.defn4
5 files changed, 241 insertions, 5 deletions
diff --git a/CarpetExtra/WaveToyFO/configuration.ccl b/CarpetExtra/WaveToyFO/configuration.ccl
index 134da61b7..0fd6cd4be 100644
--- a/CarpetExtra/WaveToyFO/configuration.ccl
+++ b/CarpetExtra/WaveToyFO/configuration.ccl
@@ -1,4 +1,4 @@
# Configuration definition for thorn Carpet/WaveToyFO
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/configuration.ccl,v 1.2 2004/04/18 14:10:29 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/configuration.ccl,v 1.3 2004/05/07 20:55:47 schnetter Exp $
-REQUIRES CartGrid3D
+REQUIRES CartGrid3D TGRtensor
diff --git a/CarpetExtra/WaveToyFO/interface.ccl b/CarpetExtra/WaveToyFO/interface.ccl
index 893aec679..c855343ae 100644
--- a/CarpetExtra/WaveToyFO/interface.ccl
+++ b/CarpetExtra/WaveToyFO/interface.ccl
@@ -1,5 +1,5 @@
# Interface definition for thorn WaveToyFO
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/interface.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/interface.ccl,v 1.2 2004/05/07 20:55:47 schnetter Exp $
IMPLEMENTS: WaveToyFO
@@ -22,6 +22,35 @@ USES FUNCTION MoLRegisterEvolvedGroup
+CCTK_INT FUNCTION \
+ MultiPatch_Prim2Char \
+ (CCTK_POINTER_TO_CONST IN cctkGH, \
+ CCTK_INT ARRAY IN normal, \
+ CCTK_INT ARRAY IN lbnd, \
+ CCTK_INT ARRAY IN lsh, \
+ CCTK_INT IN rhs_flag, \
+ CCTK_INT IN num_modes, \
+ CCTK_POINTER ARRAY IN modes, \
+ CCTK_REAL ARRAY OUT speeds)
+PROVIDES FUNCTION MultiPatch_Prim2Char \
+ WITH WaveToyFO_MultiPatch_Prim2Char \
+ LANGUAGE C
+
+CCTK_INT FUNCTION \
+ MultiPatch_Char2Prim \
+ (CCTK_POINTER_TO_CONST IN cctkGH, \
+ CCTK_INT ARRAY IN normal, \
+ CCTK_INT ARRAY IN lbnd, \
+ CCTK_INT ARRAY IN lsh, \
+ CCTK_INT IN rhs_flag, \
+ CCTK_INT IN num_modes, \
+ CCTK_POINTER_TO_CONST ARRAY IN modes)
+PROVIDES FUNCTION MultiPatch_Char2Prim \
+ WITH WaveToyFO_MultiPatch_Char2Prim \
+ LANGUAGE C
+
+
+
PUBLIC:
CCTK_REAL scalarevolve TYPE=gf TIMELEVELS=3
diff --git a/CarpetExtra/WaveToyFO/src/calc_inv4.F90 b/CarpetExtra/WaveToyFO/src/calc_inv4.F90
new file mode 100644
index 000000000..9393f2232
--- /dev/null
+++ b/CarpetExtra/WaveToyFO/src/calc_inv4.F90
@@ -0,0 +1,10 @@
+! $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/Attic/calc_inv4.F90,v 1.1 2004/05/07 20:55:47 schnetter Exp $
+
+#include "cctk.h"
+
+subroutine WaveToyFO_calc_inv4 (a, b)
+ use matinv
+ implicit none
+ CCTK_REAL a(4,4), b(4,4)
+ call calc_inv4 (a, b)
+end subroutine WaveToyFO_calc_inv4
diff --git a/CarpetExtra/WaveToyFO/src/characteristics.c b/CarpetExtra/WaveToyFO/src/characteristics.c
new file mode 100644
index 000000000..6626aa999
--- /dev/null
+++ b/CarpetExtra/WaveToyFO/src/characteristics.c
@@ -0,0 +1,197 @@
+/* $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/Attic/characteristics.c,v 1.1 2004/05/07 20:55:47 schnetter Exp $ */
+
+#include <assert.h>
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+
+
+
+void CCTK_FCALL
+CCTK_FNAME (WaveToyFO_calc_inv4) (CCTK_REAL xform[4][4],
+ CCTK_REAL xform1[4][4]);
+
+
+
+CCTK_INT
+WaveToyFO_MultiPatch_Prim2Char (CCTK_POINTER_TO_CONST const cctkGH_,
+ CCTK_INT const normal[],
+ CCTK_INT const lbnd[],
+ CCTK_INT const lsh[],
+ CCTK_INT const rhs_flag,
+ CCTK_INT const num_modes,
+ CCTK_POINTER const modes[],
+ CCTK_REAL speeds[])
+{
+ cGH const * restrict const cctkGH = cctkGH_;
+ DECLARE_CCTK_ARGUMENTS;
+
+ CCTK_INT tangent[2][3];
+
+ CCTK_REAL const * restrict prims[4];
+ CCTK_REAL * restrict chars[4];
+
+ CCTK_REAL xform[4][4];
+
+ int n; /* mode */
+ int i, j, k;
+ int a, b;
+ int d;
+
+ assert (cctk_dim == 3);
+ assert (num_modes == 4);
+ for (d=0; d<3; ++d) {
+ assert (lsh[d] >= 0);
+ }
+ for (n=0; n<num_modes; ++n) {
+ assert (modes[n]);
+ }
+ assert (speeds);
+
+ for (d=0; d<3; ++d) {
+ tangent[0][d] = normal[(d+1)%3];
+ tangent[1][d] = normal[(d+2)%3];
+ }
+
+ xform[0][0] = +1;
+ xform[1][0] = +1;
+ xform[2][0] = 0;
+ xform[3][0] = 0;
+ for (d=0; d<3; ++d) {
+ xform[0][1+d] = +normal[d];
+ xform[1][1+d] = -normal[d];
+ xform[2][1+d] = tangent[0][d];
+ xform[3][1+d] = tangent[1][d];
+ }
+
+ if (rhs_flag) {
+ prims[0] = phidot;
+ prims[1] = psixdot;
+ prims[2] = psiydot;
+ prims[3] = psizdot;
+ } else {
+ prims[0] = phi;
+ prims[1] = psix;
+ prims[2] = psiy;
+ prims[3] = psiz;
+ }
+ for (n=0; n<4; ++n) {
+ chars[n] = modes[n];
+ }
+
+ for (k=0; k<lsh[2]; ++k) {
+ for (j=0; j<lsh[1]; ++j) {
+ for (i=0; i<lsh[0]; ++i) {
+ int const ind3d
+ = CCTK_GFINDEX3D (cctkGH, lbnd[0]+i, lbnd[1]+j, lbnd[2]+k);
+ int const ind2d = i + lsh[0] * (j + lsh[1] * k);
+
+ for (a=0; a<4; ++a) {
+ chars[a][ind2d] = 0;
+ for (b=0; b<4; ++b) {
+ chars[a][ind2d] += xform[a][b] * prims[b][ind3d];
+ }
+ }
+
+ }
+ }
+ }
+
+ speeds[0] = +1.0; /* incoming */
+ speeds[1] = -1.0; /* outgoing */
+ speeds[2] = 0.0; /* zero speed */
+ speeds[3] = 0.0;
+
+ return 0;
+}
+
+
+
+CCTK_INT
+WaveToyFO_MultiPatch_Char2Prim (CCTK_POINTER_TO_CONST const cctkGH_,
+ CCTK_INT const normal[],
+ CCTK_INT const lbnd[],
+ CCTK_INT const lsh[],
+ CCTK_INT const rhs_flag,
+ CCTK_INT const num_modes,
+ CCTK_POINTER_TO_CONST const modes[])
+{
+ cGH const * restrict const cctkGH = cctkGH_;
+ DECLARE_CCTK_ARGUMENTS;
+
+ CCTK_INT tangent[2][3];
+
+ CCTK_REAL const * restrict chars[4];
+ CCTK_REAL * restrict prims[4];
+
+ CCTK_REAL xform[4][4];
+ CCTK_REAL xform1[4][4];
+
+ int n; /* mode */
+ int i, j, k;
+ int a, b;
+ int d;
+
+ assert (cctk_dim == 3);
+ assert (num_modes == 4);
+ for (d=0; d<3; ++d) {
+ assert (lsh[d] >= 0);
+ }
+ for (n=0; n<num_modes; ++n) {
+ assert (modes[n]);
+ }
+
+ for (d=0; d<3; ++d) {
+ tangent[0][d] = normal[(d+1)%3];
+ tangent[1][d] = normal[(d+2)%3];
+ }
+
+ xform[0][0] = +1;
+ xform[1][0] = +1;
+ xform[2][0] = 0;
+ xform[3][0] = 0;
+ for (d=0; d<3; ++d) {
+ xform[0][1+d] = +normal[d];
+ xform[1][1+d] = -normal[d];
+ xform[2][1+d] = tangent[0][d];
+ xform[3][1+d] = tangent[1][d];
+ }
+
+ CCTK_FNAME (WaveToyFO_calc_inv4) (xform, xform1);
+
+ for (n=0; n<4; ++n) {
+ chars[n] = modes[n];
+ }
+ if (rhs_flag) {
+ prims[0] = phidot;
+ prims[1] = psixdot;
+ prims[2] = psiydot;
+ prims[3] = psizdot;
+ } else {
+ prims[0] = phi;
+ prims[1] = psix;
+ prims[2] = psiy;
+ prims[3] = psiz;
+ }
+
+ for (k=0; k<lsh[2]; ++k) {
+ for (j=0; j<lsh[1]; ++j) {
+ for (i=0; i<lsh[0]; ++i) {
+ int const ind3d
+ = CCTK_GFINDEX3D (cctkGH, lbnd[0]+i, lbnd[1]+j, lbnd[2]+k);
+ int const ind2d = i + lsh[0] * (j + lsh[1] * k);
+
+ for (a=0; a<4; ++a) {
+ prims[a][ind3d] = 0;
+ for (b=0; b<4; ++b) {
+ prims[a][ind3d] += xform1[a][b] * chars[b][ind2d];
+ }
+ }
+
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/CarpetExtra/WaveToyFO/src/make.code.defn b/CarpetExtra/WaveToyFO/src/make.code.defn
index ba19c751f..fd9cc6fdd 100644
--- a/CarpetExtra/WaveToyFO/src/make.code.defn
+++ b/CarpetExtra/WaveToyFO/src/make.code.defn
@@ -1,8 +1,8 @@
# Main make.code.defn file for thorn WaveToyFO
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/make.code.defn,v 1.2 2004/05/06 14:21:18 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/make.code.defn,v 1.3 2004/05/07 20:55:47 schnetter Exp $
# Source files in this directory
-SRCS = boundaries.F77 calcrhs.F77 initsymbound.F77 registervars.F77 rhsboundaries.F77 startup.F77
+SRCS = boundaries.F77 characteristics.c calc_inv4.F90 calcrhs.F77 initsymbound.F77 registervars.F77 rhsboundaries.F77 startup.F77
# Subdirectories containing source files
SUBDIRS =