[cig-commits] r21212 - in seismo/3D/SPECFEM3D_GLOBE/trunk/src: meshfem3D shared specfem3D

elliott.sales.de.andrade at geodynamics.org elliott.sales.de.andrade at geodynamics.org
Sun Jan 6 01:14:20 PST 2013


Author: elliott.sales.de.andrade
Date: 2013-01-06 01:14:20 -0800 (Sun, 06 Jan 2013)
New Revision: 21212

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/param_reader.c
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_parameter_file.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_value_parameters.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90
Log:
Fix up Par_file reading.

Remove the common blocks for the parameter file parsing. I think having
the subroutine return an error as an argument seems more Fortran-y.
Also, the calls to err_occurred in meshfem and specfem are useless as
read_value_parameters would have called stop already.

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90	2013-01-06 09:14:13 UTC (rev 21211)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90	2013-01-06 09:14:20 UTC (rev 21212)
@@ -374,8 +374,6 @@
 ! parameters deduced from parameters read from file
   integer NPROC,NPROCTOT,NEX_PER_PROC_XI,NEX_PER_PROC_ETA,ratio_divide_central_cube
 
-  integer, external :: err_occurred
-
 ! this for all the regions
   integer, dimension(MAX_NUM_REGIONS) :: NSPEC,NSPEC2D_XI,NSPEC2D_ETA, &
                NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
@@ -545,10 +543,6 @@
           DIFF_NSPEC1D_RADIAL,DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA,&
           WRITE_SEISMOGRAMS_BY_MASTER,SAVE_ALL_SEISMOS_IN_ONE_FILE, &
           USE_BINARY_FOR_LARGE_FILE,.false.,NOISE_TOMOGRAPHY,SAVE_REGULAR_KL)
-
-    if(err_occurred() /= 0) &
-      call exit_MPI(myrank,'an error occurred while reading the parameter file')
-
   endif
 
   ! distributes parameters from master to all processes

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/param_reader.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/param_reader.c	2013-01-06 09:14:13 UTC (rev 21211)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/param_reader.c	2013-01-06 09:14:20 UTC (rev 21212)
@@ -104,6 +104,7 @@
     return;
   }
   free(fncopy);
+  *ierr = 0;
 }
 
 void

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_parameter_file.f90	2013-01-06 09:14:13 UTC (rev 21211)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_parameter_file.f90	2013-01-06 09:14:20 UTC (rev 21212)
@@ -72,123 +72,124 @@
   character(len=150) OUTPUT_FILES,LOCAL_PATH,MODEL
 
 ! local variables
-  integer, external :: err_occurred
+  integer :: ierr
 
   ! gets the base pathname for output files
   call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', 'OUTPUT_FILES')
 
   ! opens the parameter file: DATA/Par_file
-  call open_parameter_file()
+  call open_parameter_file(ierr)
+  if (ierr /= 0) stop 'an error occurred while opening the parameter file'
 
   ! reads in values
