[cig-commits] r21529 - seismo/3D/SPECFEM3D_GLOBE/branches/SUNFLOWER_ADIOS/src/specfem3D
lefebvre at geodynamics.org
lefebvre at geodynamics.org
Wed Mar 13 13:48:19 PDT 2013
Author: lefebvre
Date: 2013-03-13 13:48:19 -0700 (Wed, 13 Mar 2013)
New Revision: 21529
Modified:
seismo/3D/SPECFEM3D_GLOBE/branches/SUNFLOWER_ADIOS/src/specfem3D/write_par_header_ADIOS.F90
Log:
Formatting and comments added to write_par_header_ADIOS
modified: src/specfem3D/write_par_header_ADIOS.F90
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SUNFLOWER_ADIOS/src/specfem3D/write_par_header_ADIOS.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SUNFLOWER_ADIOS/src/specfem3D/write_par_header_ADIOS.F90 2013-03-13 20:48:12 UTC (rev 21528)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SUNFLOWER_ADIOS/src/specfem3D/write_par_header_ADIOS.F90 2013-03-13 20:48:19 UTC (rev 21529)
@@ -25,11 +25,17 @@
!
!=====================================================================
+
+!> \file write_par_header_ADIOS.F90
+!! \brief Write in the adios file a group with all the parameters that insure
+!! reproductibility
+
!
-!-------------------------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
!
-!> @brief Write data found in Par_file into ADIOS result file header.
+!> @brief Write simulation parameters into ADIOS result file header.
+!!
!! Write the ADIOS header containing values to ensure reproductibility of
!! the simulation. These values come form the following files :
!! DATA/Par_file, DATA/CMTSOLUTION, DATA/STATIONS
@@ -45,39 +51,39 @@
! local parameters
!-------------------------------------------------------------------
! parameters read from parameter file (cf. DATA/Par_file)
- integer :: NTSTEP_BETWEEN_OUTPUT_SEISMOS,NTSTEP_BETWEEN_READ_ADJSRC,NTSTEP_BETWEEN_FRAMES, &
- NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP, &
- NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA,NOISE_TOMOGRAPHY
+ integer :: NTSTEP_BETWEEN_OUTPUT_SEISMOS,NTSTEP_BETWEEN_READ_ADJSRC, &
+ NTSTEP_BETWEEN_FRAMES, NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS, &
+ NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, MOVIE_VOLUME_TYPE, &
+ MOVIE_START,MOVIE_STOP, NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA, &
+ NOISE_TOMOGRAPHY
double precision :: ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,&
- CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,&
- HDUR_MOVIE,MOVIE_TOP_KM,MOVIE_BOTTOM_KM, &
- MOVIE_EAST_DEG,MOVIE_WEST_DEG,MOVIE_NORTH_DEG,&
- MOVIE_SOUTH_DEG,RECORD_LENGTH_IN_MINUTES
+ CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES, &
+ GAMMA_ROTATION_AZIMUTH, HDUR_MOVIE,MOVIE_TOP_KM,MOVIE_BOTTOM_KM, &
+ MOVIE_EAST_DEG,MOVIE_WEST_DEG,MOVIE_NORTH_DEG,MOVIE_SOUTH_DEG, &
+ RECORD_LENGTH_IN_MINUTES
- logical :: ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,&
- MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
- RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW, &
- ABSORBING_CONDITIONS,SAVE_FORWARD, &
- OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
- ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,&
- SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE
- ! values from CMTSOLUTION
+ logical :: ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, MOVIE_SURFACE, &
+ MOVIE_VOLUME,MOVIE_COARSE, RECEIVERS_CAN_BE_BURIED, &
+ PRINT_SOURCE_TIME_FUNCTION, SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW, &
+ ABSORBING_CONDITIONS,SAVE_FORWARD, OUTPUT_SEISMOS_ASCII_TEXT, &
+ OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
+ ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER, &
+ SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE
+
+ ! values from CMTSOLUTION -------------------------------
! integer :: NSOURCES -> in specfem_par module
integer, dimension(NSOURCES) :: yr, mo, da, ho, mi
double precision, dimension(NSOURCES) :: sec, t_shift, hdur, lat, long, depth
double precision, dimension(NSOURCES) :: mrr, mtt, mpp, mrt, mrp, mtp
- integer :: datasource_length
+ integer :: datasource_length ! write for later reading of datasource
character(len=5) :: datasource_tmp
character(len=16):: event_name
- character(len=:), allocatable :: datasource
- !character(len=256) :: datasource
+ character(len=:), allocatable :: datasource ! F03 feature
- ! values from STATIONS
+ ! values from STATIONS ----------------------------------
integer :: NSTATIONS
- integer :: station_name_length, network_name_length
+ integer :: station_name_length, network_name_length ! for later reading
character(len=MAX_LENGTH_STATION_NAME) :: station_name_tmp
character(len=MAX_LENGTH_NETWORK_NAME) :: network_name_tmp
character(len=:), allocatable :: station_name, network_name
@@ -86,43 +92,48 @@
character(len=150) :: OUTPUT_FILES,LOCAL_PATH,LOCAL_TMP_PATH,MODEL
character(len=256) :: string, CMTSOLUTION, STATIONS
- integer :: isource, irec, ier
! Adios variables
integer :: adios_err
- integer*8 :: adios_group, adios_handle, varid
- integer*8 :: adios_groupsize, adios_totalsize ! for the .fh file
- ! TODO : find a better name once the use of ADIOS is more completely
- ! implemented
- character(len=27) :: filename = "OUTPUT_FILES/header_tmp.bp"
- integer*8 :: group_size_inc
+ integer(kind=8) :: adios_group, adios_handle, varid
+ integer(kind=8) :: adios_groupsize, adios_totalsize
+ ! TODO: find a better name once the use of ADIOS is more completely
+ ! implemented
+ character(len=27) :: filename = "OUTPUT_FILES/header_specfem3d_globe.bp"
+ integer(kind=8) :: group_size_inc
+ integer :: model_length ! for later reading of MODEL
+ integer :: isource, irec, ier
! ensure that only the master open the adios handle inside MPI_COMM_SELF
if(myrank == 0) then
- call adios_declare_group (adios_group, "SPECFEM3D_GLOBE_HEADER", "", 0, adios_err)
+ call adios_declare_group (adios_group, "SPECFEM3D_GLOBE_HEADER", &
+ "", 0, adios_err)
call adios_select_method (adios_group, "MPI", "", "", adios_err)
- group_size_inc = 0
+ group_size_inc = 0 ! Adios group size. Incremented by adios_helpers
+
!--*** Values read from DATA/Par_file ***
! extract all unmodified values from the Par_file
- call read_parameter_file(OUTPUT_FILES, &
- LOCAL_PATH,LOCAL_TMP_PATH,MODEL, &
- NTSTEP_BETWEEN_OUTPUT_SEISMOS,NTSTEP_BETWEEN_READ_ADJSRC,NTSTEP_BETWEEN_FRAMES, &
- NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS, &
- NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP, &
- NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA, &
- ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
- CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH, &
- HDUR_MOVIE,MOVIE_TOP_KM,MOVIE_BOTTOM_KM,RECORD_LENGTH_IN_MINUTES, &
- MOVIE_EAST_DEG,MOVIE_WEST_DEG,MOVIE_NORTH_DEG,MOVIE_SOUTH_DEG, &
- ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, &
- MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
- RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS,SAVE_FORWARD, &
- OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
- ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER, &
- SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,NOISE_TOMOGRAPHY)
+ call read_parameter_file(OUTPUT_FILES, &
+ LOCAL_PATH, LOCAL_TMP_PATH, MODEL, &
+ NTSTEP_BETWEEN_OUTPUT_SEISMOS, NTSTEP_BETWEEN_READ_ADJSRC, &
+ NTSTEP_BETWEEN_FRAMES, NTSTEP_BETWEEN_OUTPUT_INFO, NUMBER_OF_RUNS, &
+ NUMBER_OF_THIS_RUN, NCHUNKS, SIMULATION_TYPE, MOVIE_VOLUME_TYPE, &
+ MOVIE_START, MOVIE_STOP, NEX_XI, NEX_ETA, NPROC_XI, NPROC_ETA, &
+ ANGULAR_WIDTH_XI_IN_DEGREES, ANGULAR_WIDTH_ETA_IN_DEGREES, &
+ CENTER_LONGITUDE_IN_DEGREES, CENTER_LATITUDE_IN_DEGREES, &
+ GAMMA_ROTATION_AZIMUTH, HDUR_MOVIE, MOVIE_TOP_KM, MOVIE_BOTTOM_KM, &
+ RECORD_LENGTH_IN_MINUTES, MOVIE_EAST_DEG, MOVIE_WEST_DEG, &
+ MOVIE_NORTH_DEG, MOVIE_SOUTH_DEG, ELLIPTICITY, GRAVITY, ROTATION, &
+ TOPOGRAPHY, OCEANS, MOVIE_SURFACE, MOVIE_VOLUME, MOVIE_COARSE, &
+ RECEIVERS_CAN_BE_BURIED, PRINT_SOURCE_TIME_FUNCTION, SAVE_MESH_FILES, &
+ ATTENUATION, ATTENUATION_NEW, ABSORBING_CONDITIONS, SAVE_FORWARD, &
+ OUTPUT_SEISMOS_ASCII_TEXT, OUTPUT_SEISMOS_SAC_ALPHANUM, &
+ OUTPUT_SEISMOS_SAC_BINARY, ROTATE_SEISMOGRAMS_RT, &
+ WRITE_SEISMOGRAMS_BY_MASTER, SAVE_ALL_SEISMOS_IN_ONE_FILE, &
+ USE_BINARY_FOR_LARGE_FILE, NOISE_TOMOGRAPHY)
+
+ model_length = len(MODEL)
! define adios variables for the Par_file
!-- double precision variables
call define_adios_double_scalar (adios_group, "ANGULAR_WIDTH_XI_IN_DEGREES", "/specfem3D_globe_parameter_file", group_size_inc)
@@ -178,6 +189,9 @@
call define_adios_byte_scalar (adios_group, "WRITE_SEISMOGRAMS_BY_MASTER", "/specfem3D_globe_parameter_file", group_size_inc)
call define_adios_byte_scalar (adios_group, "SAVE_ALL_SEISMOS_IN_ONE_FILE", "/specfem3D_globe_parameter_file", group_size_inc)
call define_adios_byte_scalar (adios_group, "USE_BINARY_FOR_LARGE_FILE", "/specfem3D_globe_parameter_file", group_size_inc)
+ !-- string variables
+ call define_adios_integer_scalar (adios_group, "model_length", "/specfem3D_globe_parameter_file", group_size_inc)
+ call define_adios_string (adios_group, "MODEL", "/specfem3D_globe_parameter_file", model_length, group_size_inc)
!--*** Values read from DATA/CMTSOLUTION ***--
! extract all unmodified values from CMTSOLUTION
@@ -186,10 +200,11 @@
! routines
call get_value_string(CMTSOLUTION, 'solver.CMTSOLUTION', 'DATA/CMTSOLUTION')
open(unit=1,file=CMTSOLUTION,status='old',action='read')
- datasource_length = 4*NSOURCES
+ datasource_length = 4*NSOURCES ! a datasource is 4 character, by convention
allocate(character(len=(datasource_length)) :: datasource, stat=ier)
if (ier /=0) &
- call exit_MPI (myrank, "error allocating datasource string for adios header")
+ call exit_MPI (myrank, &
+ "error allocating datasource string for adios header")
datasource = ""
! ADIOS only (1) byte for a string. This may cause data overwriting.
! => increase the generate by the string size -1
@@ -201,9 +216,7 @@
do while( len_trim(string) == 0 )
read(1,"(a256)") string
enddo
-
- ! read header with event information -- TODO there is more to add
- !read(string,"(a4,i5,i3,i3,i3,i3,f6.2)") datasource(:,isource),yr(isource), &
+ ! read header with event information
read(string,"(a4,i5,i3,i3,i3,i3,f6.2)") datasource_tmp,yr(isource), &
mo(isource),da(isource),ho(isource),mi(isource),sec(isource)
datasource = datasource // datasource_tmp
@@ -321,16 +334,14 @@
call define_adios_string (adios_group, "station_name", "/CMTSOLUTION", station_name_length, group_size_inc)
call define_adios_string (adios_group, "network_name", "/CMTSOLUTION", network_name_length, group_size_inc)
+ ! open the file where the headers have to be written
call adios_open (adios_handle, "SPECFEM3D_GLOBE_HEADER", filename, "w", &
MPI_COMM_SELF, adios_err);
-
- ! Automatically generated Fortran code by ADIOS gpp.py script:
- ! $> $ADIOS_DIR/bin/gpp.py par_header.xml
- ! Re-run each time the xml file is modified.
- ! #include "gwrite_SPECFEM3D_GLOBE_HEADER.fh"
+ ! The group size have been auto-incremented
adios_groupsize = group_size_inc
+ call adios_group_size (adios_handle, adios_groupsize, adios_totalsize, adios_err)
- call adios_group_size (adios_handle, adios_groupsize, adios_totalsize, adios_err)
+ ! Write variables from 'Par_file'
call adios_write (adios_handle, "ANGULAR_WIDTH_XI_IN_DEGREES", ANGULAR_WIDTH_XI_IN_DEGREES, adios_err)
call adios_write (adios_handle, "ANGULAR_WIDTH_ETA_IN_DEGREES", ANGULAR_WIDTH_ETA_IN_DEGREES, adios_err)
call adios_write (adios_handle, "CENTER_LONGITUDE_IN_DEGREES", CENTER_LONGITUDE_IN_DEGREES, adios_err)
@@ -382,6 +393,10 @@
call adios_write (adios_handle, "WRITE_SEISMOGRAMS_BY_MASTER", WRITE_SEISMOGRAMS_BY_MASTER, adios_err)
call adios_write (adios_handle, "SAVE_ALL_SEISMOS_IN_ONE_FILE", SAVE_ALL_SEISMOS_IN_ONE_FILE, adios_err)
call adios_write (adios_handle, "USE_BINARY_FOR_LARGE_FILE", USE_BINARY_FOR_LARGE_FILE, adios_err)
+ call adios_write (adios_handle, "model_length", model_length, adios_err)
+ call adios_write (adios_handle, "MODEL", MODEL, adios_err)
+
+ ! Write variables from 'CMTSOLUTION'
call adios_write (adios_handle, "NSOURCES", NSOURCES, adios_err)
call adios_write (adios_handle, "year", yr, adios_err)
call adios_write (adios_handle, "month", mo, adios_err)
@@ -403,6 +418,7 @@
call adios_write (adios_handle, "datasource_length", datasource_length, adios_err)
call adios_write (adios_handle, "datasource", datasource, adios_err)
+ ! Write variables from 'STATIONS'
call adios_write (adios_handle, "NSTATIONS", NSTATIONS, adios_err)
call adios_write (adios_handle, "station_latitude", stlat, adios_err)
call adios_write (adios_handle, "station_longitude", stlon, adios_err)
@@ -425,10 +441,3 @@
endif
end subroutine write_par_file_header_ADIOS
-
-
-!subroutine define_adios_header_par_file (adios_group, group_size_inc)
-! implicit none
-!end subroutine define_adios_header_par_file
-
-
More information about the CIG-COMMITS
mailing list