[cig-commits] [commit] devel: Added coordinate netcdf write. (782728a)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Tue Sep 23 08:10:56 PDT 2014
Repository : https://github.com/geodynamics/specfem3d_globe
On branch : devel
Link : https://github.com/geodynamics/specfem3d_globe/compare/301191ef4d74f79dd50e1d23ca9fb4d0f7f638f7...782728a945c4b1ae9e981f7a5a4a774836a6687d
>---------------------------------------------------------------
commit 782728a945c4b1ae9e981f7a5a4a774836a6687d
Author: Michael Afanasiev <michael.afanasiev at erdw.ethz.ch>
Date: Tue Sep 23 16:35:49 2014 +0200
Added coordinate netcdf write.
>---------------------------------------------------------------
782728a945c4b1ae9e981f7a5a4a774836a6687d
src/specfem3D/read_write_netcdf.f90 | 62 ++++++++++++++++++++++++++++++++++---
src/specfem3D/save_kernels.F90 | 14 +++++----
2 files changed, 66 insertions(+), 10 deletions(-)
diff --git a/src/specfem3D/read_write_netcdf.f90 b/src/specfem3D/read_write_netcdf.f90
index 7f66816..ef5a445 100644
--- a/src/specfem3D/read_write_netcdf.f90
+++ b/src/specfem3D/read_write_netcdf.f90
@@ -1,3 +1,60 @@
+subroutine write_coordinates_netcdf (fName)
+
+ ! This writes the corresponding kernel coordinates.
+
+ use :: mpi
+ use :: netcdf
+ use :: specfem_par
+ use :: specfem_par_crustmantle
+
+ implicit none
+
+ intent (in) :: fName
+
+ character (1024) :: fName
+
+ integer, parameter :: NDIMS=2
+
+ integer :: ncid
+ integer :: commWorldSize
+ integer :: procDimId, kernDimId, varIdRadius, varIdTheta, varIdPhi
+
+ integer, dimension (NDIMS) :: start, count, ids
+
+ ! Get the total number of processors.
+ call world_size (commWorldSize)
+
+ ! Create parallel NetCDF file.
+ call checkNC (nf90_create (fName, IOR(NF90_NETCDF4, NF90_MPIIO), ncid, &
+ comm = MPI_COMM_WORLD, info = MPI_INFO_NULL))
+
+ ! Define the processor array.
+ call checkNC (nf90_def_dim (ncid, 'glob', NGLOB_CRUST_MANTLE, kernDimId))
+ call checkNC (nf90_def_dim (ncid, 'proc', commWorldSize, procDimID))
+
+ ! Sort ids into array.
+ ids = (/ kernDimID, procDimID /)
+
+ ! Define the kernel variable.
+ call checkNC (nf90_def_var (ncid, 'radius', NF90_float, ids, varIdRadius))
+ call checkNC (nf90_def_var (ncid, 'theta', NF90_float, ids, varIdTheta))
+ call checkNC (nf90_def_var (ncid, 'phi', NF90_float, ids, varIdPhi))
+
+ ! End definitions.
+ call checkNC (nf90_enddef (ncid))
+
+ ! Each processor writes one row.
+ start = (/ 1, myRank + 1 /)
+ count = (/ NGLOB_CRUST_MANTLE, 1 /)
+ call checkNC (nf90_put_var (ncid, varIdRadius, xstore_crust_mantle, start = start, count = count))
+ call checkNC (nf90_put_var (ncid, varIdTheta, ystore_crust_mantle, start = start, count = count))
+ call checkNC (nf90_put_var (ncid, varIdPhi, zstore_crust_mantle, start = start, count = count))
+
+ ! Close the netcdf file.
+ call checkNC (nf90_close (ncid))
+
+end subroutine write_coordinates_netcdf
+
subroutine write_kernel_netcdf (fName, param)
! This guy converts the kernels to global numbering, and writes to a NetCDF file in parallel.
@@ -17,11 +74,8 @@ subroutine write_kernel_netcdf (fName, param)
real (kind=CUSTOM_REAL), dimension (NGLLX, NGLLY, NGLLZ, NSPEC_CRUST_MANTLE) :: param
integer, parameter :: NDIMS=2
- integer, parameter :: shuOn=1
- integer, parameter :: comLvl=9
- integer, parameter :: comOn=1
- integer :: ncid, stat
+ integer :: ncid
integer :: i, j, k, ispec, iglob
integer :: commWorldSize
integer :: procDimId, kernDimId, varId
diff --git a/src/specfem3D/save_kernels.F90 b/src/specfem3D/save_kernels.F90
index 0ee9e1f..5194b97 100644
--- a/src/specfem3D/save_kernels.F90
+++ b/src/specfem3D/save_kernels.F90
@@ -438,12 +438,14 @@
! Output these kernels as netcdf files -- one per processor.
#if defined (CEM)
- call write_kernel_netcdf ('alphavKernelCrustMantle.nc', alphav_kl_crust_mantle)
- call write_kernel_netcdf ('alphahKernelCrustMantle.nc', alphah_kl_crust_mantle)
- call write_kernel_netcdf ('betavKernelCrustMantle.nc', betav_kl_crust_mantle)
- call write_kernel_netcdf ('betahKernelCrustMantle.nc', betah_kl_crust_mantle)
- call write_kernel_netcdf ('etaKernelCrustMantle.nc', eta_kl_crust_mantle)
- call write_kernel_netcdf ('rhoKernelCrustMantle.nc', rho_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/alphavKernelCrustMantle.nc', alphav_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/alphahKernelCrustMantle.nc', alphah_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/betavKernelCrustMantle.nc', betav_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/betahKernelCrustMantle.nc', betah_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/etaKernelCrustMantle.nc', eta_kl_crust_mantle)
+ call write_kernel_netcdf ('./OUTPUT_FILES/rhoKernelCrustMantle.nc', rho_kl_crust_mantle)
+
+ call write_coordinates_netcdf ('./OUTPUT_FILES/xyzCrustMantle.nc')
#endif
More information about the CIG-COMMITS
mailing list