[cig-commits] [commit] devel: Etienne Bachmann fixed the write_seismograms() inverted buffer bug (5d5f257)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Tue Jan 13 06:13:27 PST 2015
Repository : https://github.com/geodynamics/specfem2d
On branch : devel
Link : https://github.com/geodynamics/specfem2d/compare/cecf84847f71e81e38383b814cde16b62168f421...5d5f2573e07aeb536dd2e704073fa6b1f6837b81
>---------------------------------------------------------------
commit 5d5f2573e07aeb536dd2e704073fa6b1f6837b81
Author: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
Date: Tue Jan 13 15:02:14 2015 +0100
Etienne Bachmann fixed the write_seismograms() inverted buffer bug
>---------------------------------------------------------------
5d5f2573e07aeb536dd2e704073fa6b1f6837b81
src/specfem2D/write_output_SU.f90 | 6 +++---
src/specfem2D/write_seismograms.F90 | 34 +++++++++++++++++-----------------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/src/specfem2D/write_output_SU.f90 b/src/specfem2D/write_output_SU.f90
index 964b57c..167aa8c 100644
--- a/src/specfem2D/write_output_SU.f90
+++ b/src/specfem2D/write_output_SU.f90
@@ -53,7 +53,7 @@
! to write seismograms in single precision SEP and double precision binary
! format
- double precision, dimension(number_of_components,NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,nrec) :: buffer_binary
+ double precision, dimension(NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,nrec,number_of_components) :: buffer_binary
! scaling factor for Seismic Unix xsu dislay
double precision, parameter :: FACTORXSU = 1.d0
@@ -113,9 +113,9 @@
! the "60" in the following corresponds to 240 bytes header (note the reclength is 4 bytes)
do isample = 1, seismo_current
- write(12,rec=irec*60+(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(1,isample,irec))
+ write(12,rec=irec*60+(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(isample,irec,1))
if ( seismotype /= 4 .and. seismotype /= 6 .and. p_sv) then
- write(14,rec=irec*60+(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(2,isample,irec))
+ write(14,rec=irec*60+(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(isample,irec,2))
endif
enddo
diff --git a/src/specfem2D/write_seismograms.F90 b/src/specfem2D/write_seismograms.F90
index a24cde0..d8bc18f 100644
--- a/src/specfem2D/write_seismograms.F90
+++ b/src/specfem2D/write_seismograms.F90
@@ -319,7 +319,7 @@
suffix = '.su'
endif
- allocate(buffer_binary(number_of_components,NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,nrec))
+ allocate(buffer_binary(NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,nrec,number_of_components))
if (save_binary_seismograms .and. myrank == 0 .and. seismo_offset == 0) then
@@ -405,26 +405,26 @@
if ( which_proc_receiver(irec) == myrank ) then
irecloc = irecloc + 1
- buffer_binary(1,:,irec) = sisux(:,irecloc)
+ buffer_binary(:,irec,1) = sisux(:,irecloc)
if ( number_of_components == 2 ) then
- buffer_binary(2,:,irec) = sisuz(:,irecloc)
+ buffer_binary(:,irec,2) = sisuz(:,irecloc)
else if ( number_of_components == 3 ) then
- buffer_binary(2,:,irec) = sisuz(:,irecloc)
- buffer_binary(3,:,irec) = siscurl(:,irecloc)
+ buffer_binary(:,irec,2) = sisuz(:,irecloc)
+ buffer_binary(:,irec,3) = siscurl(:,irecloc)
endif
#ifdef USE_MPI
else
- call MPI_RECV(buffer_binary(1,1,irec),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
+ call MPI_RECV(buffer_binary(1,irec,1),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
which_proc_receiver(irec),irec,MPI_COMM_WORLD,MPI_STATUS_IGNORE,ierror)
if ( number_of_components == 2 ) then
- call MPI_RECV(buffer_binary(2,1,irec),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
+ call MPI_RECV(buffer_binary(1,irec,2),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
which_proc_receiver(irec),irec,MPI_COMM_WORLD,MPI_STATUS_IGNORE,ierror)
endif
if ( number_of_components == 3 ) then
- call MPI_RECV(buffer_binary(2,1,irec),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
+ call MPI_RECV(buffer_binary(1,irec,2),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
which_proc_receiver(irec),irec,MPI_COMM_WORLD,MPI_STATUS_IGNORE,ierror)
- call MPI_RECV(buffer_binary(3,1,irec),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
+ call MPI_RECV(buffer_binary(1,irec,3),NSTEP_BETWEEN_OUTPUT_SEISMOS/subsamp_seismos,MPI_DOUBLE_PRECISION,&
which_proc_receiver(irec),irec,MPI_COMM_WORLD,MPI_STATUS_IGNORE,ierror)
endif
#endif
@@ -497,10 +497,10 @@
#ifndef PAUL_SAVE_ASCII_IN_BINARY
do isample = 1,seismo_current
write(11,*) sngl(dble(seismo_offset+isample-1)*deltat - t0),' ', &
- sngl(buffer_binary(iorientation,isample,irec))
+ sngl(buffer_binary(isample,irec,iorientation))
enddo
#else
- write(11) sngl(buffer_binary(iorientation,:,irec))
+ write(11) sngl(buffer_binary(:,irec,iorientation))
#endif
close(11)
@@ -512,20 +512,20 @@
if(save_binary_seismograms) then
do isample = 1, seismo_current
if(save_binary_seismograms_single) &
- write(12,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(1,isample,irec))
+ write(12,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(isample,irec,1))
if(save_binary_seismograms_double) &
- write(13,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(1,isample,irec)
+ write(13,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(isample,irec,1)
if ( seismotype /= 4 .and. seismotype /= 6 .and. p_sv) then
if(save_binary_seismograms_single) &
- write(14,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(2,isample,irec))
+ write(14,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(isample,irec,2))
if(save_binary_seismograms_double) &
- write(15,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(2,isample,irec)
+ write(15,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(isample,irec,2)
endif
if ( seismotype == 5 ) then
if(save_binary_seismograms_single) &
- write(16,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(3,isample,irec))
+ write(16,rec=(irec-1)*NSTEP+seismo_offset+isample) sngl(buffer_binary(isample,irec,3))
if(save_binary_seismograms_double) &
- write(17,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(3,isample,irec)
+ write(17,rec=(irec-1)*NSTEP+seismo_offset+isample) buffer_binary(isample,irec,3)
endif
enddo
endif
More information about the CIG-COMMITS
mailing list