lib_input_m Module

Library to parse yaml input files


Uses

  • module~~lib_input_m~~UsesGraph module~lib_input_m lib_input_m fortran_yaml_c fortran_yaml_c module~lib_input_m->fortran_yaml_c h5lt h5lt module~lib_input_m->h5lt hdf5 hdf5 module~lib_input_m->hdf5 module~krn_global_tools_m krn_global_tools_m module~lib_input_m->module~krn_global_tools_m ieee_arithmetic ieee_arithmetic module~krn_global_tools_m->ieee_arithmetic iso_c_binding iso_c_binding module~krn_global_tools_m->iso_c_binding iso_fortran_env iso_fortran_env module~krn_global_tools_m->iso_fortran_env

Used by

  • module~~lib_input_m~~UsedByGraph module~lib_input_m lib_input_m module~cmp_boundary_init_m cmp_boundary_init_m module~cmp_boundary_init_m->module~lib_input_m module~krn_simulation_m krn_simulation_m module~cmp_boundary_init_m->module~krn_simulation_m module~lib_he_thermo_m lib_He_thermo_m module~cmp_boundary_init_m->module~lib_he_thermo_m module~cmp_channel_init_m cmp_channel_init_m module~cmp_channel_init_m->module~lib_input_m module~cmp_channel_init_m->module~krn_simulation_m module~lib_friction_correlations_m lib_friction_correlations_m module~cmp_channel_init_m->module~lib_friction_correlations_m module~lib_hdf_write_m lib_hdf_write_m module~cmp_channel_init_m->module~lib_hdf_write_m module~lib_nusselt_correlations_m lib_nusselt_correlations_m module~cmp_channel_init_m->module~lib_nusselt_correlations_m module~cmp_channel_init_m->module~lib_he_thermo_m module~cmp_circulator_init_m cmp_circulator_init_m module~cmp_circulator_init_m->module~lib_input_m module~cmp_circulator_init_m->module~krn_simulation_m module~cmp_circulator_init_m->module~lib_he_thermo_m module~cmp_ffsrclink_init_m cmp_FFsrcLink_init_m module~cmp_ffsrclink_init_m->module~lib_input_m module~cmp_ffsrclink_init_m->module~krn_simulation_m module~cmp_ffsrclink_init_m->module~lib_nusselt_correlations_m module~cmp_fslink_init_m cmp_FSlink_init_m module~cmp_fslink_init_m->module~lib_input_m module~lib_material_m lib_material_m module~cmp_fslink_init_m->module~lib_material_m module~cmp_fslink_init_m->module~lib_nusselt_correlations_m module~cmp_junction_init_m cmp_junction_init_m module~cmp_junction_init_m->module~lib_input_m module~cmp_junction_init_m->module~krn_simulation_m module~cmp_junction_init_m->module~lib_he_thermo_m module~cmp_mesh2d_init_m cmp_mesh2D_init_m module~cmp_mesh2d_init_m->module~lib_input_m module~cmp_mesh2d_init_m->module~krn_simulation_m module~cmp_mesh2d_init_m->module~lib_material_m module~cmp_solid_init_m cmp_solid_init_m module~cmp_solid_init_m->module~lib_input_m module~cmp_solid_init_m->module~krn_simulation_m module~cmp_solid_init_m->module~lib_hdf_write_m module~cmp_solid_init_m->module~lib_material_m module~cmp_ssfluxlink_m cmp_SSfluxLink_m module~cmp_ssfluxlink_m->module~lib_input_m module~cmp_sssrclink_init_m cmp_SSsrcLink_init_m module~cmp_sssrclink_init_m->module~lib_input_m module~cmp_sssrclink_init_m->module~lib_material_m module~cmp_strand_init_m cmp_strand_init_m module~cmp_strand_init_m->module~lib_input_m module~cmp_strand_init_m->module~krn_simulation_m module~cmp_strand_init_m->module~lib_hdf_write_m module~cmp_strand_init_m->module~lib_material_m module~krn_simulation_m->module~lib_input_m module~krn_simulation_m->module~lib_hdf_write_m module~lib_friction_correlations_m->module~lib_input_m module~lib_hdf_write_m->module~lib_input_m module~lib_material_insulation_m lib_material_insulation_m module~lib_material_insulation_m->module~lib_input_m module~lib_material_m->module~lib_input_m module~lib_material_m->module~lib_material_insulation_m module~lib_material_metal_m lib_material_metal_m module~lib_material_m->module~lib_material_metal_m module~lib_material_nb3sn_m lib_material_nb3sn_m module~lib_material_m->module~lib_material_nb3sn_m module~lib_material_nbti_m lib_material_nbti_m module~lib_material_m->module~lib_material_nbti_m module~lib_material_metal_m->module~lib_input_m module~lib_material_nb3sn_m->module~lib_input_m module~lib_material_nbti_m->module~lib_input_m module~lib_nusselt_correlations_m->module~lib_input_m program~reims_p reims_p program~reims_p->module~lib_input_m program~reims_p->module~cmp_ssfluxlink_m program~reims_p->module~krn_simulation_m program~reims_p->module~lib_material_m module~cmp_boundary_calc_m cmp_boundary_calc_m program~reims_p->module~cmp_boundary_calc_m module~cmp_channel_calc_m cmp_channel_calc_m program~reims_p->module~cmp_channel_calc_m module~cmp_channel_flux_m cmp_channel_flux_m program~reims_p->module~cmp_channel_flux_m module~cmp_circulator_calc_m cmp_circulator_calc_m program~reims_p->module~cmp_circulator_calc_m module~cmp_ffsrclink_calc_m cmp_FFsrcLink_calc_m program~reims_p->module~cmp_ffsrclink_calc_m module~cmp_fslink_calc_m cmp_FSlink_calc_m program~reims_p->module~cmp_fslink_calc_m module~cmp_junction_calc_m cmp_junction_calc_m program~reims_p->module~cmp_junction_calc_m module~cmp_mesh2d_calc_m cmp_mesh2D_calc_m program~reims_p->module~cmp_mesh2d_calc_m module~cmp_mesh2d_flux_m cmp_mesh2D_flux_m program~reims_p->module~cmp_mesh2d_flux_m module~cmp_mesh2d_hdf5_write_m cmp_mesh2D_hdf5_write_m program~reims_p->module~cmp_mesh2d_hdf5_write_m module~cmp_solid_calc_m cmp_solid_calc_m program~reims_p->module~cmp_solid_calc_m module~cmp_solid_flux_m cmp_solid_flux_m program~reims_p->module~cmp_solid_flux_m module~cmp_sssrclink_calc_m cmp_SSsrcLink_calc_m program~reims_p->module~cmp_sssrclink_calc_m module~cmp_strand_calc_m cmp_strand_calc_m program~reims_p->module~cmp_strand_calc_m module~cmp_strand_flux_m cmp_strand_flux_m program~reims_p->module~cmp_strand_flux_m module~krn_linear_system_m krn_linear_system_m program~reims_p->module~krn_linear_system_m module~cmp_boundary_calc_m->module~cmp_boundary_init_m module~cmp_boundary_calc_m->module~lib_he_thermo_m module~cmp_channel_calc_m->module~cmp_channel_init_m module~cmp_channel_calc_m->module~krn_simulation_m module~cmp_channel_source_terms_m cmp_channel_source_terms_m module~cmp_channel_calc_m->module~cmp_channel_source_terms_m module~cmp_channel_flux_m->module~cmp_channel_init_m module~cmp_channel_flux_m->module~lib_he_thermo_m module~cmp_channel_source_terms_m->module~cmp_channel_init_m module~cmp_channel_source_terms_m->module~lib_he_thermo_m module~cmp_circulator_calc_m->module~cmp_circulator_init_m module~cmp_ffsrclink_calc_m->module~cmp_ffsrclink_init_m module~cmp_ffsrclink_calc_m->module~lib_he_thermo_m module~cmp_fslink_calc_m->module~cmp_fslink_init_m module~cmp_junction_calc_m->module~cmp_junction_init_m module~cmp_junction_calc_m->module~lib_he_thermo_m module~cmp_mesh2d_calc_m->module~cmp_mesh2d_init_m module~cmp_mesh2d_calc_m->module~krn_simulation_m module~cmp_mesh2d_flux_m->module~cmp_mesh2d_init_m module~cmp_mesh2d_hdf5_write_m->module~cmp_mesh2d_init_m module~cmp_solid_calc_m->module~cmp_solid_init_m module~cmp_solid_calc_m->module~krn_simulation_m module~cmp_solid_flux_m->module~cmp_solid_init_m module~cmp_sssrclink_calc_m->module~cmp_sssrclink_init_m module~cmp_strand_calc_m->module~cmp_strand_init_m module~cmp_strand_source_terms_m cmp_strand_source_terms_m module~cmp_strand_calc_m->module~cmp_strand_source_terms_m module~cmp_strand_flux_m->module~cmp_strand_init_m module~cmp_strand_source_terms_m->module~cmp_strand_init_m module~krn_linear_system_m->module~krn_simulation_m module~lib_he_thermo_m->module~krn_simulation_m

