diff options
Diffstat (limited to 'src/EHFinder_ReadData.F90')
-rw-r--r-- | src/EHFinder_ReadData.F90 | 138 |
1 files changed, 72 insertions, 66 deletions
diff --git a/src/EHFinder_ReadData.F90 b/src/EHFinder_ReadData.F90 index 08e3ce8..0185f5b 100644 --- a/src/EHFinder_ReadData.F90 +++ b/src/EHFinder_ReadData.F90 @@ -21,25 +21,24 @@ subroutine EHFinder_Read_Metric(CCTK_ARGUMENTS) character(len=10) :: iteration_string CCTK_INT :: i, nc, ntot, res - ! Figure out which iteration number to read, based on the parameters - ! last_iteration_number (the last iteration in the numerical evolution - ! producing the metric) and saved_iteration_every (how often was the metric - ! saved) and the current iteration and save it in a string variable. - +! Figure out which iteration number to read, based on the parameters +! last_iteration_number (the last iteration in the numerical evolution +! producing the metric) and saved_iteration_every (how often was the metric +! saved) and the current iteration and save it in a string variable. write(iteration_string,'(i10)') last_iteration_number - & saved_iteration_every * cctk_iteration - ! Trim the string variable. +! Trim the string variable. iteration_string = adjustl(iteration_string) nc = len_trim(iteration_string) - ! Generate a string with the filenames. Note at present the requirement - ! therefore is that all iterations of one variable is written in the - ! same file. +! Generate a string with the filenames. Note at present the requirement +! therefore is that all iterations of one variable is written in the +! same file. in_files = 'gxx gxy gxz gyy gyz gzz' - ! Fill in the string array, used to requesting the metric components at - ! the specified iteration number. +! Fill in the string array, used to requesting the metric components at +! the specified iteration number. 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)//']' @@ -47,7 +46,7 @@ subroutine EHFinder_Read_Metric(CCTK_ARGUMENTS) var_names(5) = 'admbase::gyz[cctk_iteration='//iteration_string(1:nc)//']' var_names(6) = 'admbase::gzz[cctk_iteration='//iteration_string(1:nc)//']' - ! merge all the varible names into a single string. +! merge all the variable names into a single string. in_vars = ' ' ntot = 0 do i = 1, 6 @@ -56,8 +55,8 @@ subroutine EHFinder_Read_Metric(CCTK_ARGUMENTS) ntot = ntot + nc + 1 end do - ! Call the routine that actualle does the file access. Note failures are - ! just silently ignored. +! Call the routine that actualle does the file access. Note failures are +! just silently ignored. call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) end subroutine EHFinder_Read_Metric @@ -78,14 +77,28 @@ subroutine EHFinder_Read_Lapse(CCTK_ARGUMENTS) character(len=10) :: iteration_string CCTK_INT :: nc, res +! Figure out which iteration number to read, based on the parameters +! last_iteration_number (the last iteration in the numerical evolution +! producing the metric) and saved_iteration_every (how often was the lapse +! saved) and the current iteration and save it in a string variable. write(iteration_string,'(i10)') last_iteration_number - & saved_iteration_every * cctk_iteration + +! Trim the string variable. iteration_string = adjustl(iteration_string) nc = len_trim(iteration_string) +! Generate a string with the filename. Note at present the requirement +! therefore is that all iterations of one variable is written in the +! same file. in_files = 'alp' + +! Fill in the string used to requesting the lapse at the specified +! iteration number. in_vars = 'admbase::alp[cctk_iteration='//iteration_string(1:nc)//']' +! Call the routine that actualle does the file access. Note failures are +! just silently ignored. call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) end subroutine EHFinder_Read_Lapse @@ -107,15 +120,28 @@ subroutine EHFinder_Read_Shift(CCTK_ARGUMENTS) character(len=10) :: iteration_string CCTK_INT :: i, nc, ntot, res +! Figure out which iteration number to read, based on the parameters +! last_iteration_number (the last iteration in the numerical evolution +! producing the metric) and saved_iteration_every (how often was the metric +! saved) and the current iteration and save it in a string variable. write(iteration_string,'(i10)') last_iteration_number - & saved_iteration_every * cctk_iteration +! Trim the string variable. iteration_string = adjustl(iteration_string) nc = len_trim(iteration_string) +! Generate a string with the filenames. Note at present the requirement +! therefore is that all iterations of one variable is written in the +! same file. in_files = 'betax betay betaz' + +! Fill in the string array, used to requesting the shift components at +! the specified iteration number. 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)//']' + +! merge all the variable names into a single string. in_vars = ' ' ntot = 0 do i = 1, 3 @@ -124,6 +150,8 @@ subroutine EHFinder_Read_Shift(CCTK_ARGUMENTS) ntot = ntot + nc + 1 end do +! Call the routine that actualle does the file access. Note failures are +! just silently ignored. call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) end subroutine EHFinder_Read_Shift @@ -144,18 +172,34 @@ subroutine EHFinder_Read_Conformal(CCTK_ARGUMENTS) character(len=10) :: iteration_string CCTK_INT :: nc, res +! Figure out which iteration number to read, based on the parameters +! last_iteration_number (the last iteration in the numerical evolution +! producing the metric) and saved_iteration_every (how often was the metric +! saved) and the current iteration and save it in a string variable. Note +! that for this variable the default option is to only to read it in once at +! the first timestep. if ( read_conformal_factor_once .gt. 0 ) then write(iteration_string,'(i10)') 0 else write(iteration_string,'(i10)') last_iteration_number - & saved_iteration_every * cctk_iteration end if + +! Trim the string variable. iteration_string = adjustl(iteration_string) nc = len_trim(iteration_string) +! Generate a string with the filenames. Note at present the requirement +! therefore is that all iterations of one variable is written in the +! same file. in_files = 'psi' + +! Fill in the string array, used to requesting the conformal factor at +! the specified iteration number. in_vars = 'staticconformal::psi[cctk_iteration='//iteration_string(1:nc)//']' +! Call the routine that actualle does the file access. Note failures are +! just silently ignored. call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) end subroutine EHFinder_Read_Conformal @@ -176,66 +220,28 @@ subroutine EHFinder_Read_Mask(CCTK_ARGUMENTS) character(len=10) :: iteration_string CCTK_INT :: nc, res +! Figure out which iteration number to read, based on the parameters +! last_iteration_number (the last iteration in the numerical evolution +! producing the metric) and saved_iteration_every (how often was the metric +! saved) and the current iteration and save it in a string variable. write(iteration_string,'(i10)') last_iteration_number - & saved_iteration_every * cctk_iteration + +! Trim the string variable. iteration_string = adjustl(iteration_string) nc = len_trim(iteration_string) +! Generate a string with the filename. Note at present the requirement +! therefore is that all iterations of one variable is written in the +! same file. in_files = 'emask' + +! Fill in the string array, used to requesting the old style mask at +! the specified iteration number. in_vars = 'spacemask::emask[cctk_iteration='//iteration_string(1:nc)//']' +! Call the routine that actualle does the file access. Note failures are +! just silently ignored. call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) end subroutine EHFinder_Read_Mask - - -! This routine reads in everything. -subroutine EHFinder_ReadData(CCTK_ARGUMENTS) - - use EHFinder_mod - - implicit none - - DECLARE_CCTK_PARAMETERS - DECLARE_CCTK_ARGUMENTS - DECLARE_CCTK_FUNCTIONS - - character(len=1024) :: in_files, in_vars - character(len=64), dimension(11) :: var_names - character(len=10) :: iteration_string - CCTK_INT :: i, nc, ntot, res - - write(iteration_string,'(i10)') last_iteration_number - & - saved_iteration_every * cctk_iteration - iteration_string = adjustl(iteration_string) - nc = len_trim(iteration_string) - - in_files = 'alp betax betay betaz gxx gxy gxz gyy gyz gzz psi' - var_names(1) = 'admbase::alp[cctk_iteration='//iteration_string(1:nc)//']' - var_names(2) = 'admbase::betax[cctk_iteration='//iteration_string(1:nc)//']' - var_names(3) = 'admbase::betay[cctk_iteration='//iteration_string(1:nc)//']' - var_names(4) = 'admbase::betaz[cctk_iteration='//iteration_string(1:nc)//']' - var_names(5) = 'admbase::gxx[cctk_iteration='//iteration_string(1:nc)//']' - var_names(6) = 'admbase::gxy[cctk_iteration='//iteration_string(1:nc)//']' - var_names(7) = 'admbase::gxz[cctk_iteration='//iteration_string(1:nc)//']' - var_names(8) = 'admbase::gyy[cctk_iteration='//iteration_string(1:nc)//']' - var_names(9) = 'admbase::gyz[cctk_iteration='//iteration_string(1:nc)//']' - var_names(10) = 'admbase::gzz[cctk_iteration='//iteration_string(1:nc)//']' - var_names(11) = 'staticconformal::psi[cctk_iteration='//iteration_string(1:nc)//']' - - in_vars = ' ' - ntot = 0 - do i = 1, 11 - 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 - - print*,in_vars(1:len_trim(in_vars)),len_trim(in_vars) - - call IOUtil_RecoverVarsFromDatafiles ( res, cctkGH, in_files, in_vars ) - print*,res - current_iteration = current_iteration - 1 - - return -end subroutine EHFinder_ReadData |