-  call read_value_integer(SIMULATION_TYPE, 'solver.SIMULATION_TYPE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: SIMULATION_TYPE'
-  call read_value_integer(NOISE_TOMOGRAPHY, 'solver.NOISE_TOMOGRAPHY')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NOISE_TOMOGRAPHY'
-  call read_value_logical(SAVE_FORWARD, 'solver.SAVE_FORWARD')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: SAVE_FORWARD'
-  call read_value_integer(NCHUNKS, 'mesher.NCHUNKS')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NCHUNKS'
-  call read_value_double_precision(ANGULAR_WIDTH_XI_IN_DEGREES, 'mesher.ANGULAR_WIDTH_XI_IN_DEGREES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ANGULAR_WIDTH_XI...'
-  call read_value_double_precision(ANGULAR_WIDTH_ETA_IN_DEGREES, 'mesher.ANGULAR_WIDTH_ETA_IN_DEGREES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ANGULAR_WIDTH_ETA...'
-  call read_value_double_precision(CENTER_LATITUDE_IN_DEGREES, 'mesher.CENTER_LATITUDE_IN_DEGREES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: CENTER_LATITUDE...'
-  call read_value_double_precision(CENTER_LONGITUDE_IN_DEGREES, 'mesher.CENTER_LONGITUDE_IN_DEGREES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: CENTER_LONGITUDE...'
-  call read_value_double_precision(GAMMA_ROTATION_AZIMUTH, 'mesher.GAMMA_ROTATION_AZIMUTH')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: GAMMA_ROTATION...'
+  call read_value_integer(SIMULATION_TYPE, 'solver.SIMULATION_TYPE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: SIMULATION_TYPE'
+  call read_value_integer(NOISE_TOMOGRAPHY, 'solver.NOISE_TOMOGRAPHY', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NOISE_TOMOGRAPHY'
+  call read_value_logical(SAVE_FORWARD, 'solver.SAVE_FORWARD', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: SAVE_FORWARD'
+  call read_value_integer(NCHUNKS, 'mesher.NCHUNKS', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NCHUNKS'
+  call read_value_double_precision(ANGULAR_WIDTH_XI_IN_DEGREES, 'mesher.ANGULAR_WIDTH_XI_IN_DEGREES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ANGULAR_WIDTH_XI...'
+  call read_value_double_precision(ANGULAR_WIDTH_ETA_IN_DEGREES, 'mesher.ANGULAR_WIDTH_ETA_IN_DEGREES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ANGULAR_WIDTH_ETA...'
+  call read_value_double_precision(CENTER_LATITUDE_IN_DEGREES, 'mesher.CENTER_LATITUDE_IN_DEGREES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: CENTER_LATITUDE...'
+  call read_value_double_precision(CENTER_LONGITUDE_IN_DEGREES, 'mesher.CENTER_LONGITUDE_IN_DEGREES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: CENTER_LONGITUDE...'
+  call read_value_double_precision(GAMMA_ROTATION_AZIMUTH, 'mesher.GAMMA_ROTATION_AZIMUTH', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: GAMMA_ROTATION...'
   ! number of elements at the surface along the two sides of the first chunk
-  call read_value_integer(NEX_XI_read, 'mesher.NEX_XI')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NEX_XI'
-  call read_value_integer(NEX_ETA_read, 'mesher.NEX_ETA')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NEX_ETA'
-  call read_value_integer(NPROC_XI_read, 'mesher.NPROC_XI')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NPROC_XI'
-  call read_value_integer(NPROC_ETA_read, 'mesher.NPROC_ETA')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NPROC_ETA'
-  call read_value_logical(OCEANS, 'model.OCEANS')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: OCEANS'
-  call read_value_logical(ELLIPTICITY, 'model.ELLIPTICITY')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ELLIPTICITIY'
-  call read_value_logical(TOPOGRAPHY, 'model.TOPOGRAPHY')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: TOPOGRAPHY'
-  call read_value_logical(GRAVITY, 'model.GRAVITY')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: GRAVITY'
-  call read_value_logical(ROTATION, 'model.ROTATION')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ROTATION'
-  call read_value_logical(ATTENUATION, 'model.ATTENUATION')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ATTENUATION'
-  call read_value_logical(ABSORBING_CONDITIONS, 'solver.ABSORBING_CONDITIONS')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ABSORBING_CONDITIONS'
+  call read_value_integer(NEX_XI_read, 'mesher.NEX_XI', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NEX_XI'
+  call read_value_integer(NEX_ETA_read, 'mesher.NEX_ETA', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NEX_ETA'
+  call read_value_integer(NPROC_XI_read, 'mesher.NPROC_XI', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NPROC_XI'
+  call read_value_integer(NPROC_ETA_read, 'mesher.NPROC_ETA', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NPROC_ETA'
+  call read_value_logical(OCEANS, 'model.OCEANS', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: OCEANS'
+  call read_value_logical(ELLIPTICITY, 'model.ELLIPTICITY', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ELLIPTICITIY'
+  call read_value_logical(TOPOGRAPHY, 'model.TOPOGRAPHY', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: TOPOGRAPHY'
+  call read_value_logical(GRAVITY, 'model.GRAVITY', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: GRAVITY'
+  call read_value_logical(ROTATION, 'model.ROTATION', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ROTATION'
+  call read_value_logical(ATTENUATION, 'model.ATTENUATION', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ATTENUATION'
+  call read_value_logical(ABSORBING_CONDITIONS, 'solver.ABSORBING_CONDITIONS', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ABSORBING_CONDITIONS'
   ! define the velocity model
-  call read_value_string(MODEL, 'model.MODEL')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MODEL'
-  call read_value_double_precision(RECORD_LENGTH_IN_MINUTES, 'solver.RECORD_LENGTH_IN_MINUTES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: RECORD_LENGTH..'
-  call read_value_logical(MOVIE_SURFACE, 'solver.MOVIE_SURFACE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_SURFACE'
-  call read_value_logical(MOVIE_VOLUME, 'solver.MOVIE_VOLUME')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_VOLUME'
-  call read_value_logical(MOVIE_COARSE,'solver.MOVIE_COARSE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_COARSE'
-  call read_value_integer(NTSTEP_BETWEEN_FRAMES, 'solver.NTSTEP_BETWEEN_FRAMES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_FRAMES'
-  call read_value_double_precision(HDUR_MOVIE, 'solver.HDUR_MOVIE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: HDUR_MOVIE'
-  call read_value_integer(MOVIE_VOLUME_TYPE, 'solver.MOVIE_VOLUME_TYPE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_VOLUME_TYPE'
-  call read_value_double_precision(MOVIE_TOP_KM, 'solver.MOVIE_TOP_KM')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_TOP_KM'
-  call read_value_double_precision(MOVIE_BOTTOM_KM, 'solver.MOVIE_BOTTOM_KM')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_BOTTOM_KM'
-  call read_value_double_precision(MOVIE_WEST_DEG, 'solver.MOVIE_WEST_DEG')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_WEST_DEG'
-  call read_value_double_precision(MOVIE_EAST_DEG, 'solver.MOVIE_EAST_DEG')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_EAST_DEG'
-  call read_value_double_precision(MOVIE_NORTH_DEG, 'solver.MOVIE_NORTH_DEG')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_NORTH_DEG'
-  call read_value_double_precision(MOVIE_SOUTH_DEG, 'solver.MOVIE_SOUTH_DEG')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_SOUTH_DEG'
-  call read_value_integer(MOVIE_START, 'solver.MOVIE_START')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_START'
-  call read_value_integer(MOVIE_STOP, 'solver.MOVIE_STOP')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: MOVIE_STOP'
-  call read_value_logical(SAVE_MESH_FILES, 'mesher.SAVE_MESH_FILES')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: SAVE_MESH_FILES'
-  call read_value_integer(NUMBER_OF_RUNS, 'solver.NUMBER_OF_RUNS')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NUMBER_OF_RUNS'
-  call read_value_integer(NUMBER_OF_THIS_RUN, 'solver.NUMBER_OF_THIS_RUN')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NUMBER_OF_THIS_RUN'
-  call read_value_string(LOCAL_PATH, 'LOCAL_PATH')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: LOCAL_PATH'
-  call read_value_integer(NTSTEP_BETWEEN_OUTPUT_INFO, 'solver.NTSTEP_BETWEEN_OUTPUT_INFO')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_OUTPUT_INFO'
-  call read_value_integer(NTSTEP_BETWEEN_OUTPUT_SEISMOS, 'solver.NTSTEP_BETWEEN_OUTPUT_SEISMOS')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_OUTPUT_SEISMOS'
-  call read_value_integer(NTSTEP_BETWEEN_READ_ADJSRC, 'solver.NTSTEP_BETWEEN_READ_ADJSRC')
-  if(err_occurred() /= 0) return
-  call read_value_logical(OUTPUT_SEISMOS_ASCII_TEXT, 'solver.OUTPUT_SEISMOS_ASCII_TEXT')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SIESMOS_ASCII_TEXT'
-  call read_value_logical(OUTPUT_SEISMOS_SAC_ALPHANUM, 'solver.OUTPUT_SEISMOS_SAC_ALPHANUM')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SEISMOS_SAC_ALPHANUM'
-  call read_value_logical(OUTPUT_SEISMOS_SAC_BINARY, 'solver.OUTPUT_SEISMOS_SAC_BINARY')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SEISMOS_SAC_BINARY'
-  call read_value_logical(ROTATE_SEISMOGRAMS_RT, 'solver.ROTATE_SEISMOGRAMS_RT')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ROTATE_SEISMOGRAMS_RT'
-  call read_value_logical(WRITE_SEISMOGRAMS_BY_MASTER, 'solver.WRITE_SEISMOGRAMS_BY_MASTER')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: WRITE_SEISMOGRAMS_BY_MASTER'
-  call read_value_logical(SAVE_ALL_SEISMOS_IN_ONE_FILE, 'solver.SAVE_ALL_SEISMOS_IN_ONE_FILE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: SAVE_ALL_SEISMOS_IN_ONE_FILE'
-  call read_value_logical(USE_BINARY_FOR_LARGE_FILE, 'solver.USE_BINARY_FOR_LARGE_FILE')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: USE_BINARY_FOR_LARGE_FILE'
-  call read_value_logical(RECEIVERS_CAN_BE_BURIED, 'solver.RECEIVERS_CAN_BE_BURIED')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: RECEIVERS_CAN_BE_BURIED'
-  call read_value_logical(PRINT_SOURCE_TIME_FUNCTION, 'solver.PRINT_SOURCE_TIME_FUNCTION')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: PRINT_SOURCE_TIME_FUNCTION'
-  call read_value_logical(SAVE_REGULAR_KL, 'solver.SAVE_REGULAR_KL')
-  if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: SAVE_REGULAR_KL'
+  call read_value_string(MODEL, 'model.MODEL', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MODEL'
+  call read_value_double_precision(RECORD_LENGTH_IN_MINUTES, 'solver.RECORD_LENGTH_IN_MINUTES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: RECORD_LENGTH..'
+  call read_value_logical(MOVIE_SURFACE, 'solver.MOVIE_SURFACE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_SURFACE'
+  call read_value_logical(MOVIE_VOLUME, 'solver.MOVIE_VOLUME', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_VOLUME'
+  call read_value_logical(MOVIE_COARSE,'solver.MOVIE_COARSE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_COARSE'
+  call read_value_integer(NTSTEP_BETWEEN_FRAMES, 'solver.NTSTEP_BETWEEN_FRAMES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_FRAMES'
+  call read_value_double_precision(HDUR_MOVIE, 'solver.HDUR_MOVIE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: HDUR_MOVIE'
+  call read_value_integer(MOVIE_VOLUME_TYPE, 'solver.MOVIE_VOLUME_TYPE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_VOLUME_TYPE'
+  call read_value_double_precision(MOVIE_TOP_KM, 'solver.MOVIE_TOP_KM', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_TOP_KM'
+  call read_value_double_precision(MOVIE_BOTTOM_KM, 'solver.MOVIE_BOTTOM_KM', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_BOTTOM_KM'
+  call read_value_double_precision(MOVIE_WEST_DEG, 'solver.MOVIE_WEST_DEG', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_WEST_DEG'
+  call read_value_double_precision(MOVIE_EAST_DEG, 'solver.MOVIE_EAST_DEG', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_EAST_DEG'
+  call read_value_double_precision(MOVIE_NORTH_DEG, 'solver.MOVIE_NORTH_DEG', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_NORTH_DEG'
+  call read_value_double_precision(MOVIE_SOUTH_DEG, 'solver.MOVIE_SOUTH_DEG', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_SOUTH_DEG'
+  call read_value_integer(MOVIE_START, 'solver.MOVIE_START', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_START'
+  call read_value_integer(MOVIE_STOP, 'solver.MOVIE_STOP', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: MOVIE_STOP'
+  call read_value_logical(SAVE_MESH_FILES, 'mesher.SAVE_MESH_FILES', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: SAVE_MESH_FILES'
+  call read_value_integer(NUMBER_OF_RUNS, 'solver.NUMBER_OF_RUNS', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NUMBER_OF_RUNS'
+  call read_value_integer(NUMBER_OF_THIS_RUN, 'solver.NUMBER_OF_THIS_RUN', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NUMBER_OF_THIS_RUN'
+  call read_value_string(LOCAL_PATH, 'LOCAL_PATH', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: LOCAL_PATH'
+  call read_value_integer(NTSTEP_BETWEEN_OUTPUT_INFO, 'solver.NTSTEP_BETWEEN_OUTPUT_INFO', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_OUTPUT_INFO'
+  call read_value_integer(NTSTEP_BETWEEN_OUTPUT_SEISMOS, 'solver.NTSTEP_BETWEEN_OUTPUT_SEISMOS', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: NTSTEP_BETWEEN_OUTPUT_SEISMOS'
+  call read_value_integer(NTSTEP_BETWEEN_READ_ADJSRC, 'solver.NTSTEP_BETWEEN_READ_ADJSRC', ierr)
+  if (ierr /= 0) return
+  call read_value_logical(OUTPUT_SEISMOS_ASCII_TEXT, 'solver.OUTPUT_SEISMOS_ASCII_TEXT', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SIESMOS_ASCII_TEXT'
+  call read_value_logical(OUTPUT_SEISMOS_SAC_ALPHANUM, 'solver.OUTPUT_SEISMOS_SAC_ALPHANUM', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SEISMOS_SAC_ALPHANUM'
+  call read_value_logical(OUTPUT_SEISMOS_SAC_BINARY, 'solver.OUTPUT_SEISMOS_SAC_BINARY', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: OUTPUT_SEISMOS_SAC_BINARY'
+  call read_value_logical(ROTATE_SEISMOGRAMS_RT, 'solver.ROTATE_SEISMOGRAMS_RT', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: ROTATE_SEISMOGRAMS_RT'
+  call read_value_logical(WRITE_SEISMOGRAMS_BY_MASTER, 'solver.WRITE_SEISMOGRAMS_BY_MASTER', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: WRITE_SEISMOGRAMS_BY_MASTER'
+  call read_value_logical(SAVE_ALL_SEISMOS_IN_ONE_FILE, 'solver.SAVE_ALL_SEISMOS_IN_ONE_FILE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: SAVE_ALL_SEISMOS_IN_ONE_FILE'
+  call read_value_logical(USE_BINARY_FOR_LARGE_FILE, 'solver.USE_BINARY_FOR_LARGE_FILE', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: USE_BINARY_FOR_LARGE_FILE'
+  call read_value_logical(RECEIVERS_CAN_BE_BURIED, 'solver.RECEIVERS_CAN_BE_BURIED', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: RECEIVERS_CAN_BE_BURIED'
+  call read_value_logical(PRINT_SOURCE_TIME_FUNCTION, 'solver.PRINT_SOURCE_TIME_FUNCTION', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: PRINT_SOURCE_TIME_FUNCTION'
+  call read_value_logical(SAVE_REGULAR_KL, 'solver.SAVE_REGULAR_KL', ierr)
+  if (ierr /= 0) stop 'an error occurred while reading the parameter file: SAVE_REGULAR_KL'
 
   ! closes parameter file
   call close_parameter_file()

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_value_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_value_parameters.f90	2013-01-06 09:14:13 UTC (rev 21211)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_value_parameters.f90	2013-01-06 09:14:20 UTC (rev 21212)
@@ -27,7 +27,7 @@
 
 ! read values from parameter file, ignoring white lines and comments
 
-  subroutine read_value_integer(value_to_read, name)
+  subroutine read_value_integer(value_to_read, name, ierr)
 
   implicit none
 
@@ -35,9 +35,8 @@
   character(len=*) name
   character(len=100) string_read
   integer ierr
-  common /param_err_common/ ierr
 
-  call param_read(string_read, len(string_read), name, len(name), ierr);
+  call param_read(string_read, len(string_read), name, len(name), ierr)
   if (ierr .ne. 0) return
   read(string_read,*,iostat=ierr) value_to_read
 
@@ -45,7 +44,7 @@
 
 !--------------------
 
-  subroutine read_value_double_precision(value_to_read, name)
+  subroutine read_value_double_precision(value_to_read, name, ierr)
 
   implicit none
 
@@ -53,9 +52,8 @@
   character(len=*) name
   character(len=100) string_read
   integer ierr
-  common /param_err_common/ ierr
 
-  call param_read(string_read, len(string_read), name, len(name), ierr);
+  call param_read(string_read, len(string_read), name, len(name), ierr)
   if (ierr .ne. 0) return
   read(string_read,*,iostat=ierr) value_to_read
 
@@ -63,7 +61,7 @@
 
 !--------------------
 
-  subroutine read_value_logical(value_to_read, name)
+  subroutine read_value_logical(value_to_read, name, ierr)
 
   implicit none
 
@@ -71,9 +69,8 @@
   character(len=*) name
   character(len=100) string_read
   integer ierr
-  common /param_err_common/ ierr
 
-  call param_read(string_read, len(string_read), name, len(name), ierr);
+  call param_read(string_read, len(string_read), name, len(name), ierr)
   if (ierr .ne. 0) return
   read(string_read,*,iostat=ierr) value_to_read
 
@@ -81,7 +78,7 @@
 
 !--------------------
 
-  subroutine read_value_string(value_to_read, name)
+  subroutine read_value_string(value_to_read, name, ierr)
 
   implicit none
 
@@ -89,9 +86,8 @@
   character(len=*) name
   character(len=150) string_read
   integer ierr
-  common /param_err_common/ ierr
 
-  call param_read(string_read, len(string_read), name, len(name), ierr);
+  call param_read(string_read, len(string_read), name, len(name), ierr)
   if (ierr .ne. 0) return
   value_to_read = string_read
 
@@ -99,14 +95,13 @@
 
 !--------------------
 
-  subroutine open_parameter_file
+  subroutine open_parameter_file(ierr)
 
   integer ierr
-  common /param_err_common/ ierr
   character(len=50) filename
   filename = 'DATA/Par_file'
 
-  call param_open(filename, len(filename), ierr);
+  call param_open(filename, len(filename), ierr)
   if (ierr .ne. 0) return
 
   end subroutine open_parameter_file
@@ -115,23 +110,12 @@
 
   subroutine close_parameter_file
 
-  call param_close();
+  call param_close()
 
   end subroutine close_parameter_file
 
 !--------------------
 
-  integer function err_occurred()
-
-  integer ierr
-  common /param_err_common/ ierr
-
-  err_occurred = ierr
-
-  end function err_occurred
-
-!--------------------
-
 !
 ! unused routines:
 !

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90	2013-01-06 09:14:13 UTC (rev 21211)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90	2013-01-06 09:14:20 UTC (rev 21212)
@@ -149,7 +149,6 @@
     ATTENUATION,ATTENUATION_3D,ROTATION,ELLIPTICITY,GRAVITY,CASE_3D,ISOTROPIC_3D_MANTLE, &
     HETEROGEN_3D_MANTLE,CRUSTAL,INFLATE_CENTRAL_CUBE
   character(len=150) :: MODEL,dummystring
-  integer, external :: err_occurred
   ! sizeprocs returns number of processes started (should be equal to NPROCTOT).
   ! myrank is the rank of each process, between 0 and sizeprocs-1.
   ! as usual in MPI, process 0 is in charge of coordinating everything
@@ -193,10 +192,6 @@
          WRITE_SEISMOGRAMS_BY_MASTER,SAVE_ALL_SEISMOS_IN_ONE_FILE, &
          USE_BINARY_FOR_LARGE_FILE,.false.,NOISE_TOMOGRAPHY,SAVE_REGULAR_KL)
 
-    if(err_occurred() /= 0) then
-      call exit_MPI(myrank,'an error occurred while reading the parameter file')
-    endif
-
   endif
 
   ! distributes parameters from master to all processes



More information about the CIG-COMMITS mailing list