[cig-commits] r12554 - seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Wed Aug 6 14:04:45 PDT 2008
Author: dkomati1
Date: 2008-08-06 14:04:45 -0700 (Wed, 06 Aug 2008)
New Revision: 12554
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_receivers.f90
Log:
converted locate_receivers.f90 from heap to stack
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_receivers.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_receivers.f90 2008-08-06 20:54:46 UTC (rev 12553)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_receivers.f90 2008-08-06 21:04:45 UTC (rev 12554)
@@ -72,17 +72,10 @@
! use integer array to store values
integer, dimension(NX_BATHY,NY_BATHY) :: ibathy_topo
- integer, allocatable, dimension(:) :: ix_initial_guess,iy_initial_guess,iz_initial_guess
-
integer iorientation
integer iprocloop
double precision stazi,stdip
- double precision, allocatable, dimension(:) :: x_target,y_target,z_target
- double precision, allocatable, dimension(:) :: epidist
- double precision, allocatable, dimension(:) :: x_found,y_found,z_found
- double precision, allocatable, dimension(:,:) :: x_found_all,y_found_all,z_found_all
-
integer irec
integer i,j,k,ispec,iglob
integer ier
@@ -116,9 +109,6 @@
! timer MPI
double precision time_start,tCPU
-! use dynamic allocation
- double precision, dimension(:), allocatable :: final_distance
- double precision, dimension(:,:), allocatable :: final_distance_all
double precision distmin,final_distance_max
! receiver information
@@ -139,11 +129,23 @@
double precision, dimension(nrec) :: stlat_found,stlon_found,stele_found, epidist_found
character(len=150) STATIONS
- integer, allocatable, dimension(:,:) :: ispec_selected_rec_all
double precision, dimension(nrec) :: stlat,stlon,stele
- double precision, allocatable, dimension(:) :: stbur
- double precision, allocatable, dimension(:,:) :: xi_receiver_all,eta_receiver_all,gamma_receiver_all
+! allocate these automatic arrays in the memory stack to avoid memory fragmentation with "allocate()"
+ integer, dimension(nrec) :: ix_initial_guess,iy_initial_guess,iz_initial_guess
+
+ double precision, dimension(nrec) :: x_target,y_target,z_target
+ double precision, dimension(nrec) :: epidist
+ double precision, dimension(nrec) :: x_found,y_found,z_found
+ double precision, dimension(nrec,0:NPROCTOT-1) :: x_found_all,y_found_all,z_found_all
+
+ double precision, dimension(nrec) :: final_distance
+ double precision, dimension(nrec,0:NPROCTOT-1) :: final_distance_all
+
+ integer, dimension(nrec,0:NPROCTOT-1) :: ispec_selected_rec_all
+ double precision, dimension(nrec) :: stbur
+ double precision, dimension(nrec,0:NPROCTOT-1) :: xi_receiver_all,eta_receiver_all,gamma_receiver_all
+
character(len=150) OUTPUT_FILES
! **************
@@ -173,30 +175,6 @@
write(IMAIN,*)
endif
-! allocate memory for arrays using number of stations
- allocate(stbur(nrec))
- allocate(epidist(nrec))
-
- allocate(ix_initial_guess(nrec))
- allocate(iy_initial_guess(nrec))
- allocate(iz_initial_guess(nrec))
- allocate(x_target(nrec))
- allocate(y_target(nrec))
- allocate(z_target(nrec))
- allocate(x_found(nrec))
- allocate(y_found(nrec))
- allocate(z_found(nrec))
- allocate(final_distance(nrec))
-
- allocate(ispec_selected_rec_all(nrec,0:NPROCTOT-1))
- allocate(xi_receiver_all(nrec,0:NPROCTOT-1))
- allocate(eta_receiver_all(nrec,0:NPROCTOT-1))
- allocate(gamma_receiver_all(nrec,0:NPROCTOT-1))
- allocate(x_found_all(nrec,0:NPROCTOT-1))
- allocate(y_found_all(nrec,0:NPROCTOT-1))
- allocate(z_found_all(nrec,0:NPROCTOT-1))
- allocate(final_distance_all(nrec,0:NPROCTOT-1))
-
! read that STATIONS file on the master
if(myrank == 0) then
call get_value_string(STATIONS, 'solver.STATIONS', rec_filename)
@@ -654,27 +632,5 @@
call MPI_BCAST(stele,nrec,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ier)
call MPI_BCAST(nu,nrec*3*3,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ier)
-! deallocate arrays
- deallocate(stbur)
- deallocate(epidist)
- deallocate(ix_initial_guess)
- deallocate(iy_initial_guess)
- deallocate(iz_initial_guess)
- deallocate(x_target)
- deallocate(y_target)
- deallocate(z_target)
- deallocate(x_found)
- deallocate(y_found)
- deallocate(z_found)
- deallocate(final_distance)
- deallocate(ispec_selected_rec_all)
- deallocate(xi_receiver_all)
- deallocate(eta_receiver_all)
- deallocate(gamma_receiver_all)
- deallocate(x_found_all)
- deallocate(y_found_all)
- deallocate(z_found_all)
- deallocate(final_distance_all)
-
end subroutine locate_receivers
More information about the cig-commits
mailing list