Derived Types

type, public, extends(type_node) ::  input_t

Components

Type Visibility Attributes Name Initial
class(type_node), public, pointer :: root => null()

top level (main) access to the tree

type(YamlFile), public :: file

used only for top level config

type(type_dictionary), public :: cmp_by_type

dictionary with arrays of components

type(input_t), public, pointer :: cmp_arr(:) => null()

array of components of the same type

Type-Bound Procedures

procedure, public :: open => input_open_yaml

Open and parse file and return as input dictionary

procedure, public :: dict => input_dict

Get input sub-dictionary

procedure, public :: dict1d => input_dict1d

Get allocatable array of input sub-dictionaries

procedure, public :: dbl => input_dbl

Get 'real' double precision value

procedure, public :: dbl1d => input_dbl1d

Get 'real' double precision allocatable one dimension array

procedure, public :: dbl2d => input_dbl2d

Get 'real' double precision allocatable two dimensional array

procedure, public :: bin => input_bin

Get 'logical' value like: true/false yes/no etc...

procedure, public :: bin1d => input_bin1d

Get 'logical' 1d array of values of true/false yes/no etc...

procedure, public :: int => input_int

Get 'integer' value

procedure, public :: int1d => input_int1d

Get 'integer' value

procedure, public :: str => input_str

