[cig-commits] r18023 - seismo/2D/SPECFEM2D/trunk/src/specfem2D

carltape at geodynamics.org carltape at geodynamics.org
Thu Mar 3 11:55:41 PST 2011


Author: carltape
Date: 2011-03-03 11:55:41 -0800 (Thu, 03 Mar 2011)
New Revision: 18023

Modified:
   seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
Commented out Yang Luo lines associated with weights for surface and line integrals, which generated x_z_weightLineX_weightLineZ_weightSurface -- this could easily be reintroduced via a new parameter. In MPI, the file can be huge and is written over by all cores. Also added commented block for writing out an ASCII file for x,z,Ux,Uy,Uz for each wavefield snapshot.


Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90	2011-03-03 19:25:26 UTC (rev 18022)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90	2011-03-03 19:55:41 UTC (rev 18023)
@@ -588,6 +588,9 @@
   integer  :: nb_pixel_loc
   integer, dimension(:), allocatable  :: num_pixel_loc
 
+!!$! CHT
+!!$  character(len=150) :: wavefield_file
+
 #ifdef USE_MPI
   integer, dimension(MPI_STATUS_SIZE)  :: request_mpi_status
   integer, dimension(:), allocatable  :: nb_pixel_per_proc
@@ -746,9 +749,9 @@
   real(kind=CUSTOM_REAL), dimension(:,:,:), allocatable :: rhorho_el_hessian_final1, rhorho_el_hessian_final2
   real(kind=CUSTOM_REAL), dimension(:), allocatable :: rhorho_el_hessian_temp1, rhorho_el_hessian_temp2
   real(kind=CUSTOM_REAL), dimension(:,:,:), allocatable :: rhorho_ac_hessian_final1, rhorho_ac_hessian_final2
-  real(kind=CUSTOM_REAL), dimension(:), allocatable :: weight_line_x, weight_line_z, weight_surface,weight_jacobian
-  integer, dimension(:), allocatable :: weight_gll
-  real(kind=CUSTOM_REAL) :: zmin_yang, zmax_yang, xmin_yang, xmax_yang
+!!$  real(kind=CUSTOM_REAL), dimension(:), allocatable :: weight_line_x, weight_line_z, weight_surface,weight_jacobian
+!!$  integer, dimension(:), allocatable :: weight_gll
+!!$  real(kind=CUSTOM_REAL) :: zmin_yang, zmax_yang, xmin_yang, xmax_yang
 
 ! to help locate elements with a negative Jacobian using OpenDX
   logical :: found_a_negative_jacobian
