[cig-commits] [commit] devel: moved Seismic Unix reader to subroutine (9b5755d)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Thu Dec 11 10:24:27 PST 2014


Repository : https://github.com/geodynamics/specfem2d

On branch  : devel
Link       : https://github.com/geodynamics/specfem2d/compare/5d9c6086eb1fd7747d58089e11875116d45b4277...9b5755d28b601d380cb365841af5f95863815e3d

>---------------------------------------------------------------

commit 9b5755d28b601d380cb365841af5f95863815e3d
Author: rmodrak <rmodrak at princeton.edu>
Date:   Thu Dec 11 13:12:26 2014 -0500

    moved Seismic Unix reader to subroutine


>---------------------------------------------------------------

9b5755d28b601d380cb365841af5f95863815e3d
 src/specfem2D/setup_sources_receivers.F90 | 62 +++++++++++++++++++++++++++++++
 src/specfem2D/specfem2D.F90               | 42 +--------------------
 2 files changed, 64 insertions(+), 40 deletions(-)

diff --git a/src/specfem2D/setup_sources_receivers.F90 b/src/specfem2D/setup_sources_receivers.F90
index c28e50a..d68dafd 100644
--- a/src/specfem2D/setup_sources_receivers.F90
+++ b/src/specfem2D/setup_sources_receivers.F90
@@ -164,3 +164,65 @@
 
   end subroutine setup_sources_receivers
 
+
+
+! =====
+
+subroutine add_adjoint_sources_SU
+
+  use specfem_par, only: myrank, NSTEP, nrec, xi_receiver, gamma_receiver, which_proc_receiver, &
+                         xigll,zigll,hxir,hgammar,hpxir,hpgammar, &
+                         adj_sourcearray, adj_sourcearrays, &
+                         r4head, header2, filename
+
+  include "constants.h"
+
+  integer :: i, k, irec, irec_local
+
+  real(kind=CUSTOM_REAL), allocatable, dimension(:,:) :: adj_src_s
+
+  integer :: ios
+
+   irec_local = 0
+   write(filename, "('./SEM/Ux_file_single.bin.adj')")
+   open(111,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
+   write(filename, "('./SEM/Uy_file_single.bin.adj')")
+   open(112,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
+   write(filename, "('./SEM/Uz_file_single.bin.adj')")
+   open(113,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
+
+   allocate(adj_src_s(NSTEP,3))
+   adj_src_s(:,:) = 0.
+
+   do irec = 1, nrec
+     if(myrank == which_proc_receiver(irec)) then
+      irec_local = irec_local + 1
+      adj_sourcearray(:,:,:,:) = 0.0
+      read(111,rec=irec,iostat=ios) r4head, adj_src_s(:,1)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
+      read(112,rec=irec,iostat=ios) r4head, adj_src_s(:,2)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
+      read(113,rec=irec,iostat=ios) r4head, adj_src_s(:,3)
+           if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
+      header2=int(r4head(29), kind=2)
+      if (irec==1) print*, r4head(1),r4head(19),r4head(20),r4head(21),r4head(22),header2(2)
+      call lagrange_any(xi_receiver(irec),NGLLX,xigll,hxir,hpxir)
+      call lagrange_any(gamma_receiver(irec),NGLLZ,zigll,hgammar,hpgammar)
+      do k = 1, NGLLZ
+          do i = 1, NGLLX
+            adj_sourcearray(:,:,i,k) = hxir(i) * hgammar(k) * adj_src_s(:,:)
+          enddo
+      enddo
+      adj_sourcearrays(irec_local,:,:,:,:) = adj_sourcearray(:,:,:,:)
+     endif !  if(myrank == which_proc_receiver(irec))
+   enddo ! irec
+   close(111)
+   close(112)
+   close(113)
+   deallocate(adj_src_s)
+
+end subroutine
+
diff --git a/src/specfem2D/specfem2D.F90 b/src/specfem2D/specfem2D.F90
index 01722c0..4fd96ae 100644
--- a/src/specfem2D/specfem2D.F90
+++ b/src/specfem2D/specfem2D.F90
@@ -1582,46 +1582,8 @@
            adj_sourcearrays(irec_local,:,:,:,:) = adj_sourcearray(:,:,:,:)
          endif
        enddo
-    else
-       irec_local = 0
-       write(filename, "('./SEM/Ux_file_single.bin.adj')")
-       open(111,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
-       write(filename, "('./SEM/Uy_file_single.bin.adj')")
-       open(112,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
-       write(filename, "('./SEM/Uz_file_single.bin.adj')")
-       open(113,file=trim(filename),access='direct',recl=240+4*NSTEP,iostat = ios)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
-
-       allocate(adj_src_s(NSTEP,3))
-
-       do irec = 1, nrec
-         if(myrank == which_proc_receiver(irec))then
-          irec_local = irec_local + 1
-          adj_sourcearray(:,:,:,:) = 0.0
-          read(111,rec=irec,iostat=ios) r4head, adj_src_s(:,1)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
-          read(112,rec=irec,iostat=ios) r4head, adj_src_s(:,2)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
-          read(113,rec=irec,iostat=ios) r4head, adj_src_s(:,3)
-               if (ios /= 0) call exit_MPI(' file '//trim(filename)//' read error')
-          header2=int(r4head(29), kind=2)
-          if (irec==1) print*, r4head(1),r4head(19),r4head(20),r4head(21),r4head(22),header2(2)
-          call lagrange_any(xi_receiver(irec),NGLLX,xigll,hxir,hpxir)
-          call lagrange_any(gamma_receiver(irec),NGLLZ,zigll,hgammar,hpgammar)
-          do k = 1, NGLLZ
-              do i = 1, NGLLX
-                adj_sourcearray(:,:,i,k) = hxir(i) * hgammar(k) * adj_src_s(:,:)
-              enddo
-          enddo
-          adj_sourcearrays(irec_local,:,:,:,:) = adj_sourcearray(:,:,:,:)
-         endif !  if(myrank == which_proc_receiver(irec))
-       enddo ! irec
-       close(111)
-       close(112)
-       close(113)
-       deallocate(adj_src_s)
+    else ! (SU_FORMAT)
+        call add_adjoint_sources_SU()
     endif
   else
      allocate(adj_sourcearrays(1,1,1,1,1))



More information about the CIG-COMMITS mailing list