[cig-commits] r22528 - in seismo/3D/SPECFEM3D_GLOBE/trunk/src: auxiliaries compute_optimized_dumping_undo_att create_header_file meshfem3D shared specfem3D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Sun Jul 7 09:59:31 PDT 2013
Author: dkomati1
Date: 2013-07-07 09:59:31 -0700 (Sun, 07 Jul 2013)
New Revision: 22528
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_1D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_2D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_corners_chunks.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_faces_chunks.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/combine_AVS_DX.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_AVS_DX.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_GMT_global.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/compute_optimized_dumping_undo_att/compute_optimized_dumping_undo_att.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/create_header_file/create_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/compute_element_properties.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_central_cube.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_doubling_elements.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regular_elements.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/get_model.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/model_attenuation.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/broadcast_computed_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_noDev.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_noDev.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/get_attenuation.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/rules.mk
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
Log:
to save a lot of memory, now save the 1D attenuation arrays in (1,1,1) format instead of (NGLLX,NGLLY,NGLLZ) and set ATT1 = ATT2 = ATT3 = 1
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_1D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_1D.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_1D.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -61,7 +61,8 @@
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS, &
NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE,REFERENCE_1D_MODEL, &
- THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -162,7 +163,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! get the base pathname for output files
call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', 'OUTPUT_FILES')
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_2D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_2D.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_2D.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -66,7 +66,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -164,7 +165,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! get the base pathname for output files
call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', 'OUTPUT_FILES')
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_corners_chunks.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_corners_chunks.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_corners_chunks.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -58,7 +58,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -154,7 +155,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
print *
print *,'There are ',NPROCTOT,' slices numbered from 0 to ',NPROCTOT-1
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_faces_chunks.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_faces_chunks.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/check_buffers_faces_chunks.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -62,7 +62,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -154,7 +155,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! get the base pathname for output files
call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', 'OUTPUT_FILES')
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/combine_AVS_DX.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/combine_AVS_DX.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/combine_AVS_DX.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -130,7 +130,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -235,7 +236,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
if(.not. SAVE_MESH_FILES) stop 'AVS or DX files were not saved by the mesher'
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_AVS_DX.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_AVS_DX.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_AVS_DX.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -776,7 +776,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -861,7 +862,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
if(MOVIE_COARSE) stop 'create_movie_AVS_DX does not work with MOVIE_COARSE'
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_GMT_global.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_GMT_global.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/auxiliaries/create_movie_GMT_global.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -107,7 +107,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -213,7 +214,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
if(.not. MOVIE_SURFACE) stop 'movie frames were not saved by the solver'
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/compute_optimized_dumping_undo_att/compute_optimized_dumping_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/compute_optimized_dumping_undo_att/compute_optimized_dumping_undo_att.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/compute_optimized_dumping_undo_att/compute_optimized_dumping_undo_att.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -43,7 +43,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -148,7 +149,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! optimal dumping interval calculation can only be done when SIMULATION_TYPE == 3 in the Par_file,
! thus set it to that value here in this serial code even if it has a different value in the Par_file
@@ -183,7 +185,7 @@
NGLOB_CRUST_MANTLE_ADJOINT,NGLOB_OUTER_CORE_ADJOINT, &
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
- NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,static_memory_size)
+ NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,ATT1,ATT2,ATT3,static_memory_size)
NGLOB1D_RADIAL_TEMP(:) = &
(/maxval(NGLOB1D_RADIAL_CORNER(1,:)),maxval(NGLOB1D_RADIAL_CORNER(2,:)),maxval(NGLOB1D_RADIAL_CORNER(3,:))/)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/create_header_file/create_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/create_header_file/create_header_file.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/create_header_file/create_header_file.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -42,7 +42,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -151,7 +152,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! count the total number of sources in the CMTSOLUTION file
call count_number_of_sources(NSOURCES)
@@ -184,7 +186,7 @@
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
- static_memory_size)
+ ATT1,ATT2,ATT3,static_memory_size)
NGLOB1D_RADIAL_TEMP(:) = &
(/maxval(NGLOB1D_RADIAL_CORNER(1,:)),maxval(NGLOB1D_RADIAL_CORNER(2,:)),maxval(NGLOB1D_RADIAL_CORNER(3,:))/)
@@ -213,7 +215,8 @@
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
- SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY)
+ SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
print *
print *,'edit file OUTPUT_FILES/values_from_mesher.h to see'
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/compute_element_properties.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/compute_element_properties.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/compute_element_properties.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -37,7 +37,7 @@
c11store,c12store,c13store,c14store,c15store,c16store,c22store, &
c23store,c24store,c25store,c26store,c33store,c34store,c35store, &
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
- nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source,&
+ nspec_ani,nspec_stacey,ATT1,ATT2,ATT3,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source,&
rho_vp,rho_vs,ACTUALLY_STORE_ARRAYS,&
xigll,yigll,zigll,ispec_is_tiso,USE_FULL_TISO_MANTLE)
@@ -48,7 +48,7 @@
!include "constants.h"
! correct number of spectral elements in each block depending on chunk type
- integer ispec,nspec,nspec_stacey
+ integer ispec,nspec,nspec_stacey,ATT1,ATT2,ATT3
logical ABSORBING_CONDITIONS,ACTUALLY_STORE_ARRAYS,USE_FULL_TISO_MANTLE
@@ -100,15 +100,15 @@
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,nspec_att) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS,NGLLX,NGLLY,NGLLZ,nspec_att) :: tau_e_store
- double precision, dimension(N_SLS) :: tau_s
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,nspec_att) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,nspec_att) :: tau_e_store
+ double precision, dimension(N_SLS) :: tau_s
double precision :: T_c_source
! Parameters used to calculate Jacobian based upon 125 GLL points
@@ -199,7 +199,6 @@
call compute_element_GLL_locations(xelm,yelm,zelm,ispec,nspec, &
xstore,ystore,zstore,shape3D)
-
! computes model's velocity/density/... values for the chosen Earth model
call get_model(myrank,iregion_code,ispec,nspec,idoubling(ispec), &
kappavstore,kappahstore,muvstore,muhstore,eta_anisostore, &
@@ -212,10 +211,9 @@
rmin,rmax,RCMB,RICB,R670,RMOHO,RTOPDDOUBLEPRIME,R600,R220, &
R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN, &
tau_s,tau_e_store,Qmu_store,T_c_source, &
- size(tau_e_store,2),size(tau_e_store,3),size(tau_e_store,4),size(tau_e_store,5), &
+ ATT1,ATT2,ATT3,size(tau_e_store,5), &
ABSORBING_CONDITIONS,elem_in_crust,elem_in_mantle)
-
! either use GLL points or anchor points to capture TOPOGRAPHY and ELLIPTICITY
! note: using gll points to capture them results in a slightly more accurate mesh.
! however, it introduces more deformations to the elements which might lead to
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_central_cube.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_central_cube.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_central_cube.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -41,7 +41,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source, &
rho_vp,rho_vs,ABSORBING_CONDITIONS,ACTUALLY_STORE_ARRAYS,xigll,yigll,zigll, &
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
! creates the inner core cube of the mesh
@@ -56,7 +56,7 @@
integer NEX_XI,NEX_PER_PROC_XI,NEX_PER_PROC_ETA
- integer NPROC_XI,NPROC_ETA
+ integer NPROC_XI,NPROC_ETA,ATT1,ATT2,ATT3
double precision R_CENTRAL_CUBE,RICB,RCMB,R670,RMOHO,RTOPDDOUBLEPRIME,&
R600,R220,R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN,RMOHO_FICTITIOUS_IN_MESHER
@@ -119,16 +119,16 @@
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,nspec_att) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS,NGLLX,NGLLY,NGLLZ,nspec_att) :: tau_e_store
- double precision, dimension(N_SLS) :: tau_s
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,nspec_att) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,nspec_att) :: tau_e_store
+ double precision, dimension(N_SLS) :: tau_s
double precision T_c_source
logical :: ACTUALLY_STORE_ARRAYS,ABSORBING_CONDITIONS,USE_FULL_TISO_MANTLE
@@ -280,7 +280,7 @@
c11store,c12store,c13store,c14store,c15store,c16store,c22store, &
c23store,c24store,c25store,c26store,c33store,c34store,c35store, &
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
- nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source, &
+ nspec_ani,nspec_stacey,ATT1,ATT2,ATT3,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source, &
rho_vp,rho_vs,ACTUALLY_STORE_ARRAYS, &
xigll,yigll,zigll,ispec_is_tiso,USE_FULL_TISO_MANTLE)
enddo
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_doubling_elements.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_doubling_elements.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_doubling_elements.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -52,7 +52,7 @@
ispec2D_moho_top,ispec2D_moho_bot,ispec2D_400_top,&
ispec2D_400_bot,ispec2D_670_top,ispec2D_670_bot, &
CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,offset_proc_xi,offset_proc_eta, &
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
! adds doubling elements to the different regions of the mesh
@@ -64,7 +64,7 @@
! code for the four regions of the mesh
integer iregion_code
! correct number of spectral elements in each block depending on chunk type
- integer nspec,NCHUNKS,NUMBER_OF_MESH_LAYERS
+ integer nspec,NCHUNKS,NUMBER_OF_MESH_LAYERS,ATT1,ATT2,ATT3
integer NPROC_XI,NPROC_ETA,NEX_PER_PROC_XI,NEX_PER_PROC_ETA
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: ner,ratio_sampling_array
@@ -129,16 +129,16 @@
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,nspec_att) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS,NGLLX,NGLLY,NGLLZ,nspec_att) :: tau_e_store
- double precision, dimension(N_SLS) :: tau_s
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,nspec_att) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,nspec_att) :: tau_e_store
+ double precision, dimension(N_SLS) :: tau_s
double precision T_c_source
! rotation matrix from Euler angles
@@ -356,7 +356,7 @@
c11store,c12store,c13store,c14store,c15store,c16store,c22store, &
c23store,c24store,c25store,c26store,c33store,c34store,c35store, &
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
- nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source,&
+ nspec_ani,nspec_stacey,ATT1,ATT2,ATT3,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source,&
rho_vp,rho_vs,ACTUALLY_STORE_ARRAYS, &
xigll,yigll,zigll,ispec_is_tiso,USE_FULL_TISO_MANTLE)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -42,7 +42,8 @@
RTOPDDOUBLEPRIME,R600,R220,R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN, &
ner,ratio_sampling_array,doubling_index,r_bottom,r_top, &
this_region_has_a_doubling,ipass,ratio_divide_central_cube, &
- CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,offset_proc_xi,offset_proc_eta,USE_FULL_TISO_MANTLE)
+ CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,offset_proc_xi,offset_proc_eta,USE_FULL_TISO_MANTLE, &
+ ATT1,ATT2,ATT3)
! creates the different regions of the mesh
@@ -67,7 +68,7 @@
integer, dimension(:), allocatable :: perm_layer
! correct number of spectral elements in each block depending on chunk type
- integer nspec,nspec_tiso,nspec_stacey,nspec_actually,nspec_att
+ integer nspec,nspec_tiso,nspec_stacey,nspec_actually,nspec_att,ATT1,ATT2,ATT3
integer NEX_XI,NEX_PER_PROC_XI,NEX_PER_PROC_ETA,NCHUNKS
@@ -200,9 +201,9 @@
double precision, dimension(NDIM,NDIM) :: rotation_matrix
! attenuation
- real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: Qmu_store
real(kind=CUSTOM_REAL), dimension(:,:,:,:,:), allocatable :: tau_e_store
- double precision, dimension(N_SLS) :: tau_s
+ double precision, dimension(N_SLS) :: tau_s
double precision T_c_source
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: doubling_index
@@ -263,8 +264,8 @@
else
nspec_att = 1
endif
- allocate(Qmu_store(NGLLX,NGLLY,NGLLZ,nspec_att), &
- tau_e_store(N_SLS,NGLLX,NGLLY,NGLLZ,nspec_att),stat=ier)
+ allocate(Qmu_store(ATT1,ATT2,ATT3,nspec_att), &
+ tau_e_store(N_SLS,ATT1,ATT2,ATT3,nspec_att),stat=ier)
if(ier /= 0) stop 'error in allocate 1'
! Gauss-Lobatto-Legendre points of integration
@@ -282,7 +283,7 @@
! 3D shape functions and their derivatives
allocate(shape3D(NGNOD,NGLLX,NGLLY,NGLLZ), &
dershape3D(NDIM,NGNOD,NGLLX,NGLLY,NGLLZ),stat=ier)
- if(ier /= 0) stop 'error in allocat 4'
+ if(ier /= 0) stop 'error in allocate 4'
! 2D shape functions and their derivatives
allocate(shape2D_x(NGNOD2D,NGLLY,NGLLZ), &
@@ -561,7 +562,7 @@
normal_moho,normal_400,normal_670,jacobian2D_moho,jacobian2D_400,jacobian2D_670, &
ispec2D_moho_top,ispec2D_moho_bot,ispec2D_400_top,&
ispec2D_400_bot,ispec2D_670_top,ispec2D_670_bot,&
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
! mesh doubling elements
if( this_region_has_a_doubling(ilayer) ) &
@@ -592,7 +593,7 @@
ispec2D_moho_top,ispec2D_moho_bot,ispec2D_400_top,&
ispec2D_400_bot,ispec2D_670_top,ispec2D_670_bot, &
CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,offset_proc_xi,offset_proc_eta, &
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
enddo ! of ilayer_loop
@@ -614,7 +615,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source,&
rho_vp,rho_vs,ABSORBING_CONDITIONS,ACTUALLY_STORE_ARRAYS,xigll,yigll,zigll, &
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
! check total number of spectral elements created
if(ispec /= nspec) call exit_MPI(myrank,'ispec should equal nspec')
@@ -744,11 +745,6 @@
RICB,RCMB,RTOPDDOUBLEPRIME,R600,R670,R220,R771,R400,R120,R80,RMOHO, &
RMIDDLE_CRUST,ROCEAN,iregion_code)
- !> Hejun
- ! Output material information for all GLL points
- ! Can be use to check the mesh
- ! call write_AVS_DX_global_data_gll(prname,nspec,xstore,ystore,zstore,&
- ! rhostore,kappavstore,muvstore,Qmu_store,ATTENUATION)
endif
deallocate(locval,stat=ier); if(ier /= 0) stop 'error in deallocate'
@@ -1054,7 +1050,7 @@
TRANSVERSE_ISOTROPY,HETEROGEN_3D_MANTLE,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,OCEANS, &
tau_s,tau_e_store,Qmu_store,T_c_source,ATTENUATION, &
- size(tau_e_store,2),size(tau_e_store,3),size(tau_e_store,4),size(tau_e_store,5),&
+ ATT1,ATT2,ATT3,size(tau_e_store,5),&
NCHUNKS,ABSORBING_CONDITIONS,SAVE_MESH_FILES,ispec_is_tiso,myrank)
#ifdef USE_SERIAL_CASCADE_FOR_IOs
you_can_start_doing_IOs = .true.
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regular_elements.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regular_elements.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regular_elements.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -53,7 +53,7 @@
normal_moho,normal_400,normal_670,jacobian2D_moho,jacobian2D_400,jacobian2D_670, &
ispec2D_moho_top,ispec2D_moho_bot,ispec2D_400_top, &
ispec2D_400_bot,ispec2D_670_top,ispec2D_670_bot, &
- ispec_is_tiso,USE_FULL_TISO_MANTLE)
+ ispec_is_tiso,USE_FULL_TISO_MANTLE,ATT1,ATT2,ATT3)
! adds a regular spectral element to the different regions of the mesh
@@ -66,7 +66,7 @@
integer iregion_code
! correct number of spectral elements in each block depending on chunk type
integer nspec,NCHUNKS,NUMBER_OF_MESH_LAYERS
- integer NPROC_XI,NPROC_ETA,NEX_PER_PROC_XI,NEX_PER_PROC_ETA
+ integer NPROC_XI,NPROC_ETA,NEX_PER_PROC_XI,NEX_PER_PROC_ETA,ATT1,ATT2,ATT3
integer :: ner_without_doubling
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: ner,ratio_sampling_array
@@ -134,17 +134,17 @@
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,nspec_att) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS,NGLLX,NGLLY,NGLLZ,nspec_att) :: tau_e_store
- double precision, dimension(N_SLS) :: tau_s
- double precision T_c_source
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,nspec_att) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,nspec_att) :: tau_e_store
+ double precision, dimension(N_SLS) :: tau_s
+ double precision T_c_source
! rotation matrix from Euler angles
double precision, dimension(NDIM,NDIM) :: rotation_matrix
@@ -275,7 +275,7 @@
c11store,c12store,c13store,c14store,c15store,c16store,c22store, &
c23store,c24store,c25store,c26store,c33store,c34store,c35store, &
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
- nspec_ani,nspec_stacey,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source, &
+ nspec_ani,nspec_stacey,ATT1,ATT2,ATT3,nspec_att,Qmu_store,tau_e_store,tau_s,T_c_source, &
rho_vp,rho_vs,ACTUALLY_STORE_ARRAYS, &
xigll,yigll,zigll,ispec_is_tiso,USE_FULL_TISO_MANTLE)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/get_model.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/get_model.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/get_model.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -35,7 +35,7 @@
xstore,ystore,zstore, &
rmin,rmax,RCMB,RICB,R670,RMOHO,RTOPDDOUBLEPRIME,R600,R220, &
R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN, &
- tau_s,tau_e_store,Qmu_store,T_c_source,vx,vy,vz,vnspec, &
+ tau_s,tau_e_store,Qmu_store,T_c_source,ATT1,ATT2,ATT3,vnspec, &
ABSORBING_CONDITIONS,elem_in_crust,elem_in_mantle)
use meshfem3D_models_par
@@ -63,22 +63,22 @@
RTOPDDOUBLEPRIME,R600,R220,R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN
! attenuation values
- integer :: vx,vy,vz,vnspec
- double precision, dimension(N_SLS) :: tau_s
+ integer :: ATT1,ATT2,ATT3,vnspec
+ double precision, dimension(N_SLS) :: tau_s
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: tau_e_store
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,vnspec) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,vnspec) :: tau_e_store
double precision :: T_c_source
logical ABSORBING_CONDITIONS
@@ -317,13 +317,16 @@
c66store(i,j,k,ispec) = c66
endif
- endif !CUSTOM_REAL
+ endif ! of CUSTOM_REAL
- !> Hejun
- ! No matter 1D or 3D attenuation, we save all gll point values
if(ATTENUATION) then
- tau_e_store(:,i,j,k,ispec) = tau_e(:)
- Qmu_store(i,j,k,ispec) = Qmu
+ if(ATTENUATION_3D) then
+ tau_e_store(:,i,j,k,ispec) = tau_e(:)
+ Qmu_store(i,j,k,ispec) = Qmu
+ else
+ tau_e_store(:,1,1,1,ispec) = tau_e(:)
+ Qmu_store(1,1,1,ispec) = Qmu
+ endif
endif
enddo
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/meshfem3D.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -350,7 +350,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY
+ MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -550,7 +551,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
endif
! distributes parameters from master to all processes
@@ -589,7 +591,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! check that the code is running with the requested number of processes
if(sizeprocs /= NPROCTOT) call exit_MPI(myrank,'wrong number of MPI processes')
@@ -689,7 +692,6 @@
! create all the regions of the mesh
! perform two passes in this part to be able to save memory
do ipass = 1,2
-
call create_regions_mesh(iregion_code,ibool,idoubling,is_on_a_slice_edge, &
xstore,ystore,zstore,rmins,rmaxs, &
iproc_xi,iproc_eta,ichunk,NSPEC(iregion_code),nspec_tiso, &
@@ -708,8 +710,8 @@
ner,ratio_sampling_array,doubling_index,r_bottom,r_top,&
this_region_has_a_doubling,ipass,ratio_divide_central_cube, &
CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA, &
- mod(iproc_xi_slice(myrank),2),mod(iproc_eta_slice(myrank),2),USE_FULL_TISO_MANTLE)
-
+ mod(iproc_xi_slice(myrank),2),mod(iproc_eta_slice(myrank),2),USE_FULL_TISO_MANTLE, &
+ ATT1,ATT2,ATT3)
enddo
! checks number of anisotropic elements found in the mantle
@@ -844,7 +846,7 @@
NGLOB_CRUST_MANTLE_ADJOINT,NGLOB_OUTER_CORE_ADJOINT, &
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
- NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,static_memory_size)
+ NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,ATT1,ATT2,ATT3,static_memory_size)
NGLOB1D_RADIAL_TEMP(:) = &
(/maxval(NGLOB1D_RADIAL_CORNER(1,:)),maxval(NGLOB1D_RADIAL_CORNER(2,:)),maxval(NGLOB1D_RADIAL_CORNER(3,:))/)
@@ -872,7 +874,8 @@
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
- SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY)
+ SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
endif ! end of section executed by main process only
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/model_attenuation.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/model_attenuation.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/model_attenuation.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -1297,209 +1297,3 @@
end subroutine qsort_local
-
-!
-!-------------------------------------------------------------------------------------------------
-!
-! unused routines...
-!
-!
-! subroutine model_attenuation_1D_PREM(x, Qmu)
-!
-!! x is the radius from 0 to 1 where 0 is the center and 1 is the surface
-!! This version is for 1D PREM.
-!
-! implicit none
-!
-! include 'constants.h'
-!! integer iflag
-! double precision r, x, Qmu,RICB,RCMB, &
-! RTOPDDOUBLEPRIME,R600,R670,R220,R771,R400,R80, ROCEAN, RMOHO, RMIDDLE_CRUST
-! double precision Qkappa
-!
-! r = x * R_EARTH
-!
-! ROCEAN = 6368000.d0
-! RMIDDLE_CRUST = 6356000.d0
-! RMOHO = 6346600.d0
-! R80 = 6291000.d0
-! R220 = 6151000.d0
-! R400 = 5971000.d0
-! R600 = 5771000.d0
-! R670 = 5701000.d0
-! R771 = 5600000.d0
-! RTOPDDOUBLEPRIME = 3630000.d0
-! RCMB = 3480000.d0
-! RICB = 1221000.d0
-!
-!! PREM
-!!
-!!--- inner core
-!!
-! if(r >= 0.d0 .and. r <= RICB) then
-! Qmu=84.6d0
-! Qkappa=1327.7d0
-!!
-!!--- outer core
-!!
-! else if(r > RICB .and. r <= RCMB) then
-! Qmu=0.0d0
-! Qkappa=57827.0d0
-! if(RCMB - r < r - RICB) then
-! Qmu = 312.0d0 ! CMB
-! else
-! Qmu = 84.6d0 ! ICB
-! endif
-!!
-!!--- D" at the base of the mantle
-!!
-! else if(r > RCMB .and. r <= RTOPDDOUBLEPRIME) then
-! Qmu=312.0d0
-! Qkappa=57827.0d0
-!!
-!!--- mantle: from top of D" to d670
-!!
-! else if(r > RTOPDDOUBLEPRIME .and. r <= R771) then
-! Qmu=312.0d0
-! Qkappa=57827.0d0
-! else if(r > R771 .and. r <= R670) then
-! Qmu=312.0d0
-! Qkappa=57827.0d0
-!!
-!!--- mantle: above d670
-!!
-! else if(r > R670 .and. r <= R600) then
-! Qmu=143.0d0
-! Qkappa=57827.0d0
-! else if(r > R600 .and. r <= R400) then
-! Qmu=143.0d0
-! Qkappa=57827.0d0
-! else if(r > R400 .and. r <= R220) then
-! Qmu=143.0d0
-! Qkappa=57827.0d0
-! else if(r > R220 .and. r <= R80) then
-! Qmu=80.0d0
-! Qkappa=57827.0d0
-! else if(r > R80) then
-! Qmu=600.0d0
-! Qkappa=57827.0d0
-! endif
-!
-!! Since R80 may be changed, we use radius to decide the attenuation region
-!! rather than doubling flag
-!
-! ! We determine the attenuation value here dependent on the doubling flag and
-! ! which region we are sitting in. The radius reported is not accurate for
-! ! determination of which region we are actually in, whereas the idoubling flag is
-!! if(iflag == IFLAG_INNER_CORE_NORMAL .or. iflag == IFLAG_MIDDLE_CENTRAL_CUBE .or. &
-!! iflag == IFLAG_BOTTOM_CENTRAL_CUBE .or. iflag == IFLAG_TOP_CENTRAL_CUBE .or. &
-!! iflag == IFLAG_IN_FICTITIOUS_CUBE) then
-!! Qmu = 84.6d0
-!! Qkappa = 1327.7d0
-!! else if(iflag == IFLAG_OUTER_CORE_NORMAL) then
-!! Qmu = 0.0d0
-!! Qkappa = 57827.0d0
-!! else if(iflag == IFLAG_MANTLE_NORMAL) then ! D'' to 670 km
-!! Qmu = 312.0d0
-!! Qkappa = 57827.0d0
-!! else if(iflag == IFLAG_670_220) then
-!! Qmu=143.0d0
-!! Qkappa = 57827.0d0
-!! else if(iflag == IFLAG_220_80) then
-!! Qmu=80.0d0
-!! Qkappa = 57827.0d0
-!! else if(iflag == IFLAG_80_MOHO) then
-!! Qmu=600.0d0
-!! Qkappa = 57827.0d0
-!! else if(iflag == IFLAG_CRUST) then
-!! Qmu=600.0d0
-!! Qkappa = 57827.0d0
-!! else
-!! write(*,*)'iflag:',iflag
-!! call exit_MPI_without_rank('Invalid idoubling flag in attenuation_model_1D_prem from get_model()')
-!! endif
-!
-! end subroutine model_attenuation_1D_PREM
-!
-!!
-!!-------------------------------------------------------------------------------------------------
-!!
-!
-!! get 1D REF attenuation model according to radius
-! subroutine model_attenuation_1D_REF(x, Qmu)
-!
-!! x in the radius from 0 to 1 where 0 is the center and 1 is the surface
-!! This version is for 1D REF.
-!
-! implicit none
-!
-! include 'constants.h'
-!
-! double precision r, x, Qmu,RICB,RCMB, &
-! RTOPDDOUBLEPRIME,R600,R670,R220,R771,R400,R80, ROCEAN, RMOHO, RMIDDLE_CRUST
-! double precision Qkappa
-!
-! r = x * R_EARTH
-!
-! ROCEAN = 6368000.d0
-! RMIDDLE_CRUST = 6356000.d0
-! RMOHO = 6346600.d0
-! R80 = 6291000.d0
-! R220 = 6151000.d0
-! R400 = 5961000.d0
-! R600 = 5771000.d0
-! R670 = 5721000.d0
-! R771 = 5600000.d0
-! RTOPDDOUBLEPRIME = 3630000.d0
-! RCMB = 3479958.d0
-! RICB = 1221491.d0
-!
-!! REF model
-!!
-!!--- inner core
-!!
-! if(r >= 0.d0 .and. r <= RICB) then
-! Qmu=104.0d0
-! Qkappa=1327.6d0
-!
-!!--- outer core
-!!
-! else if(r > RICB .and. r <= RCMB) then
-! Qmu=0.0d0
-! Qkappa=57822.5d0
-! if(RCMB - r < r - RICB) then
-! Qmu = 355.0d0 ! CMB
-! else
-! Qmu = 104.0d0 ! ICB
-! endif
-!
-!!--- D" at the base of the mantle
-!!
-! else if(r > RCMB .and. r <= RTOPDDOUBLEPRIME) then
-! Qmu=355.0d0
-! Qkappa=57822.5d0
-!
-!!--- mantle: from top of D" to d670
-!!
-! else if(r > RTOPDDOUBLEPRIME .and. r <= R670) then
-! Qmu=355.0d0
-! Qkappa=57822.5d0
-!
-!!--- mantle: above d670
-!!
-! else if(r > R670 .and. r <= R220) then
-! Qmu=165.0d0
-! Qkappa=943.0d0
-! else if(r > R220 .and. r <= R80) then
-! Qmu=70.0d0
-! Qkappa=943.0d0
-! else if(r > R80.and. r<=RMOHO) then
-! Qmu=191.0d0
-! Qkappa=943.0d0
-! else if (r > RMOHO) then
-! Qmu=300.0d0
-! Qkappa=57822.5d0
-! endif
-!
-! end subroutine model_attenuation_1D_REF
-!
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -43,7 +43,7 @@
NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
TRANSVERSE_ISOTROPY,HETEROGEN_3D_MANTLE,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,OCEANS, &
- tau_s,tau_e_store,Qmu_store,T_c_source,ATTENUATION,vx,vy,vz,vnspec, &
+ tau_s,tau_e_store,Qmu_store,T_c_source,ATTENUATION,ATT1,ATT2,ATT3,vnspec, &
NCHUNKS,ABSORBING_CONDITIONS,SAVE_MESH_FILES,ispec_is_tiso,myrank)
implicit none
@@ -127,11 +127,11 @@
integer nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax
! attenuation
- integer vx, vy, vz, vnspec
+ integer ATT1,ATT2,ATT3,vnspec
double precision T_c_source
- double precision, dimension(N_SLS) :: tau_s
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: Qmu_store
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: tau_e_store
+ double precision, dimension(N_SLS) :: tau_s
+ real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,vnspec) :: Qmu_store
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,vnspec) :: tau_e_store
logical ABSORBING_CONDITIONS,SAVE_MESH_FILES
@@ -377,13 +377,10 @@
close(27)
-!> Hejun
-! No matter 1D or 3D Attenuation, we save value for gll points
if(ATTENUATION) then
open(unit=27, file=prname(1:len_trim(prname))//'attenuation.bin', &
status='unknown', form='unformatted',action='write',iostat=ier)
if( ier /= 0 ) call exit_mpi(myrank,'error opening attenuation.bin file')
-
write(27) tau_s
write(27) tau_e_store
write(27) Qmu_store
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/broadcast_computed_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/broadcast_computed_parameters.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/broadcast_computed_parameters.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -60,7 +60,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
use mpi
@@ -80,7 +81,8 @@
NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION
+ MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
@@ -134,7 +136,7 @@
! local parameters
double precision, dimension(32) :: bcast_double_precision
- integer, dimension(40) :: bcast_integer
+ integer, dimension(45) :: bcast_integer
logical, dimension(51) :: bcast_logical
integer ier
@@ -155,7 +157,8 @@
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,&
SIMULATION_TYPE,REFERENCE_1D_MODEL,THREE_D_MODEL,NPROC,NPROCTOT, &
NEX_PER_PROC_XI,NEX_PER_PROC_ETA,ratio_divide_central_cube,&
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NSOURCES,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION/)
+ MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NSOURCES,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION, &
+ ATT1,ATT2,ATT3,ATT4,ATT5/)
bcast_logical = (/TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
@@ -181,7 +184,7 @@
endif
! broadcasts the information read on the master to the nodes
- call MPI_BCAST(bcast_integer,40,MPI_INTEGER,0,MPI_COMM_WORLD,ier)
+ call MPI_BCAST(bcast_integer,45,MPI_INTEGER,0,MPI_COMM_WORLD,ier)
call MPI_BCAST(bcast_double_precision,32,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ier)
call MPI_BCAST(bcast_logical,51,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
@@ -257,6 +260,11 @@
NSOURCES = bcast_integer(38)
NOISE_TOMOGRAPHY = bcast_integer(39)
NT_DUMP_ATTENUATION = bcast_integer(40)
+ ATT1 = bcast_integer(41)
+ ATT2 = bcast_integer(42)
+ ATT3 = bcast_integer(43)
+ ATT4 = bcast_integer(44)
+ ATT5 = bcast_integer(45)
! logicals
TRANSVERSE_ISOTROPY = bcast_logical(1)
@@ -349,69 +357,3 @@
end subroutine broadcast_computed_parameters
-
-!-------------------------------------------------------------------------------------------------
-!> Broadcast the parameters relative to GPU computing settings.
-!! \param myrank The rank of the MPI process in COMM_WORLD
-!! \param GPU_MODE Flag to indicate that GPU computing is ON or OFF.
- subroutine broadcast_gpu_parameters(myrank,GPU_MODE)
-
- use mpi
-
- implicit none
-
- include "constants.h"
- include "precision.h"
-
- integer:: myrank
- logical:: GPU_MODE
- ! local parameters
- integer :: ier
-
- call MPI_BCAST(GPU_MODE,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank,'error broadcasting GPU_MODE')
-
- end subroutine broadcast_gpu_parameters
-
-!-------------------------------------------------------------------------------------------------
-!> Broadcast the parameters relative to ADIOS output settings.
-!! \param myrank The rank of the MPI process in COMM_WORLD
-!! \param ADIOS_ENABLED Flag to indicate ADIOS output for seismograms.
-!! \param ADIOS_FOR_FORWARD_ARRAYS Flag to indicate that intermediate and
-!! forward arrays are stored with the help of ADIOS.
-subroutine broadcast_adios_parameters(myrank,ADIOS_ENABLED, &
- ADIOS_FOR_FORWARD_ARRAYS, ADIOS_FOR_MPI_ARRAYS, &
- ADIOS_FOR_ARRAYS_SOLVER, ADIOS_FOR_SOLVER_MESHFILES, &
- ADIOS_FOR_AVS_DX)
-
- use mpi
-
- implicit none
-
- include "constants.h"
- include "precision.h"
-
- integer:: myrank
- logical:: ADIOS_ENABLED, ADIOS_FOR_FORWARD_ARRAYS, ADIOS_FOR_MPI_ARRAYS, &
- ADIOS_FOR_ARRAYS_SOLVER, ADIOS_FOR_SOLVER_MESHFILES, ADIOS_FOR_AVS_DX
- ! local parameters
- integer :: ier
- call MPI_BCAST(ADIOS_ENABLED,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank,'error broadcasting ADIOS_ENABLED')
- call MPI_BCAST(ADIOS_FOR_FORWARD_ARRAYS,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank, &
- 'error broadcasting ADIOS_FOR_FORWARD_ARRAYS')
- call MPI_BCAST(ADIOS_FOR_MPI_ARRAYS,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank, &
- 'error broadcasting ADIOS_FOR_MPI_ARRAYS')
- call MPI_BCAST(ADIOS_FOR_ARRAYS_SOLVER,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank, &
- 'error broadcasting ADIOS_FOR_ARRAYS_SOLVER')
- call MPI_BCAST(ADIOS_FOR_SOLVER_MESHFILES,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank, &
- 'error broadcasting ADIOS_FOR_SOLVER_MESHFILES')
- call MPI_BCAST(ADIOS_FOR_AVS_DX,1,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
- if( ier /= 0 ) call exit_MPI(myrank, &
- 'error broadcasting ADIOS_FOR_AVS_DX')
-
-end subroutine broadcast_adios_parameters
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -45,7 +45,7 @@
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
- static_memory_size)
+ ATT1,ATT2,ATT3,static_memory_size)
implicit none
@@ -58,7 +58,7 @@
MOVIE_VOLUME,SAVE_FORWARD
integer, dimension(MAX_NUM_REGIONS), intent(in) :: NSPEC, nglob
- integer, intent(in) :: NEX_PER_PROC_XI,NEX_PER_PROC_ETA,SIMULATION_TYPE
+ integer, intent(in) :: NEX_PER_PROC_XI,NEX_PER_PROC_ETA,SIMULATION_TYPE,ATT1,ATT2,ATT3
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS), intent(in) :: doubling_index
logical, dimension(MAX_NUMBER_OF_MESH_LAYERS), intent(in) :: this_region_has_a_doubling
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS), intent(in) :: ner,ratio_sampling_array
@@ -224,24 +224,24 @@
dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_ATTENUAT*dble(CUSTOM_REAL)
! one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
- static_memory_size = static_memory_size + 2.d0*dble(NGLLX)* &
- dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_ATTENUAT*dble(CUSTOM_REAL)
+ static_memory_size = static_memory_size + 2.d0*dble(ATT1)* &
+ dble(ATT2)*dble(ATT3)*NSPEC_CRUST_MANTLE_ATTENUAT*dble(CUSTOM_REAL)
! factor_common_crust_mantle
- static_memory_size = static_memory_size + dble(N_SLS)*dble(NGLLX)* &
- dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_ATTENUAT*dble(CUSTOM_REAL)
+ static_memory_size = static_memory_size + dble(N_SLS)*dble(ATT1)* &
+ dble(ATT2)*dble(ATT3)*NSPEC_CRUST_MANTLE_ATTENUAT*dble(CUSTOM_REAL)
! R_memory_inner_core
static_memory_size = static_memory_size + 5.d0*dble(N_SLS)*dble(NGLLX)* &
dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_ATTENUATION*dble(CUSTOM_REAL)
! one_minus_sum_beta_inner_core, factor_scale_inner_core
- static_memory_size = static_memory_size + 2.d0*dble(NGLLX)* &
- dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_ATTENUATION*dble(CUSTOM_REAL)
+ static_memory_size = static_memory_size + 2.d0*dble(ATT1)* &
+ dble(ATT2)*dble(ATT3)*NSPEC_INNER_CORE_ATTENUATION*dble(CUSTOM_REAL)
! factor_common_inner_core
- static_memory_size = static_memory_size + dble(N_SLS)*dble(NGLLX)* &
- dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_ATTENUATION*dble(CUSTOM_REAL)
+ static_memory_size = static_memory_size + dble(N_SLS)*dble(ATT1)* &
+ dble(ATT2)*dble(ATT3)*NSPEC_INNER_CORE_ATTENUATION*dble(CUSTOM_REAL)
! xix_crust_mantle,xiy_crust_mantle,xiz_crust_mantle
! etax_crust_mantle,etay_crust_mantle,etaz_crust_mantle,
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/read_compute_parameters.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -62,7 +62,8 @@
SAVE_REGULAR_KL,PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
implicit none
@@ -72,7 +73,8 @@
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_read,NEX_ETA_read,NPROC_XI_read,NPROC_ETA_read,NOISE_TOMOGRAPHY
+ NEX_XI_read,NEX_ETA_read,NPROC_XI_read,NPROC_ETA_read,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,&
CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,&
@@ -362,6 +364,28 @@
last_doubling_layer, cut_doubling, nglob_int_surf_xi, nglob_int_surf_eta,nglob_ext_surf,&
normal_doubling, nglob_center_edge, nglob_corner_edge, nglob_border_edge)
+ if(ATTENUATION) then
+!! DK DK July 2013: to save a huge amount of memory, when 3D attenuation is off it is sufficient to save a single point
+!! DK DK July 2013: per spectral element because the Q attenuation factor is then constant per layer of the geological model
+ if(ATTENUATION_3D) then
+ ATT1 = NGLLX
+ ATT2 = NGLLY
+ ATT3 = NGLLZ
+ else
+ ATT1 = 1
+ ATT2 = 1
+ ATT3 = 1
+ endif
+ ATT4 = NSPEC(IREGION_CRUST_MANTLE)
+ ATT5 = NSPEC(IREGION_INNER_CORE)
+ else
+ ATT1 = 1
+ ATT2 = 1
+ ATT3 = 1
+ ATT4 = 1
+ ATT5 = 1
+ endif
+
end subroutine read_compute_parameters
!
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -51,7 +51,8 @@
NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
- SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY)
+ SIMULATION_TYPE,SAVE_FORWARD,MOVIE_VOLUME,SAVE_REGULAR_KL,NOISE_TOMOGRAPHY, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
implicit none
@@ -104,7 +105,7 @@
double precision rotation_matrix(3,3)
double precision vector_ori(3),vector_rotated(3)
double precision r_corner,theta_corner,phi_corner,lat,long,colat_corner
- integer :: att1,att2,att3,att4,att5
+ integer :: ATT1,ATT2,ATT3,ATT4,ATT5
integer :: ier
character(len=150) HEADER_FILE
@@ -477,33 +478,11 @@
write(IOUT,*) 'integer, parameter :: NUMMSGS_FACES_VAL = ',NPROC_XI*NUM_FACES*NUM_MSG_TYPES
write(IOUT,*) 'integer, parameter :: NCORNERSCHUNKS_VAL = ',NCORNERSCHUNKS
- if(ATTENUATION) then
-!! DK DK July 2013: to save a huge amount of memory, when 3D attenuation is off it is sufficient to save a single point
-!! DK DK July 2013: per spectral element because the Q attenuation factor is then constant per layer of the geological model
- if(ATTENUATION_3D) then
- att1 = NGLLX
- att2 = NGLLY
- att3 = NGLLZ
- else
- att1 = 1
- att2 = 1
- att3 = 1
- endif
- att4 = NSPEC(IREGION_CRUST_MANTLE)
- att5 = NSPEC(IREGION_INNER_CORE)
- else
- att1 = 1
- att2 = 1
- att3 = 1
- att4 = 1
- att5 = 1
- endif
-
- write(IOUT,*) 'integer, parameter :: ATT1 = ',att1
- write(IOUT,*) 'integer, parameter :: ATT2 = ',att2
- write(IOUT,*) 'integer, parameter :: ATT3 = ',att3
- write(IOUT,*) 'integer, parameter :: ATT4 = ',att4
- write(IOUT,*) 'integer, parameter :: ATT5 = ',att5
+ write(IOUT,*) 'integer, parameter :: ATT1_VAL = ',ATT1
+ write(IOUT,*) 'integer, parameter :: ATT2_VAL = ',ATT2
+ write(IOUT,*) 'integer, parameter :: ATT3_VAL = ',ATT3
+ write(IOUT,*) 'integer, parameter :: ATT4_VAL = ',ATT4
+ write(IOUT,*) 'integer, parameter :: ATT5_VAL = ',ATT5
write(IOUT,*)
write(IOUT,*) 'integer, parameter :: NSPEC2DMAX_XMIN_XMAX_CM = ',NSPEC2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -33,7 +33,7 @@
kappavstore,muvstore, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
@@ -67,7 +67,7 @@
kappavstore,muvstore
! variable sized array variables
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
! attenuation
! memory variables for attenuation
@@ -75,7 +75,7 @@
! to allow for optimization of cache access by compiler
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory
- real(kind=CUSTOM_REAL), dimension(vx,vy,vz,vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
! gravity
double precision, dimension(NRAD_GRAVITY) :: minus_gravity_table,density_table,minus_deriv_gravity_table
@@ -173,8 +173,10 @@
endif
! precompute terms for attenuation if needed
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
one_minus_sum_beta_use = one_minus_sum_beta(i,j,k,ispec)
+ else if(ATTENUATION_VAL) then
+ one_minus_sum_beta_use = one_minus_sum_beta(1,1,1,ispec)
endif
!
@@ -351,7 +353,7 @@
kappavstore,kappahstore,muvstore,muhstore,eta_anisostore, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
@@ -393,10 +395,10 @@
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory
! variable sized array variables
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
! [alpha,beta,gamma]val reduced to N_SLS to N_SLS*NUM_NODES
- real(kind=CUSTOM_REAL), dimension(vx,vy,vz,vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
! gravity
double precision, dimension(NRAD_GRAVITY) :: minus_gravity_table,density_table,minus_deriv_gravity_table
@@ -506,8 +508,10 @@
endif
! precompute terms for attenuation if needed
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
one_minus_sum_beta_use = one_minus_sum_beta(i,j,k,ispec)
+ else if(ATTENUATION_VAL) then
+ one_minus_sum_beta_use = one_minus_sum_beta(1,1,1,ispec)
endif
!
@@ -881,7 +885,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
@@ -923,10 +927,10 @@
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory
! variable sized array variables
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
! [alpha,beta,gamma]val reduced to N_SLS to N_SLS*NUM_NODES
- real(kind=CUSTOM_REAL), dimension(vx,vy,vz,vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
! gravity
double precision, dimension(NRAD_GRAVITY) :: minus_gravity_table,density_table,minus_deriv_gravity_table
@@ -1025,9 +1029,12 @@
endif
! precompute terms for attenuation if needed
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
one_minus_sum_beta_use = one_minus_sum_beta(i,j,k,ispec)
minus_sum_beta = one_minus_sum_beta_use - 1.0
+ else if(ATTENUATION_VAL) then
+ one_minus_sum_beta_use = one_minus_sum_beta(1,1,1,ispec)
+ minus_sum_beta = one_minus_sum_beta_use - 1.0
endif
!
@@ -1271,7 +1278,7 @@
!
subroutine compute_element_att_memory_cr(ispec,R_memory, &
- vx,vy,vz,vnspec,factor_common, &
+ vnspec,factor_common, &
alphaval,betaval,gammaval, &
c44store,muvstore, &
epsilondev_loc_nplus1,epsilondev_loc,&
@@ -1307,9 +1314,9 @@
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory
! variable sized array variables
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
- real(kind=CUSTOM_REAL), dimension(N_SLS,vx,vy,vz,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPECMAX_ANISO_MANTLE) :: c44store
@@ -1322,7 +1329,7 @@
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: factor_common_c44_muv
integer :: i_SLS
- integer :: i_memory
+ integer :: i_memory,i,j,k
! for LDDRK
integer :: istage
@@ -1338,9 +1345,27 @@
! IMPROVE we should probably use an average value instead
do i_SLS = 1,N_SLS
+
! reformatted R_memory to handle large factor_common and reduced [alpha,beta,gamma]val
- factor_common_c44_muv(:,:,:) = factor_common(i_SLS,:,:,:,ispec)
+ if(ATTENUATION_3D_VAL) then
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_c44_muv(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
+ enddo
+ enddo
+ enddo
+ else
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_c44_muv(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
+ enddo
+ enddo
+ enddo
+ endif
+
if(ANISOTROPIC_3D_MANTLE_VAL) then
factor_common_c44_muv(:,:,:) = factor_common_c44_muv(:,:,:) * c44store(:,:,:,ispec)
else
@@ -1371,7 +1396,7 @@
!
subroutine compute_element_att_memory_ic(ispec,R_memory, &
- vx,vy,vz,vnspec,factor_common, &
+ vnspec,factor_common, &
alphaval,betaval,gammaval, &
muvstore, &
epsilondev_loc_nplus1,epsilondev_loc,&
@@ -1407,9 +1432,9 @@
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: R_memory
! variable sized array variables
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
- real(kind=CUSTOM_REAL), dimension(N_SLS,vx,vy,vz,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: muvstore
@@ -1422,7 +1447,7 @@
integer :: i_SLS
- integer :: i_memory
+ integer :: i_memory,i,j,k
! for LDDRK
integer :: istage
@@ -1438,8 +1463,25 @@
! IMPROVE we should probably use an average value instead
do i_SLS = 1,N_SLS
- factor_common_use(:,:,:) = factor_common(i_SLS,:,:,:,ispec)
+ if(ATTENUATION_3D_VAL) then
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_use(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
+ enddo
+ enddo
+ enddo
+ else
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_use(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
+ enddo
+ enddo
+ enddo
+ endif
+
if(USE_LDDRK)then
do i_memory = 1,5
R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) = ALPHA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) + &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -53,7 +53,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
ibool,ispec_is_tiso, &
R_memory,one_minus_sum_beta,deltat,veloc_crust_mantle, &
- alphaval,betaval,gammaval,factor_common,vx,vy,vz,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
+ alphaval,betaval,gammaval,factor_common,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
! this routine is optimized for NGLLX = NGLLY = NGLLZ = 5 using the Deville et al. (2002) inlined matrix-matrix products
@@ -104,11 +104,11 @@
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory
logical :: PARTIAL_PHYS_DISPERSION_ONLY
- integer :: vx,vy,vz,vnspec
+ integer :: vnspec
! [alpha,beta,gamma]val reduced to N_SLS and factor_common to N_SLS*NUM_NODES
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: factor_common
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
! array with the local to global mapping per slice
@@ -377,7 +377,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
else
@@ -391,7 +391,7 @@
kappavstore,muvstore, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
else
@@ -405,7 +405,7 @@
kappavstore,kappahstore,muvstore,muhstore,eta_anisostore, &
ibool, &
R_memory, &
- one_minus_sum_beta,vx,vy,vz,vnspec, &
+ one_minus_sum_beta,vnspec, &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3, &
dummyx_loc,dummyy_loc,dummyz_loc,epsilondev_loc,rho_s_H,PARTIAL_PHYS_DISPERSION_ONLY)
endif ! .not. ispec_is_tiso
@@ -533,7 +533,7 @@
xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,epsilondev_loc_nplus1)
! updates R_memory
call compute_element_att_memory_cr(ispec,R_memory, &
- vx,vy,vz,vnspec,factor_common, &
+ vnspec,factor_common, &
alphaval,betaval,gammaval, &
c44store,muvstore, &
epsilondev_loc_nplus1,epsilondev_loc,&
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_noDev.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_noDev.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_noDev.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -53,7 +53,7 @@
c36store,c44store,c45store,c46store,c55store,c56store,c66store, &
ibool,ispec_is_tiso, &
R_memory,one_minus_sum_beta,deltat,veloc_crust_mantle, &
- alphaval,betaval,gammaval,factor_common,vx,vy,vz,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
+ alphaval,betaval,gammaval,factor_common,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
implicit none
@@ -75,10 +75,10 @@
! to allow for optimization of cache access by compiler
integer i_SLS,i_memory
! variable sized array variables for one_minus_sum_beta and factor_common
- integer vx, vy, vz, vnspec
+ integer vnspec
real(kind=CUSTOM_REAL) one_minus_sum_beta_use,minus_sum_beta,deltat
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
! for attenuation
real(kind=CUSTOM_REAL) R_xx_val,R_yy_val
@@ -87,8 +87,8 @@
! [alpha,beta,gamma]val reduced to N_SLS and factor_common to N_SLS*NUM_NODES
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: factor_common
- real(kind=CUSTOM_REAL), dimension(NGLLX, NGLLY, NGLLZ) :: factor_common_c44_muv
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: factor_common_c44_muv
real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc
real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc_nplus1
@@ -382,9 +382,12 @@
endif
! precompute terms for attenuation if needed
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
one_minus_sum_beta_use = one_minus_sum_beta(i,j,k,ispec)
minus_sum_beta = one_minus_sum_beta_use - 1.0
+ else if(ATTENUATION_VAL) then
+ one_minus_sum_beta_use = one_minus_sum_beta(1,1,1,ispec)
+ minus_sum_beta = one_minus_sum_beta_use - 1.0
endif
!
@@ -916,7 +919,25 @@
! IMPROVE we should probably use an average value instead
! reformatted R_memory to handle large factor_common and reduced [alpha,beta,gamma]val
- factor_common_c44_muv = factor_common(i_SLS,:,:,:,ispec)
+
+ if(ATTENUATION_3D_VAL) then
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_c44_muv(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
+ enddo
+ enddo
+ enddo
+ else
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_c44_muv(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
+ enddo
+ enddo
+ enddo
+ endif
+
if(ANISOTROPIC_3D_MANTLE_VAL) then
factor_common_c44_muv = factor_common_c44_muv * c44store(:,:,:,ispec)
else
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -49,7 +49,7 @@
kappavstore,muvstore,ibool,idoubling, &
c11store,c33store,c12store,c13store,c44store,R_memory,one_minus_sum_beta,deltat,veloc_inner_core,&
alphaval,betaval,gammaval,factor_common, &
- vx,vy,vz,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
+ vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
! this routine is optimized for NGLLX = NGLLY = NGLLZ = 5 using the Deville et al. (2002) inlined matrix-matrix products
@@ -78,9 +78,9 @@
! memory variables R_ij are stored at the local rather than global level
! to allow for optimization of cache access by compiler
! variable lengths for factor_common and one_minus_sum_beta
- integer vx, vy, vz, vnspec
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: factor_common
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: one_minus_sum_beta
+ integer vnspec
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
@@ -425,8 +425,10 @@
epsilondev_loc(5,i,j,k) = 0.5 * duzdyl_plus_duydzl
endif
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
minus_sum_beta = one_minus_sum_beta(i,j,k,ispec) - 1.0
+ else if(ATTENUATION_VAL) then
+ minus_sum_beta = one_minus_sum_beta(1,1,1,ispec) - 1.0
endif
if(ANISOTROPIC_INNER_CORE_VAL) then
@@ -476,8 +478,10 @@
mul = muvstore(i,j,k,ispec)
! use unrelaxed parameters if attenuation
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
mul = mul * one_minus_sum_beta(i,j,k,ispec)
+ else if(ATTENUATION_VAL) then
+ mul = mul * one_minus_sum_beta(1,1,1,ispec)
endif
lambdalplus2mul = kappal + FOUR_THIRDS * mul
@@ -757,7 +761,7 @@
xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,epsilondev_loc_nplus1)
! updates R_memory
call compute_element_att_memory_ic(ispec,R_memory, &
- vx,vy,vz,vnspec,factor_common, &
+ vnspec,factor_common, &
alphaval,betaval,gammaval, &
muvstore, &
epsilondev_loc_nplus1,epsilondev_loc,&
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_noDev.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_noDev.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_noDev.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -50,7 +50,7 @@
kappavstore,muvstore,ibool,idoubling, &
c11store,c33store,c12store,c13store,c44store,R_memory,one_minus_sum_beta,deltat,veloc_inner_core,&
alphaval,betaval,gammaval,factor_common, &
- vx,vy,vz,vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
+ vnspec,PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
implicit none
@@ -73,13 +73,13 @@
real(kind=CUSTOM_REAL) R_xx_val,R_yy_val
! variable lengths for factor_common and one_minus_sum_beta
- integer vx, vy, vz, vnspec
+ integer vnspec
- real(kind=CUSTOM_REAL), dimension(vx, vy, vz, vnspec) :: one_minus_sum_beta
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta
- real(kind=CUSTOM_REAL), dimension(N_SLS, vx, vy, vz, vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval,betaval,gammaval
- real(kind=CUSTOM_REAL), dimension(NGLLX, NGLLY, NGLLZ) :: factor_common_use
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: factor_common_use
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: R_memory
real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc,epsilondev_loc_nplus1
@@ -359,8 +359,10 @@
epsilondev_loc(5,i,j,k) = 0.5 * duzdyl_plus_duydzl
endif
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
minus_sum_beta = one_minus_sum_beta(i,j,k,ispec) - 1.0
+ else if(ATTENUATION_VAL) then
+ minus_sum_beta = one_minus_sum_beta(1,1,1,ispec) - 1.0
endif
if(ANISOTROPIC_INNER_CORE_VAL) then
@@ -412,8 +414,10 @@
mul = muvstore(i,j,k,ispec)
! use unrelaxed parameters if attenuation
- if(ATTENUATION_VAL) then
+ if(ATTENUATION_3D_VAL) then
mul = mul * one_minus_sum_beta(i,j,k,ispec)
+ else if(ATTENUATION_VAL) then
+ mul = mul * one_minus_sum_beta(1,1,1,ispec)
endif
lambdalplus2mul = kappal + FOUR_THIRDS * mul
@@ -663,7 +667,25 @@
xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,epsilondev_loc_nplus1)
do i_SLS = 1,N_SLS
- factor_common_use = factor_common(i_SLS,:,:,:,ispec)
+
+ if(ATTENUATION_3D_VAL) then
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_use(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
+ enddo
+ enddo
+ enddo
+ else
+ do k = 1,NGLLZ
+ do j = 1,NGLLZ
+ do i = 1,NGLLZ
+ factor_common_use(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
+ enddo
+ enddo
+ enddo
+ endif
+
if(USE_LDDRK) then
do i_memory = 1,5
R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) = ALPHA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) + &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/get_attenuation.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/get_attenuation.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/get_attenuation.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -34,6 +34,9 @@
include 'constants.h'
+! include values created by the mesher
+ include "OUTPUT_FILES/values_from_mesher.h"
+
integer :: myrank
integer :: vnspec
@@ -43,15 +46,15 @@
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013: BEWARE, declared real(kind=CUSTOM_REAL) in trunk and
-!! DK DK to Daniel, Jul 2013: double precision in branch, let us check which one is right.
-!! DK DK to Daniel, Jul 2013 I think real custom is better, it works fine in the trunk and these arrays are really huge
+!! DK DK to Daniel, Jul 2013: double precision in branch.
+!! DK DK to Daniel, Jul 2013 real custom is better, it works fine in the trunk and these arrays are really huge
!! DK DK to Daniel, Jul 2013 in the crust_mantle region, thus let us not double their size
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
!! DK DK to Daniel, Jul 2013
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,vnspec) :: one_minus_sum_beta, scale_factor
- real(kind=CUSTOM_REAL), dimension(N_SLS,NGLLX,NGLLY,NGLLZ,vnspec) :: factor_common
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: one_minus_sum_beta, scale_factor
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,vnspec) :: factor_common
double precision, dimension(N_SLS) :: tau_s
@@ -80,9 +83,9 @@
T_c_source = T_c_source / scale_t
do ispec = 1, vnspec
- do k = 1, NGLLZ
- do j = 1, NGLLY
- do i = 1, NGLLX
+ do k = 1, ATT3_VAL
+ do j = 1, ATT2_VAL
+ do i = 1, ATT1_VAL
tau_e(:) = factor_common(:,i,j,k,ispec)
Q_mu = scale_factor(i,j,k,ispec)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/initialize_simulation.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -58,7 +58,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
use mpi
@@ -77,7 +78,8 @@
NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION
+ MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ROCEAN,RMIDDLE_CRUST, &
RMOHO,R80,R220,R400,R600,R670,R771,RTOPDDOUBLEPRIME,RCMB,RICB, &
@@ -104,7 +106,6 @@
! mesh model parameters
logical TOPOGRAPHY,HONOR_1D_SPHERICAL_MOHO,ONE_CRUST
- !logical COMPUTE_AND_STORE_STRAIN
! for ellipticity
integer nspl
@@ -214,7 +215,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
endif
@@ -255,7 +257,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! get the base pathname for output files
call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', 'OUTPUT_FILES')
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -319,8 +319,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -360,8 +359,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -397,8 +395,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -431,8 +428,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core, &
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -615,8 +611,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -656,8 +651,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -693,8 +687,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -727,8 +720,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -348,8 +348,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -389,8 +388,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -426,8 +424,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -460,8 +457,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core, &
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -640,8 +636,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -681,8 +676,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,deltat,veloc_crust_mantle, &
alphaval,betaval,gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -718,8 +712,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -752,8 +745,7 @@
R_memory_inner_core,one_minus_sum_beta_inner_core,deltat,veloc_inner_core,&
alphaval,betaval,gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -328,8 +328,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_veloc_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -369,8 +368,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_displ_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
endif
@@ -407,8 +405,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -441,8 +438,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
endif
@@ -608,8 +604,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_veloc_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -649,8 +644,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_displ_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -686,8 +680,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -720,8 +713,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -359,8 +359,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_veloc_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -400,8 +399,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_displ_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
endif
@@ -438,8 +436,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -472,8 +469,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
endif
@@ -673,8 +669,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_veloc_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -714,8 +709,7 @@
ibool_crust_mantle,ispec_is_tiso_crust_mantle, &
b_R_memory_crust_mantle,one_minus_sum_beta_crust_mantle,b_deltat,b_displ_crust_mantle, &
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
- size(factor_common_crust_mantle,2), size(factor_common_crust_mantle,3), &
- size(factor_common_crust_mantle,4), size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_crust_mantle,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
@@ -751,8 +745,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
@@ -785,8 +778,7 @@
b_R_memory_inner_core,one_minus_sum_beta_inner_core,b_deltat,b_veloc_inner_core, &
b_alphaval,b_betaval,b_gammaval, &
factor_common_inner_core, &
- size(factor_common_inner_core,2), size(factor_common_inner_core,3), &
- size(factor_common_inner_core,4), size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
+ size(factor_common_inner_core,5),PARTIAL_PHYS_DISPERSION_ONLY,&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK)
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -559,10 +559,12 @@
integer myrank
! memory variables and standard linear solids for attenuation
- real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT4) :: one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
- real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT5) :: one_minus_sum_beta_inner_core, factor_scale_inner_core
- real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT4) :: factor_common_crust_mantle
- real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT5) :: factor_common_inner_core
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT4_VAL) :: &
+ one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT5_VAL) :: &
+ one_minus_sum_beta_inner_core, factor_scale_inner_core
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT4_VAL) :: factor_common_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT5_VAL) :: factor_common_inner_core
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPECMAX_ANISO_MANTLE) :: &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -635,8 +637,13 @@
do k=1,NGLLZ
do j=1,NGLLY
do i=1,NGLLX
- scale_factor = factor_scale_crust_mantle(i,j,k,ispec)
+ if(ATTENUATION_3D_VAL) then
+ scale_factor = factor_scale_crust_mantle(i,j,k,ispec)
+ else
+ scale_factor = factor_scale_crust_mantle(1,1,1,ispec)
+ endif
+
if(ANISOTROPIC_3D_MANTLE_VAL) then
scale_factor_minus_one = scale_factor - 1.d0
@@ -684,8 +691,13 @@
do k=1,NGLLZ
do j=1,NGLLY
do i=1,NGLLX
- scale_factor_minus_one = factor_scale_inner_core(i,j,k,ispec) - 1.0
+ if(ATTENUATION_3D_VAL) then
+ scale_factor_minus_one = factor_scale_inner_core(i,j,k,ispec) - 1.0
+ else
+ scale_factor_minus_one = factor_scale_inner_core(1,1,1,ispec) - 1.0
+ endif
+
if(ANISOTROPIC_INNER_CORE_VAL) then
mul = muvstore_inner_core(i,j,k,ispec)
c11store_inner_core(i,j,k,ispec) = c11store_inner_core(i,j,k,ispec) &
@@ -700,7 +712,11 @@
+ scale_factor_minus_one * mul
endif
- muvstore_inner_core(i,j,k,ispec) = muvstore_inner_core(i,j,k,ispec) * factor_scale_inner_core(i,j,k,ispec)
+ if(ATTENUATION_3D_VAL) then
+ muvstore_inner_core(i,j,k,ispec) = muvstore_inner_core(i,j,k,ispec) * factor_scale_inner_core(i,j,k,ispec)
+ else
+ muvstore_inner_core(i,j,k,ispec) = muvstore_inner_core(i,j,k,ispec) * factor_scale_inner_core(1,1,1,ispec)
+ endif
enddo
enddo
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/rules.mk
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/rules.mk 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/rules.mk 2013-07-07 16:59:31 UTC (rev 22528)
@@ -231,7 +231,7 @@
$O/define_derivation_matrices.o: ${SETUP}/constants.h $S/define_derivation_matrices.f90
${FCCOMPILE_CHECK} -c -o $O/define_derivation_matrices.o ${FCFLAGS_f90} $S/define_derivation_matrices.f90
-$O/get_attenuation.o: ${SETUP}/constants.h $S/get_attenuation.f90
+$O/get_attenuation.o: ${SETUP}/constants.h ${OUTPUT}/values_from_mesher.h $S/get_attenuation.f90
${FCCOMPILE_CHECK} -c -o $O/get_attenuation.o ${FCFLAGS_f90} $S/get_attenuation.f90
$O/get_backazimuth.o: ${SETUP}/constants.h $S/get_backazimuth.f90
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90 2013-07-06 23:10:12 UTC (rev 22527)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90 2013-07-07 16:59:31 UTC (rev 22528)
@@ -383,12 +383,14 @@
! Its second time derivative is called accel_outer_core.
! memory variables and standard linear solids for attenuation
- real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT4) :: one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
- real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT5) :: one_minus_sum_beta_inner_core, factor_scale_inner_core
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT4_VAL) :: &
+ one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT5_VAL) :: &
+ one_minus_sum_beta_inner_core, factor_scale_inner_core
real(kind=CUSTOM_REAL), dimension(N_SLS) :: alphaval, betaval, gammaval
- real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT4) :: factor_common_crust_mantle
- real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT5) :: factor_common_inner_core
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT4_VAL) :: factor_common_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT5_VAL) :: factor_common_inner_core
real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: R_memory_crust_mantle
real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc_crust_mantle
@@ -862,7 +864,8 @@
NTSTEP_BETWEEN_OUTPUT_SEISMOS,&
NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,SIMULATION_TYPE, &
- MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION
+ MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP,NOISE_TOMOGRAPHY,NT_DUMP_ATTENUATION, &
+ ATT1,ATT2,ATT3,ATT4,ATT5
double precision DT,ROCEAN,RMIDDLE_CRUST, &
RMOHO,R80,R220,R400,R600,R670,R771,RTOPDDOUBLEPRIME,RCMB,RICB, &
@@ -1072,7 +1075,8 @@
PARTIAL_PHYS_DISPERSION_ONLY,UNDO_ATTENUATION,NT_DUMP_ATTENUATION, &
USE_LDDRK,INCREASE_CFL_FOR_LDDRK,ANISOTROPIC_KL,SAVE_TRANSVERSE_KL,APPROXIMATE_HESS_KL, &
USE_FULL_TISO_MANTLE,SAVE_SOURCE_MASK,GPU_MODE,ADIOS_ENABLED,ADIOS_FOR_FORWARD_ARRAYS, &
- ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT)
+ ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
+ ATT1,ATT2,ATT3,ATT4,ATT5)
! to switch between simulation type 1 mode and simulation type 3 mode
! in exact undoing of attenuation
More information about the CIG-COMMITS
mailing list