Read the parameters to steer SPHINCS_ID
FT
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=100), | public | :: | msg | ||||
character(len=:), | public, | ALLOCATABLE | :: | sphincs_id_parameters_namefile | |||
integer, | public | :: | stat | ||||
integer, | public, | parameter | :: | unit_parameters | = | 17 |
SUBROUTINE read_sphincs_id_parameters()
!***********************************************
!
!# Read the parameters to steer SPHINCS_ID
!
! FT
!
!***********************************************
IMPLICIT NONE
INTEGER:: stat
INTEGER, PARAMETER:: unit_parameters= 17
CHARACTER(LEN=:), ALLOCATABLE:: sphincs_id_parameters_namefile
CHARACTER(LEN=100):: msg
! Namelist containing parameters read from sphincs_id_parameters.par
! by the SUBROUTINE read_sphincs_id_parameters of this PROGRAM
NAMELIST /sphincs_id_parameters/ &
n_id, common_path, filenames, &
common_eos_path, use_eos_from_id, eos_filenames, &
placer, export_bin, export_form, export_form_xy, &
export_form_x, export_constraints_xy, &
export_constraints_x, compute_constraints, &
export_constraints, export_constraints_details, &
constraints_step, compute_parts_constraints, &
numerator_ratio_dx, denominator_ratio_dx, ref_lev, &
one_lapse, zero_shift, show_progress, &
run_sph, run_spacetime, sph_path, spacetime_path, &
estimate_length_scale
use_eos_from_id= .TRUE.
sphincs_id_parameters_namefile= 'sphincs_id_parameters.dat'
INQUIRE( FILE= sphincs_id_parameters_namefile, EXIST= file_exists )
IF( file_exists )THEN
OPEN( unit_parameters, FILE= sphincs_id_parameters_namefile, &
STATUS= 'OLD' )
ELSE
PRINT*
PRINT*,'** ERROR: ', sphincs_id_parameters_namefile, " file not found!"
PRINT*
STOP
ENDIF
READ( UNIT= unit_parameters, NML= sphincs_id_parameters, IOSTAT= stat, &
IOMSG= msg )
IF( stat /= 0 )THEN
PRINT *, "** ERROR: Error in reading ", sphincs_id_parameters_namefile, &
". The IOSTAT variable is ", stat, &
"The error message is", msg
STOP
ENDIF
CLOSE( UNIT= unit_parameters )
DO itr= 1, max_length, 1
IF( TRIM(filenames(itr)).NE."0" )THEN
cnt= cnt + 1
ENDIF
ENDDO
IF( cnt.NE.n_id )THEN
PRINT *, "** ERROR! The number of file names is", cnt, &
"and n_id=", n_id, ". The two should be the same."
PRINT *
STOP
ENDIF
!DO itr= 1, n_id, 1
! DO itr2= 1, max_n_parts, 1
! IF( placer( itr, itr2 ) == test_int )THEN
! PRINT *
! PRINT *, "** ERROR! The array placer does not have ", &
! "enough components to specify all the desired ", &
! "particle distributions. Specify the ", &
! "components in file sphincs_id_particles.par"
! PRINT *
! STOP
! ENDIF
! ENDDO
!ENDDO
END SUBROUTINE read_sphincs_id_parameters