[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