Get allocatable trimmed 'character(:)' value

procedure, public :: str1d => input_str1d

Get allocatable trimmed 'character(:)' value

procedure, public :: cmp1d => input_cmp1d

Get pointer to array of input components

procedure, public :: nb_cmp => input_nb_cmp

Get total number of components

procedure, public :: has_key => input_has_key

Return true if dictionary has a key

procedure, public :: keys1d => input_keys1d

Return 1d array of keys

procedure, public :: node => input_node

Get "type_node" from yaml lib

procedure, public :: dump => input_dump_dict

Functions

private function input_cmp1d(me, keys) result(return_array)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: keys(:)

Return Value type(input_t), pointer, (:)

private function input_nb_cmp(me) result(nb_cmp)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me

Return Value integer

private function input_dict(me, key, filter_key, filter_value, empty) result(out_dict)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
character(len=*), intent(in), optional :: filter_key
character(len=*), intent(in), optional :: filter_value
logical, intent(in), optional :: empty

Return Value class(input_t), allocatable

private function input_dict1d(me, key, filter_key, filter_value, empty) result(return_array)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
character(len=*), intent(in), optional :: filter_key
character(len=*), intent(in), optional :: filter_value
logical, intent(in), optional :: empty

Return Value class(input_t), allocatable, (:)

private function input_dbl2d(me, key, default_value) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
real(kind=dp), intent(in), optional :: default_value(:,:)

default value in case of missing key

Return Value real(kind=dp), allocatable, (:,:)

private function input_dbl1d(me, key, default_value, n) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
real(kind=dp), intent(in), optional :: default_value(:)

default value in case of missing key

integer, intent(in), optional :: n

Return Value real(kind=dp), allocatable, (:)

private function get1d_range(dict, val) result(ok)

Arguments

Type IntentOptional Attributes Name
type(input_t), intent(in) :: dict
integer, intent(inout), allocatable :: val(:)

Return Value logical

private function input_int1d(me, key, default_value, n) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
integer, intent(in), optional :: default_value(:)

default value in case of missing key

integer, intent(in), optional :: n

expected number of elements in the array (can be used broadcast scalar to array)

Return Value integer, allocatable, (:)

private function input_dbl(me, key, default_value) result(val)

Function returns double value given by the key and stops if key doesn't exist.

Read more…

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key

key to the value in dictionary

real(kind=dp), intent(in), optional :: default_value

default value in case of missing key

Return Value real(kind=dp)

