[cig-commits] r16190 - seismo/2D/SPECFEM2D/trunk

pieyre at geodynamics.org pieyre at geodynamics.org
Thu Jan 28 02:51:00 PST 2010


Author: pieyre
Date: 2010-01-28 02:51:00 -0800 (Thu, 28 Jan 2010)
New Revision: 16190

Modified:
   seismo/2D/SPECFEM2D/trunk/specfem2D.F90
Log:
modificated the code to not pass unallocated arrays as arguments and other modifications to prevent runtime errors or warnings


Modified: seismo/2D/SPECFEM2D/trunk/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/specfem2D.F90	2010-01-28 01:19:29 UTC (rev 16189)
+++ seismo/2D/SPECFEM2D/trunk/specfem2D.F90	2010-01-28 10:51:00 UTC (rev 16190)
@@ -1203,26 +1203,45 @@
 ! Files to save absorbed waves needed to reconstruct backward wavefield for adjoint method
    if(ipass == 1) then
      if(any_elastic .and. (save_forward .or. isolver == 2)) then
-   allocate(b_absorb_elastic_left(3,NGLLZ,nspec_xmin,NSTEP))
-   allocate(b_absorb_elastic_right(3,NGLLZ,nspec_xmax,NSTEP))
-   allocate(b_absorb_elastic_bottom(3,NGLLX,nspec_zmin,NSTEP))
-   allocate(b_absorb_elastic_top(3,NGLLX,nspec_zmax,NSTEP))
+       allocate(b_absorb_elastic_left(3,NGLLZ,nspec_xmin,NSTEP))
+       allocate(b_absorb_elastic_right(3,NGLLZ,nspec_xmax,NSTEP))
+       allocate(b_absorb_elastic_bottom(3,NGLLX,nspec_zmin,NSTEP))
+       allocate(b_absorb_elastic_top(3,NGLLX,nspec_zmax,NSTEP))
+     else
+       allocate(b_absorb_elastic_left(1,1,1,1))
+       allocate(b_absorb_elastic_right(1,1,1,1))
+       allocate(b_absorb_elastic_bottom(1,1,1,1))
+       allocate(b_absorb_elastic_top(1,1,1,1)) 
      endif
      if(any_poroelastic .and. (save_forward .or. isolver == 2)) then
-   allocate(b_absorb_poro_s_left(NDIM,NGLLZ,nspec_xmin,NSTEP))
-   allocate(b_absorb_poro_s_right(NDIM,NGLLZ,nspec_xmax,NSTEP))
-   allocate(b_absorb_poro_s_bottom(NDIM,NGLLX,nspec_zmin,NSTEP))
-   allocate(b_absorb_poro_s_top(NDIM,NGLLX,nspec_zmax,NSTEP))
-   allocate(b_absorb_poro_w_left(NDIM,NGLLZ,nspec_xmin,NSTEP))
-   allocate(b_absorb_poro_w_right(NDIM,NGLLZ,nspec_xmax,NSTEP))
-   allocate(b_absorb_poro_w_bottom(NDIM,NGLLX,nspec_zmin,NSTEP))
-   allocate(b_absorb_poro_w_top(NDIM,NGLLX,nspec_zmax,NSTEP))
+       allocate(b_absorb_poro_s_left(NDIM,NGLLZ,nspec_xmin,NSTEP))
+       allocate(b_absorb_poro_s_right(NDIM,NGLLZ,nspec_xmax,NSTEP))
+       allocate(b_absorb_poro_s_bottom(NDIM,NGLLX,nspec_zmin,NSTEP))
+       allocate(b_absorb_poro_s_top(NDIM,NGLLX,nspec_zmax,NSTEP))
+       allocate(b_absorb_poro_w_left(NDIM,NGLLZ,nspec_xmin,NSTEP))
+       allocate(b_absorb_poro_w_right(NDIM,NGLLZ,nspec_xmax,NSTEP))
+       allocate(b_absorb_poro_w_bottom(NDIM,NGLLX,nspec_zmin,NSTEP))
+       allocate(b_absorb_poro_w_top(NDIM,NGLLX,nspec_zmax,NSTEP))
+     else
+       allocate(b_absorb_poro_s_left(1,1,1,1))
+       allocate(b_absorb_poro_s_right(1,1,1,1))
+       allocate(b_absorb_poro_s_bottom(1,1,1,1))
+       allocate(b_absorb_poro_s_top(1,1,1,1))
+       allocate(b_absorb_poro_w_left(1,1,1,1))
+       allocate(b_absorb_poro_w_right(1,1,1,1))
+       allocate(b_absorb_poro_w_bottom(1,1,1,1))
+       allocate(b_absorb_poro_w_top(1,1,1,1))      
      endif
      if(any_acoustic .and. (save_forward .or. isolver == 2)) then
