[cig-commits] r21821 - in seismo/2D/SPECFEM2D/trunk/src: meshfem2D specfem2D
xie.zhinan at geodynamics.org
xie.zhinan at geodynamics.org
Thu Apr 11 13:01:09 PDT 2013
Author: xie.zhinan
Date: 2013-04-11 13:01:08 -0700 (Thu, 11 Apr 2013)
New Revision: 21821
Modified:
seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_parameter_file.F90
seismo/2D/SPECFEM2D/trunk/src/meshfem2D/save_databases.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_databases.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
add support for store kernel files in binary format
Modified: seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_parameter_file.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_parameter_file.F90 2013-04-11 19:20:44 UTC (rev 21820)
+++ seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_parameter_file.F90 2013-04-11 20:01:08 UTC (rev 21821)
@@ -70,7 +70,8 @@
logical :: initialfield,add_Bielak_conditions,assign_external_model, &
READ_EXTERNAL_SEP_FILE,ATTENUATION_VISCOELASTIC_SOLID,ATTENUATION_PORO_FLUID_PART, &
- save_ASCII_seismograms,save_binary_seismograms_single,save_binary_seismograms_double,DRAW_SOURCES_AND_RECEIVERS
+ save_ASCII_seismograms,save_binary_seismograms_single,save_binary_seismograms_double,&
+ DRAW_SOURCES_AND_RECEIVERS,save_ASCII_kernels
double precision :: Q0,freq0
@@ -298,6 +299,9 @@
call read_value_logical_p(rec_normal_to_surface, 'solver.rec_normal_to_surface')
if(err_occurred() /= 0) stop 'error reading parameter 26a in Par_file'
+ call read_value_logical_p(save_ASCII_kernels, 'solver.save_ASCII_kernels')
+ if(err_occurred() /= 0) stop 'error reading parameter 27 in Par_file'
+
if(nreceiversets < 1) stop 'number of receiver lines must be greater than 1'
! allocate receiver line arrays
Modified: seismo/2D/SPECFEM2D/trunk/src/meshfem2D/save_databases.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/meshfem2D/save_databases.f90 2013-04-11 19:20:44 UTC (rev 21820)
+++ seismo/2D/SPECFEM2D/trunk/src/meshfem2D/save_databases.f90 2013-04-11 20:01:08 UTC (rev 21821)
@@ -170,6 +170,9 @@
write(15,*) 'save_binary_seismograms_single save_binary_seismograms_double'
write(15,*) save_binary_seismograms_single,save_binary_seismograms_double
+ write(15,*) 'save_ASCII_kernels'
+ write(15,*) save_ASCII_kernels
+
write(15,*) 'DRAW_SOURCES_AND_RECEIVERS'
write(15,*) DRAW_SOURCES_AND_RECEIVERS
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_databases.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_databases.F90 2013-04-11 19:20:44 UTC (rev 21820)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_databases.F90 2013-04-11 20:01:08 UTC (rev 21821)
@@ -59,7 +59,7 @@
factor_subsample_image,USE_SNAPSHOT_NUMBER_IN_FILENAME,DRAW_WATER_IN_BLUE,US_LETTER, &
POWER_DISPLAY_COLOR,PERFORM_CUTHILL_MCKEE,SU_FORMAT,USER_T0,time_stepping_scheme,&
ADD_SPRING_TO_STACEY,ADD_PERIODIC_CONDITIONS,PERIODIC_horiz_dist,PERIODIC_DETECT_TOL,&
- read_external_mesh)
+ read_external_mesh,save_ASCII_kernels)
! starts reading in parameters from input Database file
@@ -76,7 +76,8 @@
assign_external_model,READ_EXTERNAL_SEP_FILE, &
output_grid_ASCII,output_energy,output_wavefield_dumps,p_sv,use_binary_for_wavefield_dumps
logical :: ATTENUATION_VISCOELASTIC_SOLID,ATTENUATION_PORO_FLUID_PART,PML_BOUNDARY_CONDITIONS,ROTATE_PML_ACTIVATE, &
- save_ASCII_seismograms,save_binary_seismograms_single,save_binary_seismograms_double,DRAW_SOURCES_AND_RECEIVERS
+ save_ASCII_seismograms,save_binary_seismograms_single,save_binary_seismograms_double,DRAW_SOURCES_AND_RECEIVERS, &
+ save_ASCII_kernels
double precision :: ROTATE_PML_ANGLE
double precision :: cutsnaps,sizemax_arrows,anglerec
double precision :: Q0,freq0
@@ -251,6 +252,9 @@
read(IIN,"(a80)") datlin
read(IIN,*) save_binary_seismograms_single,save_binary_seismograms_double
+ read(IIN,"(a80)") datlin
+ read(IIN,*) save_ASCII_kernels
+
read(IIN,"(a80)") datlin
read(IIN,*) DRAW_SOURCES_AND_RECEIVERS
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2013-04-11 19:20:44 UTC (rev 21820)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2013-04-11 20:01:08 UTC (rev 21821)
@@ -627,7 +627,7 @@
double precision :: Q0,freq0
double precision :: alphaval,betaval,gammaval,thetainv
logical :: ATTENUATION_PORO_FLUID_PART,save_ASCII_seismograms,save_binary_seismograms_single,save_binary_seismograms_double, &
- DRAW_SOURCES_AND_RECEIVERS
+ DRAW_SOURCES_AND_RECEIVERS, save_ASCII_kernels
double precision, dimension(NGLLX,NGLLZ) :: viscox_loc,viscoz_loc
double precision :: Sn,Snp1,etal_f
double precision, dimension(3):: bl_unrelaxed_elastic
@@ -1089,7 +1089,7 @@
factor_subsample_image,USE_SNAPSHOT_NUMBER_IN_FILENAME,DRAW_WATER_IN_BLUE,US_LETTER, &
POWER_DISPLAY_COLOR,PERFORM_CUTHILL_MCKEE,SU_FORMAT,USER_T0, time_stepping_scheme, &
ADD_SPRING_TO_STACEY,ADD_PERIODIC_CONDITIONS,PERIODIC_horiz_dist,PERIODIC_DETECT_TOL,&
- read_external_mesh)
+ read_external_mesh,save_ASCII_kernels)
if(nproc_read_from_database < 1) stop 'should have nproc_read_from_database >= 1'
if(SIMULATION_TYPE == 3 .and.(time_stepping_scheme == 2 .or. time_stepping_scheme == 3)) &
@@ -3754,13 +3754,27 @@
if(SIMULATION_TYPE == 3) then
if(any_elastic) then
- write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_mu_kernel.dat'
- open(unit = 97, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
- if (ios /= 0) stop 'Error writing kernel file to disk'
- write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_alpha_beta_kernel.dat'
- open(unit = 98, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
- if (ios /= 0) stop 'Error writing kernel file to disk'
+ if(.not. save_ASCII_kernels)then
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_mu_kernel.bin'
+ open(unit = 97, file = 'OUTPUT_FILES/'//outputname,status='unknown',action='write',form='unformatted',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ else
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_mu_kernel.dat'
+ open(unit = 97, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ endif
+
+ if(.not. save_ASCII_kernels)then
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_alpha_beta_kernel.bin'
+ open(unit = 98, file = 'OUTPUT_FILES/'//outputname,status='unknown',action='write',form='unformatted',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ else
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_alpha_beta_kernel.dat'
+ open(unit = 98, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ endif
+
rho_kl(:,:,:) = 0._CUSTOM_REAL
mu_kl(:,:,:) = 0._CUSTOM_REAL
kappa_kl(:,:,:) = 0._CUSTOM_REAL
@@ -3834,13 +3848,29 @@
endif
if(any_acoustic) then
- write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_kernel.dat'
- open(unit = 95, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
- if (ios /= 0) stop 'Error writing kernel file to disk'
- write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_c_kernel.dat'
- open(unit = 96, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
- if (ios /= 0) stop 'Error writing kernel file to disk'
+ if(.not. save_ASCII_kernels)then
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_kernel.bin'
+ open(unit = 95, file = 'OUTPUT_FILES/'//outputname,status='unknown',action='write',form='unformatted',&
+ iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ else
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rho_kappa_kernel.dat'
+ open(unit = 95, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ endif
+
+ if(.not. save_ASCII_kernels)then
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_c_kernel.bin'
+ open(unit = 96, file = 'OUTPUT_FILES/'//outputname,status='unknown',action='write',form='unformatted',&
+ iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ else
+ write(outputname,'(a,i6.6,a)') 'proc',myrank,'_rhop_c_kernel.dat'
+ open(unit = 96, file = 'OUTPUT_FILES/'//outputname,status = 'unknown',iostat=ios)
+ if (ios /= 0) stop 'Error writing kernel file to disk'
+ endif
+
rho_ac_kl(:,:,:) = 0._CUSTOM_REAL
kappa_ac_kl(:,:,:) = 0._CUSTOM_REAL
@@ -8369,37 +8399,57 @@
endif
if(any_acoustic) then
- do ispec = 1, nspec
- do j = 1, NGLLZ
- do i = 1, NGLLX
- iglob = ibool(i,j,ispec)
- xx = coord(1,iglob)
- zz = coord(2,iglob)
- write(95,'(4e15.5e4)')xx,zz,rho_ac_kl(i,j,ispec),kappa_ac_kl(i,j,ispec)
- write(96,'(4e15.5e4)')xx,zz,rhop_ac_kl(i,j,ispec),alpha_ac_kl(i,j,ispec)
- !write(96,'(4e15.5e4)')rhorho_ac_hessian_final1(i,j,ispec), rhorho_ac_hessian_final2(i,j,ispec),&
- ! rhop_ac_kl(i,j,ispec),alpha_ac_kl(i,j,ispec)
+ if(.not. save_ASCII_kernels)then
+ write(95)coord
+ write(95)rho_ac_kl
+ write(95)kappa_ac_kl
+ write(96)coord
+ write(96)rho_ac_kl
+ write(96)alpha_ac_kl
+ else
+ do ispec = 1, nspec
+ do j = 1, NGLLZ
+ do i = 1, NGLLX
+ iglob = ibool(i,j,ispec)
+ xx = coord(1,iglob)
+ zz = coord(2,iglob)
+ write(95,'(4e15.5e4)')xx,zz,rho_ac_kl(i,j,ispec),kappa_ac_kl(i,j,ispec)
+ write(96,'(4e15.5e4)')xx,zz,rhop_ac_kl(i,j,ispec),alpha_ac_kl(i,j,ispec)
+ !write(96,'(4e15.5e4)')rhorho_ac_hessian_final1(i,j,ispec), rhorho_ac_hessian_final2(i,j,ispec),&
+ ! rhop_ac_kl(i,j,ispec),alpha_ac_kl(i,j,ispec)
+ enddo
enddo
enddo
- enddo
+ endif
close(95)
close(96)
endif
if(any_elastic) then
- do ispec = 1, nspec
- do j = 1, NGLLZ
- do i = 1, NGLLX
- iglob = ibool(i,j,ispec)
- xx = coord(1,iglob)
- zz = coord(2,iglob)
- write(97,'(5e15.5e4)')xx,zz,rho_kl(i,j,ispec),kappa_kl(i,j,ispec),mu_kl(i,j,ispec)
- write(98,'(5e15.5e4)')xx,zz,rhop_kl(i,j,ispec),alpha_kl(i,j,ispec),beta_kl(i,j,ispec)
- !write(98,'(5e15.5e4)')rhorho_el_hessian_final1(i,j,ispec), rhorho_el_hessian_final2(i,j,ispec),&
- ! rhop_kl(i,j,ispec),alpha_kl(i,j,ispec),beta_kl(i,j,ispec)
+ if(.not. save_ASCII_kernels)then
+ write(97)coord
+ write(97)rho_kl
+ write(97)kappa_kl
+ write(97)mu_kl
+ write(98)coord
+ write(98)rhop_kl
+ write(98)alpha_kl
+ write(98)beta_kl
+ else
+ do ispec = 1, nspec
+ do j = 1, NGLLZ
+ do i = 1, NGLLX
+ iglob = ibool(i,j,ispec)
+ xx = coord(1,iglob)
+ zz = coord(2,iglob)
+ write(97,'(5e15.5e4)')xx,zz,rho_kl(i,j,ispec),kappa_kl(i,j,ispec),mu_kl(i,j,ispec)
+ write(98,'(5e15.5e4)')xx,zz,rhop_kl(i,j,ispec),alpha_kl(i,j,ispec),beta_kl(i,j,ispec)
+ !write(98,'(5e15.5e4)')rhorho_el_hessian_final1(i,j,ispec), rhorho_el_hessian_final2(i,j,ispec),&
+ ! rhop_kl(i,j,ispec),alpha_kl(i,j,ispec),beta_kl(i,j,ispec)
+ enddo
enddo
enddo
- enddo
+ endif
close(97)
close(98)
endif
More information about the CIG-COMMITS
mailing list