[cig-commits] r20040 - in seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER: DATA EXAMPLES/regional_Greece_small/DATA src/create_header_file src/cuda src/meshfem3D src/shared src/specfem3D
joseph.charles at geodynamics.org
joseph.charles at geodynamics.org
Fri May 4 04:55:58 PDT 2012
Author: joseph.charles
Date: 2012-05-04 04:55:57 -0700 (Fri, 04 May 2012)
New Revision: 20040
Modified:
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/DATA/Par_file
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/regional_Greece_small/DATA/Par_file
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_forces_crust_mantle_cuda.cu
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_inner_core_cuda.cu
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/mesh_constants_cuda.h
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/prepare_mesh_constants_cuda.cu
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/initialize_mesher.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/broadcast_compute_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_compute_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_parameter_file.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_forces_crust_mantle.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core.f90
seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core_Dev.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
Log:
updates routines for attenuation handling: adds "ATTENUATION_NEW" flag in Par_file for switching between old/new version
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/DATA/Par_file
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/DATA/Par_file 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/DATA/Par_file 2012-05-04 11:55:57 UTC (rev 20040)
@@ -42,6 +42,7 @@
GRAVITY = .false.
ROTATION = .false.
ATTENUATION = .false.
+ATTENUATION_NEW = .false.
# absorbing boundary conditions for a regional simulation
ABSORBING_CONDITIONS = .true.
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/regional_Greece_small/DATA/Par_file
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/regional_Greece_small/DATA/Par_file 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/EXAMPLES/regional_Greece_small/DATA/Par_file 2012-05-04 11:55:57 UTC (rev 20040)
@@ -41,7 +41,8 @@
TOPOGRAPHY = .false.
GRAVITY = .false.
ROTATION = .false.
-ATTENUATION = .false.
+ATTENUATION = .true.
+ATTENUATION_NEW = .false.
# absorbing boundary conditions for a regional simulation
ABSORBING_CONDITIONS = .true.
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/create_header_file/create_header_file.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -54,7 +54,7 @@
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION,CASE_3D, &
+ SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW,CASE_3D, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
ROTATE_SEISMOGRAMS_RT,HONOR_1D_SPHERICAL_MOHO,WRITE_SEISMOGRAMS_BY_MASTER,&
@@ -127,7 +127,7 @@
ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
PRINT_SOURCE_TIME_FUNCTION,SAVE_MESH_FILES, &
- ATTENUATION,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
+ ATTENUATION,ATTENUATION_NEW,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE, &
LOCAL_PATH,LOCAL_TMP_PATH,MODEL, &
SIMULATION_TYPE,SAVE_FORWARD, &
@@ -182,8 +182,7 @@
! 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_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,&
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_crust_mantle_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_crust_mantle_cuda.cu 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_crust_mantle_cuda.cu 2012-05-04 11:55:57 UTC (rev 20040)
@@ -913,6 +913,7 @@
realw* epsilon_trace_over_3,
int SIMULATION_TYPE,
int ATTENUATION,
+ int ATTENUATION_NEW,
int USE_ATTENUATION_MIMIC,
realw* one_minus_sum_beta,realw* factor_common,
realw* R_xx, realw* R_yy, realw* R_xy, realw* R_xz, realw* R_yz,
@@ -1030,20 +1031,28 @@
s_dummyz_loc[tx] = d_displ[iglob*3 + 2];
#endif
- if( ATTENUATION){
- // use first order Taylor expansion of displacement for local storage of stresses
- // at this current time step, to fix attenuation in a consistent way
+ if(ATTENUATION){
+ if(ATTENUATION_NEW){
+ // takes new routines
+ // use first order Taylor expansion of displacement for local storage of stresses
+ // at this current time step, to fix attenuation in a consistent way
#ifdef USE_TEXTURES
- s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob);
- s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + NGLOB);
- s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + 2*NGLOB);
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob);
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + NGLOB);
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + 2*NGLOB);
#else
- s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * d_veloc[iglob*3];
- s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * d_veloc[iglob*3 + 1];
- s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * d_veloc[iglob*3 + 2];
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * d_veloc[iglob*3];
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * d_veloc[iglob*3 + 1];
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * d_veloc[iglob*3 + 2];
#endif
+ }
+ else{
+ // takes old routines
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx];
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx];
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx];
+ }
}
-
}
// synchronize all the threads (one thread for each of the NGLL grid points of the
@@ -1712,6 +1721,7 @@
d_epsilon_trace_over_3,
mp->simulation_type,
mp->attenuation,
+ mp->attenuation_new,
mp->use_attenuation_mimic,
d_one_minus_sum_beta,d_factor_common,
d_R_xx,d_R_yy,d_R_xy,d_R_xz,d_R_yz,
@@ -1758,6 +1768,7 @@
d_b_epsilon_trace_over_3,
mp->simulation_type,
mp->attenuation,
+ mp->attenuation_new,
mp->use_attenuation_mimic,
d_one_minus_sum_beta,d_factor_common,
d_b_R_xx,d_b_R_yy,d_b_R_xy,d_b_R_xz,d_b_R_yz,
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_inner_core_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_inner_core_cuda.cu 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/compute_forces_inner_core_cuda.cu 2012-05-04 11:55:57 UTC (rev 20040)
@@ -317,6 +317,7 @@
realw* epsilon_trace_over_3,
int SIMULATION_TYPE,
int ATTENUATION,
+ int ATTENUATION_NEW,
int USE_ATTENUATION_MIMIC,
realw* one_minus_sum_beta,realw* factor_common,
realw* R_xx, realw* R_yy, realw* R_xy, realw* R_xz, realw* R_yz,
@@ -433,20 +434,28 @@
s_dummyz_loc[tx] = d_displ[iglob*3 + 2];
#endif
- if( ATTENUATION ){
- // use first order Taylor expansion of displacement for local storage of stresses
- // at this current time step, to fix attenuation in a consistent way
+ if(ATTENUATION){
+ if(ATTENUATION_NEW){
+ // takes new routines
+ // use first order Taylor expansion of displacement for local storage of stresses
+ // at this current time step, to fix attenuation in a consistent way
#ifdef USE_TEXTURES
- s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob);
- s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + NGLOB);
- s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + 2*NGLOB);
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob);
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + NGLOB);
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * tex1Dfetch(tex_veloc, iglob + 2*NGLOB);
#else
- s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * d_veloc[iglob*3];
- s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * d_veloc[iglob*3 + 1];
- s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * d_veloc[iglob*3 + 2];
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx] + d_deltat * d_veloc[iglob*3];
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx] + d_deltat * d_veloc[iglob*3 + 1];
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx] + d_deltat * d_veloc[iglob*3 + 2];
#endif
- }
-
+ }
+ else{
+ // takes old routines
+ s_dummyx_loc_att[tx] = s_dummyx_loc[tx];
+ s_dummyy_loc_att[tx] = s_dummyy_loc[tx];
+ s_dummyz_loc_att[tx] = s_dummyz_loc[tx];
+ }
+ }
}
}
@@ -679,41 +688,41 @@
duzdxl_plus_duxdzl = duzdxl + duxdzl;
duzdyl_plus_duydzl = duzdyl + duydzl;
- if( ATTENUATION ){
- // temporary variables used for fixing attenuation in a consistent way
+ if(ATTENUATION){
+ // temporary variables used for fixing attenuation in a consistent way
- duxdxl_att = xixl*tempx1l_att + etaxl*tempx2l_att + gammaxl*tempx3l_att;
- duxdyl_att = xiyl*tempx1l_att + etayl*tempx2l_att + gammayl*tempx3l_att;
- duxdzl_att = xizl*tempx1l_att + etazl*tempx2l_att + gammazl*tempx3l_att;
+ duxdxl_att = xixl*tempx1l_att + etaxl*tempx2l_att + gammaxl*tempx3l_att;
+ duxdyl_att = xiyl*tempx1l_att + etayl*tempx2l_att + gammayl*tempx3l_att;
+ duxdzl_att = xizl*tempx1l_att + etazl*tempx2l_att + gammazl*tempx3l_att;
- duydxl_att = xixl*tempy1l_att + etaxl*tempy2l_att + gammaxl*tempy3l_att;
- duydyl_att = xiyl*tempy1l_att + etayl*tempy2l_att + gammayl*tempy3l_att;
- duydzl_att = xizl*tempy1l_att + etazl*tempy2l_att + gammazl*tempy3l_att;
+ duydxl_att = xixl*tempy1l_att + etaxl*tempy2l_att + gammaxl*tempy3l_att;
+ duydyl_att = xiyl*tempy1l_att + etayl*tempy2l_att + gammayl*tempy3l_att;
+ duydzl_att = xizl*tempy1l_att + etazl*tempy2l_att + gammazl*tempy3l_att;
- duzdxl_att = xixl*tempz1l_att + etaxl*tempz2l_att + gammaxl*tempz3l_att;
- duzdyl_att = xiyl*tempz1l_att + etayl*tempz2l_att + gammayl*tempz3l_att;
- duzdzl_att = xizl*tempz1l_att + etazl*tempz2l_att + gammazl*tempz3l_att;
+ duzdxl_att = xixl*tempz1l_att + etaxl*tempz2l_att + gammaxl*tempz3l_att;
+ duzdyl_att = xiyl*tempz1l_att + etayl*tempz2l_att + gammayl*tempz3l_att;
+ duzdzl_att = xizl*tempz1l_att + etazl*tempz2l_att + gammazl*tempz3l_att;
- // precompute some sums to save CPU time
- duxdyl_plus_duydxl_att = duxdyl_att + duydxl_att;
- duzdxl_plus_duxdzl_att = duzdxl_att + duxdzl_att;
- duzdyl_plus_duydzl_att = duzdyl_att + duydzl_att;
+ // precompute some sums to save CPU time
+ duxdyl_plus_duydxl_att = duxdyl_att + duydxl_att;
+ duzdxl_plus_duxdzl_att = duzdxl_att + duxdzl_att;
+ duzdyl_plus_duydzl_att = duzdyl_att + duydzl_att;
- // computes deviatoric strain attenuation and/or for kernel calculations
- if(COMPUTE_AND_STORE_STRAIN) {
- realw templ = 0.33333333333333333333f * (duxdxl_att + duydyl_att + duzdzl_att); // 1./3. = 0.33333
+ // computes deviatoric strain attenuation and/or for kernel calculations
+ if(COMPUTE_AND_STORE_STRAIN) {
+ realw templ = 0.33333333333333333333f * (duxdxl_att + duydyl_att + duzdzl_att); // 1./3. = 0.33333
- // local storage: stresses at this current time step
- epsilondev_xx_loc = duxdxl_att - templ;
- epsilondev_yy_loc = duydyl_att - templ;
- epsilondev_xy_loc = 0.5f * duxdyl_plus_duydxl_att;
- epsilondev_xz_loc = 0.5f * duzdxl_plus_duxdzl_att;
- epsilondev_yz_loc = 0.5f * duzdyl_plus_duydzl_att;
+ // local storage: stresses at this current time step
+ epsilondev_xx_loc = duxdxl_att - templ;
+ epsilondev_yy_loc = duydyl_att - templ;
+ epsilondev_xy_loc = 0.5f * duxdyl_plus_duydxl_att;
+ epsilondev_xz_loc = 0.5f * duzdxl_plus_duxdzl_att;
+ epsilondev_yz_loc = 0.5f * duzdyl_plus_duydzl_att;
- if(SIMULATION_TYPE == 3) {
- epsilon_trace_over_3[tx + working_element*NGLL3] = templ;
- }
- }
+ if(SIMULATION_TYPE == 3) {
+ epsilon_trace_over_3[tx + working_element*NGLL3] = templ;
+ }
+ }
}else{
// computes deviatoric strain attenuation and/or for kernel calculations
if(COMPUTE_AND_STORE_STRAIN) {
@@ -1126,6 +1135,7 @@
d_epsilon_trace_over_3,
mp->simulation_type,
mp->attenuation,
+ mp->attenuation_new,
mp->use_attenuation_mimic,
d_one_minus_sum_beta,
d_factor_common,
@@ -1171,6 +1181,7 @@
d_b_epsilon_trace_over_3,
mp->simulation_type,
mp->attenuation,
+ mp->attenuation_new,
mp->use_attenuation_mimic,
d_one_minus_sum_beta,
d_factor_common,
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/mesh_constants_cuda.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/mesh_constants_cuda.h 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/mesh_constants_cuda.h 2012-05-04 11:55:57 UTC (rev 20040)
@@ -460,6 +460,7 @@
int save_forward;
int absorbing_conditions;
int attenuation;
+ int attenuation_new;
int use_attenuation_mimic;
int compute_and_store_strain;
int anisotropic_3D_mantle;
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/prepare_mesh_constants_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/prepare_mesh_constants_cuda.cu 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/cuda/prepare_mesh_constants_cuda.cu 2012-05-04 11:55:57 UTC (rev 20040)
@@ -208,6 +208,7 @@
int* GRAVITY_f,
int* ROTATION_f,
int* ATTENUATION_f,
+ int* ATTENUATION_NEW_f,
int* USE_ATTENUATION_MIMIC_f,
int* COMPUTE_AND_STORE_STRAIN_f,
int* ANISOTROPIC_3D_MANTLE_f,
@@ -261,6 +262,7 @@
mp->gravity = *GRAVITY_f;
mp->rotation = *ROTATION_f;
mp->attenuation = *ATTENUATION_f;
+ mp->attenuation_new = *ATTENUATION_NEW_f;
mp->use_attenuation_mimic = *USE_ATTENUATION_MIMIC_f;
mp->compute_and_store_strain = *COMPUTE_AND_STORE_STRAIN_f;
mp->anisotropic_3D_mantle = *ANISOTROPIC_3D_MANTLE_f;
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/finalize_mesher.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -122,8 +122,7 @@
! 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_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, &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/initialize_mesher.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/initialize_mesher.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/initialize_mesher.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -81,7 +81,7 @@
ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
PRINT_SOURCE_TIME_FUNCTION,SAVE_MESH_FILES, &
- ATTENUATION,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
+ ATTENUATION,ATTENUATION_NEW,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE, &
LOCAL_PATH,LOCAL_TMP_PATH,MODEL, &
SIMULATION_TYPE,SAVE_FORWARD, &
@@ -135,7 +135,7 @@
REFERENCE_1D_MODEL,THREE_D_MODEL,ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, &
HONOR_1D_SPHERICAL_MOHO,CRUSTAL,ONE_CRUST,CASE_3D,TRANSVERSE_ISOTROPY, &
ISOTROPIC_3D_MANTLE,ANISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
- ATTENUATION,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
! check that the code is running with the requested number of processes
if(sizeprocs /= NPROCTOT) call exit_MPI(myrank,'wrong number of MPI processes')
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/meshfem3D/meshfem3D_models.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -435,7 +435,7 @@
logical ISOTROPIC_3D_MANTLE,ANISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE
- logical ATTENUATION,ATTENUATION_3D
+ logical ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D
logical ANISOTROPIC_INNER_CORE
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/broadcast_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/broadcast_compute_parameters.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/broadcast_compute_parameters.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -56,7 +56,7 @@
REFERENCE_1D_MODEL,THREE_D_MODEL,ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, &
HONOR_1D_SPHERICAL_MOHO,CRUSTAL,ONE_CRUST,CASE_3D,TRANSVERSE_ISOTROPY, &
ISOTROPIC_3D_MANTLE,ANISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
- ATTENUATION,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
implicit none
@@ -121,12 +121,12 @@
logical ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, &
HONOR_1D_SPHERICAL_MOHO,CRUSTAL,ONE_CRUST,CASE_3D,TRANSVERSE_ISOTROPY, &
ISOTROPIC_3D_MANTLE,ANISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
- ATTENUATION,ATTENUATION_3D,ANISOTROPIC_INNER_CORE
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ANISOTROPIC_INNER_CORE
! local parameters
double precision, dimension(31) :: bcast_double_precision
integer, dimension(39) :: bcast_integer
- logical, dimension(35) :: bcast_logical
+ logical, dimension(36) :: bcast_logical
integer ier
! master process prepares broadcasting arrays
@@ -157,7 +157,7 @@
CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,SAVE_ALL_SEISMOS_IN_ONE_FILE, &
HONOR_1D_SPHERICAL_MOHO,MOVIE_COARSE, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY,&
- ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,USE_BINARY_FOR_LARGE_FILE/)
+ ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,USE_BINARY_FOR_LARGE_FILE,ATTENUATION_NEW/)
bcast_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, &
@@ -170,7 +170,7 @@
! broadcasts the information read on the master to the nodes
call MPI_BCAST(bcast_integer,39,MPI_INTEGER,0,MPI_COMM_WORLD,ier)
call MPI_BCAST(bcast_double_precision,31,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ier)
- call MPI_BCAST(bcast_logical,35,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
+ call MPI_BCAST(bcast_logical,36,MPI_LOGICAL,0,MPI_COMM_WORLD,ier)
! broadcasts non-single value parameters
call MPI_BCAST(LOCAL_PATH,150,MPI_CHARACTER,0,MPI_COMM_WORLD,ier)
@@ -281,6 +281,7 @@
ROTATE_SEISMOGRAMS_RT= bcast_logical(33)
WRITE_SEISMOGRAMS_BY_MASTER= bcast_logical(34)
USE_BINARY_FOR_LARGE_FILE= bcast_logical(35)
+ ATTENUATION_NEW = bcast_logical(36)
! double precisions
DT = bcast_double_precision(1)
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_compute_parameters.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_compute_parameters.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -43,7 +43,7 @@
ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
PRINT_SOURCE_TIME_FUNCTION,SAVE_MESH_FILES, &
- ATTENUATION,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
+ ATTENUATION,ATTENUATION_NEW,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE, &
LOCAL_PATH,LOCAL_TMP_PATH,MODEL, &
SIMULATION_TYPE,SAVE_FORWARD, &
@@ -81,7 +81,7 @@
logical ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,&
MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION, &
+ SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW, &
ABSORBING_CONDITIONS,SAVE_FORWARD, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,&
@@ -165,7 +165,7 @@
ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,&
MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION,ABSORBING_CONDITIONS,SAVE_FORWARD, &
+ SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS,SAVE_FORWARD, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,&
SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,NOISE_TOMOGRAPHY)
@@ -251,7 +251,7 @@
call rcp_check_parameters(NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA, &
NCHUNKS,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
- ATTENUATION_3D,ATTENUATION,ABSORBING_CONDITIONS, &
+ ATTENUATION_3D,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,OUTPUT_SEISMOS_SAC_ALPHANUM)
! check that mesh can be coarsened in depth three or four times
@@ -362,7 +362,7 @@
subroutine rcp_check_parameters(NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA, &
NCHUNKS,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
- ATTENUATION_3D,ATTENUATION,ABSORBING_CONDITIONS, &
+ ATTENUATION_3D,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,OUTPUT_SEISMOS_SAC_ALPHANUM)
implicit none
@@ -373,7 +373,7 @@
double precision ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES
- logical ATTENUATION_3D,ATTENUATION,ABSORBING_CONDITIONS,&
+ logical ATTENUATION_3D,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS,&
INCLUDE_CENTRAL_CUBE,OUTPUT_SEISMOS_SAC_ALPHANUM
@@ -399,6 +399,9 @@
if(ATTENUATION_3D .and. .not. ATTENUATION) &
stop 'need ATTENUATION to use ATTENUATION_3D'
+ if(ATTENUATION_NEW .and. .not. ATTENUATION) &
+ stop 'need ATTENUATION to use ATTENUATION_NEW'
+
if (OUTPUT_SEISMOS_SAC_ALPHANUM .and. (mod(NTSTEP_BETWEEN_OUTPUT_SEISMOS,5)/=0)) &
stop 'if OUTPUT_SEISMOS_SAC_ALPHANUM = .true. then NTSTEP_BETWEEN_OUTPUT_SEISMOS must be a multiple of 5, check the Par_file'
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_parameter_file.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/read_parameter_file.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -39,7 +39,7 @@
ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,&
MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION,ABSORBING_CONDITIONS,SAVE_FORWARD, &
+ SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW,ABSORBING_CONDITIONS,SAVE_FORWARD, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,&
SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,NOISE_TOMOGRAPHY)
@@ -63,7 +63,7 @@
logical ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,&
MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
- SAVE_MESH_FILES,ATTENUATION, &
+ SAVE_MESH_FILES,ATTENUATION,ATTENUATION_NEW, &
ABSORBING_CONDITIONS,SAVE_FORWARD, &
OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
ROTATE_SEISMOGRAMS_RT,WRITE_SEISMOGRAMS_BY_MASTER,&
@@ -120,6 +120,8 @@
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ROTATION'
call read_value_logical(ATTENUATION, 'model.ATTENUATION')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ATTENUATION'
+ call read_value_logical(ATTENUATION_NEW, 'model.ATTENUATION_NEW')
+ if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ATTENUATION_NEW'
call read_value_logical(ABSORBING_CONDITIONS, 'solver.ABSORBING_CONDITIONS')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file: ABSORBING_CONDITIONS'
! define the velocity model
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/shared/save_header_file.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -29,8 +29,7 @@
subroutine 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_3D, &
+ ELLIPTICITY,GRAVITY,TOPOGRAPHY,ROTATION,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,&
@@ -61,8 +60,7 @@
integer NEX_XI,NEX_ETA,NPROC,NPROCTOT,NCHUNKS,NSOURCES,NSTEP
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
- ELLIPTICITY,GRAVITY,ROTATION, &
- TOPOGRAPHY,OCEANS,ATTENUATION,ATTENUATION_3D,INCLUDE_CENTRAL_CUBE
+ ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS,ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,INCLUDE_CENTRAL_CUBE
double precision ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH
@@ -360,6 +358,13 @@
endif
write(IOUT,*)
+ if(ATTENUATION_NEW) then
+ write(IOUT,*) 'logical, parameter :: ATTENUATION_NEW_VAL = .true.'
+ else
+ write(IOUT,*) 'logical, parameter :: ATTENUATION_NEW_VAL = .false.'
+ endif
+ write(IOUT,*)
+
if(ATTENUATION_3D) then
write(IOUT,*) 'logical, parameter :: ATTENUATION_3D_VAL = .true.'
else
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -231,7 +231,7 @@
tempz3l = tempz3l + displ_crust_mantle(3,iglob)*hp3
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
tempx1l_att = 0._CUSTOM_REAL
@@ -246,40 +246,57 @@
tempz2l_att = 0._CUSTOM_REAL
tempz3l_att = 0._CUSTOM_REAL
- ! use first order Taylor expansion of displacement for local storage of stresses
- ! at this current time step, to fix attenuation in a consistent way
- do l=1,NGLLX
- hp1 = hprime_xx(i,l)
- iglob = ibool(l,j,k,ispec)
- tempx1l_att = tempx1l_att + &
- (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp1
- tempy1l_att = tempy1l_att + &
- (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp1
- tempz1l_att = tempz1l_att + &
- (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp1
+ if(ATTENUATION_NEW_VAL) then
+ ! takes new routines
+ ! use first order Taylor expansion of displacement for local storage of stresses
+ ! at this current time step, to fix attenuation in a consistent way
+ do l=1,NGLLX
+ hp1 = hprime_xx(i,l)
+ iglob = ibool(l,j,k,ispec)
+ tempx1l_att = tempx1l_att + &
+ (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp1
+ tempy1l_att = tempy1l_att + &
+ (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp1
+ tempz1l_att = tempz1l_att + &
+ (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp1
+
!!! can merge these loops because NGLLX = NGLLY = NGLLZ enddo
!!! can merge these loops because NGLLX = NGLLY = NGLLZ do l=1,NGLLY
- hp2 = hprime_yy(j,l)
- iglob = ibool(i,l,k,ispec)
- tempx2l_att = tempx2l_att + &
- (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp2
- tempy2l_att = tempy2l_att + &
- (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp2
- tempz2l_att = tempz2l_att + &
- (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp2
+ hp2 = hprime_yy(j,l)
+ iglob = ibool(i,l,k,ispec)
+ tempx2l_att = tempx2l_att + &
+ (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp2
+ tempy2l_att = tempy2l_att + &
+ (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp2
+ tempz2l_att = tempz2l_att + &
+ (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp2
!!! can merge these loops because NGLLX = NGLLY = NGLLZ enddo
!!! can merge these loops because NGLLX = NGLLY = NGLLZ do l=1,NGLLZ
- hp3 = hprime_zz(k,l)
- iglob = ibool(i,j,l,ispec)
- tempx3l_att = tempx3l_att + &
- (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp3
- tempy3l_att = tempy3l_att + &
- (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp3
- tempz3l_att = tempz3l_att + &
- (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp3
- enddo
+ hp3 = hprime_zz(k,l)
+ iglob = ibool(i,j,l,ispec)
+ tempx3l_att = tempx3l_att + &
+ (displ_crust_mantle(1,iglob) + deltat*veloc_crust_mantle(1,iglob))*hp3
+ tempy3l_att = tempy3l_att + &
+ (displ_crust_mantle(2,iglob) + deltat*veloc_crust_mantle(2,iglob))*hp3
+ tempz3l_att = tempz3l_att + &
+ (displ_crust_mantle(3,iglob) + deltat*veloc_crust_mantle(3,iglob))*hp3
+ enddo
+ endif
+ else
+ ! takes old routines
+ tempx1l_att = tempx1l
+ tempy1l_att = tempy1l
+ tempz1l_att = tempz1l
+
+ tempx2l_att = tempx2l
+ tempy2l_att = tempy2l
+ tempz2l_att = tempz2l
+
+ tempx3l_att = tempx3l
+ tempy3l_att = tempy3l
+ tempz3l_att = tempz3l
endif
! get derivatives of ux, uy and uz with respect to x, y and z
@@ -319,7 +336,7 @@
duzdxl_plus_duxdzl = duzdxl + duxdzl
duzdyl_plus_duydzl = duzdyl + duydzl
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
duxdxl_att = xixl*tempx1l_att + etaxl*tempx2l_att + gammaxl*tempx3l_att
duxdyl_att = xiyl*tempx1l_att + etayl*tempx2l_att + gammayl*tempx3l_att
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -256,49 +256,85 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
- ! use first order Taylor expansion of displacement for local storage of stresses
- ! at this current time step, to fix attenuation in a consistent way
+ if(ATTENUATION_VAL) then
+ if(ATTENUATION_NEW_VAL) then
+ ! takes new routines
+ ! use first order Taylor expansion of displacement for local storage of stresses
+ ! at this current time step, to fix attenuation in a consistent way
- do k=1,NGLLZ
- do j=1,NGLLY
+ do k=1,NGLLZ
+ do j=1,NGLLY
#ifdef _HANDOPT
- ! way 2:
- ! since we know that NGLLX = 5, this should help pipelining
- iglobv5(:) = ibool(:,j,k,ispec)
+ ! way 2:
+ ! since we know that NGLLX = 5, this should help pipelining
+ iglobv5(:) = ibool(:,j,k,ispec)
- dummyx_loc_att(1,j,k) = displ_crust_mantle(1,iglobv5(1)) + deltat*veloc_crust_mantle(1,iglobv5(1))
- dummyy_loc_att(1,j,k) = displ_crust_mantle(2,iglobv5(1)) + deltat*veloc_crust_mantle(2,iglobv5(1))
- dummyz_loc_att(1,j,k) = displ_crust_mantle(3,iglobv5(1)) + deltat*veloc_crust_mantle(3,iglobv5(1))
+ dummyx_loc_att(1,j,k) = displ_crust_mantle(1,iglobv5(1)) + deltat*veloc_crust_mantle(1,iglobv5(1))
+ dummyy_loc_att(1,j,k) = displ_crust_mantle(2,iglobv5(1)) + deltat*veloc_crust_mantle(2,iglobv5(1))
+ dummyz_loc_att(1,j,k) = displ_crust_mantle(3,iglobv5(1)) + deltat*veloc_crust_mantle(3,iglobv5(1))
- dummyx_loc_att(2,j,k) = displ_crust_mantle(1,iglobv5(2)) + deltat*veloc_crust_mantle(1,iglobv5(2))
- dummyy_loc_att(2,j,k) = displ_crust_mantle(2,iglobv5(2)) + deltat*veloc_crust_mantle(2,iglobv5(2))
- dummyz_loc_att(2,j,k) = displ_crust_mantle(3,iglobv5(2)) + deltat*veloc_crust_mantle(3,iglobv5(2))
+ dummyx_loc_att(2,j,k) = displ_crust_mantle(1,iglobv5(2)) + deltat*veloc_crust_mantle(1,iglobv5(2))
+ dummyy_loc_att(2,j,k) = displ_crust_mantle(2,iglobv5(2)) + deltat*veloc_crust_mantle(2,iglobv5(2))
+ dummyz_loc_att(2,j,k) = displ_crust_mantle(3,iglobv5(2)) + deltat*veloc_crust_mantle(3,iglobv5(2))
- dummyx_loc_att(3,j,k) = displ_crust_mantle(1,iglobv5(3)) + deltat*veloc_crust_mantle(1,iglobv5(3))
- dummyy_loc_att(3,j,k) = displ_crust_mantle(2,iglobv5(3)) + deltat*veloc_crust_mantle(2,iglobv5(3))
- dummyz_loc_att(3,j,k) = displ_crust_mantle(3,iglobv5(3)) + deltat*veloc_crust_mantle(3,iglobv5(3))
+ dummyx_loc_att(3,j,k) = displ_crust_mantle(1,iglobv5(3)) + deltat*veloc_crust_mantle(1,iglobv5(3))
+ dummyy_loc_att(3,j,k) = displ_crust_mantle(2,iglobv5(3)) + deltat*veloc_crust_mantle(2,iglobv5(3))
+ dummyz_loc_att(3,j,k) = displ_crust_mantle(3,iglobv5(3)) + deltat*veloc_crust_mantle(3,iglobv5(3))
- dummyx_loc_att(4,j,k) = displ_crust_mantle(1,iglobv5(4)) + deltat*veloc_crust_mantle(1,iglobv5(4))
- dummyy_loc_att(4,j,k) = displ_crust_mantle(2,iglobv5(4)) + deltat*veloc_crust_mantle(2,iglobv5(4))
- dummyz_loc_att(4,j,k) = displ_crust_mantle(3,iglobv5(4)) + deltat*veloc_crust_mantle(3,iglobv5(4))
+ dummyx_loc_att(4,j,k) = displ_crust_mantle(1,iglobv5(4)) + deltat*veloc_crust_mantle(1,iglobv5(4))
+ dummyy_loc_att(4,j,k) = displ_crust_mantle(2,iglobv5(4)) + deltat*veloc_crust_mantle(2,iglobv5(4))
+ dummyz_loc_att(4,j,k) = displ_crust_mantle(3,iglobv5(4)) + deltat*veloc_crust_mantle(3,iglobv5(4))
- dummyx_loc_att(5,j,k) = displ_crust_mantle(1,iglobv5(5)) + deltat*veloc_crust_mantle(1,iglobv5(5))
- dummyy_loc_att(5,j,k) = displ_crust_mantle(2,iglobv5(5)) + deltat*veloc_crust_mantle(2,iglobv5(5))
- dummyz_loc_att(5,j,k) = displ_crust_mantle(3,iglobv5(5)) + deltat*veloc_crust_mantle(3,iglobv5(5))
+ dummyx_loc_att(5,j,k) = displ_crust_mantle(1,iglobv5(5)) + deltat*veloc_crust_mantle(1,iglobv5(5))
+ dummyy_loc_att(5,j,k) = displ_crust_mantle(2,iglobv5(5)) + deltat*veloc_crust_mantle(2,iglobv5(5))
+ dummyz_loc_att(5,j,k) = displ_crust_mantle(3,iglobv5(5)) + deltat*veloc_crust_mantle(3,iglobv5(5))
#else
- ! way 1:
- do i=1,NGLLX
- iglob1 = ibool(i,j,k,ispec)
- dummyx_loc_att(i,j,k) = displ_crust_mantle(1,iglob1) + deltat*veloc_crust_mantle(1,iglob1)
- dummyy_loc_att(i,j,k) = displ_crust_mantle(2,iglob1) + deltat*veloc_crust_mantle(2,iglob1)
- dummyz_loc_att(i,j,k) = displ_crust_mantle(3,iglob1) + deltat*veloc_crust_mantle(3,iglob1)
- enddo
+ ! way 1:
+ do i=1,NGLLX
+ iglob1 = ibool(i,j,k,ispec)
+ dummyx_loc_att(i,j,k) = displ_crust_mantle(1,iglob1) + deltat*veloc_crust_mantle(1,iglob1)
+ dummyy_loc_att(i,j,k) = displ_crust_mantle(2,iglob1) + deltat*veloc_crust_mantle(2,iglob1)
+ dummyz_loc_att(i,j,k) = displ_crust_mantle(3,iglob1) + deltat*veloc_crust_mantle(3,iglob1)
+ enddo
#endif
+ enddo
enddo
+ endif
+ else
+ ! takes old routines
+ do k=1,NGLLZ
+ do j=1,NGLLY
+#ifdef _HANDOPT
+ dummyx_loc_att(1,j,k) = dummyx_loc(1,j,k)
+ dummyy_loc_att(1,j,k) = dummyx_loc(1,j,k)
+ dummyz_loc_att(1,j,k) = dummyx_loc(1,j,k)
+
+ dummyx_loc_att(2,j,k) = dummyx_loc(2,j,k)
+ dummyy_loc_att(2,j,k) = dummyx_loc(2,j,k)
+ dummyz_loc_att(2,j,k) = dummyx_loc(2,j,k)
+
+ dummyx_loc_att(3,j,k) = dummyx_loc(3,j,k)
+ dummyy_loc_att(3,j,k) = dummyx_loc(3,j,k)
+ dummyz_loc_att(3,j,k) = dummyx_loc(3,j,k)
+
+ dummyx_loc_att(4,j,k) = dummyx_loc(4,j,k)
+ dummyy_loc_att(4,j,k) = dummyx_loc(4,j,k)
+ dummyz_loc_att(4,j,k) = dummyx_loc(4,j,k)
+
+ dummyx_loc_att(5,j,k) = dummyx_loc(5,j,k)
+ dummyy_loc_att(5,j,k) = dummyx_loc(5,j,k)
+ dummyz_loc_att(5,j,k) = dummyx_loc(5,j,k)
+#else
+ do i=1,NGLLX
+ dummyx_loc_att(i,j,k) = dummyx_loc(i,j,k)
+ dummyy_loc_att(i,j,k) = dummyy_loc(i,j,k)
+ dummyz_loc_att(i,j,k) = dummyz_loc(i,j,k)
+ enddo
+#endif
+ enddo
enddo
endif
@@ -324,7 +360,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m2
do i=1,m1
@@ -374,7 +410,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m1
do i=1,m1
@@ -424,7 +460,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m1
do i=1,m2
@@ -455,7 +491,7 @@
if(ANISOTROPIC_3D_MANTLE_VAL) then
! anisotropic element
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
call compute_element_aniso(ispec, &
minus_gravity_table,density_table,minus_deriv_gravity_table, &
xstore,ystore,zstore, &
@@ -492,7 +528,7 @@
if( .not. ispec_is_tiso(ispec) ) then
! isotropic element
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
call compute_element_iso(ispec, &
minus_gravity_table,density_table,minus_deriv_gravity_table, &
xstore,ystore,zstore, &
@@ -525,7 +561,7 @@
else
! transverse isotropic element
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
call compute_element_tiso(ispec, &
minus_gravity_table,density_table,minus_deriv_gravity_table, &
xstore,ystore,zstore, &
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core.f90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -212,7 +212,7 @@
tempz3l = tempz3l + displ_inner_core(3,iglob)*hp3
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
tempx1l_att = 0._CUSTOM_REAL
@@ -227,40 +227,57 @@
tempz2l_att = 0._CUSTOM_REAL
tempz3l_att = 0._CUSTOM_REAL
- ! use first order Taylor expansion of displacement for local storage of stresses
- ! at this current time step, to fix attenuation in a consistent way
- do l=1,NGLLX
- hp1 = hprime_xx(i,l)
- iglob = ibool(l,j,k,ispec)
- tempx1l_att = tempx1l_att + &
- (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp1
- tempy1l_att = tempy1l_att + &
- (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp1
- tempz1l_att = tempz1l_att + &
- (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp1
+ if(ATTENUATION_NEW_VAL) then
+ ! takes new routines
+ ! use first order Taylor expansion of displacement for local storage of stresses
+ ! at this current time step, to fix attenuation in a consistent way
+ do l=1,NGLLX
+ hp1 = hprime_xx(i,l)
+ iglob = ibool(l,j,k,ispec)
+ tempx1l_att = tempx1l_att + &
+ (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp1
+ tempy1l_att = tempy1l_att + &
+ (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp1
+ tempz1l_att = tempz1l_att + &
+ (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp1
+
!!! can merge these loops because NGLLX = NGLLY = NGLLZ enddo
!!! can merge these loops because NGLLX = NGLLY = NGLLZ do l=1,NGLLY
- hp2 = hprime_yy(j,l)
- iglob = ibool(i,l,k,ispec)
- tempx2l_att = tempx2l_att + &
- (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp2
- tempy2l_att = tempy2l_att + &
- (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp2
- tempz2l_att = tempz2l_att + &
- (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp2
+ hp2 = hprime_yy(j,l)
+ iglob = ibool(i,l,k,ispec)
+ tempx2l_att = tempx2l_att + &
+ (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp2
+ tempy2l_att = tempy2l_att + &
+ (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp2
+ tempz2l_att = tempz2l_att + &
+ (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp2
!!! can merge these loops because NGLLX = NGLLY = NGLLZ enddo
!!! can merge these loops because NGLLX = NGLLY = NGLLZ do l=1,NGLLZ
- hp3 = hprime_zz(k,l)
- iglob = ibool(i,j,l,ispec)
- tempx3l_att = tempx3l_att + &
- (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp3
- tempy3l_att = tempy3l_att + &
- (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp3
- tempz3l_att = tempz3l_att + &
- (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp3
- enddo
+ hp3 = hprime_zz(k,l)
+ iglob = ibool(i,j,l,ispec)
+ tempx3l_att = tempx3l_att + &
+ (displ_inner_core(1,iglob) + deltat*veloc_inner_core(1,iglob))*hp3
+ tempy3l_att = tempy3l_att + &
+ (displ_inner_core(2,iglob) + deltat*veloc_inner_core(2,iglob))*hp3
+ tempz3l_att = tempz3l_att + &
+ (displ_inner_core(3,iglob) + deltat*veloc_inner_core(3,iglob))*hp3
+ enddo
+ endif
+ else
+ ! takes old routines
+ tempx1l_att = tempx1l
+ tempy1l_att = tempy1l
+ tempz1l_att = tempz1l
+
+ tempx2l_att = tempx2l
+ tempy2l_att = tempy2l
+ tempz2l_att = tempz2l
+
+ tempx3l_att = tempx3l
+ tempy3l_att = tempy3l
+ tempz3l_att = tempz3l
endif
! get derivatives of ux, uy and uz with respect to x, y and z
@@ -300,7 +317,7 @@
duzdxl_plus_duxdzl = duzdxl + duxdzl
duzdyl_plus_duydzl = duzdyl + duydzl
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
duxdxl_att = xixl*tempx1l_att + etaxl*tempx2l_att + gammaxl*tempx3l_att
duxdyl_att = xiyl*tempx1l_att + etayl*tempx2l_att + gammayl*tempx3l_att
Modified: seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core_Dev.F90 2012-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/compute_forces_inner_core_Dev.F90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -275,50 +275,86 @@
#endif
enddo
enddo
+
+ if(ATTENUATION_VAL) then
+ if(ATTENUATION_NEW_VAL) then
+ ! takes new routines
+ ! use first order Taylor expansion of displacement for local storage of stresses
+ ! at this current time step, to fix attenuation in a consistent way
- if( ATTENUATION_VAL ) then
- ! use first order Taylor expansion of displacement for local storage of stresses
- ! at this current time step, to fix attenuation in a consistent way
+ do k=1,NGLLZ
+ do j=1,NGLLY
- do k=1,NGLLZ
- do j=1,NGLLY
-
#ifdef _HANDOPT
- ! way 2:
- ! since we know that NGLLX = 5, this should help pipelining
- iglobv5(:) = ibool(:,j,k,ispec)
+ ! way 2:
+ ! since we know that NGLLX = 5, this should help pipelining
+ iglobv5(:) = ibool(:,j,k,ispec)
- dummyx_loc_att(1,j,k) = displ_inner_core(1,iglobv5(1)) + deltat*veloc_inner_core(1,iglobv5(1))
- dummyy_loc_att(1,j,k) = displ_inner_core(2,iglobv5(1)) + deltat*veloc_inner_core(2,iglobv5(1))
- dummyz_loc_att(1,j,k) = displ_inner_core(3,iglobv5(1)) + deltat*veloc_inner_core(3,iglobv5(1))
+ dummyx_loc_att(1,j,k) = displ_inner_core(1,iglobv5(1)) + deltat*veloc_inner_core(1,iglobv5(1))
+ dummyy_loc_att(1,j,k) = displ_inner_core(2,iglobv5(1)) + deltat*veloc_inner_core(2,iglobv5(1))
+ dummyz_loc_att(1,j,k) = displ_inner_core(3,iglobv5(1)) + deltat*veloc_inner_core(3,iglobv5(1))
- dummyx_loc_att(2,j,k) = displ_inner_core(1,iglobv5(2)) + deltat*veloc_inner_core(1,iglobv5(2))
- dummyy_loc_att(2,j,k) = displ_inner_core(2,iglobv5(2)) + deltat*veloc_inner_core(2,iglobv5(2))
- dummyz_loc_att(2,j,k) = displ_inner_core(3,iglobv5(2)) + deltat*veloc_inner_core(3,iglobv5(2))
+ dummyx_loc_att(2,j,k) = displ_inner_core(1,iglobv5(2)) + deltat*veloc_inner_core(1,iglobv5(2))
+ dummyy_loc_att(2,j,k) = displ_inner_core(2,iglobv5(2)) + deltat*veloc_inner_core(2,iglobv5(2))
+ dummyz_loc_att(2,j,k) = displ_inner_core(3,iglobv5(2)) + deltat*veloc_inner_core(3,iglobv5(2))
- dummyx_loc_att(3,j,k) = displ_inner_core(1,iglobv5(3)) + deltat*veloc_inner_core(1,iglobv5(3))
- dummyy_loc_att(3,j,k) = displ_inner_core(2,iglobv5(3)) + deltat*veloc_inner_core(2,iglobv5(3))
- dummyz_loc_att(3,j,k) = displ_inner_core(3,iglobv5(3)) + deltat*veloc_inner_core(3,iglobv5(3))
+ dummyx_loc_att(3,j,k) = displ_inner_core(1,iglobv5(3)) + deltat*veloc_inner_core(1,iglobv5(3))
+ dummyy_loc_att(3,j,k) = displ_inner_core(2,iglobv5(3)) + deltat*veloc_inner_core(2,iglobv5(3))
+ dummyz_loc_att(3,j,k) = displ_inner_core(3,iglobv5(3)) + deltat*veloc_inner_core(3,iglobv5(3))
- dummyx_loc_att(4,j,k) = displ_inner_core(1,iglobv5(4)) + deltat*veloc_inner_core(1,iglobv5(4))
- dummyy_loc_att(4,j,k) = displ_inner_core(2,iglobv5(4)) + deltat*veloc_inner_core(2,iglobv5(4))
- dummyz_loc_att(4,j,k) = displ_inner_core(3,iglobv5(4)) + deltat*veloc_inner_core(3,iglobv5(4))
+ dummyx_loc_att(4,j,k) = displ_inner_core(1,iglobv5(4)) + deltat*veloc_inner_core(1,iglobv5(4))
+ dummyy_loc_att(4,j,k) = displ_inner_core(2,iglobv5(4)) + deltat*veloc_inner_core(2,iglobv5(4))
+ dummyz_loc_att(4,j,k) = displ_inner_core(3,iglobv5(4)) + deltat*veloc_inner_core(3,iglobv5(4))
- dummyx_loc_att(5,j,k) = displ_inner_core(1,iglobv5(5)) + deltat*veloc_inner_core(1,iglobv5(5))
- dummyy_loc_att(5,j,k) = displ_inner_core(2,iglobv5(5)) + deltat*veloc_inner_core(2,iglobv5(5))
- dummyz_loc_att(5,j,k) = displ_inner_core(3,iglobv5(5)) + deltat*veloc_inner_core(3,iglobv5(5))
+ dummyx_loc_att(5,j,k) = displ_inner_core(1,iglobv5(5)) + deltat*veloc_inner_core(1,iglobv5(5))
+ dummyy_loc_att(5,j,k) = displ_inner_core(2,iglobv5(5)) + deltat*veloc_inner_core(2,iglobv5(5))
+ dummyz_loc_att(5,j,k) = displ_inner_core(3,iglobv5(5)) + deltat*veloc_inner_core(3,iglobv5(5))
#else
- ! way 1:
- do i=1,NGLLX
- iglob1 = ibool(i,j,k,ispec)
- dummyx_loc_att(i,j,k) = displ_inner_core(1,iglob1) + deltat*veloc_inner_core(1,iglob1)
- dummyy_loc_att(i,j,k) = displ_inner_core(2,iglob1) + deltat*veloc_inner_core(2,iglob1)
- dummyz_loc_att(i,j,k) = displ_inner_core(3,iglob1) + deltat*veloc_inner_core(3,iglob1)
- enddo
+ ! way 1:
+ do i=1,NGLLX
+ iglob1 = ibool(i,j,k,ispec)
+ dummyx_loc_att(i,j,k) = displ_inner_core(1,iglob1) + deltat*veloc_inner_core(1,iglob1)
+ dummyy_loc_att(i,j,k) = displ_inner_core(2,iglob1) + deltat*veloc_inner_core(2,iglob1)
+ dummyz_loc_att(i,j,k) = displ_inner_core(3,iglob1) + deltat*veloc_inner_core(3,iglob1)
+ enddo
#endif
+ enddo
enddo
+ endif
+ else
+ ! takes old routines
+ do k=1,NGLLZ
+ do j=1,NGLLY
+#ifdef _HANDOPT
+ dummyx_loc_att(1,j,k) = dummyx_loc(1,j,k)
+ dummyy_loc_att(1,j,k) = dummyx_loc(1,j,k)
+ dummyz_loc_att(1,j,k) = dummyx_loc(1,j,k)
+
+ dummyx_loc_att(2,j,k) = dummyx_loc(2,j,k)
+ dummyy_loc_att(2,j,k) = dummyx_loc(2,j,k)
+ dummyz_loc_att(2,j,k) = dummyx_loc(2,j,k)
+
+ dummyx_loc_att(3,j,k) = dummyx_loc(3,j,k)
+ dummyy_loc_att(3,j,k) = dummyx_loc(3,j,k)
+ dummyz_loc_att(3,j,k) = dummyx_loc(3,j,k)
+
+ dummyx_loc_att(4,j,k) = dummyx_loc(4,j,k)
+ dummyy_loc_att(4,j,k) = dummyx_loc(4,j,k)
+ dummyz_loc_att(4,j,k) = dummyx_loc(4,j,k)
+
+ dummyx_loc_att(5,j,k) = dummyx_loc(5,j,k)
+ dummyy_loc_att(5,j,k) = dummyx_loc(5,j,k)
+ dummyz_loc_att(5,j,k) = dummyx_loc(5,j,k)
+#else
+ do i=1,NGLLX
+ dummyx_loc_att(i,j,k) = dummyx_loc(i,j,k)
+ dummyy_loc_att(i,j,k) = dummyy_loc(i,j,k)
+ dummyz_loc_att(i,j,k) = dummyz_loc(i,j,k)
+ enddo
+#endif
+ enddo
enddo
endif
@@ -344,7 +380,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m2
do i=1,m1
@@ -394,7 +430,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m1
do i=1,m1
@@ -444,7 +480,7 @@
enddo
enddo
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
do j=1,m1
do i=1,m2
@@ -509,7 +545,7 @@
duzdxl_plus_duxdzl = duzdxl + duxdzl
duzdyl_plus_duydzl = duzdyl + duydzl
- if( ATTENUATION_VAL ) then
+ if(ATTENUATION_VAL) then
! temporary variables used for fixing attenuation in a consistent way
duxdxl_att = xixl*tempx1_att(i,j,k) + etaxl*tempx2_att(i,j,k) + gammaxl*tempx3_att(i,j,k)
duxdyl_att = xiyl*tempx1_att(i,j,k) + etayl*tempx2_att(i,j,k) + gammayl*tempx3_att(i,j,k)
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/initialize_simulation.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -48,7 +48,7 @@
GAMMA_ROTATION_AZIMUTH
integer :: REFERENCE_1D_MODEL,THREE_D_MODEL
logical :: TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE,OCEANS, &
- ATTENUATION,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
@@ -81,7 +81,7 @@
ROTATION,ISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
PRINT_SOURCE_TIME_FUNCTION,SAVE_MESH_FILES, &
- ATTENUATION,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
+ ATTENUATION,ATTENUATION_NEW,REFERENCE_1D_MODEL,THREE_D_MODEL,ABSORBING_CONDITIONS, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE, &
LOCAL_PATH,LOCAL_TMP_PATH,MODEL, &
SIMULATION_TYPE,SAVE_FORWARD, &
@@ -140,7 +140,7 @@
REFERENCE_1D_MODEL,THREE_D_MODEL,ELLIPTICITY,GRAVITY,ROTATION,TOPOGRAPHY,OCEANS, &
HONOR_1D_SPHERICAL_MOHO,CRUSTAL,ONE_CRUST,CASE_3D,TRANSVERSE_ISOTROPY, &
ISOTROPIC_3D_MANTLE,ANISOTROPIC_3D_MANTLE,HETEROGEN_3D_MANTLE, &
- ATTENUATION,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ANISOTROPIC_INNER_CORE,NOISE_TOMOGRAPHY)
! broadcasts optional GPU_MODE
call broadcast_gpu_parameters(myrank,GPU_MODE)
@@ -241,7 +241,7 @@
! checks flags
call initialize_simulation_check(sizeprocs,NPROCTOT,NSPEC_COMPUTED, &
- ATTENUATION,ATTENUATION_3D,NCHUNKS,GRAVITY,ROTATION, &
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,NCHUNKS,GRAVITY,ROTATION, &
ELLIPTICITY,OCEANS,NPROC_XI,NPROC_ETA, &
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE)
@@ -276,7 +276,7 @@
!
subroutine initialize_simulation_check(sizeprocs,NPROCTOT,NSPEC_COMPUTED, &
- ATTENUATION,ATTENUATION_3D,NCHUNKS,GRAVITY,ROTATION, &
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,NCHUNKS,GRAVITY,ROTATION, &
ELLIPTICITY,OCEANS,NPROC_XI,NPROC_ETA, &
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE)
@@ -289,7 +289,7 @@
integer, dimension(MAX_NUM_REGIONS) :: NSPEC_computed
logical :: TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE,OCEANS, &
- ATTENUATION,ATTENUATION_3D,ROTATION,ELLIPTICITY,GRAVITY
+ ATTENUATION,ATTENUATION_NEW,ATTENUATION_3D,ROTATION,ELLIPTICITY,GRAVITY
! check that the code is running with the requested nb of processes
@@ -328,6 +328,10 @@
write(IMAIN,*) 'ATTENUATION:',ATTENUATION,ATTENUATION_VAL
call exit_MPI(myrank,'error in compiled parameters ATTENUATION, please recompile solver')
endif
+ if (ATTENUATION_NEW .NEQV. ATTENUATION_NEW_VAL) then
+ write(IMAIN,*) 'ATTENUATION_NEW:',ATTENUATION_NEW,ATTENUATION_NEW_VAL
+ call exit_MPI(myrank,'error in compiled parameters ATTENUATION_NEW, please recompile solver')
+ endif
if (ELLIPTICITY .NEQV. ELLIPTICITY_VAL) then
write(IMAIN,*) 'ELLIPTICITY:',ELLIPTICITY,ELLIPTICITY_VAL
call exit_MPI(myrank,'error in compiled parameters ELLIPTICITY, please recompile solver')
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-05-04 00:46:29 UTC (rev 20039)
+++ seismo/3D/SPECFEM3D_GLOBE/branches/SPECFEM3D_GLOBE_SUNFLOWER/src/specfem3D/prepare_timerun.f90 2012-05-04 11:55:57 UTC (rev 20040)
@@ -1097,7 +1097,7 @@
SIMULATION_TYPE,NOISE_TOMOGRAPHY, &
SAVE_FORWARD,ABSORBING_CONDITIONS, &
OCEANS_VAL,GRAVITY_VAL,ROTATION_VAL, &
- ATTENUATION_VAL,USE_ATTENUATION_MIMIC, &
+ ATTENUATION_VAL,ATTENUATION_NEW_VAL,USE_ATTENUATION_MIMIC, &
COMPUTE_AND_STORE_STRAIN, &
ANISOTROPIC_3D_MANTLE_VAL,ANISOTROPIC_INNER_CORE_VAL, &
SAVE_BOUNDARY_MESH, &
More information about the CIG-COMMITS
mailing list