aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorschnetter <schnetter@0b95e693-0e4f-0410-b80e-c7e9d0d71539>2004-07-28 11:21:09 +0000
committerschnetter <schnetter@0b95e693-0e4f-0410-b80e-c7e9d0d71539>2004-07-28 11:21:09 +0000
commitb01644541021f4e7fdbfc9d0323a2bc007111785 (patch)
treeff1f0f3870088a33885bf80792b78548e0453148 /src
parenta4ed801041fecbd4b89aaad943c5059297e4b5ab (diff)
Correct error when checking the initial data.HEADsvnmaster
Also ensure that the extrinsic curvature is read in. Also ensure that the conformal factor is read in when it is to be used. Set the conformal_state when the conformal factor is used. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/IDFileADM/trunk@5 0b95e693-0e4f-0410-b80e-c7e9d0d71539
Diffstat (limited to 'src')
-rw-r--r--src/IDFileADM_Init.c33
-rw-r--r--src/IDFileADM_ParamCheck.c74
-rw-r--r--src/make.code.defn2
3 files changed, 107 insertions, 2 deletions
diff --git a/src/IDFileADM_Init.c b/src/IDFileADM_Init.c
new file mode 100644
index 0000000..0dbd38d
--- /dev/null
+++ b/src/IDFileADM_Init.c
@@ -0,0 +1,33 @@
+/* $Header$ */
+
+#include <assert.h>
+#include <stdlib.h>
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+
+/** Initialise the conformal_state. */
+void IDFileADM_Init (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ if (CCTK_EQUALS(initial_data, "read from file")) {
+ if (CCTK_EQUALS (metric_type, "physical")) {
+ *conformal_state = 0;
+ } else if (CCTK_EQUALS (metric_type, "static conformal")) {
+ if (CCTK_EQUALS (conformal_storage, "factor")) {
+ *conformal_state = 1;
+ } else if (CCTK_EQUALS (conformal_storage, "factor+derivs")) {
+ *conformal_state = 2;
+ } else if (CCTK_EQUALS (conformal_storage, "factor+derivs+2nd derivs")) {
+ *conformal_state = 3;
+ } else {
+ CCTK_WARN (0, "Unknown conformal_storage type");
+ }
+ } else {
+ CCTK_WARN (0, "Unknown metric type");
+ }
+ }
+}
diff --git a/src/IDFileADM_ParamCheck.c b/src/IDFileADM_ParamCheck.c
index 40f9bab..04171f2 100644
--- a/src/IDFileADM_ParamCheck.c
+++ b/src/IDFileADM_ParamCheck.c
@@ -52,13 +52,29 @@ void IDFileADM_ParamCheck (CCTK_ARGUMENTS)
}
}
- if (CCTK_EQUALS(initial_shift, "read from file")) {
+ if (CCTK_EQUALS(initial_data, "read from file")) {
int const igxx = CCTK_VarIndex ("ADMBase::gxx");
int const igxy = CCTK_VarIndex ("ADMBase::gxy");
int const igxz = CCTK_VarIndex ("ADMBase::gxz");
int const igyy = CCTK_VarIndex ("ADMBase::gyy");
int const igyz = CCTK_VarIndex ("ADMBase::gyz");
int const igzz = CCTK_VarIndex ("ADMBase::gzz");
+ int const ikxx = CCTK_VarIndex ("ADMBase::kxx");
+ int const ikxy = CCTK_VarIndex ("ADMBase::kxy");
+ int const ikxz = CCTK_VarIndex ("ADMBase::kxz");
+ int const ikyy = CCTK_VarIndex ("ADMBase::kyy");
+ int const ikyz = CCTK_VarIndex ("ADMBase::kyz");
+ int const ikzz = CCTK_VarIndex ("ADMBase::kzz");
+ int const ipsi = CCTK_VarIndex ("StaticConformal::psi");
+ int const ipsix = CCTK_VarIndex ("StaticConformal::psix");
+ int const ipsiy = CCTK_VarIndex ("StaticConformal::psiy");
+ int const ipsiz = CCTK_VarIndex ("StaticConformal::psiz");
+ int const ipsixx = CCTK_VarIndex ("StaticConformal::psixx");
+ int const ipsixy = CCTK_VarIndex ("StaticConformal::psixy");
+ int const ipsixz = CCTK_VarIndex ("StaticConformal::psixz");
+ int const ipsiyy = CCTK_VarIndex ("StaticConformal::psiyy");
+ int const ipsiyz = CCTK_VarIndex ("StaticConformal::psiyz");
+ int const ipsizz = CCTK_VarIndex ("StaticConformal::psizz");
assert (igxx >= 0);
assert (igxy >= 0);
assert (igxz >= 0);
@@ -73,6 +89,62 @@ void IDFileADM_ParamCheck (CCTK_ARGUMENTS)
|| ! variable_is_read[igzz]) {
CCTK_PARAMWARN ("The metric is initialised using the file reader, but the group ADMBase::metric has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
}
+ assert (ikxx >= 0);
+ assert (ikxy >= 0);
+ assert (ikxz >= 0);
+ assert (ikyy >= 0);
+ assert (ikyz >= 0);
+ assert (ikzz >= 0);
+ if (! variable_is_read[ikxx]
+ || ! variable_is_read[ikxy]
+ || ! variable_is_read[ikxz]
+ || ! variable_is_read[ikyy]
+ || ! variable_is_read[ikyz]
+ || ! variable_is_read[ikzz]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, but the group ADMBase::curv has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ if (CCTK_EQUALS (metric_type, "physical")) {
+ /* do nothing */
+ } else if (CCTK_EQUALS (metric_type, "static conformal")) {
+ if (CCTK_EQUALS (conformal_storage, "factor")) {
+ assert (ipsi >= 0);
+ if (! variable_is_read[ipsi]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor\", but the group StaticConformal::confac has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ } else if (CCTK_EQUALS (conformal_storage, "factor+derivs")) {
+ assert (ipsi >= 0);
+ if (! variable_is_read[ipsi]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor+derivs\", but the group StaticConformal::confac has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ if (! variable_is_read[ipsix]
+ || ! variable_is_read[ipsiy]
+ || ! variable_is_read[ipsiz]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor+derivs\", but the group StaticConformal::confac_1derivs has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ } else if (CCTK_EQUALS (conformal_storage, "factor+derivs+2nd derivs")) {
+ assert (ipsi >= 0);
+ if (! variable_is_read[ipsi]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor+derivs+2nd derivs\", but the group StaticConformal::confac has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ if (! variable_is_read[ipsix]
+ || ! variable_is_read[ipsiy]
+ || ! variable_is_read[ipsiz]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor+derivs+2nd derivs\", but the group StaticConformal::confac_1derivs has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ if (! variable_is_read[ipsixx]
+ || ! variable_is_read[ipsixy]
+ || ! variable_is_read[ipsixz]
+ || ! variable_is_read[ipsiyy]
+ || ! variable_is_read[ipsiyz]
+ || ! variable_is_read[ipsizz]) {
+ CCTK_PARAMWARN ("The metric is initialised using the file reader, and the metric_type is \"static conformal\", and the conformal_storage is \"factor+derivs+2nd derivs\", but the group StaticConformal::confac_2derivs has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.");
+ }
+ } else {
+ CCTK_PARAMWARN ("Unknown conformal_storage type");
+ }
+ } else {
+ CCTK_PARAMWARN ("Unknown metric type");
+ }
}
free (variable_is_read);
diff --git a/src/make.code.defn b/src/make.code.defn
index a8a6e7c..71dd988 100644
--- a/src/make.code.defn
+++ b/src/make.code.defn
@@ -2,7 +2,7 @@
# $Header$
# Source files in this directory
-SRCS = IDFileADM_ParamCheck.c
+SRCS = IDFileADM_ParamCheck.c IDFileADM_Init.c
# Subdirectories containing source files
SUBDIRS =