save_binning_diagnostic_params Subroutine

private subroutine save_binning_diagnostic_params(params)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

Contents


Source Code

  SUBROUTINE save_binning_diagnostic_params(params)
    IMPLICIT NONE
    TYPE(KORC_PARAMS), INTENT(IN) :: params
    CHARACTER(MAX_STRING_LENGTH) :: filename
    CHARACTER(MAX_STRING_LENGTH) :: gname
    CHARACTER(MAX_STRING_LENGTH), DIMENSION(:), ALLOCATABLE :: attr_array
    CHARACTER(MAX_STRING_LENGTH) :: dset
    CHARACTER(MAX_STRING_LENGTH) :: attr
    INTEGER(HID_T) :: h5file_id
    INTEGER(HID_T) :: group_id
    CHARACTER(19) :: tmp_str
    INTEGER :: h5error
    REAL(rp) :: units

    if (.NOT.(params%restart.OR.params%proceed)) then

       if (params%mpi_params%rank .EQ. 0) then
          filename = TRIM(params%path_to_outputs) // "binning_diagnostic.h5"
          call h5fcreate_f(TRIM(filename), H5F_ACC_TRUNC_F, h5file_id, h5error)

          gname = "binning_diagnostic_params"
          call h5gcreate_f(h5file_id, TRIM(gname), group_id, h5error)

          dset = TRIM(gname) // "/start_at"
          attr = "Time at which camera starts working (s)"
          call save_to_hdf5(h5file_id,dset,binning_params%start_at,attr)

          dset = TRIM(gname) // "/num_bins"
          call save_1d_array_to_hdf5(h5file_id,dset,binning_params%num_bins)

          dset = TRIM(gname) // "/rlim"
          call save_1d_array_to_hdf5(h5file_id,dset,binning_params%rlim)

          dset = TRIM(gname) // "/zlim"
          call save_1d_array_to_hdf5(h5file_id,dset,binning_params%zlim)

          dset = TRIM(gname) // "/dr"
          attr = "Size of bin along the radial direction (m)"
          call save_to_hdf5(h5file_id,dset,binning_params%dr,attr)

          dset = TRIM(gname) // "/dz"
          attr = "Size of bin along the radial direction (m)"
          call save_to_hdf5(h5file_id,dset,binning_params%dr,attr)

          dset = TRIM(gname) // "/rnodes"
          call save_1d_array_to_hdf5(h5file_id,dset,binning_params%rnodes)

          dset = TRIM(gname) // "/znodes"
          call save_1d_array_to_hdf5(h5file_id,dset,binning_params%znodes)

          dset = TRIM(gname) // "/toroidal_sections"
          attr = "Logical variable: 1=decomposed in toroidal sections, 0=no toroidal decomposition"
          if (binning_params%toroidal_sections) then
             call save_to_hdf5(h5file_id,dset,1_idef,attr)

             dset = TRIM(gname) // "/ntor_sections"
             attr = "Number of toroidal sections"
             call save_to_hdf5(h5file_id,dset,binning_params%ntor_sections,attr)
          else
             call save_to_hdf5(h5file_id,dset,0_idef,attr)
          end if

          call h5gclose_f(group_id, h5error)

          call h5fclose_f(h5file_id, h5error)
       end if

       if (params%mpi_params%rank.EQ.0_idef) then
          filename = TRIM(params%path_to_outputs) //"binning_diagnostic_snapshots.h5"
          call h5fcreate_f(TRIM(filename), H5F_ACC_TRUNC_F, h5file_id, h5error)
          call h5fclose_f(h5file_id, h5error)
       end if

    end if
  END SUBROUTINE save_binning_diagnostic_params