[cig-commits] r11827 - in seismo/3D/SPECFEM3D_GLOBE/trunk: . DATA
vala at geodynamics.org
vala at geodynamics.org
Thu Apr 17 22:54:56 PDT 2008
Author: vala
Date: 2008-04-17 22:54:56 -0700 (Thu, 17 Apr 2008)
New Revision: 11827
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/DATA/Par_file
seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_1D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_2D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_corners_chunks.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_faces_chunks.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/combine_AVS_DX.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/combine_paraview_strain_data.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/create_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_AVS_DX.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_GMT_global.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/meshfem3D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/read_compute_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/specfem3D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/write_movie_volume.f90
Log:
Modified parameter MOVIE_VOLUME_COARSE to MOVIE_COARSE. This parameter will now work for both MOVIE_VOLUME and MOVIE_SURFACE to output only values at corners of elements. Note that this options so far only works for surface movies with create_movie_GMT_global, not with create_movie_AVS_DX.
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/DATA/Par_file
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/DATA/Par_file 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/DATA/Par_file 2008-04-18 05:54:56 UTC (rev 11827)
@@ -15,7 +15,7 @@
# number of elements at the surface along the two sides of the first chunk
# (must be multiple of 16 and 8 * multiple of NPROC below)
-NEX_XI = 96
+NEX_XI = 96
NEX_ETA = 96
# number of MPI processors along the two sides of the first chunk
@@ -48,8 +48,11 @@
RECORD_LENGTH_IN_MINUTES = 75.0d0
# save AVS or OpenDX movies
+#MOVIE_COARSE saves movie only at corners of elements (SURFACE OR VOLUME)
+#MOVIE_COARSE does not work with create_movie_AVS_DX
MOVIE_SURFACE = .false.
MOVIE_VOLUME = .false.
+MOVIE_COARSE = .false.
NTSTEP_BETWEEN_FRAMES = 100
HDUR_MOVIE = 0.d0
@@ -59,9 +62,7 @@
# start/stop: frames will be stored at MOVIE_START + i*NSTEP_BETWEEN_FRAMES, where i=(0,1,2..) and iNSTEP_BETWEEN_FRAMES <= MOVIE_STOP
# movie_volume_type: 1=strain, 2=time integral of strain, 3=\mu*time integral of strain
# type 4 saves the trace and deviatoric stress in the whole volume, 5=displacement, 6=velocity
-#MOVIE_VOLUME_COARSE saves movie only at corners of elements
MOVIE_VOLUME_TYPE = 2
-MOVIE_VOLUME_COARSE = .true.
MOVIE_TOP_KM = -100.0
MOVIE_BOTTOM_KM = 1000.0
MOVIE_WEST_DEG = -90.0
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_1D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_1D.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_1D.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -70,7 +70,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -132,7 +132,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_2D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_2D.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_2D.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -76,7 +76,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -136,7 +136,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_corners_chunks.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_corners_chunks.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_corners_chunks.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -68,7 +68,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -125,7 +125,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_faces_chunks.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_faces_chunks.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/check_buffers_faces_chunks.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -72,7 +72,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -130,7 +130,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/combine_AVS_DX.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/combine_AVS_DX.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/combine_AVS_DX.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -138,7 +138,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -205,7 +205,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/combine_paraview_strain_data.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/combine_paraview_strain_data.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/combine_paraview_strain_data.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -37,16 +37,16 @@
character(len=150) :: arg(7), prname, dimension_file
character(len=150) :: mesh_file, local_element_file, local_data_file
character(len=3) :: comp
- logical :: MOVIE_VOLUME_COARSE
+ logical :: MOVIE_COARSE
do i = 1,6
call getarg(i,arg(i))
if (i < 7 .and. trim(arg(i)) == '') then
print *, ' '
- print *, ' Usage: xcombine_data nnodes dt_movie itstart itstop comp MOVIE_VOLUME_COARSE'
+ print *, ' Usage: xcombine_data nnodes dt_movie itstart itstop comp MOVIE_COARSE'
print *, ' component can be SEE, SNE,SEZ,SNN,SNZ,SZZ,I1 or I2'
print *, ' stored in the local directory as real(kind=CUSTOM_REAL) filename(NGLLX,NGLLY,NGLLZ,nspec) '
- print *, 'MOVIE_VOLUME_COARSE = 0 or 1 '
+ print *, 'MOVIE_COARSE = 0 or 1 '
stop ' Reenter command line options'
endif
enddo
@@ -57,7 +57,7 @@
read(arg(3),*) itstart
read(arg(4),*) itstop
read(arg(5),*) comp
- read(arg(6),*) MOVIE_VOLUME_COARSE
+ read(arg(6),*) MOVIE_COARSE
if(num_node>1000) stop 'change array sizes for num_node > 1000 and recompile xcombine_paraview_movie_data'
@@ -251,14 +251,14 @@
! print *, trim(local_element_file)
if (iproc == 1) then
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
call write_integer_fd(fid,nelement_all)
else
call write_integer_fd(fid,nelement_all*64)
endif
endif
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
nelement_local = nelement(iproc)
else
nelement_local = nelement(iproc)*64
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/create_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/create_header_file.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/create_header_file.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -52,7 +52,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION,CASE_3D, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD, &
@@ -125,7 +125,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
@@ -142,6 +142,7 @@
DIFF_NSPEC1D_RADIAL,DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA,&
WRITE_SEISMOGRAMS_BY_MASTER,SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,.false.)
+
! count the total number of sources in the CMTSOLUTION file
call count_number_of_sources(NSOURCES)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_AVS_DX.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_AVS_DX.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_AVS_DX.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -702,7 +702,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -754,7 +754,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
@@ -770,6 +770,7 @@
ROTATE_SEISMOGRAMS_RT,ratio_divide_central_cube,HONOR_1D_SPHERICAL_MOHO,CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA,&
DIFF_NSPEC1D_RADIAL,DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA,&
WRITE_SEISMOGRAMS_BY_MASTER,SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,.false.)
+ if(MOVIE_COARSE) stop 'create_movie_AVS_DX does not work with MOVIE_COARSE'
end subroutine read_AVS_DX_parameters
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_GMT_global.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_GMT_global.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/create_movie_GMT_global.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -40,14 +40,14 @@
integer ispec
real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: x,y,z,displn
- real(kind=CUSTOM_REAL) xcoord,ycoord,zcoord,rval,thetaval,phival,lat,long
+ real(kind=CUSTOM_REAL) xcoord,ycoord,zcoord,rval,thetaval,phival
real(kind=CUSTOM_REAL) RRval,rhoval
real(kind=CUSTOM_REAL) displx,disply,displz
real(kind=CUSTOM_REAL) normal_x,normal_y,normal_z
real(kind=CUSTOM_REAL) thetahat_x,thetahat_y,thetahat_z
real(kind=CUSTOM_REAL) phihat_x,phihat_y
double precision min_field_current,max_field_current,max_absol
- real disp
+ real disp,lat,long
integer nframes,iframe,USE_COMPONENT
character(len=150) outputname
@@ -55,7 +55,7 @@
integer iproc,ipoin
! for sorting routine
- integer npointot,ilocnum,ielm,ieoff,ispecloc
+ integer npointot,ilocnum,ielm,ieoff,ispecloc,NIT
double precision, dimension(:), allocatable :: xp,yp,zp,field_display
! for dynamic memory allocation
@@ -84,7 +84,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD, &
@@ -113,7 +113,7 @@
double precision, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: r_bottom,r_top
logical, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: this_region_has_a_doubling
double precision, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: rmins,rmaxs
- logical :: CASE_3D
+ logical :: CASE_3D,OUTPUT_BINARY
logical :: CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA
integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
@@ -123,7 +123,7 @@
print *
print *,'Recombining all movie frames to create a movie'
- print *
+ print *,'Run this program from the directory containing directories DATA and OUTPUT_FILES'
print *
print *,'reading parameter file'
@@ -145,7 +145,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
@@ -168,9 +168,13 @@
print *
print *,'There are ',NPROCTOT,' slices numbered from 0 to ',NPROCTOT-1
print *
-
- ilocnum = NGLLX*NGLLY*NEX_PER_PROC_XI*NEX_PER_PROC_ETA
-
+ if(MOVIE_COARSE) then
+ ilocnum = 2 * 2 * NEX_PER_PROC_XI*NEX_PER_PROC_ETA
+ NIT =NGLLX-1
+ else
+ ilocnum = NGLLX*NGLLY*NEX_PER_PROC_XI*NEX_PER_PROC_ETA
+ NIT = 1
+ endif
print *
print *,'Allocating arrays for reading data of size ',ilocnum*NPROCTOT,'=',6*ilocnum*NPROCTOT*CUSTOM_REAL/1000000,'MB'
print *
@@ -219,6 +223,9 @@
print *,'enter component (e.g. 1=Z, 2=N, 3=E)'
read(5,*) USE_COMPONENT
+ print *,'enter output ascii (0) or binary (1)'
+ read(5,*) OUTPUT_BINARY
+
print *
print *,'looping from ',it1,' to ',it2,' every ',NTSTEP_BETWEEN_FRAMES,' time steps'
@@ -232,7 +239,11 @@
if(nframes == 0) stop 'null number of frames'
! maximum theoretical number of points at the surface
- npointot = NCHUNKS * NEX_XI * NEX_ETA * (NGLLX-1) * (NGLLY-1)
+ if(MOVIE_COARSE) then
+ npointot = NCHUNKS * NEX_XI * NEX_ETA
+ else
+ npointot = NCHUNKS * NEX_XI * NEX_ETA * (NGLLX-1) * (NGLLY-1)
+ endif
print *
print *,'there are a total of ',npointot,' points on the surface.'
@@ -264,14 +275,13 @@
! loop on all the time steps in the range entered
do it = it1,it2
-
! check if time step corresponds to a movie frame
if(mod(it,NTSTEP_BETWEEN_FRAMES) == 0) then
iframe = iframe + 1
! read all the elements from the same file
- write(outputname,"('moviedata',i6.6)") it
+ write(outputname,"('OUTPUT_FILES/moviedata',i6.6)") it
open(unit=IOUT,file=outputname,status='old',form='unformatted')
print *
@@ -292,17 +302,12 @@
! read points for all the slices
print *,'Converting to geo-coordinates'
do iproc = 0,NPROCTOT-1
-
! reset point number
ipoin = 0
-
do ispecloc = 1,NEX_PER_PROC_XI*NEX_PER_PROC_ETA
-
- do j = 1,NGLLY
- do i = 1,NGLLX
-
+ do j = 1,NGLLY,NIT
+ do i = 1,NGLLX,NIT
ipoin = ipoin + 1
-
xcoord = store_val_x(ipoin,iproc)
ycoord = store_val_y(ipoin,iproc)
zcoord = store_val_z(ipoin,iproc)
@@ -323,7 +328,6 @@
z(i,j) = zcoord
if(USE_COMPONENT == 1) then
-
! compute unit normal vector to the surface
RRval = sqrt(xcoord**2 + ycoord**2 + zcoord**2)
normal_x = xcoord / RRval
@@ -351,24 +355,32 @@
displn(i,j) = displx*phihat_x + disply*phihat_y
endif
- enddo
- enddo
+ enddo !i
+ enddo !j
ispec = ispec + 1
- ielm = (NGLLX-1)*(NGLLY-1)*(ispec-1)
- do j = 1,NGLLY-1
- do i = 1,NGLLX-1
- ieoff = (ielm+(i-1)+(j-1)*(NGLLX-1))
+ if(MOVIE_COARSE) then
+ ielm = ispec-1
+ else
+ ielm = (NGLLX-1)*(NGLLY-1)*(ispec-1)
+ endif
+ do j = 1,NGLLY-NIT
+ do i = 1,NGLLX-NIT
+ if(MOVIE_COARSE) then
+ ieoff = ielm+1
+ else
+ ieoff = (ielm+(i-1)+(j-1)*(NGLLX-1))+1
+ endif
xp(ieoff) = dble(x(i,j))
yp(ieoff) = dble(y(i,j))
zp(ieoff) = dble(z(i,j))
field_display(ieoff) = dble(displn(i,j))
- enddo
- enddo
+ enddo !i
+ enddo !j
- enddo
+ enddo !ispec
- enddo
+ enddo !nproc
! compute min and max of data value to normalize
min_field_current = minval(field_display(:))
@@ -391,23 +403,37 @@
print *
print *,'initial number of points (with multiples) was ',npointot
+ print *,'final number of points is ',ieoff
!--- ****** create GMT file ******
! create file name and open file
+ if(OUTPUT_BINARY) then
if(USE_COMPONENT == 1) then
+ write(outputname,"('bin_movie_',i6.6,'.d')") it
+ elseif(USE_COMPONENT == 2) then
+ write(outputname,"('bin_movie_',i6.6,'.N')") it
+ elseif(USE_COMPONENT == 3) then
+ write(outputname,"('bin_movie_',i6.6,'.E')") it
+ endif
+ open(unit=11,file='OUTPUT_FILES/'//trim(outputname),status='unknown',form='unformatted')
+ if(iframe == 1) open(unit=12,file='OUTPUT_FILES/bin_movie.xy',status='unknown',form='unformatted')
+ else
+ if(USE_COMPONENT == 1) then
write(outputname,"('ascii_movie_',i6.6,'.d')") it
elseif(USE_COMPONENT == 2) then
write(outputname,"('ascii_movie_',i6.6,'.N')") it
elseif(USE_COMPONENT == 3) then
write(outputname,"('ascii_movie_',i6.6,'.E')") it
endif
-
+ open(unit=11,file='OUTPUT_FILES/'//trim(outputname),status='unknown')
+ if(iframe == 1) open(unit=12,file='OUTPUT_FILES/ascii_movie.xy',status='unknown')
+ endif
! clear number of elements kept
ispec = 0
! read points for all the slices
- print *,'Writing output'
+ print *,'Writing output',outputname
do iproc = 0,NPROCTOT-1
! reset point number
@@ -415,10 +441,18 @@
do ispecloc = 1,NEX_PER_PROC_XI*NEX_PER_PROC_ETA
ispec = ispec + 1
- ielm = (NGLLX-1)*(NGLLY-1)*(ispec-1)
- do j = 1,NGLLY-1
- do i = 1,NGLLX-1
- ieoff = (ielm+(i-1)+(j-1)*(NGLLX-1))
+ if(MOVIE_COARSE) then
+ ielm = ispec - 1
+ else
+ ielm = (NGLLX-1)*(NGLLY-1)*(ispec-1)
+ endif
+ do j = 1,NGLLY-NIT
+ do i = 1,NGLLX-NIT
+ if(MOVIE_COARSE) then
+ ieoff = ielm + 1
+ else
+ ieoff = (ielm+(i-1)+(j-1)*(NGLLX-1))+1
+ endif
xcoord = sngl(xp(ieoff))
ycoord = sngl(yp(ieoff))
zcoord = sngl(zp(ieoff))
@@ -427,11 +461,19 @@
long = sngl(phival*180.0/PI)
disp = sngl(field_display(ieoff))
if(long > 180.0) long = long-360.0
- write(11,*) long, lat, disp
- enddo
- enddo
- enddo
- enddo
+ if(OUTPUT_BINARY) then
+ write(11) disp
+ if(iframe == 1) write(12) long,lat
+ else
+ write(11,*) disp
+ if(iframe == 1) write(12,*) long,lat
+ endif
+ enddo !i
+ enddo !j
+ enddo !ispecloc
+ enddo !iproc
+ close(11)
+ if(iframe == 1) close(12)
! end of loop and test on all the time steps for all the movie images
@@ -439,8 +481,8 @@
enddo
print *,'done creating movie'
- print *,'GMT files are stored in ascii_files_*.{xy,d,E,N}'
-
+ print *,'GMT ascii files are stored in ascii_movie_*.{xy,d,E,N}'
+ print *,'binary files are stored in bin_movie_*.{xy,d,E,N}'
end program create_movie_GMT_global
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/meshfem3D.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/meshfem3D.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -453,7 +453,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -614,7 +614,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/read_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/read_compute_parameters.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/read_compute_parameters.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -40,7 +40,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
@@ -83,7 +83,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD, &
@@ -1010,6 +1010,8 @@
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
call read_value_logical(MOVIE_VOLUME, 'solver.MOVIE_VOLUME')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
+ call read_value_logical(MOVIE_COARSE,'solver.MOVIE_COARSE')
+ if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
call read_value_integer(NTSTEP_BETWEEN_FRAMES, 'solver.NTSTEP_BETWEEN_FRAMES')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
call read_value_double_precision(HDUR_MOVIE, 'solver.HDUR_MOVIE')
@@ -1018,13 +1020,11 @@
! computes a default hdur_movie that creates nice looking movies.
! Sets HDUR_MOVIE as the minimum period the mesh can resolve
if(HDUR_MOVIE <= TINYVAL) &
- HDUR_MOVIE = 1.1d0*max(240.d0/NEX_XI*18.d0*ANGULAR_WIDTH_XI_IN_DEGREES/90.d0, &
+ HDUR_MOVIE = 1.2d0*max(240.d0/NEX_XI*18.d0*ANGULAR_WIDTH_XI_IN_DEGREES/90.d0, &
240.d0/NEX_ETA*18.d0*ANGULAR_WIDTH_ETA_IN_DEGREES/90.d0)
call read_value_integer(MOVIE_VOLUME_TYPE, 'solver.MOVIE_VOLUME_TYPE')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
- call read_value_logical(MOVIE_VOLUME_COARSE,'solver.MOVIE_VOLUME_COARSE')
- if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
call read_value_double_precision(MOVIE_TOP_KM, 'solver.MOVIE_TOP_KM')
if(err_occurred() /= 0) stop 'an error occurred while reading the parameter file'
call read_value_double_precision(MOVIE_BOTTOM_KM, 'solver.MOVIE_BOTTOM_KM')
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/specfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/specfem3D.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/specfem3D.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -284,7 +284,7 @@
integer nspec2D_xmin_inner_core,nspec2D_xmax_inner_core,nspec2D_ymin_inner_core,nspec2D_ymax_inner_core,ndim_assemble
! to save movie frames
- integer nmovie_points,ipoin
+ integer nmovie_points,ipoin,NIT
real(kind=CUSTOM_REAL), dimension(:), allocatable :: &
store_val_x,store_val_y,store_val_z, &
store_val_ux,store_val_uy,store_val_uz
@@ -718,7 +718,7 @@
logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD, &
@@ -837,7 +837,7 @@
TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE, &
ANISOTROPIC_INNER_CORE,CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST, &
ROTATION,ISOTROPIC_3D_MANTLE,TOPOGRAPHY,OCEANS,MOVIE_SURFACE, &
- MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D,RECEIVERS_CAN_BE_BURIED, &
+ 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, &
INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,LOCAL_PATH,MODEL,SIMULATION_TYPE,SAVE_FORWARD, &
@@ -875,7 +875,7 @@
bcast_logical = (/TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
- TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_VOLUME_COARSE,ATTENUATION_3D, &
+ TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
SAVE_MESH_FILES,ATTENUATION, &
ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
@@ -985,7 +985,7 @@
OCEANS = bcast_logical(11)
MOVIE_SURFACE = bcast_logical(12)
MOVIE_VOLUME = bcast_logical(13)
- MOVIE_VOLUME_COARSE = bcast_logical(14)
+ MOVIE_COARSE = bcast_logical(14)
ATTENUATION_3D = bcast_logical(15)
RECEIVERS_CAN_BE_BURIED = bcast_logical(16)
PRINT_SOURCE_TIME_FUNCTION = bcast_logical(17)
@@ -2554,7 +2554,14 @@
! allocate files to save movies
if(MOVIE_SURFACE) then
- nmovie_points = NGLLX * NGLLY * NSPEC2D_TOP(IREGION_CRUST_MANTLE)
+ if(MOVIE_COARSE) then !only output corners
+ nmovie_points = 2 * 2 * NSPEC2D_TOP(IREGION_CRUST_MANTLE)
+ if(NGLLX .ne. NGLLY) call MPI_exit(myrank,'MOVIE_COARSE together with MOVIE_SURFACE requires NGLLX=NGLLY')
+ NIT = NGLLX - 1
+ else
+ nmovie_points = NGLLX * NGLLY * NSPEC2D_TOP(IREGION_CRUST_MANTLE)
+ NIT = 1
+ endif
allocate(store_val_x(nmovie_points))
allocate(store_val_y(nmovie_points))
allocate(store_val_z(nmovie_points))
@@ -2579,12 +2586,12 @@
write(prname,'(a,i6.6,a)') trim(LOCAL_PATH)//'/'//'proc',myrank,'_'
call count_points_movie_volume(prname,ibool_crust_mantle, xstore_crust_mantle,ystore_crust_mantle, &
zstore_crust_mantle,MOVIE_TOP,MOVIE_BOTTOM,MOVIE_WEST,MOVIE_EAST,MOVIE_NORTH,MOVIE_SOUTH, &
- MOVIE_VOLUME_COARSE,npoints_3dmovie,nspecel_3dmovie,num_ibool_3dmovie,mask_ibool_3dmovie,mask_3dmovie)
+ MOVIE_COARSE,npoints_3dmovie,nspecel_3dmovie,num_ibool_3dmovie,mask_ibool_3dmovie,mask_3dmovie)
allocate(nu_3dmovie(3,3,npoints_3dmovie))
call write_movie_volume_mesh(npoints_3dmovie,prname,ibool_crust_mantle,xstore_crust_mantle, &
ystore_crust_mantle,zstore_crust_mantle, muvstore_crust_mantle_3dmovie, &
- mask_3dmovie,mask_ibool_3dmovie,num_ibool_3dmovie,nu_3dmovie,MOVIE_VOLUME_COARSE)
+ mask_3dmovie,mask_ibool_3dmovie,num_ibool_3dmovie,nu_3dmovie,MOVIE_COARSE)
if(myrank == 0) then
write(IMAIN,*) 'Writing to movie3D files on local disk'
@@ -4815,8 +4822,8 @@
k = NGLLZ
! loop on all the points inside the element
- do j = 1,NGLLY
- do i = 1,NGLLX
+ do j = 1,NGLLY,NIT
+ do i = 1,NGLLX,NIT
ipoin = ipoin + 1
iglob = ibool_crust_mantle(i,j,k,ispec)
store_val_x(ipoin) = xstore_crust_mantle(iglob)
@@ -4859,13 +4866,13 @@
if (MOVIE_VOLUME_TYPE == 1) then ! output strains
- call write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_VOLUME_COARSE, &
+ call write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_COARSE, &
it,eps_trace_over_3_crust_mantle,epsilondev_crust_mantle,muvstore_crust_mantle_3dmovie, &
mask_3dmovie,nu_3dmovie)
else if (MOVIE_VOLUME_TYPE == 2 .or. MOVIE_VOLUME_TYPE == 3) then ! output the Time Integral of Strain, or \mu*TIS
- call write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_VOLUME_COARSE, &
+ call write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_COARSE, &
it,Ieps_trace_over_3_crust_mantle,Iepsilondev_crust_mantle,muvstore_crust_mantle_3dmovie, &
mask_3dmovie,nu_3dmovie)
@@ -4878,12 +4885,12 @@
else if (MOVIE_VOLUME_TYPE == 5) then !output displacement
scalingval = scale_displ
call write_movie_volume_vector(myrank,it,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE, &
- MOVIE_VOLUME_COARSE,displ_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
+ MOVIE_COARSE,displ_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
else if (MOVIE_VOLUME_TYPE == 6) then !output velocity
scalingval = scale_veloc
call write_movie_volume_vector(myrank,it,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE, &
- MOVIE_VOLUME_COARSE,veloc_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
+ MOVIE_COARSE,veloc_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
else
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/write_movie_volume.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/write_movie_volume.f90 2008-04-18 00:27:11 UTC (rev 11826)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/write_movie_volume.f90 2008-04-18 05:54:56 UTC (rev 11827)
@@ -34,7 +34,7 @@
subroutine count_points_movie_volume(prname,ibool_crust_mantle, xstore_crust_mantle,ystore_crust_mantle, &
zstore_crust_mantle,MOVIE_TOP,MOVIE_BOTTOM,MOVIE_WEST,MOVIE_EAST,MOVIE_NORTH,MOVIE_SOUTH, &
- MOVIE_VOLUME_COARSE,npoints_3dmovie,nspecel_3dmovie,num_ibool_3dmovie, &
+ MOVIE_COARSE,npoints_3dmovie,nspecel_3dmovie,num_ibool_3dmovie, &
mask_ibool_3dmovie,mask_3dmovie)
implicit none
@@ -46,7 +46,7 @@
integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
real(kind=CUSTOM_REAL), dimension(NGLOB_CRUST_MANTLE) :: xstore_crust_mantle,ystore_crust_mantle,zstore_crust_mantle
double precision :: MOVIE_TOP,MOVIE_BOTTOM,MOVIE_WEST,MOVIE_EAST,MOVIE_NORTH,MOVIE_SOUTH
- logical :: MOVIE_VOLUME_COARSE
+ logical :: MOVIE_COARSE
character(len=150) :: prname
! output
@@ -59,7 +59,7 @@
integer :: ipoints_3dmovie,ispecel_3dmovie,ispec,iglob,i,j,k,NIT
real(kind=custom_real) :: rval,thetaval,phival
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
NIT = NGLLX-1
else
NIT = 1
@@ -114,7 +114,7 @@
subroutine write_movie_volume_mesh(npoints_3dmovie,prname,ibool_crust_mantle,xstore_crust_mantle, &
ystore_crust_mantle,zstore_crust_mantle, muvstore_crust_mantle_3dmovie, &
- mask_3dmovie,mask_ibool_3dmovie,num_ibool_3dmovie,nu_3dmovie,MOVIE_VOLUME_COARSE)
+ mask_3dmovie,mask_ibool_3dmovie,num_ibool_3dmovie,nu_3dmovie,MOVIE_COARSE)
implicit none
@@ -129,7 +129,7 @@
character(len=150) :: prname
logical, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: mask_3dmovie
logical, dimension(NGLOB_CRUST_MANTLE) :: mask_ibool_3dmovie
- logical :: MOVIE_VOLUME_COARSE
+ logical :: MOVIE_COARSE
integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
!output
@@ -142,7 +142,9 @@
real(kind=CUSTOM_REAL) :: rval,thetaval,phival,xval,yval,zval,st,ct,sp,cp
real(kind=CUSTOM_REAL), dimension(npoints_3dmovie) :: store_val3D_x,store_val3D_y, store_val3D_z
- if(MOVIE_VOLUME_COARSE) then
+ if(NDIM .ne. 3) stop 'movie volume output requires NDIM = 3'
+
+ if(MOVIE_COARSE) then
NIT = NGLLX-1
else
NIT = 1
@@ -211,7 +213,7 @@
ispecele=0
! open(unit=IOUT,file=trim(prname)//'movie3D_elements.txt',status='unknown')
do ispec=1,NSPEC_CRUST_MANTLE
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
iglob=ibool_crust_mantle(1,1,1,ispec)
else
iglob=ibool_crust_mantle(3,3,3,ispec)
@@ -252,7 +254,7 @@
! ---------------------------------------------
- subroutine write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_VOLUME_COARSE, &
+ subroutine write_movie_volume_strains(myrank,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE,MOVIE_COARSE, &
it,eps_trace_over_3_crust_mantle,epsilondev_crust_mantle,muvstore_crust_mantle_3dmovie, &
mask_3dmovie,nu_3dmovie)
@@ -268,7 +270,7 @@
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) :: muvstore_crust_mantle_3dmovie
logical, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: mask_3dmovie
-logical :: MOVIE_VOLUME_COARSE
+logical :: MOVIE_COARSE
real(kind=CUSTOM_REAL), dimension(3,3,npoints_3dmovie) :: nu_3dmovie
character(len=150) LOCAL_PATH,outputname
@@ -289,6 +291,8 @@
allocate(store_val3d_NZ(npoints_3dmovie))
allocate(store_val3d_EZ(npoints_3dmovie))
+ if(NDIM .ne. 3) call exit_MPI(myrank, 'write_movie_volume requires NDIM = 3')
+
if(MOVIE_VOLUME_TYPE == 1) then
movie_prefix='E' ! strain
else if(MOVIE_VOLUME_TYPE == 2) then
@@ -296,7 +300,7 @@
else if(MOVIE_VOLUME_TYPE == 3) then
movie_prefix='P' ! potency, or integral of strain x \mu
endif
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
NIT = NGLLX-1
else
NIT = 1
@@ -372,7 +376,7 @@
! ---------------------------------------------
subroutine write_movie_volume_vector(myrank,it,npoints_3dmovie,LOCAL_PATH,MOVIE_VOLUME_TYPE, &
- MOVIE_VOLUME_COARSE,vector_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
+ MOVIE_COARSE,ibool_crust_mantle,vector_crust_mantle,scalingval,mask_3dmovie,nu_3dmovie)
implicit none
include "constants.h"
@@ -380,20 +384,22 @@
! input
integer :: myrank,npoints_3dmovie,MOVIE_VOLUME_TYPE,it
-real(kind=CUSTOM_REAL), dimension(3,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: vector_crust_mantle,vector_scaled
+real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
+real(kind=CUSTOM_REAL), dimension(3,NSPEC_CRUST_MANTLE) :: vector_crust_mantle,vector_scaled
real(kind=CUSTOM_REAL), dimension(3,3,npoints_3dmovie) :: nu_3dmovie
double precision :: scalingval
real(kind=CUSTOM_REAL), dimension(3) :: vector_local,vector_local_new
logical, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: mask_3dmovie
-logical :: MOVIE_VOLUME_COARSE
+logical :: MOVIE_COARSE
character(len=150) LOCAL_PATH
! variables
-integer :: ipoints_3dmovie,i,j,k,ispec,NIT
+integer :: ipoints_3dmovie,i,j,k,ispec,NIT,iglob
real(kind=CUSTOM_REAL),dimension(:),allocatable :: store_val3d_N,store_val3d_E,store_val3d_Z
character(len=150) outputname
character(len=2) movie_prefix
+if(NDIM .ne. 3) call exit_MPI(myrank,'write_movie_volume requires NDIM = 3')
allocate(store_val3d_N(npoints_3dmovie))
allocate(store_val3d_E(npoints_3dmovie))
@@ -404,7 +410,7 @@
else if(MOVIE_VOLUME_TYPE == 6) then
movie_prefix='VE' ! velocity
endif
- if(MOVIE_VOLUME_COARSE) then
+ if(MOVIE_COARSE) then
NIT = NGLLX-1
else
NIT = 1
@@ -422,7 +428,9 @@
do i=1,NGLLX,NIT
if(mask_3dmovie(i,j,k,ispec)) then
ipoints_3dmovie=ipoints_3dmovie+1
- vector_local(:) = vector_scaled(:,i,j,k,ispec)
+ iglob = ibool_crust_mantle(i,j,k,ispec)
+ vector_local(:) = vector_scaled(:,iglob)
+
! rotate eps_loc to spherical coordinates
vector_local_new(:) = matmul(nu_3dmovie(:,:,ipoints_3dmovie), vector_local(:))
store_val3d_N(ipoints_3dmovie)=vector_local_new(1)
More information about the cig-commits
mailing list