@@ -1691,52 +1694,52 @@
 
   endif
 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! yang  output weights for line, surface integrals !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!define_derivation_matrices(xigll(NGLLX),zigll(NGLLZ),wxgll(NGLLX),wzgll(NGLLZ),hprime_xx(NGLLX,NGLLX),hprime_zz(NGLLZ,NGLLZ),&
-!                           hprimewgll_xx(NGLLX,NGLLX),hprimewgll_zz(NGLLZ,NGLLZ))
-!xix(NGLLX,NGLLZ,nspec),xiz,gammax,gammaz,jacobian
-!recompute_jacobian(xi,gamma,x,z,xixl,xizl,gammaxl,gammazl,jacobianl,coorg,knods,ispec,ngnod,nspec,npgeo, &
-!          .true.)
-  allocate(weight_line_x(npoin))
-  allocate(weight_line_z(npoin))
-  allocate(weight_surface(npoin))
-  allocate(weight_jacobian(npoin))
-  allocate(weight_gll(npoin))
-  weight_line_x=0.0
-  weight_line_z=0.0
-  weight_surface=0.0
-  zmin_yang=minval(coord(2,:))
-  xmin_yang=minval(coord(1,:))
-  zmax_yang=maxval(coord(2,:))
-  xmax_yang=maxval(coord(1,:))
-  do ispec = 1,nspec
-    do j = 1,NGLLZ
-      do i = 1,NGLLX
-            iglob=ibool(i,j,ispec)
-            z=coord(2,ibool(i,j,ispec))
-            xxi = + gammaz(i,j,ispec) * jacobian(i,j,ispec)
-            zgamma = + xix(i,j,ispec) * jacobian(i,j,ispec)
-            if ((j==1 .OR. j==NGLLZ) .AND. ( (abs(z-zmin_yang).GE.1) .AND. (abs(z-zmax_yang)).GE.1) )    xxi=xxi/2.0
-            if ((i==1 .OR. i==NGLLZ) .AND. ( (abs(x-xmin_yang).GE.1) .AND. (abs(x-xmax_yang)).GE.1) )    zgamma=zgamma/2.0
-            weight_line_x(iglob) =  weight_line_x(iglob) + xxi * wxgll(i)
-            weight_line_z(iglob) =  weight_line_z(iglob) + zgamma * wzgll(j)
-            weight_surface(iglob) = weight_surface(iglob) + wxgll(i)*wzgll(j)*jacobian(i,j,ispec)
-            weight_jacobian(iglob) = jacobian(i,j,ispec)
-            weight_gll(iglob) = 10*j+i
-      enddo
-    enddo
-  enddo
-  open(unit=55,file='OUTPUT_FILES/x_z_weightLineX_weightLineZ_weightSurface',status='unknown')
-  do n = 1,npoin
-    write(55,*) coord(1,n), coord(2,n), weight_line_x(n), weight_line_z(n), weight_surface(n),weight_jacobian(n),weight_gll(n)
-  enddo
-  close(55)
-  deallocate(weight_line_x)
-  deallocate(weight_line_z)
-  deallocate(weight_surface)
-  deallocate(weight_jacobian)
-  deallocate(weight_gll)
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! yang  output weights for line, surface integrals !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!$!define_derivation_matrices(xigll(NGLLX),zigll(NGLLZ),wxgll(NGLLX),wzgll(NGLLZ),hprime_xx(NGLLX,NGLLX),hprime_zz(NGLLZ,NGLLZ),&
+!!$!                           hprimewgll_xx(NGLLX,NGLLX),hprimewgll_zz(NGLLZ,NGLLZ))
+!!$!xix(NGLLX,NGLLZ,nspec),xiz,gammax,gammaz,jacobian
+!!$!recompute_jacobian(xi,gamma,x,z,xixl,xizl,gammaxl,gammazl,jacobianl,coorg,knods,ispec,ngnod,nspec,npgeo, &
+!!$!          .true.)
+!!$  allocate(weight_line_x(npoin))
+!!$  allocate(weight_line_z(npoin))
+!!$  allocate(weight_surface(npoin))
+!!$  allocate(weight_jacobian(npoin))
+!!$  allocate(weight_gll(npoin))
+!!$  weight_line_x=0.0
+!!$  weight_line_z=0.0
+!!$  weight_surface=0.0
+!!$  zmin_yang=minval(coord(2,:))
+!!$  xmin_yang=minval(coord(1,:))
+!!$  zmax_yang=maxval(coord(2,:))
+!!$  xmax_yang=maxval(coord(1,:))
+!!$  do ispec = 1,nspec
+!!$    do j = 1,NGLLZ
+!!$      do i = 1,NGLLX
+!!$            iglob=ibool(i,j,ispec)
+!!$            z=coord(2,ibool(i,j,ispec))
+!!$            xxi = + gammaz(i,j,ispec) * jacobian(i,j,ispec)
+!!$            zgamma = + xix(i,j,ispec) * jacobian(i,j,ispec)
+!!$            if ((j==1 .OR. j==NGLLZ) .AND. ( (abs(z-zmin_yang).GE.1) .AND. (abs(z-zmax_yang)).GE.1) )    xxi=xxi/2.0
+!!$            if ((i==1 .OR. i==NGLLZ) .AND. ( (abs(x-xmin_yang).GE.1) .AND. (abs(x-xmax_yang)).GE.1) )    zgamma=zgamma/2.0
+!!$            weight_line_x(iglob) =  weight_line_x(iglob) + xxi * wxgll(i)
+!!$            weight_line_z(iglob) =  weight_line_z(iglob) + zgamma * wzgll(j)
+!!$            weight_surface(iglob) = weight_surface(iglob) + wxgll(i)*wzgll(j)*jacobian(i,j,ispec)
+!!$            weight_jacobian(iglob) = jacobian(i,j,ispec)
+!!$            weight_gll(iglob) = 10*j+i
+!!$      enddo
+!!$    enddo
+!!$  enddo
+!!$  open(unit=55,file='OUTPUT_FILES/x_z_weightLineX_weightLineZ_weightSurface',status='unknown')
+!!$  do n = 1,npoin
+!!$    write(55,*) coord(1,n), coord(2,n), weight_line_x(n), weight_line_z(n), weight_surface(n),weight_jacobian(n),weight_gll(n)
+!!$  enddo
+!!$  close(55)
+!!$  deallocate(weight_line_x)
+!!$  deallocate(weight_line_z)
+!!$  deallocate(weight_surface)
+!!$  deallocate(weight_jacobian)
+!!$  deallocate(weight_gll)
+!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
 !--- save the grid of points in a file
 !
@@ -6552,6 +6555,24 @@
 
   endif
 
+!!$!----------------------------------------------
+!!$! CHT: write the full (local) wavefield to file as three components (Uy = 0 for PSV; Ux,Uz = 0 for SH)
+!!$
+!!$  write(wavefield_file,"('OUTPUT_FILES/wavefield',i7.7,'_',i2.2,'.txt')") it,SIMULATION_TYPE
+!!$  open(unit=27,file=wavefield_file,status='unknown')
+!!$  do ispec = 1,nspec
+!!$     do j = 1,NGLLZ
+!!$        do i = 1,NGLLX
+!!$           iglob = ibool(i,j,ispec)
+!!$           write(27,*) sngl(coord(1,iglob)),sngl(coord(2,iglob)),&
+!!$             sngl(vector_field_display(1,iglob)), &
+!!$             sngl(vector_field_display(2,iglob)), &
+!!$             sngl(vector_field_display(3,iglob))
+!!$        enddo
+!!$     enddo
+!!$  enddo
+!!$  close(27)
+
 !
 !----  display color image
 !



More information about the CIG-COMMITS mailing list