diff options
author | diener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c> | 2002-07-04 08:44:36 +0000 |
---|---|---|
committer | diener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c> | 2002-07-04 08:44:36 +0000 |
commit | 2b0b789af6ab21cca89b74519ac293d579e98711 (patch) | |
tree | 3346a7ccae4833ea310534bbcfcd1447ce357de6 | |
parent | fea5dd43a562586d6442f4fd83f356f171b6f87f (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.ccl | 28 | ||||
-rw-r--r-- | schedule.ccl | 72 | ||||
-rw-r--r-- | src/EHFinder_ReadData.F90 | 128 |
3 files changed, 224 insertions, 4 deletions
@@ -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 |