returned value

private function input_str(me, key, default_value) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
character(len=*), intent(in), optional :: default_value

Return Value character(len=:), allocatable

private function input_str1d(me, key, default_value, empty) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
type(str_ptr), intent(in), optional :: default_value
logical, intent(in), optional :: empty

Return Value type(str_ptr), allocatable, (:)

private function input_has_key(me, key)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key

Return Value logical

private function input_bin(me, key, default_value) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
logical, intent(in), optional :: default_value

Return Value logical

private function input_bin1d(me, key, default_value, n) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
logical, intent(in), optional :: default_value(:)

default value in case of missing key

integer, intent(in), optional :: n

Return Value logical, allocatable, (:)

private function input_int(me, key, default_value) result(val)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
integer, intent(in), optional :: default_value

Return Value integer

private function input_keys1d(me) result(keys)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me

Return Value type(str_ptr), allocatable, (:)

private function select_dict(me)

take node and return dictionary, if it's not dictionary it's stops

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(in), pointer :: me

Return Value type(type_dictionary), pointer

private function select_list(me)

take node and return list, if it's not list it's stops

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(in), pointer :: me

Return Value type(type_list), pointer

private function select_scalar(me)

take node and return scalar, if it's not scalar it's stops

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(in), pointer :: me

Return Value type(type_scalar), pointer

private function increment_int_dict(dict, key) result(val)

Arguments

Type IntentOptional Attributes Name
type(type_dictionary), intent(inout) :: dict
character(len=*), intent(in) :: key

Return Value integer

private function input_node(me, key) result(node)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key

Return Value class(type_node), pointer

public function get0d_hdf5(cfg, sig) result(ok)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: cfg
real(kind=dp), intent(inout) :: sig

Return Value logical

public function get1d_hdf5(cfg, sig) result(ok)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: cfg
real(kind=dp), intent(inout), allocatable :: sig(:)

Return Value logical

public function get2d_hdf5(cfg, sig) result(ok)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: cfg
real(kind=dp), allocatable :: sig(:,:)

Return Value logical

public function empty_cfg()

Arguments

None

Return Value class(input_t), allocatable


Subroutines

private recursive subroutine input_open_yaml(me, file_name, included)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(inout) :: me
character(len=*), intent(in) :: file_name
logical, intent(in), optional :: included

ignore it - only present for included files

private recursive subroutine input_dump_dict(self, unit, indent)

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: self
integer, intent(in) :: unit
integer, intent(in) :: indent

private subroutine abort_if(err, complementary_message)

Arguments

Type IntentOptional Attributes Name
type(type_error), intent(in), allocatable :: err
character(len=*), optional :: complementary_message

public subroutine continue_if(element, ok)

Arguments

Type IntentOptional Attributes Name
type(type_scalar), intent(in) :: element
logical, intent(in) :: ok

private recursive subroutine dictionary_traverse(dict, key)

returns sub-dictionary by traversing from top level dictionary using key separation sign: '/'

Arguments

Type IntentOptional Attributes Name
type(type_dictionary), intent(inout), pointer :: dict
character(len=*), intent(inout) :: key

private recursive subroutine scan_yaml(me, folder, dict_item, list_item)

Scanning all nodes in yaml tree and attaching to them external files It also implementing dictionary key marge operator "<<"

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(inout) :: me
character(len=*), intent(inout) :: folder
class(type_key_value_pair), intent(inout), optional :: dict_item
class(type_list_item), intent(inout), optional :: list_item

private recursive subroutine rename_components(cmp_tree, no_cmp, prefix, postfix)

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(inout), pointer :: cmp_tree
type(type_dictionary), intent(inout) :: no_cmp
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: postfix

private recursive subroutine allocate_components(me, no_cmp)

Arguments

Type IntentOptional Attributes Name
type(input_t), intent(inout) :: me
type(type_dictionary), intent(inout) :: no_cmp

private recursive subroutine fill_components(me, tree, no_cmp)

Arguments

Type IntentOptional Attributes Name
type(input_t), intent(inout) :: me
class(type_node), intent(in), pointer :: tree
type(type_dictionary), intent(inout) :: no_cmp

private recursive subroutine rename_id(cmp, prefix, postfix)

Arguments

Type IntentOptional Attributes Name
type(type_dictionary), intent(inout) :: cmp
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: postfix