[cig-commits] r20548 - in seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER: EXAMPLES/global_s362ani_small/DATA src/auxiliaries src/create_header_file src/cuda src/meshfem3D src/shared src/specfem3D
danielpeter at geodynamics.org
danielpeter at geodynamics.org
Fri Jul 27 07:58:30 PDT 2012
Author: danielpeter
Date: 2012-07-27 07:58:30 -0700 (Fri, 27 Jul 2012)
New Revision: 20548
Modified:
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/global_s362ani_small/DATA/Par_file
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/auxiliaries/create_movie_AVS_DX.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/create_header_file/create_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_coupling_cuda.cu
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/it_update_displacement_cuda.cu
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/specfem3D_gpu_cuda_method_stubs.c
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/assemble_MPI_central_cube_mesh.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_MPI_interfaces.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_chunk_buffers.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_mass_matrices.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_regions_mesh.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_par.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_MPI_interfaces.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_color_perm.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_inner_outer.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/test_MPI_interfaces.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/memory_eval.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/save_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_stacey_crust_mantle.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/initialize_simulation.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/prepare_timerun.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/read_topography_bathymetry.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D.F90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D_par.F90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_output.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_volume.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_seismograms.f90
Log:
cleans up header file and mesher variables; separates OCEANS and TOPOGRAPHY
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/global_s362ani_small/DATA/Par_file
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/global_s362ani_small/DATA/Par_file 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/global_s362ani_small/DATA/Par_file 2012-07-27 14:58:30 UTC (rev 20548)
@@ -35,12 +35,12 @@
MODEL = s362ani
# parameters describing the Earth model
-OCEANS = .true.
-ELLIPTICITY = .true.
-TOPOGRAPHY = .true.
-GRAVITY = .true.
-ROTATION = .true.
-ATTENUATION = .true.
+OCEANS = .false.
+ELLIPTICITY = .false.
+TOPOGRAPHY = .false.
+GRAVITY = .false.
+ROTATION = .false.
+ATTENUATION = .false.
ATTENUATION_NEW = .false.
# absorbing boundary conditions for a regional simulation
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/auxiliaries/create_movie_AVS_DX.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/auxiliaries/create_movie_AVS_DX.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/auxiliaries/create_movie_AVS_DX.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -848,8 +848,7 @@
! this for all the regions
integer, dimension(MAX_NUM_REGIONS) :: NSPEC, &
- NSPEC2D_XI, &
- NSPEC2D_ETA, &
+ NSPEC2D_XI,NSPEC2D_ETA, &
NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
NSPEC2D_BOTTOM,NSPEC2D_TOP, &
NSPEC1D_RADIAL,NGLOB1D_RADIAL, &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/create_header_file/create_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/create_header_file/create_header_file.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/create_header_file/create_header_file.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -101,7 +101,6 @@
integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
integer, dimension(NB_SQUARE_EDGES_ONEDIR,NB_CUT_CASE) :: DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA
integer, dimension(MAX_NUM_REGIONS,NB_SQUARE_CORNERS) :: NGLOB1D_RADIAL_CORNER
- integer, dimension(MAX_NUM_REGIONS) :: NGLOB1D_RADIAL_TEMP
! ************** PROGRAM STARTS HERE **************
@@ -176,18 +175,17 @@
NSPEC2D_BOTTOM,NSPEC2D_TOP, &
static_memory_size)
- NGLOB1D_RADIAL_TEMP(:) = &
- (/maxval(NGLOB1D_RADIAL_CORNER(1,:)),maxval(NGLOB1D_RADIAL_CORNER(2,:)),maxval(NGLOB1D_RADIAL_CORNER(3,:))/)
! create include file for the solver
call save_header_file(NSPEC,nglob,NEX_XI,NEX_ETA,NPROC,NPROCTOT, &
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
- ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
+ ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY, &
+ OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,NCHUNKS, &
INCLUDE_CENTRAL_CUBE,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,NSOURCES,NSTEP,&
- static_memory_size,NGLOB1D_RADIAL_TEMP,&
- NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NSPEC2D_TOP,NSPEC2D_BOTTOM, &
+ static_memory_size, &
+ NSPEC2D_TOP,NSPEC2D_BOTTOM, &
NSPEC2DMAX_YMIN_YMAX,NSPEC2DMAX_XMIN_XMAX, &
NPROC_XI,NPROC_ETA, &
NSPECMAX_ANISO_IC,NSPECMAX_ISO_MANTLE,NSPECMAX_TISO_MANTLE, &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_coupling_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_coupling_cuda.cu 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_coupling_cuda.cu 2012-07-27 14:58:30 UTC (rev 20548)
@@ -610,8 +610,8 @@
// we divide by rmass() which is 1 / M
// we use the total force which includes the Coriolis term above
force_normal_comp = accel_crust_mantle[iglob*3]*nx / rmassx_crust_mantle[iglob]
- + accel_crust_mantle[iglob*3+1]*ny / rmassy_crust_mantle[iglob]
- + accel_crust_mantle[iglob*3+2]*nz / rmassz_crust_mantle[iglob];
+ + accel_crust_mantle[iglob*3+1]*ny / rmassy_crust_mantle[iglob]
+ + accel_crust_mantle[iglob*3+2]*nz / rmassz_crust_mantle[iglob];
additional_term_x = (rmass_ocean_load[iglob] - rmassx_crust_mantle[iglob]) * force_normal_comp;
additional_term_y = (rmass_ocean_load[iglob] - rmassy_crust_mantle[iglob]) * force_normal_comp;
@@ -630,7 +630,7 @@
extern "C"
void FC_FUNC_(compute_coupling_ocean_cuda,
COMPUTE_COUPLING_OCEAN_CUDA)(long* Mesh_pointer_f,
- int* NCHUNKS_VAL) {
+ int* NCHUNKS_VAL) {
TRACE("compute_coupling_ocean_cuda");
@@ -656,61 +656,61 @@
if( *NCHUNKS_VAL != 6 && mp->absorbing_conditions){
compute_coupling_ocean_cuda_kernel<<<grid,threads>>>(mp->d_accel_crust_mantle,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmass_ocean_load,
- mp->d_normal_top_crust_mantle,
- mp->d_ibool_crust_mantle,
- mp->d_ibelm_top_crust_mantle,
- mp->d_updated_dof_ocean_load,
- mp->nspec2D_top_crust_mantle);
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmass_ocean_load,
+ mp->d_normal_top_crust_mantle,
+ mp->d_ibool_crust_mantle,
+ mp->d_ibelm_top_crust_mantle,
+ mp->d_updated_dof_ocean_load,
+ mp->nspec2D_top_crust_mantle);
// for backward/reconstructed potentials
if( mp->simulation_type == 3 ) {
// re-initializes array
print_CUDA_error_if_any(cudaMemset(mp->d_updated_dof_ocean_load,0,
- sizeof(int)*mp->NGLOB_CRUST_MANTLE_OCEANS),88502);
+ sizeof(int)*mp->NGLOB_CRUST_MANTLE_OCEANS),88502);
compute_coupling_ocean_cuda_kernel<<<grid,threads>>>(mp->d_b_accel_crust_mantle,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmass_ocean_load,
- mp->d_normal_top_crust_mantle,
- mp->d_ibool_crust_mantle,
- mp->d_ibelm_top_crust_mantle,
- mp->d_updated_dof_ocean_load,
- mp->nspec2D_top_crust_mantle);
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmass_ocean_load,
+ mp->d_normal_top_crust_mantle,
+ mp->d_ibool_crust_mantle,
+ mp->d_ibelm_top_crust_mantle,
+ mp->d_updated_dof_ocean_load,
+ mp->nspec2D_top_crust_mantle);
}
}else{
compute_coupling_ocean_cuda_kernel<<<grid,threads>>>(mp->d_accel_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmass_ocean_load,
- mp->d_normal_top_crust_mantle,
- mp->d_ibool_crust_mantle,
- mp->d_ibelm_top_crust_mantle,
- mp->d_updated_dof_ocean_load,
- mp->nspec2D_top_crust_mantle);
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmass_ocean_load,
+ mp->d_normal_top_crust_mantle,
+ mp->d_ibool_crust_mantle,
+ mp->d_ibelm_top_crust_mantle,
+ mp->d_updated_dof_ocean_load,
+ mp->nspec2D_top_crust_mantle);
// for backward/reconstructed potentials
if( mp->simulation_type == 3 ) {
// re-initializes array
print_CUDA_error_if_any(cudaMemset(mp->d_updated_dof_ocean_load,0,
- sizeof(int)*mp->NGLOB_CRUST_MANTLE_OCEANS),88502);
+ sizeof(int)*mp->NGLOB_CRUST_MANTLE_OCEANS),88502);
compute_coupling_ocean_cuda_kernel<<<grid,threads>>>(mp->d_b_accel_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmass_ocean_load,
- mp->d_normal_top_crust_mantle,
- mp->d_ibool_crust_mantle,
- mp->d_ibelm_top_crust_mantle,
- mp->d_updated_dof_ocean_load,
- mp->nspec2D_top_crust_mantle);
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmass_ocean_load,
+ mp->d_normal_top_crust_mantle,
+ mp->d_ibool_crust_mantle,
+ mp->d_ibelm_top_crust_mantle,
+ mp->d_updated_dof_ocean_load,
+ mp->nspec2D_top_crust_mantle);
}
}
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/it_update_displacement_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/it_update_displacement_cuda.cu 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/it_update_displacement_cuda.cu 2012-07-27 14:58:30 UTC (rev 20548)
@@ -388,39 +388,39 @@
if( *NCHUNKS_VAL != 6 && mp->absorbing_conditions){
kernel_3_cuda_device<<< grid, threads>>>(mp->d_veloc_crust_mantle,
- mp->d_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- deltatover2,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ mp->d_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ deltatover2,
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle);
if(SIMULATION_TYPE == 3){
- kernel_3_cuda_device<<< grid, threads>>>(mp->d_b_veloc_crust_mantle,
- mp->d_b_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- b_deltatover2,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ kernel_3_cuda_device<<< grid, threads>>>(mp->d_b_veloc_crust_mantle,
+ mp->d_b_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ b_deltatover2,
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle);
}
}else{
kernel_3_cuda_device<<< grid, threads>>>(mp->d_veloc_crust_mantle,
- mp->d_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- deltatover2,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ mp->d_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ deltatover2,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle);
if(SIMULATION_TYPE == 3){
- kernel_3_cuda_device<<< grid, threads>>>(mp->d_b_veloc_crust_mantle,
- mp->d_b_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- b_deltatover2,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ kernel_3_cuda_device<<< grid, threads>>>(mp->d_b_veloc_crust_mantle,
+ mp->d_b_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ b_deltatover2,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle);
}
}
@@ -429,31 +429,31 @@
if( *NCHUNKS_VAL != 6 && mp->absorbing_conditions){
kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ mp->NGLOB_CRUST_MANTLE,
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle);
if(SIMULATION_TYPE == 3) {
- kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_b_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- mp->d_rmassx_crust_mantle,
- mp->d_rmassy_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_b_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ mp->d_rmassx_crust_mantle,
+ mp->d_rmassy_crust_mantle,
+ mp->d_rmassz_crust_mantle);
}
}else{
kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ mp->NGLOB_CRUST_MANTLE,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle);
if(SIMULATION_TYPE == 3) {
- kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_b_accel_crust_mantle,
- mp->NGLOB_CRUST_MANTLE,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle,
- mp->d_rmassz_crust_mantle);
+ kernel_3_accel_cuda_device<<< grid, threads>>>(mp->d_b_accel_crust_mantle,
+ mp->NGLOB_CRUST_MANTLE,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle,
+ mp->d_rmassz_crust_mantle);
}
}
}
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/specfem3D_gpu_cuda_method_stubs.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/specfem3D_gpu_cuda_method_stubs.c 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/specfem3D_gpu_cuda_method_stubs.c 2012-07-27 14:58:30 UTC (rev 20548)
@@ -174,7 +174,7 @@
void FC_FUNC_(compute_coupling_ocean_cuda,
COMPUTE_COUPLING_OCEAN_CUDA)(long* Mesh_pointer_f,
- int* NCHUNKS_VAL) {}
+ int* NCHUNKS_VAL) {}
//
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/assemble_MPI_central_cube_mesh.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/assemble_MPI_central_cube_mesh.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/assemble_MPI_central_cube_mesh.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -178,7 +178,11 @@
do ipoin = 1,npoin2D_cube_from_slices
if(NPROC_XI==1) then
if(ibool_central_cube(imsg,ipoin) > 0 ) then
- array_central_cube(ibool_central_cube(imsg,ipoin)) = buffer_all_cube_from_slices(imsg,ipoin,idimension)
+ if(CUSTOM_REAL == SIZE_REAL) then
+ array_central_cube(ibool_central_cube(imsg,ipoin)) = sngl(buffer_all_cube_from_slices(imsg,ipoin,idimension))
+ else
+ array_central_cube(ibool_central_cube(imsg,ipoin)) = buffer_all_cube_from_slices(imsg,ipoin,idimension)
+ endif
endif
else
if(CUSTOM_REAL == SIZE_REAL) then
@@ -196,9 +200,15 @@
if(NPROC_XI==1) then
if( ibool_central_cube(nb_msgs_theor_in_cube,ipoin) > 0 ) then
if (.not. mask(ibool_central_cube(nb_msgs_theor_in_cube,ipoin))) then
- array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = &
- array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
- buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension)
+ if(CUSTOM_REAL == SIZE_REAL) then
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = &
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
+ sngl(buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension))
+ else
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = &
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
+ buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension)
+ endif
endif
mask(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = .true.
endif
@@ -206,12 +216,12 @@
if (.not. mask(ibool_central_cube(nb_msgs_theor_in_cube,ipoin))) then
if(CUSTOM_REAL == SIZE_REAL) then
array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = &
- array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
- sngl(buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension))
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
+ sngl(buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension))
else
array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = &
- array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
- buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension)
+ array_central_cube(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) + &
+ buffer_all_cube_from_slices(nb_msgs_theor_in_cube,ipoin,idimension)
endif
endif
mask(ibool_central_cube(nb_msgs_theor_in_cube,ipoin)) = .true.
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_MPI_interfaces.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_MPI_interfaces.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_MPI_interfaces.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -31,7 +31,7 @@
implicit none
integer,intent(in):: iregion_code
-
+
! sets up arrays
call cmi_allocate_addressing(iregion_code)
@@ -56,8 +56,8 @@
NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX, &
NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
NSPEC2D_BOTTOM,NSPEC2D_TOP,NSPEC,NGLOB, &
- NCHUNKS,myrank,NGLOB1D_RADIAL,NUMCORNERS_SHARED,NPROC_XI,NGLLX,NGLLY,NGLLZ,LOCAL_PATH
-
+ NCHUNKS,myrank,NGLOB1D_RADIAL,NUMCORNERS_SHARED,NPROC_XI,NGLLX,NGLLY,NGLLZ
+
use create_MPI_interfaces_par
use MPI_crust_mantle_par
use MPI_outer_core_par
@@ -65,7 +65,7 @@
implicit none
integer,intent(in):: iregion_code
-
+
! local parameters
integer :: NUM_FACES,NPROC_ONE_DIRECTION
integer :: ier
@@ -108,13 +108,13 @@
NSPEC_CRUST_MANTLE = 0
NGLOB_CRUST_MANTLE = 0
-
+
NSPEC_OUTER_CORE = 0
NGLOB_OUTER_CORE = 0
NSPEC_INNER_CORE = 0
NGLOB_INNER_CORE = 0
-
+
select case( iregion_code )
case( IREGION_CRUST_MANTLE )
NGLOB2DMAX_XMIN_XMAX_CM = NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE)
@@ -152,10 +152,10 @@
NSPEC_INNER_CORE = NSPEC(IREGION_INNER_CORE)
NGLOB_INNER_CORE = NGLOB(IREGION_INNER_CORE)
- case default
+ case default
stop 'error iregion_code value not recognized'
end select
-
+
! allocates arrays
allocate(iprocfrom_faces(NUMMSGS_FACES), &
iprocto_faces(NUMMSGS_FACES), &
@@ -167,7 +167,7 @@
iproc_worker1_corners(NCORNERSCHUNKS), &
iproc_worker2_corners(NCORNERSCHUNKS),stat=ier)
if( ier /= 0 ) call exit_mpi(myrank,'error allocating iproc corner arrays')
-
+
allocate(buffer_send_chunkcorn_scalar(NGLOB1D_RADIAL_CM), &
buffer_recv_chunkcorn_scalar(NGLOB1D_RADIAL_CM))
@@ -175,7 +175,7 @@
buffer_recv_chunkcorn_vector(NDIM,NGLOB1D_RADIAL_CM + NGLOB1D_RADIAL_IC))
select case( iregion_code )
- case( IREGION_CRUST_MANTLE )
+ case( IREGION_CRUST_MANTLE )
! crust mantle
allocate(iboolcorner_crust_mantle(NGLOB1D_RADIAL_CM,NUMCORNERS_SHARED))
allocate(iboolleft_xi_crust_mantle(NGLOB2DMAX_XMIN_XMAX_CM), &
@@ -267,7 +267,7 @@
use meshfem3D_par,only: &
myrank,LOCAL_PATH
-
+
use create_MPI_interfaces_par
use MPI_crust_mantle_par
use MPI_outer_core_par
@@ -275,10 +275,10 @@
implicit none
integer,intent(in):: iregion_code
-
+
! read coordinates of the mesh
select case( iregion_code )
- case( IREGION_CRUST_MANTLE )
+ case( IREGION_CRUST_MANTLE )
! crust mantle
ibool_crust_mantle(:,:,:,:) = -1
call cmi_read_solver_data(myrank,IREGION_CRUST_MANTLE, &
@@ -340,15 +340,15 @@
NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
NPROCTOT,NPROC_XI,NPROC_ETA,LOCAL_PATH,NCHUNKS,OUTPUT_FILES,IIN,INCLUDE_CENTRAL_CUBE, &
iproc_xi,iproc_eta,ichunk,addressing
-
+
use create_MPI_interfaces_par
use MPI_crust_mantle_par
use MPI_outer_core_par
- use MPI_inner_core_par
+ use MPI_inner_core_par
implicit none
integer,intent(in):: iregion_code
-
+
! local parameters
integer :: ier
integer njunk1,njunk2
@@ -369,7 +369,7 @@
! initializes
npoin2D_xi_crust_mantle(:) = 0
npoin2D_eta_crust_mantle(:) = 0
-
+
call read_arrays_buffers_mesher(IREGION_CRUST_MANTLE,myrank,iboolleft_xi_crust_mantle, &
iboolright_xi_crust_mantle,iboolleft_eta_crust_mantle,iboolright_eta_crust_mantle, &
npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
@@ -414,10 +414,10 @@
if(myrank == 0) then
write(IMAIN,*)
write(IMAIN,*) 'outer core region:'
- endif
+ endif
npoin2D_xi_outer_core(:) = 0
npoin2D_eta_outer_core(:) = 0
-
+
call read_arrays_buffers_mesher(IREGION_OUTER_CORE,myrank, &
iboolleft_xi_outer_core,iboolright_xi_outer_core,iboolleft_eta_outer_core,iboolright_eta_outer_core, &
npoin2D_xi_outer_core,npoin2D_eta_outer_core, &
@@ -462,7 +462,7 @@
write(IMAIN,*) 'inner core region:'
endif
npoin2D_xi_inner_core(:) = 0
- npoin2D_eta_inner_core(:) = 0
+ npoin2D_eta_inner_core(:) = 0
call read_arrays_buffers_mesher(IREGION_INNER_CORE,myrank, &
iboolleft_xi_inner_core,iboolright_xi_inner_core,iboolleft_eta_inner_core,iboolright_eta_inner_core, &
npoin2D_xi_inner_core,npoin2D_eta_inner_core, &
@@ -596,8 +596,8 @@
maxval(npoin2D_eta_inner_core(:)))
end select
-
+
end subroutine cmi_read_buffers
!
@@ -609,16 +609,16 @@
use meshfem3D_par,only: &
myrank,LOCAL_PATH
-
+
use create_MPI_interfaces_par
use MPI_crust_mantle_par
use MPI_outer_core_par
use MPI_inner_core_par
-
+
implicit none
integer,intent(in):: iregion_code
-
+
select case( iregion_code )
case( IREGION_CRUST_MANTLE )
! crust mantle
@@ -669,11 +669,11 @@
use create_MPI_interfaces_par
use MPI_crust_mantle_par
use MPI_outer_core_par
- use MPI_inner_core_par
+ use MPI_inner_core_par
implicit none
integer,intent(in):: iregion_code
-
+
! free memory
deallocate(iprocfrom_faces,iprocto_faces,imsg_type)
deallocate(iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners)
@@ -697,7 +697,7 @@
deallocate(idoubling_crust_mantle,ibool_crust_mantle)
deallocate(is_on_a_slice_edge_crust_mantle)
-
+
case( IREGION_OUTER_CORE )
! outer core
deallocate(iboolcorner_outer_core)
@@ -714,7 +714,7 @@
deallocate(idoubling_outer_core,ibool_outer_core)
deallocate(is_on_a_slice_edge_outer_core)
-
+
case( IREGION_INNER_CORE )
! inner core
deallocate(ibelm_xmin_inner_core, &
@@ -738,9 +738,9 @@
deallocate(num_elem_colors_inner_core)
deallocate(is_on_a_slice_edge_inner_core)
-
+
end select
-
+
end subroutine cmi_free_MPI_arrays
!
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_chunk_buffers.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_chunk_buffers.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_chunk_buffers.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -63,7 +63,7 @@
integer NGLOB1D_RADIAL_MAX
integer, dimension(MAX_NUM_REGIONS,NB_SQUARE_CORNERS) :: NGLOB1D_RADIAL_CORNER
-
+
integer NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX
integer myrank
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_mass_matrices.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_mass_matrices.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_mass_matrices.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -141,7 +141,11 @@
rmassz(:) = 0._CUSTOM_REAL
! use the non-dimensional time step to make the mass matrix correction
- deltat = DT*dsqrt(PI*GRAV*RHOAV)
+ if(CUSTOM_REAL == SIZE_REAL) then
+ deltat = sngl(DT*dsqrt(PI*GRAV*RHOAV))
+ else
+ deltat = DT*dsqrt(PI*GRAV*RHOAV)
+ endif
! distinguish between single and double precision for reals
if(CUSTOM_REAL == SIZE_REAL) then
@@ -288,10 +292,12 @@
! get geographic latitude and longitude in degrees
lat = 90.0d0 - colat*180.0d0/PI
lon = phival*180.0d0/PI
- elevation = 0.d0
! compute elevation at current point
- call get_topo_bathy(lat,lon,elevation,ibathy_topo)
+ elevation = 0.d0
+ if( TOPOGRAPHY ) then
+ call get_topo_bathy(lat,lon,elevation,ibathy_topo)
+ endif
! non-dimensionalize the elevation, which is in meters
! and suppress positive elevation, which means no oceans
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_regions_mesh.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_regions_mesh.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/create_regions_mesh.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -45,23 +45,15 @@
myrank,LOCAL_PATH, &
IREGION_CRUST_MANTLE,IREGION_OUTER_CORE,IREGION_INNER_CORE,IFLAG_IN_FICTITIOUS_CUBE, &
NPROC,NPROCTOT,NPROC_XI,NPROC_ETA,NCHUNKS, &
- SAVE_MESH_FILES,INCLUDE_CENTRAL_CUBE,ABSORBING_CONDITIONS, &
- R_CENTRAL_CUBE,RICB,RHO_OCEANS,RCMB,R670,RMOHO,RMOHO_FICTITIOUS_IN_MESHER,&
- RTOPDDOUBLEPRIME,R600,R220,R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN, &
+ SAVE_MESH_FILES,ABSORBING_CONDITIONS, &
+ R_CENTRAL_CUBE,RICB,RHO_OCEANS,RCMB, &
MAX_NUMBER_OF_MESH_LAYERS,MAX_NUM_REGIONS,NB_SQUARE_EDGES_ONEDIR,NB_SQUARE_CORNERS, &
- rmins,rmaxs,iproc_xi,iproc_eta,ichunk,NEX_XI, &
- rotation_matrix,ANGULAR_WIDTH_XI_RAD,ANGULAR_WIDTH_ETA_RAD, &
- ratio_sampling_array,doubling_index,this_region_has_a_doubling, &
- ratio_divide_central_cube,CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA, &
- NSPEC1D_RADIAL_CORNER,NGLOB1D_RADIAL_CORNER, &
- ner,r_bottom,r_top
+ NGLOB1D_RADIAL_CORNER
use meshfem3D_models_par,only: &
ATTENUATION,ANISOTROPIC_INNER_CORE,ANISOTROPIC_3D_MANTLE, &
- SAVE_BOUNDARY_MESH,ONE_CRUST,CASE_3D,SUPPRESS_CRUSTAL_MESH,REGIONAL_MOHO_MESH, &
- OCEANS,TRANSVERSE_ISOTROPY,HETEROGEN_3D_MANTLE,HONOR_1D_SPHERICAL_MOHO, &
- ELLIPTICITY,ISOTROPIC_3D_MANTLE, &
- AM_V,nspl,rspl,espl,espl2
+ SAVE_BOUNDARY_MESH,SUPPRESS_CRUSTAL_MESH,REGIONAL_MOHO_MESH, &
+ OCEANS,TRANSVERSE_ISOTROPY,HETEROGEN_3D_MANTLE
use create_regions_mesh_par
use create_regions_mesh_par2
@@ -182,7 +174,7 @@
deallocate(nimin,nimax,njmin,njmax,nkmin_xi,nkmin_eta)
endif
-
+
! only create mass matrix and save all the final arrays in the second pass
case( 2 )
! precomputes jacobian for 2d absorbing boundary surfaces
@@ -340,7 +332,7 @@
call sync_all()
if( myrank == 0) then
write(IMAIN,*) ' ...preparing MPI interfaces'
- endif
+ endif
call create_MPI_interfaces(iregion_code)
! sets up inner/outer element arrays
@@ -349,7 +341,7 @@
write(IMAIN,*) ' ...element inner/outer separation '
endif
call setup_inner_outer(iregion_code)
-
+
! sets up mesh coloring
call sync_all()
if( myrank == 0) then
@@ -429,7 +421,7 @@
deallocate(rho_vp,rho_vs)
deallocate(Qmu_store)
deallocate(tau_e_store)
-
+
deallocate(ibelm_moho_top,ibelm_moho_bot)
deallocate(ibelm_400_top,ibelm_400_bot)
deallocate(ibelm_670_top,ibelm_670_bot)
@@ -451,7 +443,7 @@
ipass)
use meshfem3D_par,only: &
- myrank,NGLLX,NGLLY,NGLLZ,NDIM, &
+ NGLLX,NGLLY,NGLLZ,NDIM, &
IREGION_CRUST_MANTLE,IREGION_OUTER_CORE,IREGION_INNER_CORE, &
NCHUNKS
@@ -589,7 +581,7 @@
nkmin_eta(2,NSPEC2DMAX_YMIN_YMAX),stat=ier)
if(ier /= 0) stop 'error in allocate 14'
endif
-
+
! MPI cut-planes parameters along xi and along eta
allocate(iMPIcut_xi(2,nspec), &
iMPIcut_eta(2,nspec),stat=ier)
@@ -752,12 +744,11 @@
! creates the different regions of the mesh
use meshfem3D_par,only: &
- IMAIN,volume_total,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice, &
- myrank,LOCAL_PATH, &
+ IMAIN,myrank, &
IREGION_CRUST_MANTLE,IREGION_OUTER_CORE,IREGION_INNER_CORE,IFLAG_IN_FICTITIOUS_CUBE, &
- NPROC,NPROCTOT,NPROC_XI,NPROC_ETA,NCHUNKS, &
- SAVE_MESH_FILES,INCLUDE_CENTRAL_CUBE,ABSORBING_CONDITIONS, &
- R_CENTRAL_CUBE,RICB,RHO_OCEANS,RCMB,R670,RMOHO,RMOHO_FICTITIOUS_IN_MESHER,&
+ NPROC_XI,NPROC_ETA,NCHUNKS, &
+ INCLUDE_CENTRAL_CUBE,ABSORBING_CONDITIONS, &
+ R_CENTRAL_CUBE,RICB,RCMB,R670,RMOHO,RMOHO_FICTITIOUS_IN_MESHER,&
RTOPDDOUBLEPRIME,R600,R220,R771,R400,R120,R80,RMIDDLE_CRUST,ROCEAN, &
MAX_NUMBER_OF_MESH_LAYERS,MAX_NUM_REGIONS,NB_SQUARE_EDGES_ONEDIR,NB_SQUARE_CORNERS, &
rmins,rmaxs,iproc_xi,iproc_eta,ichunk,NEX_XI, &
@@ -767,11 +758,8 @@
ner,r_top,r_bottom
use meshfem3D_models_par,only: &
- ATTENUATION,ANISOTROPIC_INNER_CORE,ANISOTROPIC_3D_MANTLE, &
- SAVE_BOUNDARY_MESH,ONE_CRUST,CASE_3D,SUPPRESS_CRUSTAL_MESH,REGIONAL_MOHO_MESH, &
- OCEANS,TRANSVERSE_ISOTROPY,HETEROGEN_3D_MANTLE,HONOR_1D_SPHERICAL_MOHO, &
- ELLIPTICITY,ISOTROPIC_3D_MANTLE, &
- AM_V,nspl,rspl,espl,espl2
+ SAVE_BOUNDARY_MESH,SUPPRESS_CRUSTAL_MESH,REGIONAL_MOHO_MESH, &
+ TRANSVERSE_ISOTROPY
use create_regions_mesh_par
use create_regions_mesh_par2
@@ -933,7 +921,7 @@
deallocate(stretch_tab)
deallocate(perm_layer)
deallocate(jacobian2D_moho,jacobian2D_400,jacobian2D_670)
-
+
if(myrank == 0 ) write(IMAIN,*)
! define central cube in inner core
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -119,18 +119,16 @@
NSPEC2D_BOTTOM,NSPEC2D_TOP, &
static_memory_size)
- NGLOB1D_RADIAL_TEMP(:) = &
- (/maxval(NGLOB1D_RADIAL_CORNER(1,:)),maxval(NGLOB1D_RADIAL_CORNER(2,:)),maxval(NGLOB1D_RADIAL_CORNER(3,:))/)
-
! create include file for the solver
call save_header_file(NSPEC,nglob,NEX_XI,NEX_ETA,NPROC,NPROCTOT, &
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
- ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
+ ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY, &
+ OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,NCHUNKS, &
INCLUDE_CENTRAL_CUBE,CENTER_LONGITUDE_IN_DEGREES,&
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,NSOURCES,NSTEP, &
- static_memory_size,NGLOB1D_RADIAL_TEMP, &
- NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NSPEC2D_TOP,NSPEC2D_BOTTOM, &
+ static_memory_size, &
+ NSPEC2D_TOP,NSPEC2D_BOTTOM, &
NSPEC2DMAX_YMIN_YMAX,NSPEC2DMAX_XMIN_XMAX, &
NPROC_XI,NPROC_ETA, &
NSPECMAX_ANISO_IC,NSPECMAX_ISO_MANTLE,NSPECMAX_TISO_MANTLE, &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -148,7 +148,7 @@
endif
! read topography and bathymetry file
- if(TOPOGRAPHY .or. OCEANS) &
+ if(TOPOGRAPHY) &
call model_topo_bathy_broadcast(myrank,ibathy_topo,LOCAL_PATH)
! re-defines/initializes models 1066a and ak135 and ref
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_par.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_par.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_par.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -562,7 +562,7 @@
integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
integer, dimension(NB_SQUARE_EDGES_ONEDIR,NB_CUT_CASE) :: DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA
logical :: CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA
- integer, dimension(MAX_NUM_REGIONS) :: NGLOB1D_RADIAL_TEMP
+! integer, dimension(MAX_NUM_REGIONS) :: NGLOB1D_RADIAL_TEMP
end module meshfem3D_par
@@ -708,7 +708,7 @@
IREGION_CRUST_MANTLE,IREGION_OUTER_CORE,IREGION_INNER_CORE
implicit none
-
+
! indirect addressing for each message for faces and corners of the chunks
! a given slice can belong to at most one corner and at most two faces
integer :: NGLOB2DMAX_XY
@@ -747,7 +747,7 @@
! size of buffers is the sum of two sizes because we handle two regions in the same MPI call
real(kind=CUSTOM_REAL), dimension(:,:),allocatable :: &
buffer_send_chunkcorn_vector,buffer_recv_chunkcorn_vector
-
+
end module create_MPI_interfaces_par
!
@@ -757,9 +757,9 @@
module MPI_crust_mantle_par
use constants,only: CUSTOM_REAL,NUMFACES_SHARED,NB_SQUARE_EDGES_ONEDIR
-
+
implicit none
-
+
! collected MPI interfaces
!--------------------------------------
! MPI crust/mantle mesh
@@ -826,9 +826,9 @@
module MPI_inner_core_par
use constants,only: CUSTOM_REAL,NUMFACES_SHARED,NB_SQUARE_EDGES_ONEDIR
-
+
implicit none
-
+
!--------------------------------------
! MPI inner core mesh
!--------------------------------------
@@ -909,9 +909,9 @@
module MPI_outer_core_par
use constants,only: CUSTOM_REAL,NUMFACES_SHARED,NB_SQUARE_EDGES_ONEDIR
-
+
implicit none
-
+
!--------------------------------------
! MPI outer core mesh
!--------------------------------------
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_MPI_interfaces.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_MPI_interfaces.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_MPI_interfaces.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -30,14 +30,14 @@
use meshfem3D_par,only: &
INCLUDE_CENTRAL_CUBE,myrank,NUMFACES_SHARED
-
+
use create_MPI_interfaces_par
use MPI_inner_core_par,only: &
non_zero_nb_msgs_theor_in_cube,npoin2D_cube_from_slices
implicit none
integer,intent(in):: iregion_code
-
+
! local parameters
! assigns initial maximum arrays
! for global slices, maximum number of neighbor is around 17 ( 8 horizontal, max of 8 on bottom )
@@ -64,22 +64,22 @@
! sets up MPI interfaces between different processes
select case( iregion_code )
- case( IREGION_CRUST_MANTLE )
+ case( IREGION_CRUST_MANTLE )
! crust/mantle
call setup_MPI_interfaces_cm(MAX_NEIGHBOURS,my_neighbours,nibool_neighbours, &
max_nibool,ibool_neighbours)
- case( IREGION_OUTER_CORE )
+ case( IREGION_OUTER_CORE )
! outer core
call setup_MPI_interfaces_oc(MAX_NEIGHBOURS,my_neighbours,nibool_neighbours, &
max_nibool,ibool_neighbours)
- case( IREGION_INNER_CORE )
+ case( IREGION_INNER_CORE )
! inner core
call setup_MPI_interfaces_ic(MAX_NEIGHBOURS,my_neighbours,nibool_neighbours, &
max_nibool,ibool_neighbours)
end select
-
+
! frees temporary array
deallocate(ibool_neighbours)
deallocate(my_neighbours,nibool_neighbours)
@@ -101,9 +101,9 @@
NPROC_XI,NPROC_ETA,NPROCTOT, &
NGLOB1D_RADIAL,NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NCHUNKS, &
OUTPUT_FILES
-
+
use create_MPI_interfaces_par
- use MPI_crust_mantle_par
+ use MPI_crust_mantle_par
implicit none
integer :: MAX_NEIGHBOURS,max_nibool
@@ -237,7 +237,7 @@
NPROC_XI,NPROC_ETA,NPROCTOT, &
NGLOB1D_RADIAL,NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NCHUNKS, &
OUTPUT_FILES
-
+
use create_MPI_interfaces_par
use MPI_outer_core_par
implicit none
@@ -375,9 +375,9 @@
NPROC_XI,NPROC_ETA,NPROCTOT, &
NGLOB1D_RADIAL,NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NCHUNKS, &
OUTPUT_FILES,IFLAG_IN_FICTITIOUS_CUBE,NGLLX,NGLLY,NGLLZ,NSPEC2D_BOTTOM
-
+
use create_MPI_interfaces_par
- use MPI_inner_core_par
+ use MPI_inner_core_par
implicit none
integer :: MAX_NEIGHBOURS,max_nibool
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_color_perm.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_color_perm.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_color_perm.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -40,7 +40,7 @@
implicit none
integer,intent(in) :: iregion_code
-
+
! local parameters
integer, dimension(:), allocatable :: perm
integer :: ier
@@ -216,7 +216,7 @@
endif
end select
-
+
end subroutine setup_color_perm
!
@@ -236,14 +236,14 @@
use MPI_crust_mantle_par,only: &
num_colors_outer_crust_mantle,num_colors_inner_crust_mantle,num_elem_colors_crust_mantle, &
xstore => xstore_crust_mantle,ystore => ystore_crust_mantle,zstore => zstore_crust_mantle
-
+
use MPI_outer_core_par,only: &
num_colors_outer_outer_core,num_colors_inner_outer_core,num_elem_colors_outer_core
-
+
use MPI_inner_core_par,only: &
num_colors_outer_inner_core,num_colors_inner_inner_core,num_elem_colors_inner_core, &
- idoubling_inner_core
-
+ idoubling_inner_core
+
implicit none
integer :: myrank,nspec,nglob
@@ -575,10 +575,10 @@
use MPI_crust_mantle_par,only: &
NSPEC_CRUST_MANTLE,ibool_crust_mantle,is_on_a_slice_edge_crust_mantle, &
xstore => xstore_crust_mantle,ystore => ystore_crust_mantle,zstore => zstore_crust_mantle
-
+
use MPI_outer_core_par,only: &
NSPEC_OUTER_CORE,ibool_outer_core,is_on_a_slice_edge_outer_core
-
+
use MPI_inner_core_par,only: &
NSPEC_INNER_CORE,ibool_inner_core,is_on_a_slice_edge_inner_core
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_inner_outer.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_inner_outer.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/setup_inner_outer.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -31,13 +31,13 @@
use meshfem3D_par,only: &
myrank,OUTPUT_FILES,IMAIN, &
IREGION_CRUST_MANTLE,IREGION_OUTER_CORE,IREGION_INNER_CORE
-
+
use MPI_crust_mantle_par
use MPI_outer_core_par
use MPI_inner_core_par
-
+
implicit none
-
+
integer,intent(in) :: iregion_code
! local parameters
@@ -76,7 +76,7 @@
phase_ispec_inner_crust_mantle(iinner,2) = ispec
endif
enddo
-
+
! user output
if(myrank == 0) then
write(IMAIN,*)
@@ -163,7 +163,7 @@
phase_ispec_inner_inner_core(iinner,2) = ispec
endif
enddo
-
+
! user output
if(myrank == 0) then
percentage_edge = 100. * nspec_outer_inner_core / real(NSPEC_INNER_CORE)
@@ -182,5 +182,5 @@
endif
end select
-
+
end subroutine setup_Inner_Outer
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/test_MPI_interfaces.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/test_MPI_interfaces.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/test_MPI_interfaces.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -36,7 +36,7 @@
use MPI_crust_mantle_par,only: NGLOB_CRUST_MANTLE
use MPI_outer_core_par,only: NGLOB_OUTER_CORE
use MPI_inner_core_par,only: NGLOB_INNER_CORE
-
+
implicit none
integer,intent(in) :: iregion_code
@@ -157,10 +157,10 @@
!call MPI_RECV(test_interfaces(1:inum,iproc),inum, &
! MPI_INTEGER,iproc,itag,MPI_COMM_WORLD,msg_status,ier)
call recv_i(test_interfaces(1:inum,iproc),inum,iproc,itag)
-
+
!call MPI_RECV(test_interfaces_nibool(1:inum,iproc),inum, &
! MPI_INTEGER,iproc,itag,MPI_COMM_WORLD,msg_status,ier)
- call recv_i(test_interfaces_nibool(1:inum,iproc),inum,iproc,itag)
+ call recv_i(test_interfaces_nibool(1:inum,iproc),inum,iproc,itag)
endif
enddo
else
@@ -175,7 +175,7 @@
!call MPI_SEND(nibool_interfaces(1:num_interfaces),num_interfaces, &
! MPI_INTEGER,0,itag,MPI_COMM_WORLD,ier)
call send_i(nibool_interfaces(1:num_interfaces),num_interfaces,0,itag)
-
+
endif
endif
call sync_all()
@@ -279,7 +279,7 @@
enddo
! total number of interface points
i = sum(nibool_interfaces_crust_mantle)
- call sum_all_i(i,inum)
+ call sum_all_i(i,inum)
! total number of unique points (some could be shared between different processes)
i = nint( sum(test_flag_vector) )
@@ -289,7 +289,7 @@
! maximum valence
i = maxval( valence(:) )
num_max_valence = i
- call max_all_i(i,ival)
+ call max_all_i(i,ival)
! user output
if( myrank == 0 ) then
@@ -333,7 +333,7 @@
endif
! total number of assembly points
- call sum_all_i(i,inum)
+ call sum_all_i(i,inum)
! points defined by interfaces
if( myrank == 0 ) then
@@ -364,7 +364,7 @@
use meshfem3D_par,only: NPROCTOT,myrank
use create_MPI_interfaces_par
use MPI_outer_core_par
-
+
implicit none
! local parameters
@@ -392,16 +392,16 @@
enddo
enddo
i = sum(nibool_interfaces_outer_core)
- call sum_all_i(i,inum)
+ call sum_all_i(i,inum)
i = nint( sum(test_flag) )
num_unique = i
- call sum_all_i(i,icount)
+ call sum_all_i(i,icount)
! maximum valence
i = maxval( valence(:) )
num_max_valence = i
- call max_all_i(i,ival)
+ call max_all_i(i,ival)
if( myrank == 0 ) then
write(IMAIN,*) ' total MPI interface points : ',inum
@@ -441,7 +441,7 @@
print*,'error test outer core : rank',myrank,'unique mpi points:',i,num_unique
call exit_mpi(myrank,'error MPI assembly outer core')
endif
- call sum_all_i(i,inum)
+ call sum_all_i(i,inum)
! output
if( myrank == 0 ) then
@@ -473,7 +473,7 @@
use meshfem3D_par,only: NPROCTOT,myrank
use create_MPI_interfaces_par
use MPI_inner_core_par
-
+
implicit none
! local parameters
@@ -502,16 +502,16 @@
enddo
enddo
i = sum(nibool_interfaces_inner_core)
- call sum_all_i(i,inum)
+ call sum_all_i(i,inum)
i = nint( sum(test_flag_vector) )
num_unique= i
- call sum_all_i(i,icount)
+ call sum_all_i(i,icount)
! maximum valence
i = maxval( valence(:) )
num_max_valence = i
- call max_all_i(i,ival)
+ call max_all_i(i,ival)
if( myrank == 0 ) then
write(IMAIN,*) ' total MPI interface points : ',inum
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/memory_eval.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/memory_eval.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/memory_eval.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -54,13 +54,13 @@
! input
logical, intent(in) :: TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
- ROTATION,TOPOGRAPHY,NCHUNKS, &
+ ROTATION,TOPOGRAPHY, &
ATTENUATION,ONE_CRUST,OCEANS,ABSORBING_CONDITIONS, &
MOVIE_VOLUME,SAVE_FORWARD
integer, dimension(MAX_NUM_REGIONS), intent(in) :: NSPEC, nglob, &
NSPEC2D_BOTTOM,NSPEC2D_TOP
- integer, intent(in) :: NEX_PER_PROC_XI,NEX_PER_PROC_ETA,SIMULATION_TYPE
+ integer, intent(in) :: NCHUNKS,NEX_PER_PROC_XI,NEX_PER_PROC_ETA,SIMULATION_TYPE
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
@@ -236,7 +236,7 @@
9.d0*dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC(IREGION_CRUST_MANTLE)*dble(CUSTOM_REAL)
! xstore_crust_mantle,ystore_crust_mantle,zstore_crust_mantle,rmass_crust_mantle
- if(NCHUNKS /= 6 .and. ABSORBING_CONDITIONS) then
+ if( NCHUNKS /= 6 .and. ABSORBING_CONDITIONS) then
! three mass matrices for the crust and mantle region: rmassx, rmassy and rmassz
static_memory_size = static_memory_size + &
6.d0*nglob(IREGION_CRUST_MANTLE)*dble(CUSTOM_REAL)
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/save_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/save_header_file.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/save_header_file.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -29,12 +29,13 @@
subroutine save_header_file(NSPEC,nglob,NEX_XI,NEX_ETA,NPROC,NPROCTOT, &
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
- ELLIPTICITY,GRAVITY,TOPOGRAPHY,ROTATION,OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
+ ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY, &
+ OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D, &
ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,NCHUNKS, &
INCLUDE_CENTRAL_CUBE,CENTER_LONGITUDE_IN_DEGREES, &
CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,NSOURCES,NSTEP,&
- static_memory_size,NGLOB1D_RADIAL, &
- NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX,NSPEC2D_TOP,NSPEC2D_BOTTOM, &
+ static_memory_size, &
+ NSPEC2D_TOP,NSPEC2D_BOTTOM, &
NSPEC2DMAX_YMIN_YMAX,NSPEC2DMAX_XMIN_XMAX, &
NPROC_XI,NPROC_ETA, &
NSPECMAX_ANISO_IC,NSPECMAX_ISO_MANTLE,NSPECMAX_TISO_MANTLE, &
@@ -68,8 +69,8 @@
! static memory size needed by the solver
double precision :: static_memory_size
- integer, dimension(MAX_NUM_REGIONS) :: NGLOB1D_RADIAL,NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX, &
- NSPEC2D_TOP,NSPEC2D_BOTTOM,NSPEC2DMAX_YMIN_YMAX,NSPEC2DMAX_XMIN_XMAX
+ integer, dimension(MAX_NUM_REGIONS) :: &
+ NSPEC2D_TOP,NSPEC2D_BOTTOM,NSPEC2DMAX_YMIN_YMAX,NSPEC2DMAX_XMIN_XMAX
integer :: NPROC_XI,NPROC_ETA
integer :: NSPECMAX_ANISO_IC,NSPECMAX_ISO_MANTLE,NSPECMAX_TISO_MANTLE, &
@@ -100,7 +101,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,NCORNERSCHUNKS,NUM_FACES,NUM_MSG_TYPES
+ integer :: att1,att2,att3,att4,att5
integer :: ier
character(len=150) HEADER_FILE
@@ -393,7 +394,7 @@
endif
write(IOUT,*)
- if(TOPOGRAPHY .or. OCEANS) then
+ if(TOPOGRAPHY) then
write(IOUT,*) 'integer, parameter :: NX_BATHY_VAL = NX_BATHY'
write(IOUT,*) 'integer, parameter :: NY_BATHY_VAL = NY_BATHY'
else
@@ -410,45 +411,12 @@
write(IOUT,*) 'integer, parameter :: NSPEC_OUTER_CORE_ROTATION = ',NSPEC_OUTER_CORE_ROTATION
write(IOUT,*)
- write(IOUT,*) 'integer, parameter :: NGLOB1D_RADIAL_CM = ',NGLOB1D_RADIAL(IREGION_CRUST_MANTLE)
- write(IOUT,*) 'integer, parameter :: NGLOB1D_RADIAL_OC = ',NGLOB1D_RADIAL(IREGION_OUTER_CORE)
- write(IOUT,*) 'integer, parameter :: NGLOB1D_RADIAL_IC = ',NGLOB1D_RADIAL(IREGION_INNER_CORE)
-
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XMIN_XMAX_CM = ',NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE)
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XMIN_XMAX_OC = ',NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE)
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XMIN_XMAX_IC = ',NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE)
-
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_YMIN_YMAX_CM = ',NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE)
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_YMIN_YMAX_OC = ',NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE)
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_YMIN_YMAX_IC = ',NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE)
-
write(IOUT,*) 'integer, parameter :: NPROC_XI_VAL = ',NPROC_XI
write(IOUT,*) 'integer, parameter :: NPROC_ETA_VAL = ',NPROC_ETA
write(IOUT,*) 'integer, parameter :: NCHUNKS_VAL = ',NCHUNKS
write(IOUT,*) 'integer, parameter :: NPROCTOT_VAL = ',NPROCTOT
+ write(IOUT,*)
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XY_VAL = ', &
- max(NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE))
-
- if(NCHUNKS == 1 .or. NCHUNKS == 2) then
- NCORNERSCHUNKS = 1
- NUM_FACES = 1
- NUM_MSG_TYPES = 1
- else if(NCHUNKS == 3) then
- NCORNERSCHUNKS = 1
- NUM_FACES = 1
- NUM_MSG_TYPES = 3
- else if(NCHUNKS == 6) then
- NCORNERSCHUNKS = 8
- NUM_FACES = 4
- NUM_MSG_TYPES = 3
- else
- stop 'error nchunks in save_header_file()'
- endif
-
- write(IOUT,*) 'integer, parameter :: NUMMSGS_FACES_VAL = ',NPROC_XI*NUM_FACES*NUM_MSG_TYPES
- write(IOUT,*) 'integer, parameter :: NCORNERSCHUNKS_VAL = ',NCORNERSCHUNKS
-
if(ATTENUATION) then
if(ATTENUATION_3D) then
att1 = NGLLX
@@ -474,6 +442,7 @@
write(IOUT,*) 'integer, parameter :: ATT3 = ',att3
write(IOUT,*) 'integer, parameter :: ATT4 = ',att4
write(IOUT,*) 'integer, parameter :: ATT5 = ',att5
+ write(IOUT,*)
write(IOUT,*) 'integer, parameter :: NSPEC2DMAX_XMIN_XMAX_CM = ',NSPEC2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE)
write(IOUT,*) 'integer, parameter :: NSPEC2DMAX_YMIN_YMAX_CM = ',NSPEC2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE)
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_stacey_crust_mantle.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_stacey_crust_mantle.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_stacey_crust_mantle.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -31,7 +31,7 @@
use specfem_par,only: &
ichunk,SIMULATION_TYPE,SAVE_FORWARD,NSTEP,it, &
- wgllwgll_xz,wgllwgll_yz,wgllwgll_xy
+ wgllwgll_xz,wgllwgll_yz
use specfem_par,only: GPU_MODE,Mesh_pointer
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/initialize_simulation.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/initialize_simulation.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -34,7 +34,9 @@
! local parameters
integer, dimension(MAX_NUM_REGIONS) :: NSPEC_computed,NGLOB_computed, &
- NSPEC2D_XI,NSPEC2D_ETA,NSPEC1D_RADIAL
+ NSPEC2D_XI,NSPEC2D_ETA,NSPEC1D_RADIAL,NGLOB1D_RADIAL
+ integer, dimension(MAX_NUM_REGIONS) :: NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
+ NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX
logical :: CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA
integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
integer, dimension(NB_SQUARE_EDGES_ONEDIR,NB_CUT_CASE) :: DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA
@@ -47,7 +49,8 @@
GAMMA_ROTATION_AZIMUTH
integer :: REFERENCE_1D_MODEL,THREE_D_MODEL
logical :: TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE,OCEANS, &
- ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ROTATION,ELLIPTICITY,GRAVITY,CASE_3D,ISOTROPIC_3D_MANTLE, &
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ROTATION,ELLIPTICITY, &
+ GRAVITY,CASE_3D,ISOTROPIC_3D_MANTLE, &
HETEROGEN_3D_MANTLE,CRUSTAL,INFLATE_CENTRAL_CUBE
character(len=150) :: dummystring
integer, external :: err_occurred
@@ -382,7 +385,8 @@
call exit_MPI(myrank, 'SIMULATION_TYPE can only be 1, 2, or 3')
if (SIMULATION_TYPE /= 1 .and. NSOURCES > 999999) &
- call exit_MPI(myrank, 'for adjoint simulations, NSOURCES <= 999999, if you need more change i6.6 in write_seismograms.f90')
+ call exit_MPI(myrank, &
+ 'for adjoint simulations, NSOURCES <= 999999, if you need more change i6.6 in write_seismograms.f90')
if((SIMULATION_TYPE == 1 .and. SAVE_FORWARD) .or. SIMULATION_TYPE == 3) then
if ( ATTENUATION_VAL) then
@@ -438,11 +442,6 @@
endif
endif
- ! check that buffer size is valid when defining/using buffer_send_chunkcorn_scalar
- if( NGLOB1D_RADIAL_CM < NGLOB1D_RADIAL_OC .or. NGLOB1D_RADIAL_CM < NGLOB1D_RADIAL_IC ) then
- call exit_MPI(myrank, 'NGLOB1D_RADIAL_CM must be larger than for outer core or inner core, please check mesh')
- endif
-
! check for GPU runs
if( GPU_MODE ) then
if( NGLLX /= 5 .or. NGLLY /= 5 .or. NGLLZ /= 5 ) &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/prepare_timerun.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/prepare_timerun.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/prepare_timerun.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -449,27 +449,37 @@
write(IMAIN,*)
write(IMAIN,*) 'Movie volume:'
write(IMAIN,*) ' Writing to movie3D*** files on local disk databases directory'
- if(MOVIE_VOLUME_TYPE == 1) then
- write(IMAIN,*) ' movie output: strain'
- else if(MOVIE_VOLUME_TYPE == 2) then
- write(IMAIN,*) ' movie output: time integral of strain'
- else if(MOVIE_VOLUME_TYPE == 3) then
+ select case( MOVIE_VOLUME_TYPE )
+ case( 1 )
+ write(IMAIN,*) ' movie output: strains'
+ case( 2 )
+ write(IMAIN,*) ' movie output: time integral of strains'
+ case( 3 )
write(IMAIN,*) ' movie output: potency or integral of strain'
- else if(MOVIE_VOLUME_TYPE == 4) then
+ case( 4 )
write(IMAIN,*) ' movie output: divergence and curl'
- else if(MOVIE_VOLUME_TYPE == 5) then
+ case( 5 )
write(IMAIN,*) ' movie output: displacement'
- else if(MOVIE_VOLUME_TYPE == 6) then
+ case( 6 )
write(IMAIN,*) ' movie output: velocity'
- endif
+ case( 7 )
+ write(IMAIN,*) ' movie output: norm of displacement'
+ case( 8 )
+ write(IMAIN,*) ' movie output: norm of velocity'
+ case( 9 )
+ write(IMAIN,*) ' movie output: norm of acceleration'
+ case default
+ call exit_MPI(myrank, 'MOVIE_VOLUME_TYPE has to be in range from 1 to 9')
+ end select
+ write(IMAIN,*)
write(IMAIN,*) ' depth(T,B):',MOVIE_TOP,MOVIE_BOTTOM
write(IMAIN,*) ' lon(W,E) :',MOVIE_WEST,MOVIE_EAST
write(IMAIN,*) ' lat(S,N) :',MOVIE_SOUTH,MOVIE_NORTH
write(IMAIN,*) ' Starting at time step:',MOVIE_START, 'ending at:',MOVIE_STOP,'every: ',NTSTEP_BETWEEN_FRAMES
endif
- if( MOVIE_VOLUME_TYPE < 1 .or. MOVIE_VOLUME_TYPE > 6) &
- call exit_MPI(myrank, 'MOVIE_VOLUME_TYPE has to be 1,2,3,4,5 or 6')
+ if( MOVIE_VOLUME_TYPE < 1 .or. MOVIE_VOLUME_TYPE > 9) &
+ call exit_MPI(myrank, 'MOVIE_VOLUME_TYPE has to be in range from 1 to 9')
call sync_all()
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/read_topography_bathymetry.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/read_topography_bathymetry.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/read_topography_bathymetry.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -51,7 +51,7 @@
endif
! read topography and bathymetry file
- if( TOPOGRAPHY .or. OCEANS_VAL ) then
+ if( TOPOGRAPHY ) then
! initializes
ibathy_topo(:,:) = 0
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D.F90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D.F90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -45,6 +45,7 @@
use specfem_par_innercore
use specfem_par_outercore
use specfem_par_movie
+
implicit none
! standard include of the MPI library
@@ -53,9 +54,6 @@
! local parameters
integer :: ier
-! include values created by the mesher
-! include "OUTPUT_FILES/values_from_mesher.h"
-
!=======================================================================!
! !
! specfem3D is a 3-D spectral-element solver for the Earth. !
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D_par.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D_par.F90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/specfem3D_par.F90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -242,10 +242,7 @@
!-----------------------------------------------------------------
! this for all the regions
- integer, dimension(MAX_NUM_REGIONS) :: NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
- NSPEC2D_BOTTOM,NSPEC2D_TOP, &
- NGLOB1D_RADIAL, &
- NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX
+ integer, dimension(MAX_NUM_REGIONS) :: NSPEC2D_BOTTOM,NSPEC2D_TOP
! computed in read_compute_parameters
integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: ner,ratio_sampling_array
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_output.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_output.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_output.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -135,10 +135,6 @@
epsilondev_xy_inner_core,epsilondev_xz_inner_core, &
epsilondev_yz_inner_core)
! wavefields
- call transfer_fields_cm_from_device(NDIM*NGLOB_CRUST_MANTLE, &
- displ_crust_mantle,veloc_crust_mantle,accel_crust_mantle,Mesh_pointer)
- call transfer_fields_ic_from_device(NDIM*NGLOB_INNER_CORE, &
- displ_inner_core,veloc_inner_core,accel_inner_core,Mesh_pointer)
call transfer_fields_oc_from_device(NGLOB_OUTER_CORE, &
displ_outer_core,veloc_outer_core,accel_outer_core,Mesh_pointer)
endif
@@ -151,11 +147,7 @@
epsilondev_xz_crust_mantle,epsilondev_yz_crust_mantle, &
epsilondev_xx_inner_core,epsilondev_yy_inner_core,epsilondev_xy_inner_core, &
epsilondev_xz_inner_core,epsilondev_yz_inner_core, &
- LOCAL_TMP_PATH, &
- displ_crust_mantle,displ_inner_core,displ_outer_core, &
- veloc_crust_mantle,veloc_inner_core,veloc_outer_core, &
- accel_crust_mantle,accel_inner_core, &
- ibool_crust_mantle,ibool_inner_core)
+ LOCAL_TMP_PATH)
case( 5 )
!output displacement
@@ -181,8 +173,63 @@
MOVIE_COARSE,ibool_crust_mantle,veloc_crust_mantle, &
scalingval,mask_3dmovie,nu_3dmovie)
+ case( 7 )
+ ! output norm of displacement
+
+ ! gets resulting array values onto CPU
+ if( GPU_MODE ) then
+ ! wavefields
+ call transfer_fields_cm_from_device(NDIM*NGLOB_CRUST_MANTLE, &
+ displ_crust_mantle,veloc_crust_mantle,accel_crust_mantle,Mesh_pointer)
+ call transfer_fields_ic_from_device(NDIM*NGLOB_INNER_CORE, &
+ displ_inner_core,veloc_inner_core,accel_inner_core,Mesh_pointer)
+ call transfer_fields_oc_from_device(NGLOB_OUTER_CORE, &
+ displ_outer_core,veloc_outer_core,accel_outer_core,Mesh_pointer)
+ endif
+
+ call write_movie_volume_displnorm(myrank,it,LOCAL_TMP_PATH, &
+ displ_crust_mantle,displ_inner_core,displ_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
+ case( 8 )
+ ! output norm of velocity
+
+ ! gets resulting array values onto CPU
+ if( GPU_MODE ) then
+ ! wavefields
+ call transfer_fields_cm_from_device(NDIM*NGLOB_CRUST_MANTLE, &
+ displ_crust_mantle,veloc_crust_mantle,accel_crust_mantle,Mesh_pointer)
+ call transfer_fields_ic_from_device(NDIM*NGLOB_INNER_CORE, &
+ displ_inner_core,veloc_inner_core,accel_inner_core,Mesh_pointer)
+ call transfer_fields_oc_from_device(NGLOB_OUTER_CORE, &
+ displ_outer_core,veloc_outer_core,accel_outer_core,Mesh_pointer)
+ endif
+
+ call write_movie_volume_velnorm(myrank,it,LOCAL_TMP_PATH, &
+ veloc_crust_mantle,veloc_inner_core,veloc_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
+ case( 9 )
+ ! output norm of acceleration
+
+ ! gets resulting array values onto CPU
+ if( GPU_MODE ) then
+ ! wavefields
+ call transfer_fields_cm_from_device(NDIM*NGLOB_CRUST_MANTLE, &
+ displ_crust_mantle,veloc_crust_mantle,accel_crust_mantle,Mesh_pointer)
+ call transfer_fields_ic_from_device(NDIM*NGLOB_INNER_CORE, &
+ displ_inner_core,veloc_inner_core,accel_inner_core,Mesh_pointer)
+ call transfer_fields_oc_from_device(NGLOB_OUTER_CORE, &
+ displ_outer_core,veloc_outer_core,accel_outer_core,Mesh_pointer)
+ endif
+
+ call write_movie_volume_accelnorm(myrank,it,LOCAL_TMP_PATH, &
+ accel_crust_mantle,accel_inner_core,accel_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
case default
- call exit_MPI(myrank, 'MOVIE_VOLUME_TYPE has to be 1,2,3,4,5 or 6')
+ call exit_MPI(myrank, 'MOVIE_VOLUME_TYPE has to be in range from 1 to 9')
+
end select ! MOVIE_VOLUME_TYPE
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_volume.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_volume.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_movie_volume.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -554,11 +554,7 @@
epsilondev_xz_crust_mantle,epsilondev_yz_crust_mantle, &
epsilondev_xx_inner_core,epsilondev_yy_inner_core,epsilondev_xy_inner_core, &
epsilondev_xz_inner_core,epsilondev_yz_inner_core, &
- LOCAL_TMP_PATH, &
- displ_crust_mantle,displ_inner_core,displ_outer_core, &
- veloc_crust_mantle,veloc_inner_core,veloc_outer_core, &
- accel_crust_mantle,accel_inner_core, &
- ibool_crust_mantle,ibool_inner_core)
+ LOCAL_TMP_PATH)
implicit none
include "constants.h"
@@ -574,46 +570,27 @@
integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE) :: ibool_outer_core
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_STRAIN_ONLY) :: eps_trace_over_3_inner_core
-! real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: epsilondev_crust_mantle
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_STR_OR_ATT) :: &
epsilondev_xx_crust_mantle,epsilondev_yy_crust_mantle,epsilondev_xy_crust_mantle, &
epsilondev_xz_crust_mantle,epsilondev_yz_crust_mantle
-! real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_STR_OR_ATT) :: epsilondev_inner_core
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_STR_OR_ATT) :: &
epsilondev_xx_inner_core,epsilondev_yy_inner_core,epsilondev_xy_inner_core, &
epsilondev_xz_inner_core,epsilondev_yz_inner_core
-
character(len=150) LOCAL_TMP_PATH
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: displ_crust_mantle
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: veloc_crust_mantle
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: accel_crust_mantle
- real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: veloc_outer_core
- real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: displ_outer_core
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: displ_inner_core
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: veloc_inner_core
- real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: accel_inner_core
-
- integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
- integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: ibool_inner_core
-
! local parameters
real(kind=CUSTOM_REAL) :: rhol,kappal
real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: div_s_outer_core
integer :: ispec,iglob,i,j,k,ier
character(len=150) outputname
real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: tmp_data
- real(kind=CUSTOM_REAL) :: scale_displ,scale_veloc,scale_accel
! output parameters
logical,parameter :: MOVIE_OUTPUT_DIV = .true. ! divergence
- logical,parameter :: MOVIE_OUTPUT_CURL = .false. ! curl
+ logical,parameter :: MOVIE_OUTPUT_CURL = .true. ! curl
logical,parameter :: MOVIE_OUTPUT_CURLNORM = .true. ! frobenius norm of curl
- logical,parameter :: MOVIE_OUTPUT_DISPLNORM = .false. ! norm of displacement
- logical,parameter :: MOVIE_OUTPUT_VELOCNORM = .false. ! norm of velocity
- logical,parameter :: MOVIE_OUTPUT_ACCELNORM = .false. ! norm of acceleration
! outputs divergence
if( MOVIE_OUTPUT_DIV ) then
@@ -751,13 +728,47 @@
!close(27)
endif
+ end subroutine write_movie_volume_divcurl
+
+!
+!-------------------------------------------------------------------------------------------------
+!
+
+ subroutine write_movie_volume_displnorm(myrank,it,LOCAL_TMP_PATH, &
+ displ_crust_mantle,displ_inner_core,displ_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
+ implicit none
+ include "constants.h"
+ include "OUTPUT_FILES/values_from_mesher.h"
+
+ integer :: myrank,it
+
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: displ_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: displ_inner_core
+ real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: displ_outer_core
+
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: ibool_inner_core
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE) :: ibool_outer_core
+
+ character(len=150) LOCAL_TMP_PATH
+
+ ! local parameters
+ integer :: ispec,iglob,i,j,k,ier
+ character(len=150) outputname
+ real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: tmp_data
+ real(kind=CUSTOM_REAL) :: scale_displ
+
+ logical,parameter :: OUTPUT_CRUST_MANTLE = .true.
+ logical,parameter :: OUTPUT_OUTER_CORE = .true.
+ logical,parameter :: OUTPUT_INNER_CORE = .true.
+
! dimensionalized scalings
scale_displ = R_EARTH
- scale_veloc = scale_displ * sqrt(PI*GRAV*RHOAV)
- scale_accel = scale_veloc * dsqrt(PI*GRAV*RHOAV)
! outputs norm of displacement
- if( MOVIE_OUTPUT_DISPLNORM ) then
+ if( OUTPUT_CRUST_MANTLE ) then
! crust mantle
! these binary arrays can be converted into mesh format using the utilitiy ./bin/xcombine_vol_data
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE))
@@ -780,7 +791,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_OUTER_CORE ) then
! outer core
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE))
do ispec = 1, NSPEC_OUTER_CORE
@@ -802,7 +815,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_INNER_CORE ) then
! inner core
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE))
do ispec = 1, NSPEC_INNER_CORE
@@ -826,9 +841,49 @@
deallocate(tmp_data)
endif
+ end subroutine write_movie_volume_displnorm
+
+!
+!-------------------------------------------------------------------------------------------------
+!
+
+ subroutine write_movie_volume_velnorm(myrank,it,LOCAL_TMP_PATH, &
+ veloc_crust_mantle,veloc_inner_core,veloc_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
+ implicit none
+ include "constants.h"
+ include "OUTPUT_FILES/values_from_mesher.h"
+
+ integer :: myrank,it
+
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: veloc_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: veloc_outer_core
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: veloc_inner_core
+
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: ibool_inner_core
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE) :: ibool_outer_core
+
+ character(len=150) LOCAL_TMP_PATH
+
+ ! local parameters
+ integer :: ispec,iglob,i,j,k,ier
+ character(len=150) outputname
+ real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: tmp_data
+ real(kind=CUSTOM_REAL) :: scale_displ,scale_veloc
+
+ logical,parameter :: OUTPUT_CRUST_MANTLE = .true.
+ logical,parameter :: OUTPUT_OUTER_CORE = .true.
+ logical,parameter :: OUTPUT_INNER_CORE = .true.
+
+ ! dimensionalized scalings
+ scale_displ = R_EARTH
+ scale_veloc = scale_displ * sqrt(PI*GRAV*RHOAV)
+
! outputs norm of velocity
- if( MOVIE_OUTPUT_VELOCNORM ) then
+ if( OUTPUT_CRUST_MANTLE ) then
! crust mantle
! these binary arrays can be converted into mesh format using the utilitiy ./bin/xcombine_vol_data
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE))
@@ -851,7 +906,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_OUTER_CORE ) then
! outer core
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE))
do ispec = 1, NSPEC_OUTER_CORE
@@ -873,7 +930,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_INNER_CORE ) then
! inner core
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE))
do ispec = 1, NSPEC_INNER_CORE
@@ -897,8 +956,49 @@
deallocate(tmp_data)
endif
+ end subroutine write_movie_volume_velnorm
+
+!
+!-------------------------------------------------------------------------------------------------
+!
+
+ subroutine write_movie_volume_accelnorm(myrank,it,LOCAL_TMP_PATH, &
+ accel_crust_mantle,accel_inner_core,accel_outer_core, &
+ ibool_crust_mantle,ibool_inner_core,ibool_outer_core)
+
+ implicit none
+ include "constants.h"
+ include "OUTPUT_FILES/values_from_mesher.h"
+
+ integer :: myrank,it
+
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: accel_crust_mantle
+ real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: accel_inner_core
+ real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: accel_outer_core
+
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: ibool_inner_core
+ integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE) :: ibool_outer_core
+
+ character(len=150) LOCAL_TMP_PATH
+
+ ! local parameters
+ integer :: ispec,iglob,i,j,k,ier
+ character(len=150) outputname
+ real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: tmp_data
+ real(kind=CUSTOM_REAL) :: scale_displ,scale_veloc,scale_accel
+
+ logical,parameter :: OUTPUT_CRUST_MANTLE = .true.
+ logical,parameter :: OUTPUT_OUTER_CORE = .true.
+ logical,parameter :: OUTPUT_INNER_CORE = .true.
+
+ ! dimensionalized scalings
+ scale_displ = R_EARTH
+ scale_veloc = scale_displ * sqrt(PI*GRAV*RHOAV)
+ scale_accel = scale_veloc * dsqrt(PI*GRAV*RHOAV)
+
! outputs norm of acceleration
- if( MOVIE_OUTPUT_ACCELNORM ) then
+ if( OUTPUT_CRUST_MANTLE ) then
! acceleration
! these binary arrays can be converted into mesh format using the utilitiy ./bin/xcombine_vol_data
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE))
@@ -921,7 +1021,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_OUTER_CORE ) then
! outer core acceleration
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE))
do ispec = 1, NSPEC_OUTER_CORE
@@ -943,7 +1045,9 @@
write(27) tmp_data
close(27)
deallocate(tmp_data)
+ endif
+ if( OUTPUT_INNER_CORE ) then
! inner core
allocate(tmp_data(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE))
do ispec = 1, NSPEC_INNER_CORE
@@ -967,5 +1071,7 @@
deallocate(tmp_data)
endif
- end subroutine write_movie_volume_divcurl
+ end subroutine write_movie_volume_accelnorm
+
+
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_seismograms.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_seismograms.f90 2012-07-25 22:31:12 UTC (rev 20547)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/write_seismograms.f90 2012-07-27 14:58:30 UTC (rev 20548)
@@ -131,10 +131,10 @@
number_receiver_global,seismograms, &
islice_selected_rec, &
seismo_offset,seismo_current, &
- OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM, &
- OUTPUT_SEISMOS_SAC_BINARY,ROTATE_SEISMOGRAMS_RT,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
+ OUTPUT_SEISMOS_ASCII_TEXT, &
+ NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE, &
- MODEL,OUTPUT_FILES, &
+ OUTPUT_FILES, &
WRITE_SEISMOGRAMS_BY_MASTER
implicit none
@@ -349,7 +349,6 @@
use specfem_par,only: &
ANGULAR_WIDTH_XI_IN_DEGREES,NEX_XI, &
myrank,nrec, &
- number_receiver_global, &
station_name,network_name,stlat,stlon,stele,stbur, &
DT,seismo_offset,seismo_current,it_end, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM, &
More information about the CIG-COMMITS
mailing list