save_avalanche_params Subroutine

private subroutine save_avalanche_params(params)

Arguments

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

Calls

proc~~save_avalanche_params~~CallsGraph proc~save_avalanche_params save_avalanche_params interface~save_to_hdf5 save_to_hdf5 proc~save_avalanche_params->interface~save_to_hdf5 h5fclose_f h5fclose_f proc~save_avalanche_params->h5fclose_f h5gclose_f h5gclose_f proc~save_avalanche_params->h5gclose_f proc~i2save_to_hdf5 i2save_to_hdf5 interface~save_to_hdf5->proc~i2save_to_hdf5 proc~i1save_to_hdf5 i1save_to_hdf5 interface~save_to_hdf5->proc~i1save_to_hdf5 proc~i4save_to_hdf5 i4save_to_hdf5 interface~save_to_hdf5->proc~i4save_to_hdf5 proc~i8save_to_hdf5 i8save_to_hdf5 interface~save_to_hdf5->proc~i8save_to_hdf5 proc~rsave_to_hdf5 rsave_to_hdf5 interface~save_to_hdf5->proc~rsave_to_hdf5 h5tset_size_f h5tset_size_f proc~i2save_to_hdf5->h5tset_size_f h5dclose_f h5dclose_f proc~i2save_to_hdf5->h5dclose_f h5aclose_f h5aclose_f proc~i2save_to_hdf5->h5aclose_f h5tcopy_f h5tcopy_f proc~i2save_to_hdf5->h5tcopy_f h5screate_simple_f h5screate_simple_f proc~i2save_to_hdf5->h5screate_simple_f h5awrite_f h5awrite_f proc~i2save_to_hdf5->h5awrite_f h5sclose_f h5sclose_f proc~i2save_to_hdf5->h5sclose_f h5acreate_f h5acreate_f proc~i2save_to_hdf5->h5acreate_f proc~i1save_to_hdf5->h5tset_size_f proc~i1save_to_hdf5->h5dclose_f proc~i1save_to_hdf5->h5aclose_f proc~i1save_to_hdf5->h5tcopy_f proc~i1save_to_hdf5->h5screate_simple_f proc~i1save_to_hdf5->h5awrite_f proc~i1save_to_hdf5->h5sclose_f proc~i1save_to_hdf5->h5acreate_f proc~i4save_to_hdf5->h5tset_size_f proc~i4save_to_hdf5->h5dclose_f proc~i4save_to_hdf5->h5aclose_f proc~i4save_to_hdf5->h5tcopy_f proc~i4save_to_hdf5->h5screate_simple_f proc~i4save_to_hdf5->h5awrite_f proc~i4save_to_hdf5->h5sclose_f proc~i4save_to_hdf5->h5acreate_f proc~i8save_to_hdf5->h5tset_size_f proc~i8save_to_hdf5->h5dclose_f proc~i8save_to_hdf5->h5aclose_f proc~i8save_to_hdf5->h5tcopy_f proc~i8save_to_hdf5->h5screate_simple_f proc~i8save_to_hdf5->h5awrite_f proc~i8save_to_hdf5->h5sclose_f proc~i8save_to_hdf5->h5acreate_f proc~rsave_to_hdf5->h5tset_size_f proc~rsave_to_hdf5->h5dclose_f proc~rsave_to_hdf5->h5aclose_f proc~rsave_to_hdf5->h5tcopy_f proc~rsave_to_hdf5->h5screate_simple_f proc~rsave_to_hdf5->h5awrite_f h5dwrite_f h5dwrite_f proc~rsave_to_hdf5->h5dwrite_f proc~rsave_to_hdf5->h5sclose_f proc~rsave_to_hdf5->h5acreate_f

Called by

proc~~save_avalanche_params~~CalledByGraph proc~save_avalanche_params save_avalanche_params proc~get_avalanche_distribution get_avalanche_distribution proc~get_avalanche_distribution->proc~save_avalanche_params proc~get_avalanche_4d get_Avalanche_4D proc~get_avalanche_4d->proc~save_avalanche_params

Contents

Source Code


Source Code

SUBROUTINE save_avalanche_params(params)
  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
  INTEGER :: h5error
  REAL(rp) :: units

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

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

     dset = TRIM(gname) // "/max_pitch_angle"
     attr = "Maximum pitch angle in avalanche PDF (degrees)"
     call save_to_hdf5(h5file_id,dset,aval_params%max_pitch_angle,attr)

     dset = TRIM(gname) // "/min_pitch_angle"
     attr = "Minimum pitch angle in avalanche PDF (degrees)"
     call save_to_hdf5(h5file_id,dset,aval_params%min_pitch_angle,attr)

     dset = TRIM(gname) // "/min_energy"
     attr = "Minimum energy in avalanche PDF (eV)"
     units = 1.0_rp/C_E
     call save_to_hdf5(h5file_id,dset,units*aval_params%min_energy,attr)

     dset = TRIM(gname) // "/max_energy"
     attr = "Maximum energy in avalanche PDF (eV)"
     units = 1.0_rp/C_E
     call save_to_hdf5(h5file_id,dset,units*aval_params%max_energy,attr)

     dset = TRIM(gname) // "/max_p"
     attr = "Maximum momentum in avalanche PDF (me*c^2)"
     call save_to_hdf5(h5file_id,dset,aval_params%max_p,attr)

     dset = TRIM(gname) // "/min_p"
     attr = "Maximum momentum in avalanche PDF (me*c^2)"
     call save_to_hdf5(h5file_id,dset,aval_params%min_p,attr)

     dset = TRIM(gname) // "/ne"
     attr = "Background electron density (m^-3)"
     call save_to_hdf5(h5file_id,dset,aval_params%ne,attr)

     dset = TRIM(gname) // "/Zeff"
     attr = "Effective atomic number of ions."
     call save_to_hdf5(h5file_id,dset,aval_params%Zeff,attr)

     dset = TRIM(gname) // "/Ec"
     attr = "Critical electric field in (V/m)"
     call save_to_hdf5(h5file_id,dset,aval_params%Ec,attr)

     dset = TRIM(gname) // "/Epar"
     attr = "Parallel electric field in (V/m)"
     call save_to_hdf5(h5file_id,dset,aval_params%Epar,attr)

     dset = TRIM(gname) // "/Te"
     attr = "Background electron temperature (eV)"
     units = 1.0_rp/C_E
     call save_to_hdf5(h5file_id,dset,units*aval_params%Te,attr)

     dset = TRIM(gname) // "/lambda_D"
     attr = "Debye length (m)"
     call save_to_hdf5(h5file_id,dset,aval_params%lD,attr)

     dset = TRIM(gname) // "/bmin"
     attr = "Maximum approach radius (m)"
     call save_to_hdf5(h5file_id,dset,aval_params%bmin,attr)

     dset = TRIM(gname) // "/Clog"
     attr = "Coulomb logarithm"
     call save_to_hdf5(h5file_id,dset,aval_params%CoulombLog,attr)

     dset = TRIM(gname) // "/Tau"
     attr = "Collision time (s)"
     call save_to_hdf5(h5file_id,dset,aval_params%Tau,attr)

     call h5gclose_f(group_id, h5error)

     call h5fclose_f(h5file_id, h5error)
  end if
END SUBROUTINE save_avalanche_params