aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2002-07-04 08:44:36 +0000
committerdiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2002-07-04 08:44:36 +0000
commit2b0b789af6ab21cca89b74519ac293d579e98711 (patch)
tree3346a7ccae4833ea310534bbcfcd1447ce357de6
parentfea5dd43a562586d6442f4fd83f356f171b6f87f (diff)
Splitted the input up so that the metric, conformal factor, lapse and shift
are read in independently. Also scheduled these routines at CCTK_INITIAL extending the ADMBase parameter for initial_data, initial_lapse and initial_shift with "read from file". git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/EHFinder/trunk@30 2a26948c-0e4f-0410-aee8-f1d3e353619c
-rw-r--r--param.ccl28
-rw-r--r--schedule.ccl72
-rw-r--r--src/EHFinder_ReadData.F90128
3 files changed, 224 insertions, 4 deletions
diff --git a/param.ccl b/param.ccl
index 64299ad..6876394 100644
--- a/param.ccl
+++ b/param.ccl
@@ -9,6 +9,18 @@ KEYWORD eh_metric_type "Do we use numerical or analytic metric information"
"analytic" :: "Use external analytic metric"
} "analytic"
+KEYWORD eh_lapse_type "Do we use numerical or analytic metric information"
+{
+ "numerical" :: "Read in metric from numerical data"
+ "analytic" :: "Use external analytic metric"
+} "analytic"
+
+KEYWORD eh_shift_type "Do we use numerical or analytic metric information"
+{
+ "numerical" :: "Read in metric from numerical data"
+ "analytic" :: "Use external analytic metric"
+} "analytic"
+
KEYWORD initial_f "Initial surface choice"
{
"sphere" :: "spherical surface"
@@ -114,3 +126,19 @@ USES KEYWORD bitant_plane
shares: admbase
USES KEYWORD metric_type
+
+EXTENDS KEYWORD initial_data
+{
+ "read from file" :: "Read in metric from a file"
+}
+
+EXTENDS KEYWORD initial_lapse
+{
+ "read from file" :: "Read in lapse from a file"
+}
+
+EXTENDS KEYWORD initial_shift
+{
+ "read from file" :: "Read in shift from a file"
+}
+
diff --git a/schedule.ccl b/schedule.ccl
index 89bef40..388ab31 100644
--- a/schedule.ccl
+++ b/schedule.ccl
@@ -16,6 +16,38 @@ schedule EHFinder_ParamCheck at CCTK_PARAMCHECK
} "Check parameters"
+if (CCTK_Equals(initial_data,"read from file"))
+{
+ schedule EHFinder_Read_Metric at CCTK_INITIAL
+ {
+ LANG: Fortran
+ } "Read in metric from file"
+}
+
+if (CCTK_Equals(initial_lapse,"read from file"))
+{
+ schedule EHFinder_Read_Lapse at CCTK_INITIAL
+ {
+ LANG: Fortran
+ } "Read in lapse from file"
+}
+
+if (CCTK_Equals(initial_shift,"read from file"))
+{
+ schedule EHFinder_Read_Shift at CCTK_INITIAL
+ {
+ LANG: Fortran
+ } "Read in shift from file"
+}
+
+if (CCTK_Equals(metric_type,"static conformal") && CCTK_Equals(eh_metric_type,"numerical"))
+{
+ schedule EHFinder_Read_Conformal at CCTK_INITIAL
+ {
+ LANG: Fortran
+ } "Read in conformal factor from file"
+}
+
# Set up the initial level set function
schedule EHFinder_Init at CCTK_POSTINITIAL
@@ -24,12 +56,44 @@ schedule EHFinder_Init at CCTK_POSTINITIAL
SYNC: level_set
} "Setup the initial surface"
-# Read in the data used in reconstructing the 4-metric
+# Read in the data used in reconstructing the 4-metric if necessary
-schedule EHFinder_ReadData at CCTK_PRESTEP
+if (CCTK_Equals(eh_metric_type,"numerical"))
{
- LANG: Fortran
-} "Read in metric, lapse and shift and conformal factor"
+ schedule EHFinder_Read_Metric at CCTK_PRESTEP
+ {
+ LANG: Fortran
+ } "Read in metric from file"
+}
+
+if (CCTK_Equals(eh_lapse_type,"numerical"))
+{
+ schedule EHFinder_Read_Lapse at CCTK_PRESTEP
+ {
+ LANG: Fortran
+ } "Read in lapse from file"
+}
+
+if (CCTK_Equals(eh_shift_type,"numerical"))
+{
+ schedule EHFinder_Read_Shift at CCTK_PRESTEP
+ {
+ LANG: Fortran
+ } "Read in shift from file"
+}
+
+if (CCTK_Equals(metric_type,"static conformal") && CCTK_Equals(eh_metric_type,"numerical"))
+{
+ schedule EHFinder_Read_Conformal at CCTK_PRESTEP
+ {
+ LANG: Fortran
+ } "Read in conformal factor from file"
+}
+
+#schedule EHFinder_ReadData at CCTK_PRESTEP
+#{
+# LANG: Fortran
+#} "Read in metric, lapse and shift and conformal factor"
# Register the level_set function and its right hand side source with MoL
diff --git a/src/EHFinder_ReadData.F90 b/src/EHFinder_ReadData.F90
index 40a9bec..fa31ac4 100644
--- a/src/EHFinder_ReadData.F90
+++ b/src/EHFinder_ReadData.F90
@@ -5,6 +5,134 @@
#include "cctk_Parameters.h"
#include "cctk_Arguments.h"
+subroutine EHFinder_Read_Metric(CCTK_ARGUMENTS)
+
+ use EHFinder_mod
+
+ implicit none
+
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+
+ character(len=512) :: in_files, in_vars
+ character(len=64), dimension(6) :: var_names
+ character(len=10) :: iteration_string
+ CCTK_INT :: i, nc, ntot, res
+
+ write(iteration_string,'(i10)') last_iteration_number - cctk_iteration
+ iteration_string = adjustl(iteration_string)
+ nc = len_trim(iteration_string)
+
+ in_files = 'gxx gxy gxz gyy gyz gzz'
+ var_names(1) = 'admbase::gxx[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(2) = 'admbase::gxy[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(3) = 'admbase::gxz[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(4) = 'admbase::gyy[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(5) = 'admbase::gyz[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(6) = 'admbase::gzz[cctk_iteration='//iteration_string(1:nc)//']'
+
+ in_vars = ' '
+ ntot = 0
+ do i = 1, 6
+ nc = len_trim(var_names(i))
+ in_vars(ntot+1:ntot+1+nc+1) = var_names(i)(1:nc+1)
+ ntot = ntot + nc + 1
+ end do
+
+ call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars )
+
+end subroutine EHFinder_Read_Metric
+
+
+subroutine EHFinder_Read_Lapse(CCTK_ARGUMENTS)
+
+ use EHFinder_mod
+
+ implicit none
+
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+
+ character(len=128) :: in_files, in_vars
+ character(len=10) :: iteration_string
+ CCTK_INT :: nc, res
+
+ write(iteration_string,'(i10)') last_iteration_number - cctk_iteration
+ iteration_string = adjustl(iteration_string)
+ nc = len_trim(iteration_string)
+
+ in_files = 'alp'
+ in_vars = 'admbase::alp[cctk_iteration='//iteration_string(1:nc)//']'
+
+ call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars )
+
+end subroutine EHFinder_Read_Lapse
+
+
+subroutine EHFinder_Read_Shift(CCTK_ARGUMENTS)
+
+ use EHFinder_mod
+
+ implicit none
+
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+
+ character(len=256) :: in_files, in_vars
+ character(len=64), dimension(3) :: var_names
+ character(len=10) :: iteration_string
+ CCTK_INT :: i, nc, ntot, res
+
+ write(iteration_string,'(i10)') last_iteration_number - cctk_iteration
+ iteration_string = adjustl(iteration_string)
+ nc = len_trim(iteration_string)
+
+ in_files = 'betax betay betaz'
+ var_names(1) = 'admbase::betax[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(2) = 'admbase::betay[cctk_iteration='//iteration_string(1:nc)//']'
+ var_names(3) = 'admbase::betaz[cctk_iteration='//iteration_string(1:nc)//']'
+ in_vars = ' '
+ ntot = 0
+ do i = 1, 3
+ nc = len_trim(var_names(i))
+ in_vars(ntot+1:ntot+1+nc+1) = var_names(i)(1:nc+1)
+ ntot = ntot + nc + 1
+ end do
+
+ call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars )
+
+end subroutine EHFinder_Read_Shift
+
+
+subroutine EHFinder_Read_Conformal(CCTK_ARGUMENTS)
+
+ use EHFinder_mod
+
+ implicit none
+
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+
+ character(len=128) :: in_files, in_vars
+ character(len=10) :: iteration_string
+ CCTK_INT :: nc, res
+
+ write(iteration_string,'(i10)') last_iteration_number - cctk_iteration
+ iteration_string = adjustl(iteration_string)
+ nc = len_trim(iteration_string)
+
+ in_files = 'psi'
+ in_vars = 'staticconformal::psi[cctk_iteration='//iteration_string(1:nc)//']'
+
+ call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars )
+
+end subroutine EHFinder_Read_Conformal
+
+
subroutine EHFinder_ReadData(CCTK_ARGUMENTS)
use EHFinder_mod