-   allocate(b_absorb_acoustic_left(NGLLZ,nspec_xmin,NSTEP))
-   allocate(b_absorb_acoustic_right(NGLLZ,nspec_xmax,NSTEP))
-   allocate(b_absorb_acoustic_bottom(NGLLX,nspec_zmin,NSTEP))
-   allocate(b_absorb_acoustic_top(NGLLX,nspec_zmax,NSTEP))
+       allocate(b_absorb_acoustic_left(NGLLZ,nspec_xmin,NSTEP))
+       allocate(b_absorb_acoustic_right(NGLLZ,nspec_xmax,NSTEP))
+       allocate(b_absorb_acoustic_bottom(NGLLX,nspec_zmin,NSTEP))
+       allocate(b_absorb_acoustic_top(NGLLX,nspec_zmax,NSTEP))
+     else
+       allocate(b_absorb_acoustic_left(1,1,1))
+       allocate(b_absorb_acoustic_right(1,1,1))
+       allocate(b_absorb_acoustic_bottom(1,1,1))
+       allocate(b_absorb_acoustic_top(1,1,1))
      endif
    endif
 
@@ -1819,7 +1838,11 @@
       endif
     enddo
   if(ipass == 1) allocate(adj_sourcearray(NSTEP,3,NGLLX,NGLLZ))
-  if (nadj_rec_local > 0 .and. ipass == 1)  allocate(adj_sourcearrays(nadj_rec_local,NSTEP,3,NGLLX,NGLLZ))
+  if (nadj_rec_local > 0 .and. ipass == 1)  then
+    allocate(adj_sourcearrays(nadj_rec_local,NSTEP,3,NGLLX,NGLLZ))
+  else if (ipass == 1) then
+    allocate(adj_sourcearrays(1,1,1,1,1))
+  endif
     irec_local = 0
     do irec = 1, nrec
 !   compute only adjoint source arrays in the local proc
@@ -1832,6 +1855,8 @@
         adj_sourcearrays(irec_local,:,:,:,:) = adj_sourcearray(:,:,:,:)
       endif
     enddo
+   else if (ipass == 1) then
+     allocate(adj_sourcearrays(1,1,1,1,1))
   endif
 
 
@@ -6703,7 +6728,7 @@
 
 ! compute interpolated field
         valux = valux + dxd*hlagrange
-        valuy = valuy + dyd*hlagrange
+        if(elastic(ispec))  valuy = valuy + dyd*hlagrange
         valuz = valuz + dzd*hlagrange
         valcurl = valcurl + dcurld*hlagrange
 
@@ -6728,7 +6753,6 @@
  enddo
 
 
-!
 !----- ecriture des kernels
 !
 ! kernels output
@@ -7447,7 +7471,7 @@
           rho_local(i,j,ispec) = density(1,kmato(ispec))
           vp_local(i,j,ispec) = sqrt(poroelastcoef(3,1,kmato(ispec))/density(1,kmato(ispec)))
           vs_local(i,j,ispec) = sqrt(poroelastcoef(2,1,kmato(ispec))/density(1,kmato(ispec)))
-          write(1001,'(I10, 5F10.4)') iglob, coord(1,iglob),coord(2,iglob),&
+          write(1001,'(I10, 5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
                                       rho_local(i,j,ispec),vp_local(i,j,ispec),vs_local(i,j,ispec)
        end do
        end do
@@ -7462,7 +7486,7 @@
         do j = 1,NGLLZ
         do i = 1,NGLLX
            iglob = ibool(i,j,ispec)
-           write(1001,'(I10, 5F10.4)') iglob, coord(1,iglob),coord(2,iglob),&
+           write(1001,'(I10,5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
                                        rhoext(i,j,ispec),vpext(i,j,ispec),vsext(i,j,ispec)
         end do
         end do



More information about the CIG-COMMITS mailing list