dictionary_traverse Subroutine

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

Calls

proc~~dictionary_traverse~~CallsGraph proc~dictionary_traverse dictionary_traverse proc~dictionary_traverse->proc~dictionary_traverse get_dictionary get_dictionary proc~dictionary_traverse->get_dictionary proc~abort_if abort_if proc~dictionary_traverse->proc~abort_if

Called by

proc~~dictionary_traverse~~CalledByGraph proc~dictionary_traverse dictionary_traverse proc~dictionary_traverse->proc~dictionary_traverse proc~input_node input_t%input_node proc~input_node->proc~dictionary_traverse proc~input_bin input_t%input_bin proc~input_bin->proc~input_node proc~input_bin1d input_t%input_bin1d proc~input_bin1d->proc~input_node proc~input_dbl input_t%input_dbl proc~input_dbl->proc~input_node proc~get0d_hdf5 get0d_hdf5 proc~input_dbl->proc~get0d_hdf5 proc~input_dbl1d input_t%input_dbl1d proc~input_dbl1d->proc~input_node proc~get1d_hdf5 get1d_hdf5 proc~input_dbl1d->proc~get1d_hdf5 proc~input_dbl2d input_t%input_dbl2d proc~input_dbl2d->proc~input_node proc~get2d_hdf5 get2d_hdf5 proc~input_dbl2d->proc~get2d_hdf5 proc~input_dict input_t%input_dict proc~input_dict->proc~input_node proc~input_dict1d input_t%input_dict1d proc~input_dict->proc~input_dict1d proc~input_dict1d->proc~input_node proc~input_int input_t%input_int proc~input_int->proc~input_node proc~input_int1d input_t%input_int1d proc~input_int1d->proc~input_node proc~input_str input_t%input_str proc~input_str->proc~input_node proc~input_str1d input_t%input_str1d proc~input_str1d->proc~input_node proc~boundary_init_part1 boundary_init_part1 proc~boundary_init_part1->proc~input_bin proc~signal_init signal_t%signal_init proc~boundary_init_part1->proc~signal_init proc~boundary_init_part2 boundary_init_part2 proc~boundary_init_part2->proc~input_str proc~channel_init_part1 channel_init_part1 proc~channel_init_part1->proc~input_bin proc~channel_init_part1->proc~input_dbl proc~channel_init_part1->proc~input_dbl1d proc~channel_init_part1->proc~input_str proc~friction_init friction_init proc~channel_init_part1->proc~friction_init proc~nusselt_init nusselt_init proc~channel_init_part1->proc~nusselt_init proc~channel_init_part1->proc~signal_init proc~circulator_init_part1 circulator_init_part1 proc~circulator_init_part1->proc~input_dbl proc~circulator_init_part2 circulator_init_part2 proc~circulator_init_part2->proc~input_dict1d proc~circulator_init_part2->proc~input_str proc~ffsrclink_init_part1 FFsrcLink_init_part1 proc~ffsrclink_init_part1->proc~input_dict1d proc~ffsrclink_init_part1->proc~input_int1d proc~ffsrclink_init_part2 FFsrcLink_init_part2 proc~ffsrclink_init_part2->proc~input_dbl proc~ffsrclink_init_part2->proc~input_dict1d proc~ffsrclink_init_part2->proc~input_int1d proc~ffsrclink_init_part2->proc~input_str proc~ffsrclink_init_part2->proc~nusselt_init proc~friction_factor_blasius_init friction_factor_blasius_init proc~friction_factor_blasius_init->proc~input_dbl proc~friction_factor_central_spiral_init friction_factor_central_spiral_init proc~friction_factor_central_spiral_init->proc~input_dbl proc~friction_factor_katheder_init friction_factor_katheder_init proc~friction_factor_katheder_init->proc~input_dbl proc~friction_init->proc~input_str proc~fslink_init_part1 FSlink_init_part1 proc~fslink_init_part1->proc~input_dict1d proc~fslink_init_part1->proc~input_int1d proc~fslink_init_part1->proc~input_str proc~fslink_init_part1->proc~input_str1d proc~fslink_init_part2 FSlink_init_part2 proc~fslink_init_part2->proc~input_dbl proc~fslink_init_part2->proc~input_dbl1d proc~fslink_init_part2->proc~input_dict1d proc~fslink_init_part2->proc~input_int1d proc~fslink_init_part2->proc~input_str proc~fslink_init_part2->proc~input_str1d proc~fslink_init_part2->proc~nusselt_init proc~get0d_hdf5->proc~input_str proc~get1d_hdf5->proc~input_str proc~get2d_hdf5->proc~input_str proc~hdf5_init hdf5_t%hdf5_init proc~hdf5_init->proc~input_bin proc~hdf5_init->proc~input_dbl proc~hdf5_init->proc~input_str proc~junction_init_part1 junction_init_part1 proc~junction_init_part1->proc~input_dict1d proc~junction_init_part2 junction_init_part2 proc~junction_init_part2->proc~input_dbl proc~junction_init_part2->proc~input_dict1d proc~junction_init_part2->proc~input_str proc~material_copper_init material_copper_init proc~material_copper_init->proc~input_dbl proc~material_glass_epoxy_init material_glass_epoxy_init proc~material_glass_epoxy_init->proc~input_dbl proc~material_glass_kapton_glass_init material_glass_kapton_glass_init proc~material_glass_kapton_glass_init->proc~input_dbl proc~material_init material_init proc~material_init->proc~input_str proc~material_nb3sn_init material_nb3sn_init proc~material_nb3sn_init->proc~input_dbl proc~material_nbti_init material_nbti_init proc~material_nbti_init->proc~input_dbl proc~material_stainless_steel_init material_stainless_steel_init proc~material_stainless_steel_init->proc~input_dbl proc~mesh2d_init_part1 mesh2D_init_part1 proc~mesh2d_init_part1->proc~input_dbl proc~mesh2d_init_part1->proc~input_dict1d proc~mesh2d_init_part1->proc~input_str proc~mesh2d_init_part1->proc~input_str1d proc~mesh2d_init_part1->proc~material_init proc~mesh2d_init_part1->proc~signal_init proc~nusselt_dbg_init nusselt_DBG_init proc~nusselt_dbg_init->proc~input_dbl proc~nusselt_init->proc~input_str proc~nusselt_pipe_init nusselt_pipe_init proc~nusselt_pipe_init->proc~input_dbl proc~set_friction_correlation set_friction_correlation proc~set_friction_correlation->proc~input_str proc~set_friction_correlation->proc~friction_factor_blasius_init proc~set_friction_correlation->proc~friction_factor_central_spiral_init proc~set_friction_correlation->proc~friction_factor_katheder_init proc~set_material set_material proc~set_material->proc~input_str proc~set_material->proc~material_copper_init proc~set_material->proc~material_glass_epoxy_init proc~set_material->proc~material_glass_kapton_glass_init proc~set_material->proc~material_nb3sn_init proc~set_material->proc~material_nbti_init proc~set_material->proc~material_stainless_steel_init proc~set_nusselt_correlation set_nusselt_correlation proc~set_nusselt_correlation->proc~input_str proc~set_nusselt_correlation->proc~nusselt_dbg_init proc~set_nusselt_correlation->proc~nusselt_pipe_init proc~signal_init->proc~input_dbl proc~signal_init->proc~input_dbl1d proc~signal_init->proc~input_dbl2d proc~signal_init->proc~input_dict proc~signal_init->proc~input_str proc~sim_init simulation_t%sim_init proc~sim_init->proc~input_bin proc~sim_init->proc~input_dbl proc~sim_init->proc~signal_init proc~solid_init_part1 solid_init_part1 proc~solid_init_part1->proc~input_bin proc~solid_init_part1->proc~input_bin1d proc~solid_init_part1->proc~input_dbl proc~solid_init_part1->proc~input_dbl1d proc~solid_init_part1->proc~input_str proc~solid_init_part1->proc~material_init proc~solid_init_part1->proc~signal_init proc~solid_init_part2 solid_init_part2 proc~solid_init_part2->proc~input_str proc~ssfluxlink_init_part2 SSfluxLink_init_part2 proc~ssfluxlink_init_part2->proc~input_dict1d proc~ssfluxlink_init_part2->proc~input_str proc~sssrclink_init_part1 SSsrcLink_init_part1 proc~sssrclink_init_part1->proc~input_dict1d proc~sssrclink_init_part1->proc~input_int1d proc~sssrclink_init_part1->proc~input_str proc~sssrclink_init_part1->proc~input_str1d proc~sssrclink_init_part2 SSsrcLink_init_part2 proc~sssrclink_init_part2->proc~input_dbl1d proc~sssrclink_init_part2->proc~input_dict1d proc~sssrclink_init_part2->proc~input_int1d proc~sssrclink_init_part2->proc~input_str proc~sssrclink_init_part2->proc~input_str1d proc~sssrclink_init_part2->proc~material_init proc~strand_init_part1 strand_init_part1 proc~strand_init_part1->proc~input_bin proc~strand_init_part1->proc~input_dbl proc~strand_init_part1->proc~input_dbl1d proc~strand_init_part1->proc~input_dict proc~strand_init_part1->proc~input_str proc~strand_init_part1->proc~material_init proc~strand_init_part1->proc~signal_init proc~strand_init_part2 strand_init_part2 proc~strand_init_part2->proc~input_str program~reims_p reims_p program~reims_p->proc~input_dict program~reims_p->proc~input_dict1d program~reims_p->proc~input_str1d program~reims_p->proc~boundary_init_part1 program~reims_p->proc~boundary_init_part2 program~reims_p->proc~channel_init_part1 program~reims_p->proc~circulator_init_part1 program~reims_p->proc~circulator_init_part2 program~reims_p->proc~ffsrclink_init_part1 program~reims_p->proc~ffsrclink_init_part2 program~reims_p->proc~fslink_init_part1 program~reims_p->proc~fslink_init_part2 program~reims_p->proc~junction_init_part1 program~reims_p->proc~junction_init_part2 program~reims_p->proc~mesh2d_init_part1 program~reims_p->proc~sim_init program~reims_p->proc~solid_init_part1 program~reims_p->proc~solid_init_part2 program~reims_p->proc~ssfluxlink_init_part2 program~reims_p->proc~sssrclink_init_part1 program~reims_p->proc~sssrclink_init_part2 program~reims_p->proc~strand_init_part1 program~reims_p->proc~strand_init_part2 proc~load_frictions load_frictions program~reims_p->proc~load_frictions proc~load_materials load_materials program~reims_p->proc~load_materials proc~load_nusselts load_nusselts program~reims_p->proc~load_nusselts proc~load_frictions->proc~set_friction_correlation proc~load_materials->proc~set_material proc~load_nusselts->proc~set_nusselt_correlation

Source Code

recursive subroutine dictionary_traverse(dict,key)
    !! returns sub-dictionary by traversing from top level dictionary using key 
    !! separation sign: '/'
    type(type_dictionary), pointer, intent(inout) :: dict
    character(*),                   intent(inout) :: key

    integer                        :: key_len
    type(type_error), allocatable  :: err

    key_len = index(key,'/')
    if (key_len /= 0) then
        dict => dict%get_dictionary(key(:key_len-1),.true.,err)
        call abort_if(err,' Key: '//key)
        key = key(key_len+1:)
        call dictionary_traverse(dict,key)
    endif
end subroutine dictionary_traverse