reims_p Program

Uses

  • program~~reims_p~~UsesGraph program~reims_p reims_p 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_ssfluxlink_m cmp_SSfluxLink_m program~reims_p->module~cmp_ssfluxlink_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_global_tools_m krn_global_tools_m program~reims_p->module~krn_global_tools_m module~krn_linear_system_m krn_linear_system_m program~reims_p->module~krn_linear_system_m module~krn_simulation_m krn_simulation_m program~reims_p->module~krn_simulation_m module~lib_input_m lib_input_m program~reims_p->module~lib_input_m module~lib_material_m lib_material_m program~reims_p->module~lib_material_m ieee_arithmetic ieee_arithmetic module~cmp_boundary_calc_m->ieee_arithmetic module~cmp_boundary_init_m cmp_boundary_init_m module~cmp_boundary_calc_m->module~cmp_boundary_init_m module~lib_ext_math_m lib_ext_math_m module~cmp_boundary_calc_m->module~lib_ext_math_m module~lib_he_thermo_m lib_He_thermo_m module~cmp_boundary_calc_m->module~lib_he_thermo_m module~cmp_channel_calc_m->module~krn_global_tools_m module~cmp_channel_calc_m->module~krn_simulation_m module~cmp_channel_init_m cmp_channel_init_m module~cmp_channel_calc_m->module~cmp_channel_init_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_circulator_init_m cmp_circulator_init_m module~cmp_circulator_calc_m->module~cmp_circulator_init_m module~cmp_ffsrclink_init_m cmp_FFsrcLink_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_init_m cmp_FSlink_init_m module~cmp_fslink_calc_m->module~cmp_fslink_init_m module~cmp_junction_calc_m->ieee_arithmetic module~cmp_junction_init_m cmp_junction_init_m module~cmp_junction_calc_m->module~cmp_junction_init_m module~cmp_junction_calc_m->module~lib_ext_math_m module~cmp_junction_calc_m->module~lib_he_thermo_m module~cmp_mesh2d_calc_m->module~krn_simulation_m module~cmp_mesh2d_init_m cmp_mesh2D_init_m module~cmp_mesh2d_calc_m->module~cmp_mesh2d_init_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~krn_simulation_m module~cmp_solid_init_m cmp_solid_init_m module~cmp_solid_calc_m->module~cmp_solid_init_m module~cmp_solid_flux_m->module~cmp_solid_init_m module~cmp_ssfluxlink_m->module~lib_input_m module~krn_interface_m krn_interface_m module~cmp_ssfluxlink_m->module~krn_interface_m module~cmp_sssrclink_init_m cmp_SSsrcLink_init_m module~cmp_sssrclink_calc_m->module~cmp_sssrclink_init_m module~cmp_strand_init_m cmp_strand_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~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 module~krn_linear_system_m->module~krn_simulation_m module~krn_linear_system_m->module~krn_interface_m module~krn_simulation_m->module~krn_global_tools_m module~krn_simulation_m->module~lib_input_m fortran_yaml_c fortran_yaml_c module~krn_simulation_m->fortran_yaml_c module~lib_hdf_write_m lib_hdf_write_m module~krn_simulation_m->module~lib_hdf_write_m module~lib_input_m->module~krn_global_tools_m module~lib_input_m->fortran_yaml_c h5lt h5lt module~lib_input_m->h5lt hdf5 hdf5 module~lib_input_m->hdf5 module~lib_material_m->module~lib_input_m module~lib_material_insulation_m lib_material_insulation_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~cmp_boundary_init_m->module~krn_global_tools_m module~cmp_boundary_init_m->module~krn_simulation_m module~cmp_boundary_init_m->module~lib_input_m module~cmp_boundary_init_m->module~krn_interface_m module~cmp_boundary_init_m->module~lib_he_thermo_m module~cmp_channel_init_m->module~krn_simulation_m module~cmp_channel_init_m->module~lib_input_m module~cmp_channel_init_m->module~krn_interface_m module~cmp_channel_init_m->module~lib_hdf_write_m module~cmp_channel_init_m->module~lib_he_thermo_m module~lib_friction_correlations_m lib_friction_correlations_m module~cmp_channel_init_m->module~lib_friction_correlations_m module~lib_nusselt_correlations_m lib_nusselt_correlations_m module~cmp_channel_init_m->module~lib_nusselt_correlations_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_init_m->module~krn_global_tools_m module~cmp_circulator_init_m->module~krn_simulation_m module~cmp_circulator_init_m->module~lib_input_m module~cmp_circulator_init_m->module~krn_interface_m module~cmp_circulator_init_m->module~lib_ext_math_m module~cmp_circulator_init_m->module~lib_he_thermo_m module~cmp_ffsrclink_init_m->module~krn_simulation_m module~cmp_ffsrclink_init_m->module~lib_input_m module~cmp_ffsrclink_init_m->module~krn_interface_m module~cmp_ffsrclink_init_m->module~lib_nusselt_correlations_m module~cmp_fslink_init_m->module~lib_input_m module~cmp_fslink_init_m->module~lib_material_m module~cmp_fslink_init_m->module~krn_interface_m module~cmp_fslink_init_m->module~lib_nusselt_correlations_m module~cmp_junction_init_m->module~krn_global_tools_m module~cmp_junction_init_m->module~krn_simulation_m module~cmp_junction_init_m->module~lib_input_m module~cmp_junction_init_m->module~krn_interface_m module~cmp_junction_init_m->module~lib_ext_math_m module~cmp_junction_init_m->module~lib_he_thermo_m module~cmp_mesh2d_init_m->module~krn_simulation_m module~cmp_mesh2d_init_m->module~lib_input_m module~cmp_mesh2d_init_m->module~lib_material_m module~cmp_mesh2d_init_m->hdf5 module~cmp_mesh2d_init_m->module~krn_interface_m module~cmp_solid_init_m->module~krn_simulation_m module~cmp_solid_init_m->module~lib_input_m module~cmp_solid_init_m->module~lib_material_m module~cmp_solid_init_m->module~krn_interface_m module~cmp_solid_init_m->module~lib_hdf_write_m module~cmp_sssrclink_init_m->module~lib_input_m module~cmp_sssrclink_init_m->module~lib_material_m module~cmp_sssrclink_init_m->module~krn_interface_m module~cmp_strand_init_m->module~krn_simulation_m module~cmp_strand_init_m->module~lib_input_m module~cmp_strand_init_m->module~lib_material_m module~cmp_strand_init_m->module~krn_interface_m module~cmp_strand_init_m->module~lib_hdf_write_m module~cmp_strand_source_terms_m->module~cmp_strand_init_m module~krn_interface_m->module~krn_global_tools_m module~mkl_pardiso mkl_pardiso module~krn_interface_m->module~mkl_pardiso module~lib_ext_math_m->module~krn_global_tools_m module~lib_hdf_write_m->module~krn_global_tools_m module~lib_hdf_write_m->module~lib_input_m module~lib_hdf_write_m->h5lt module~lib_hdf_write_m->hdf5 module~lib_hdf_write_m->iso_c_binding h5ds h5ds module~lib_hdf_write_m->h5ds module~lib_he_thermo_m->module~krn_global_tools_m module~lib_he_thermo_m->module~krn_simulation_m module~lib_he_thermo_m->ieee_arithmetic module~lib_he_thermo_m->module~lib_ext_math_m module~lib_material_insulation_m->module~krn_global_tools_m module~lib_material_insulation_m->module~lib_input_m module~lib_material_insulation_m->iso_c_binding module~lib_material_metal_m->module~krn_global_tools_m module~lib_material_metal_m->module~lib_input_m module~lib_material_metal_m->iso_c_binding module~lib_material_nb3sn_m->module~krn_global_tools_m module~lib_material_nb3sn_m->module~lib_input_m module~lib_material_nb3sn_m->iso_c_binding module~lib_material_nbti_m->module~krn_global_tools_m module~lib_material_nbti_m->module~lib_input_m module~lib_material_nbti_m->iso_c_binding module~lib_friction_correlations_m->module~krn_global_tools_m module~lib_friction_correlations_m->module~lib_input_m module~lib_friction_correlations_m->fortran_yaml_c module~lib_friction_correlations_m->iso_c_binding module~lib_nusselt_correlations_m->module~krn_global_tools_m module~lib_nusselt_correlations_m->module~lib_input_m module~lib_nusselt_correlations_m->fortran_yaml_c module~lib_nusselt_correlations_m->iso_c_binding

Calls

program~~reims_p~~CallsGraph program~reims_p reims_p interface~loadlibrarya LoadLibraryA program~reims_p->interface~loadlibrarya proc~boundary_init_part1 boundary_init_part1 program~reims_p->proc~boundary_init_part1 proc~boundary_init_part2 boundary_init_part2 program~reims_p->proc~boundary_init_part2 proc~channel_init_part1 channel_init_part1 program~reims_p->proc~channel_init_part1 proc~channel_init_part2 channel_init_part2 program~reims_p->proc~channel_init_part2 proc~circulator_init_part1 circulator_init_part1 program~reims_p->proc~circulator_init_part1 proc~circulator_init_part2 circulator_init_part2 program~reims_p->proc~circulator_init_part2 proc~close_hdf5_files close_hdf5_files program~reims_p->proc~close_hdf5_files proc~consistency_ports consistency_ports program~reims_p->proc~consistency_ports proc~ffsrclink_init_part1 FFsrcLink_init_part1 program~reims_p->proc~ffsrclink_init_part1 proc~ffsrclink_init_part2 FFsrcLink_init_part2 program~reims_p->proc~ffsrclink_init_part2 proc~fslink_init_part1 FSlink_init_part1 program~reims_p->proc~fslink_init_part1 proc~fslink_init_part2 FSlink_init_part2 program~reims_p->proc~fslink_init_part2 proc~hdf5_add_table hdf5_t%hdf5_add_table program~reims_p->proc~hdf5_add_table proc~hdf5_prepare_data hdf5_t%hdf5_prepare_data program~reims_p->proc~hdf5_prepare_data proc~input_cmp1d input_t%input_cmp1d program~reims_p->proc~input_cmp1d proc~input_dict input_t%input_dict program~reims_p->proc~input_dict proc~input_dict1d input_t%input_dict1d program~reims_p->proc~input_dict1d proc~input_nb_cmp input_t%input_nb_cmp program~reims_p->proc~input_nb_cmp proc~input_str1d input_t%input_str1d program~reims_p->proc~input_str1d proc~junction_init_part1 junction_init_part1 program~reims_p->proc~junction_init_part1 proc~junction_init_part2 junction_init_part2 program~reims_p->proc~junction_init_part2 proc~krn_coo_to_csr krn_t%krn_coo_to_csr program~reims_p->proc~krn_coo_to_csr proc~krn_init_part1 krn_t%krn_init_part1 program~reims_p->proc~krn_init_part1 proc~krn_init_part2 krn_t%krn_init_part2 program~reims_p->proc~krn_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~main_loop main_loop program~reims_p->proc~main_loop proc~mesh2d_init_part1 mesh2D_init_part1 program~reims_p->proc~mesh2d_init_part1 proc~mesh2d_init_part2 mesh2D_init_part2 program~reims_p->proc~mesh2d_init_part2 proc~reims_config_file reims_config_file program~reims_p->proc~reims_config_file proc~sim_init simulation_t%sim_init program~reims_p->proc~sim_init proc~solid_init_part1 solid_init_part1 program~reims_p->proc~solid_init_part1 proc~solid_init_part2 solid_init_part2 program~reims_p->proc~solid_init_part2 proc~ssfluxlink_init_part1 SSfluxLink_init_part1 program~reims_p->proc~ssfluxlink_init_part1 proc~ssfluxlink_init_part2 SSfluxLink_init_part2 program~reims_p->proc~ssfluxlink_init_part2 proc~sssrclink_init_part1 SSsrcLink_init_part1 program~reims_p->proc~sssrclink_init_part1 proc~sssrclink_init_part2 SSsrcLink_init_part2 program~reims_p->proc~sssrclink_init_part2 proc~strand_init_part1 strand_init_part1 program~reims_p->proc~strand_init_part1 proc~strand_init_part2 strand_init_part2 program~reims_p->proc~strand_init_part2 proc~timer_set timer_t%timer_set program~reims_p->proc~timer_set proc~writing_hdf5_2d_casing writing_HDF5_2D_casing program~reims_p->proc~writing_hdf5_2d_casing proc~input_bin input_t%input_bin proc~boundary_init_part1->proc~input_bin proc~krn_add krn_t%krn_add proc~boundary_init_part1->proc~krn_add proc~signal_init signal_t%signal_init proc~boundary_init_part1->proc~signal_init proc~convert2int_port convert2int_port proc~boundary_init_part2->proc~convert2int_port proc~input_str input_t%input_str proc~boundary_init_part2->proc~input_str proc~port_list_find port_list_t%port_list_find proc~boundary_init_part2->proc~port_list_find proc~all_channel_allocation_nb all_channel_allocation_nb proc~channel_init_part1->proc~all_channel_allocation_nb proc~friction_init friction_init proc~channel_init_part1->proc~friction_init proc~hdf5_add_to_table hdf5_t%hdf5_add_to_table proc~channel_init_part1->proc~hdf5_add_to_table proc~channel_init_part1->proc~input_bin proc~input_dbl input_t%input_dbl proc~channel_init_part1->proc~input_dbl proc~input_dbl1d input_t%input_dbl1d proc~channel_init_part1->proc~input_dbl1d proc~input_has_key input_t%input_has_key proc~channel_init_part1->proc~input_has_key proc~channel_init_part1->proc~input_str proc~channel_init_part1->proc~krn_add proc~nusselt_init nusselt_init proc~channel_init_part1->proc~nusselt_init proc~ro_pt ro_pT proc~channel_init_part1->proc~ro_pt proc~channel_init_part1->proc~signal_init proc~state_rot state_roT proc~channel_init_part1->proc~state_rot proc~v_prim_to_v_conss v_prim_to_v_Conss proc~channel_init_part1->proc~v_prim_to_v_conss proc~krn_coo_add krn_t%krn_coo_add proc~channel_init_part2->proc~krn_coo_add proc~krn_update krn_t%krn_update proc~channel_init_part2->proc~krn_update proc~circulator_init_part1->proc~input_dbl proc~circulator_init_part1->proc~krn_add proc~circulator_init_part2->proc~input_dict1d interface~to_ptr_arr to_ptr_arr proc~circulator_init_part2->interface~to_ptr_arr proc~circulator_init_part2->proc~convert2int_port proc~circulator_init_part2->proc~input_str proc~krn_coo_add_link krn_t%krn_coo_add_link proc~circulator_init_part2->proc~krn_coo_add_link proc~circulator_init_part2->proc~port_list_find h5fclose_f h5fclose_f proc~close_hdf5_files->h5fclose_f proc~additional_data_hdf5_2d_casing additional_data_HDF5_2D_casing proc~close_hdf5_files->proc~additional_data_hdf5_2d_casing proc~ffsrclink_init_part1->proc~input_dict1d proc~input_int1d input_t%input_int1d proc~ffsrclink_init_part1->proc~input_int1d proc~ffsrclink_init_part1->proc~krn_add proc~ffsrclink_init_part2->proc~input_dict1d proc~ffsrclink_init_part2->interface~to_ptr_arr proc~all_ffsrclink_allocation all_FFsrcLink_allocation proc~ffsrclink_init_part2->proc~all_ffsrclink_allocation proc~ffsrclink_init_part2->proc~input_dbl proc~ffsrclink_init_part2->proc~input_int1d proc~ffsrclink_init_part2->proc~input_str proc~ffsrclink_init_part2->proc~krn_coo_add_link proc~ffsrclink_init_part2->proc~nusselt_init proc~ffsrclink_init_part2->proc~port_list_find proc~fslink_init_part1->proc~input_dict1d proc~fslink_init_part1->proc~input_str1d proc~fslink_init_part1->proc~input_has_key proc~fslink_init_part1->proc~input_int1d proc~fslink_init_part1->proc~input_str proc~fslink_init_part1->proc~krn_add proc~port_list_find_nbports port_list_t%port_list_find_nbPorts proc~fslink_init_part1->proc~port_list_find_nbports proc~fslink_init_part2->proc~input_dict1d proc~fslink_init_part2->proc~input_str1d proc~fslink_init_part2->interface~to_ptr_arr proc~array_conv array_conv proc~fslink_init_part2->proc~array_conv proc~check_if_conversion_required check_if_conversion_required proc~fslink_init_part2->proc~check_if_conversion_required proc~fslink_init_part2->proc~input_dbl proc~fslink_init_part2->proc~input_dbl1d proc~fslink_init_part2->proc~input_has_key proc~fslink_init_part2->proc~input_int1d proc~fslink_init_part2->proc~input_str proc~fslink_init_part2->proc~krn_coo_add_link proc~fslink_init_part2->proc~nusselt_init proc~fslink_init_part2->proc~port_list_find cmp_arr cmp_arr proc~input_cmp1d->cmp_arr get get proc~input_cmp1d->get proc~input_dict->proc~input_dict1d proc~input_dict->proc~input_has_key proc~input_node input_t%input_node proc~input_dict->proc~input_node get_string get_string proc~input_dict1d->get_string proc~input_dict1d->proc~input_has_key proc~input_dict1d->proc~input_node proc~select_dict select_dict proc~input_dict1d->proc~select_dict proc~select_list select_list proc~input_dict1d->proc~select_list proc~input_str1d->proc~input_has_key proc~input_str1d->proc~input_node proc~select_scalar select_scalar proc~input_str1d->proc~select_scalar proc~junction_init_part1->proc~input_dict1d proc~junction_init_part1->proc~krn_add proc~junction_init_part2->proc~input_dict1d proc~junction_init_part2->interface~to_ptr_arr proc~all_junction_allocation all_junction_allocation proc~junction_init_part2->proc~all_junction_allocation proc~junction_init_part2->proc~convert2int_port proc~junction_init_part2->proc~input_dbl proc~junction_init_part2->proc~input_str proc~junction_init_part2->proc~krn_coo_add_link proc~junction_init_part2->proc~port_list_find proc~coo_to_csr coo_to_csr proc~krn_coo_to_csr->proc~coo_to_csr interface~getprocaddress GetProcAddress proc~load_frictions->interface~getprocaddress proc~empty_cfg empty_cfg proc~load_frictions->proc~empty_cfg proc~set_friction_correlation set_friction_correlation proc~load_frictions->proc~set_friction_correlation proc~load_materials->interface~getprocaddress proc~load_materials->proc~empty_cfg proc~set_material set_material proc~load_materials->proc~set_material proc~load_nusselts->interface~getprocaddress proc~load_nusselts->proc~empty_cfg proc~set_nusselt_correlation set_nusselt_correlation proc~load_nusselts->proc~set_nusselt_correlation proc~main_loop->proc~timer_set proc~main_loop->proc~writing_hdf5_2d_casing proc~boundary_resolution_from_and_to_ports boundary_resolution_from_and_to_ports proc~main_loop->proc~boundary_resolution_from_and_to_ports proc~channels_ff_flux_port_comm channels_FF_flux_port_comm proc~main_loop->proc~channels_ff_flux_port_comm proc~channels_to_ff_src_port_comm channels_to_FF_src_port_comm proc~main_loop->proc~channels_to_ff_src_port_comm proc~circulator_resolution_from_and_to_ports circulator_resolution_from_and_to_ports proc~main_loop->proc~circulator_resolution_from_and_to_ports proc~explicit_scheme_for_fluxes_channel explicit_scheme_for_fluxes_channel proc~main_loop->proc~explicit_scheme_for_fluxes_channel proc~explicit_scheme_for_fluxes_solid explicit_scheme_for_fluxes_solid proc~main_loop->proc~explicit_scheme_for_fluxes_solid proc~explicit_scheme_for_fluxes_strand explicit_scheme_for_fluxes_strand proc~main_loop->proc~explicit_scheme_for_fluxes_strand proc~ff_src_port_to_channels_comm FF_src_port_to_channels_comm proc~main_loop->proc~ff_src_port_to_channels_comm proc~ffsrclink_prelax_resolution_from_and_to_ports FFsrcLink_Prelax_resolution_from_and_to_ports proc~main_loop->proc~ffsrclink_prelax_resolution_from_and_to_ports proc~ffsrclink_resolution_from_and_to_ports FFsrcLink_resolution_from_and_to_ports proc~main_loop->proc~ffsrclink_resolution_from_and_to_ports proc~flux_from_ff_flux_ports_self flux_from_FF_flux_ports_self proc~main_loop->proc~flux_from_ff_flux_ports_self proc~flux_from_ss_flux_ports_self flux_from_SS_flux_ports_self proc~main_loop->proc~flux_from_ss_flux_ports_self proc~friction_source_term friction_source_term proc~main_loop->proc~friction_source_term proc~from_sol_to_prim_channel from_sol_to_prim_channel proc~main_loop->proc~from_sol_to_prim_channel proc~from_sol_to_temp_mesh2d from_sol_to_temp_mesh2D proc~main_loop->proc~from_sol_to_temp_mesh2d proc~from_sol_to_temp_solid from_sol_to_temp_solid proc~main_loop->proc~from_sol_to_temp_solid proc~from_sol_to_temp_strand from_sol_to_temp_strand proc~main_loop->proc~from_sol_to_temp_strand proc~fslink_resolution_from_and_to_ports FSlink_resolution_from_and_to_ports proc~main_loop->proc~fslink_resolution_from_and_to_ports proc~fslink_src_reinitialization FSlink_src_reinitialization proc~main_loop->proc~fslink_src_reinitialization proc~full_physics_definition_channel full_physics_definition_channel proc~main_loop->proc~full_physics_definition_channel proc~full_physics_definition_mesh2d full_physics_definition_mesh2D proc~main_loop->proc~full_physics_definition_mesh2d proc~full_physics_definition_solid full_physics_definition_solid proc~main_loop->proc~full_physics_definition_solid proc~full_physics_definition_strand full_physics_definition_strand proc~main_loop->proc~full_physics_definition_strand proc~handle_numerical_error handle_numerical_error proc~main_loop->proc~handle_numerical_error proc~he_riemann_solver_channel He_Riemann_solver_channel proc~main_loop->proc~he_riemann_solver_channel proc~heat_diffusion_mesh2d heat_diffusion_mesh2D proc~main_loop->proc~heat_diffusion_mesh2d proc~heat_diffusion_solid heat_diffusion_solid proc~main_loop->proc~heat_diffusion_solid proc~heat_diffusion_strand heat_diffusion_strand proc~main_loop->proc~heat_diffusion_strand proc~junction_resolution_from_and_to_ports Junction_resolution_from_and_to_ports proc~main_loop->proc~junction_resolution_from_and_to_ports proc~last_tasks_for_channels last_tasks_for_channels proc~main_loop->proc~last_tasks_for_channels proc~links_circulator_update links_circulator_update proc~main_loop->proc~links_circulator_update proc~links_ffsrclink_update links_FFsrcLink_update proc~main_loop->proc~links_ffsrclink_update proc~links_fslink_update links_FSlink_update proc~main_loop->proc~links_fslink_update proc~links_junction_update links_junction_update proc~main_loop->proc~links_junction_update proc~links_ssfluxlink_update links_SSfluxLink_update proc~main_loop->proc~links_ssfluxlink_update proc~links_sssrclink_update links_SSsrcLink_update proc~main_loop->proc~links_sssrclink_update proc~mesh2ds_fs_port_comm mesh2Ds_FS_port_comm proc~main_loop->proc~mesh2ds_fs_port_comm proc~mesh2ds_ss_src_port_comm mesh2Ds_SS_src_port_comm proc~main_loop->proc~mesh2ds_ss_src_port_comm proc~pardiso_fact_solve Pardiso_fact_solve proc~main_loop->proc~pardiso_fact_solve proc~scenario_update scenario_update proc~main_loop->proc~scenario_update proc~sim_step_management simulation_t%sim_step_management proc~main_loop->proc~sim_step_management proc~sim_update_exp_dt simulation_t%sim_update_exp_dt proc~main_loop->proc~sim_update_exp_dt proc~solid_scenario_update solid_scenario_update proc~main_loop->proc~solid_scenario_update proc~source_from_ff_src_ports_self_channel source_from_FF_src_ports_self_channel proc~main_loop->proc~source_from_ff_src_ports_self_channel proc~source_from_fs_ports_self_channel source_from_FS_ports_self_channel proc~main_loop->proc~source_from_fs_ports_self_channel proc~source_from_fs_ports_self_mesh2d source_from_FS_ports_self_mesh2D proc~main_loop->proc~source_from_fs_ports_self_mesh2d proc~source_from_fs_ports_self_solid source_from_FS_ports_self_solid proc~main_loop->proc~source_from_fs_ports_self_solid proc~source_from_fs_ports_self_strand source_from_FS_ports_self_strand proc~main_loop->proc~source_from_fs_ports_self_strand proc~source_from_ss_src_ports_self_mesh2d source_from_SS_src_ports_self_mesh2D proc~main_loop->proc~source_from_ss_src_ports_self_mesh2d proc~source_from_ss_src_ports_self_solid source_from_SS_src_ports_self_solid proc~main_loop->proc~source_from_ss_src_ports_self_solid proc~source_term_definition_channel source_term_definition_channel proc~main_loop->proc~source_term_definition_channel proc~source_term_definition_solid source_term_definition_solid proc~main_loop->proc~source_term_definition_solid proc~source_term_definition_strand source_term_definition_strand proc~main_loop->proc~source_term_definition_strand proc~ssfluxlink_resolution_from_and_to_ports SSfluxLink_resolution_from_and_to_ports proc~main_loop->proc~ssfluxlink_resolution_from_and_to_ports proc~sssrclink_resolution_from_and_to_ports SSsrcLink_resolution_from_and_to_ports proc~main_loop->proc~sssrclink_resolution_from_and_to_ports proc~sssrclink_src_reinitialization SSsrcLink_src_reinitialization proc~main_loop->proc~sssrclink_src_reinitialization proc~strands_ss_flux_port_comm strands_SS_flux_port_comm proc~main_loop->proc~strands_ss_flux_port_comm proc~mesh2d_init_part1->proc~input_dict1d proc~mesh2d_init_part1->proc~input_str1d proc~all_mesh2d_allocation all_mesh2D_allocation proc~mesh2d_init_part1->proc~all_mesh2d_allocation proc~mesh2d_init_part1->proc~input_dbl proc~mesh2d_init_part1->proc~input_has_key proc~mesh2d_init_part1->proc~input_str proc~mesh2d_init_part1->proc~krn_add proc~krn_add_label krn_t%krn_add_label proc~mesh2d_init_part1->proc~krn_add_label proc~material_init material_init proc~mesh2d_init_part1->proc~material_init proc~preprocessing_2delements preprocessing_2Delements proc~mesh2d_init_part1->proc~preprocessing_2delements proc~mesh2d_init_part1->proc~signal_init proc~mesh2d_init_part2->proc~krn_coo_add proc~mesh2d_init_part2->proc~krn_update h5open_f h5open_f proc~reims_config_file->h5open_f nargs nargs proc~reims_config_file->nargs proc~sim_init->proc~input_bin proc~sim_init->proc~input_dbl proc~sim_init->proc~signal_init proc~all_solid_allocation all_solid_allocation proc~solid_init_part1->proc~all_solid_allocation proc~solid_init_part1->proc~hdf5_add_to_table proc~solid_init_part1->proc~input_bin proc~input_bin1d input_t%input_bin1d 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_has_key proc~solid_init_part1->proc~input_str proc~solid_init_part1->proc~krn_add proc~solid_init_part1->proc~material_init proc~solid_init_part1->proc~signal_init proc~solid_init_part2->proc~input_str proc~solid_init_part2->proc~krn_coo_add proc~solid_init_part2->proc~krn_update proc~ssfluxlink_init_part1->proc~krn_add proc~ssfluxlink_init_part2->proc~input_dict1d proc~ssfluxlink_init_part2->interface~to_ptr_arr proc~all_ssfluxlink_allocation all_SSfluxLink_allocation proc~ssfluxlink_init_part2->proc~all_ssfluxlink_allocation proc~ssfluxlink_init_part2->proc~convert2int_port proc~ssfluxlink_init_part2->proc~input_str proc~ssfluxlink_init_part2->proc~krn_coo_add_link proc~ssfluxlink_init_part2->proc~port_list_find proc~sssrclink_init_part1->proc~input_dict1d proc~sssrclink_init_part1->proc~input_str1d proc~sssrclink_init_part1->proc~input_has_key proc~sssrclink_init_part1->proc~input_int1d proc~sssrclink_init_part1->proc~input_str proc~sssrclink_init_part1->proc~krn_add proc~sssrclink_init_part1->proc~port_list_find_nbports proc~sssrclink_init_part2->proc~input_dict1d proc~sssrclink_init_part2->proc~input_str1d proc~sssrclink_init_part2->interface~to_ptr_arr proc~sssrclink_init_part2->proc~input_dbl1d proc~sssrclink_init_part2->proc~input_has_key proc~sssrclink_init_part2->proc~input_int1d proc~sssrclink_init_part2->proc~input_str proc~sssrclink_init_part2->proc~krn_coo_add_link proc~sssrclink_init_part2->proc~material_init proc~sssrclink_init_part2->proc~port_list_find proc~strand_init_part1->proc~input_dict proc~all_strand_allocation all_strand_allocation proc~strand_init_part1->proc~all_strand_allocation proc~strand_init_part1->proc~hdf5_add_to_table 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_has_key proc~strand_init_part1->proc~input_str proc~strand_init_part1->proc~krn_add proc~strand_init_part1->proc~material_init proc~strand_init_part1->proc~signal_init proc~strand_init_part2->proc~input_str proc~strand_init_part2->proc~krn_coo_add proc~strand_init_part2->proc~krn_update h5aclose_f h5aclose_f proc~writing_hdf5_2d_casing->h5aclose_f h5acreate_f h5acreate_f proc~writing_hdf5_2d_casing->h5acreate_f h5awrite_f h5awrite_f proc~writing_hdf5_2d_casing->h5awrite_f h5dcreate_f h5dcreate_f proc~writing_hdf5_2d_casing->h5dcreate_f h5dwrite_f h5dwrite_f proc~writing_hdf5_2d_casing->h5dwrite_f h5fcreate_f h5fcreate_f proc~writing_hdf5_2d_casing->h5fcreate_f h5gclose_f h5gclose_f proc~writing_hdf5_2d_casing->h5gclose_f h5gcreate_f h5gcreate_f proc~writing_hdf5_2d_casing->h5gcreate_f h5sclose_f h5sclose_f proc~writing_hdf5_2d_casing->h5sclose_f h5screate_f h5screate_f proc~writing_hdf5_2d_casing->h5screate_f h5screate_simple_f h5screate_simple_f proc~writing_hdf5_2d_casing->h5screate_simple_f h5tcopy_f h5tcopy_f proc~writing_hdf5_2d_casing->h5tcopy_f h5tset_size_f h5tset_size_f proc~writing_hdf5_2d_casing->h5tset_size_f proc~to_ptr_arr0d to_ptr_arr0d interface~to_ptr_arr->proc~to_ptr_arr0d proc~to_ptr_arr1d to_ptr_arr1d interface~to_ptr_arr->proc~to_ptr_arr1d proc~to_ptr_arr2d to_ptr_arr2d interface~to_ptr_arr->proc~to_ptr_arr2d proc~additional_data_hdf5_2d_casing->h5dcreate_f proc~additional_data_hdf5_2d_casing->h5dwrite_f proc~additional_data_hdf5_2d_casing->h5sclose_f proc~additional_data_hdf5_2d_casing->h5screate_simple_f proc~solve_boundary_mt solve_boundary_MT proc~boundary_resolution_from_and_to_ports->proc~solve_boundary_mt proc~solve_boundary_pt solve_boundary_PT proc~boundary_resolution_from_and_to_ports->proc~solve_boundary_pt proc~count_chars count_chars proc~check_if_conversion_required->proc~count_chars proc~imposed_mass_flow_rate imposed_mass_flow_rate proc~circulator_resolution_from_and_to_ports->proc~imposed_mass_flow_rate proc~incoming_branch_cold_circulator incoming_branch_cold_circulator proc~circulator_resolution_from_and_to_ports->proc~incoming_branch_cold_circulator proc~mdot_derivatives mdot_derivatives proc~circulator_resolution_from_and_to_ports->proc~mdot_derivatives proc~outgoing_branch_cold_circulator outgoing_branch_cold_circulator proc~circulator_resolution_from_and_to_ports->proc~outgoing_branch_cold_circulator mkl_sparse_convert_csr mkl_sparse_convert_csr proc~coo_to_csr->mkl_sparse_convert_csr mkl_sparse_d_create_coo mkl_sparse_d_create_coo proc~coo_to_csr->mkl_sparse_d_create_coo mkl_sparse_d_export_csr mkl_sparse_d_export_csr proc~coo_to_csr->mkl_sparse_d_export_csr proc~check_status check_status proc~coo_to_csr->proc~check_status proc~material_heat_capacity material_t%material_heat_capacity proc~explicit_scheme_for_fluxes_solid->proc~material_heat_capacity proc~material_critical_current_density material_t%material_critical_current_density proc~explicit_scheme_for_fluxes_strand->proc~material_critical_current_density proc~material_critical_field material_t%material_critical_field proc~explicit_scheme_for_fluxes_strand->proc~material_critical_field proc~material_critical_temperature material_t%material_critical_temperature proc~explicit_scheme_for_fluxes_strand->proc~material_critical_temperature proc~material_current_sharing_temperature material_t%material_current_sharing_temperature proc~explicit_scheme_for_fluxes_strand->proc~material_current_sharing_temperature proc~explicit_scheme_for_fluxes_strand->proc~material_heat_capacity proc~material_strain material_t%material_strain proc~explicit_scheme_for_fluxes_strand->proc~material_strain proc~ffsrclink_prelax_resolution_from_and_to_ports->proc~state_rot proc~he_prop he_prop proc~ffsrclink_prelax_resolution_from_and_to_ports->proc~he_prop proc~t_rop T_roP proc~ffsrclink_prelax_resolution_from_and_to_ports->proc~t_rop proc~nusselt_correlation nusselt_t%nusselt_correlation proc~ffsrclink_resolution_from_and_to_ports->proc~nusselt_correlation proc~nusselt_correlation_der_pra nusselt_t%nusselt_correlation_der_Pra proc~ffsrclink_resolution_from_and_to_ports->proc~nusselt_correlation_der_pra proc~nusselt_correlation_der_re nusselt_t%nusselt_correlation_der_Re proc~ffsrclink_resolution_from_and_to_ports->proc~nusselt_correlation_der_re proc~nusselt_correlation_der_t nusselt_t%nusselt_correlation_der_T proc~ffsrclink_resolution_from_and_to_ports->proc~nusselt_correlation_der_t proc~nusselt_correlation_der_tother nusselt_t%nusselt_correlation_der_Tother proc~ffsrclink_resolution_from_and_to_ports->proc~nusselt_correlation_der_tother proc~friction_init->proc~input_str proc~der_friction_factor_laminar der_friction_factor_laminar proc~friction_source_term->proc~der_friction_factor_laminar proc~friction_correlation friction_t%friction_correlation proc~friction_source_term->proc~friction_correlation proc~friction_correlation_der friction_t%friction_correlation_der proc~friction_source_term->proc~friction_correlation_der proc~friction_factor_laminar friction_factor_laminar proc~friction_source_term->proc~friction_factor_laminar proc~friction_source_term->proc~he_prop proc~jacobian_rot jacobian_roT proc~friction_source_term->proc~jacobian_rot proc~state_roe state_roE proc~friction_source_term->proc~state_roe proc~state_roe_withr state_roE_withR proc~friction_source_term->proc~state_roe_withr proc~set_error set_error proc~from_sol_to_prim_channel->proc~set_error proc~from_sol_to_prim_channel->proc~state_roe proc~from_sol_to_prim_channel->proc~state_roe_withr proc~from_sol_to_temp_strand->proc~material_critical_current_density proc~from_sol_to_temp_strand->proc~material_critical_field proc~from_sol_to_temp_strand->proc~material_critical_temperature proc~from_sol_to_temp_strand->proc~material_current_sharing_temperature proc~from_sol_to_temp_strand->proc~material_strain proc~fslink_resolution_from_and_to_ports->proc~nusselt_correlation proc~fslink_resolution_from_and_to_ports->proc~nusselt_correlation_der_pra proc~fslink_resolution_from_and_to_ports->proc~nusselt_correlation_der_re proc~fslink_resolution_from_and_to_ports->proc~nusselt_correlation_der_t proc~fslink_resolution_from_and_to_ports->proc~nusselt_correlation_der_tother proc~full_physics_definition_channel->proc~source_term_definition_channel proc~dc2_rot dc2_roT proc~full_physics_definition_channel->proc~dc2_rot proc~full_physics_definition_mesh2d->proc~material_heat_capacity proc~material_heat_capacity_der material_t%material_heat_capacity_der proc~full_physics_definition_mesh2d->proc~material_heat_capacity_der proc~signal_v0d signal_t%signal_v0d proc~full_physics_definition_mesh2d->proc~signal_v0d proc~full_physics_definition_solid->proc~source_term_definition_solid proc~full_physics_definition_solid->proc~material_heat_capacity proc~full_physics_definition_solid->proc~material_heat_capacity_der proc~full_physics_definition_strand->proc~source_term_definition_strand proc~full_physics_definition_strand->proc~material_critical_current_density proc~full_physics_definition_strand->proc~material_critical_field proc~full_physics_definition_strand->proc~material_critical_temperature proc~full_physics_definition_strand->proc~material_current_sharing_temperature proc~full_physics_definition_strand->proc~material_heat_capacity proc~full_physics_definition_strand->proc~material_heat_capacity_der proc~full_physics_definition_strand->proc~material_strain proc~handle_numerical_error->proc~close_hdf5_files proc~flux_internal_calculation_channel flux_internal_calculation_channel proc~he_riemann_solver_channel->proc~flux_internal_calculation_channel proc~jacobian_channel jacobian_channel proc~he_riemann_solver_channel->proc~jacobian_channel proc~jacobian_channel_req_rem jacobian_channel_Req_rem proc~he_riemann_solver_channel->proc~jacobian_channel_req_rem proc~states_l_and_r_channel states_L_and_R_channel proc~he_riemann_solver_channel->proc~states_l_and_r_channel proc~required_variables_for_implicit_2d_heat_diffusion required_variables_for_implicit_2D_heat_diffusion proc~heat_diffusion_mesh2d->proc~required_variables_for_implicit_2d_heat_diffusion proc~s_heat_flux_internal_calculation S_heat_flux_internal_calculation proc~heat_diffusion_solid->proc~s_heat_flux_internal_calculation proc~s_heat_flux_internal_calculation~2 S_heat_flux_internal_calculation proc~heat_diffusion_strand->proc~s_heat_flux_internal_calculation~2 proc~input_bin->proc~input_has_key proc~input_bin->proc~input_node proc~input_bin->proc~select_scalar proc~continue_if continue_if proc~input_bin->proc~continue_if to_logical to_logical proc~input_bin->to_logical proc~input_bin1d->proc~input_has_key proc~input_bin1d->proc~input_node proc~input_bin1d->proc~select_scalar interface~to_str to_str proc~input_bin1d->interface~to_str proc~input_bin1d->proc~continue_if proc~input_bin1d->to_logical proc~input_dbl->proc~input_has_key proc~input_dbl->proc~input_node proc~input_dbl->proc~continue_if proc~get0d_hdf5 get0d_hdf5 proc~input_dbl->proc~get0d_hdf5 to_real to_real proc~input_dbl->to_real proc~input_dbl1d->proc~input_has_key proc~input_dbl1d->proc~input_node proc~input_dbl1d->proc~select_scalar proc~input_dbl1d->interface~to_str proc~input_dbl1d->proc~continue_if proc~get1d_hdf5 get1d_hdf5 proc~input_dbl1d->proc~get1d_hdf5 proc~input_dbl1d->to_real proc~input_has_key->get proc~input_has_key->proc~select_dict proc~input_int1d->proc~input_has_key proc~input_int1d->proc~input_node proc~input_int1d->proc~select_scalar proc~input_int1d->interface~to_str proc~input_int1d->proc~continue_if proc~get1d_range get1d_range proc~input_int1d->proc~get1d_range to_integer to_integer proc~input_int1d->to_integer proc~input_node->get proc~input_node->proc~select_dict proc~dictionary_traverse dictionary_traverse proc~input_node->proc~dictionary_traverse proc~input_str->proc~input_has_key proc~input_str->proc~input_node proc~input_str->proc~select_scalar proc~junction_resolution_from_and_to_ports->proc~set_error proc~solve_junction solve_junction proc~junction_resolution_from_and_to_ports->proc~solve_junction proc~port_list_add port_list_t%port_list_add proc~krn_add->proc~port_list_add proc~krn_add_label->proc~port_list_add proc~krn_update->interface~to_str proc~port_list_update port_list_t%port_list_update proc~krn_update->proc~port_list_update proc~last_tasks_for_channels->proc~state_rot proc~accumulate accumulate proc~links_ffsrclink_update->proc~accumulate proc~material_init->proc~input_str proc~mesh2ds_fs_port_comm->proc~material_heat_capacity proc~mesh2ds_fs_port_comm->proc~material_heat_capacity_der proc~material_thermal_conductivity material_t%material_thermal_conductivity proc~mesh2ds_fs_port_comm->proc~material_thermal_conductivity proc~material_thermal_conductivity_der material_t%material_thermal_conductivity_der proc~mesh2ds_fs_port_comm->proc~material_thermal_conductivity_der proc~mesh2ds_ss_src_port_comm->proc~material_heat_capacity proc~mesh2ds_ss_src_port_comm->proc~material_heat_capacity_der proc~mesh2ds_ss_src_port_comm->proc~material_thermal_conductivity proc~mesh2ds_ss_src_port_comm->proc~material_thermal_conductivity_der proc~nusselt_init->proc~input_str proc~pardiso_fact_solve->proc~timer_set pardiso pardiso proc~pardiso_fact_solve->pardiso pardisoinit pardisoinit proc~pardiso_fact_solve->pardisoinit proc~from_ptr_arr from_ptr_arr proc~pardiso_fact_solve->proc~from_ptr_arr proc~pardiso_fact_solve->proc~set_error proc~port_list_find->interface~to_str proc~to_int to_int proc~port_list_find->proc~to_int proc~port_list_find_nbports->proc~to_int proc~brent brent proc~ro_pt->proc~brent proc~compute_effective_field compute_effective_field proc~scenario_update->proc~compute_effective_field proc~scenario_update->proc~signal_v0d proc~signal_v1d signal_t%signal_v1d proc~scenario_update->proc~signal_v1d proc~set_friction_correlation->proc~input_str proc~friction_factor_blasius_init friction_factor_blasius_init proc~set_friction_correlation->proc~friction_factor_blasius_init proc~friction_factor_central_spiral_init friction_factor_central_spiral_init proc~set_friction_correlation->proc~friction_factor_central_spiral_init proc~friction_factor_katheder_init friction_factor_katheder_init proc~set_friction_correlation->proc~friction_factor_katheder_init proc~input_keys1d input_t%input_keys1d proc~set_friction_correlation->proc~input_keys1d proc~set_material->proc~input_str proc~get_power_law_parameters_nb3sn get_power_law_parameters_nb3sn proc~set_material->proc~get_power_law_parameters_nb3sn proc~get_power_law_parameters_nbti get_power_law_parameters_nbti proc~set_material->proc~get_power_law_parameters_nbti proc~set_material->proc~input_keys1d proc~material_copper_init material_copper_init proc~set_material->proc~material_copper_init proc~material_glass_epoxy_init material_glass_epoxy_init proc~set_material->proc~material_glass_epoxy_init proc~material_glass_kapton_glass_init material_glass_kapton_glass_init proc~set_material->proc~material_glass_kapton_glass_init proc~material_nb3sn_init material_nb3sn_init proc~set_material->proc~material_nb3sn_init proc~material_nbti_init material_nbti_init proc~set_material->proc~material_nbti_init proc~material_stainless_steel_init material_stainless_steel_init proc~set_material->proc~material_stainless_steel_init proc~set_nusselt_correlation->proc~input_str proc~set_nusselt_correlation->proc~input_keys1d proc~nusselt_dbg_init nusselt_DBG_init proc~set_nusselt_correlation->proc~nusselt_dbg_init proc~nusselt_pipe_init nusselt_pipe_init proc~set_nusselt_correlation->proc~nusselt_pipe_init proc~signal_init->proc~input_dict proc~signal_init->interface~getprocaddress proc~signal_init->proc~input_dbl proc~signal_init->proc~input_dbl1d proc~signal_init->proc~input_has_key proc~signal_init->proc~input_str interface~is_nan is_nan proc~signal_init->interface~is_nan proc~input_dbl2d input_t%input_dbl2d proc~signal_init->proc~input_dbl2d proc~signal_init->proc~input_keys1d proc~interpolate_vector interpolate_vector proc~signal_init->proc~interpolate_vector proc~merge_events merge_events proc~signal_init->proc~merge_events proc~filter filter proc~sim_step_management->proc~filter proc~sim_step_management->proc~signal_v0d proc~sim_print sim_print proc~sim_step_management->proc~sim_print proc~solid_scenario_update->proc~signal_v1d proc~source_term_definition_channel->proc~signal_v1d proc~sourceterms_notfriction_channel SourceTerms_NOTfriction_channel proc~source_term_definition_channel->proc~sourceterms_notfriction_channel proc~source_term_definition_solid->proc~material_heat_capacity proc~source_term_definition_solid->proc~material_heat_capacity_der proc~source_term_definition_solid->proc~material_thermal_conductivity proc~source_term_definition_solid->proc~material_thermal_conductivity_der proc~solid_source_terms solid_source_terms proc~source_term_definition_strand->proc~solid_source_terms proc~sssrclink_resolution_from_and_to_ports->proc~material_thermal_conductivity proc~state_rot->proc~jacobian_rot proc~strands_ss_flux_port_comm->proc~material_critical_current_density proc~strands_ss_flux_port_comm->proc~material_critical_field proc~strands_ss_flux_port_comm->proc~material_critical_temperature proc~strands_ss_flux_port_comm->proc~material_current_sharing_temperature proc~strands_ss_flux_port_comm->proc~material_heat_capacity proc~strands_ss_flux_port_comm->proc~material_strain proc~strands_ss_flux_port_comm->proc~material_thermal_conductivity proc~strands_ss_flux_port_comm->proc~material_thermal_conductivity_der proc~is_nan_dbl is_nan_dbl interface~is_nan->proc~is_nan_dbl proc~is_nan_int is_nan_int interface~is_nan->proc~is_nan_int proc~str_from_int str_from_int interface~to_str->proc~str_from_int proc~str_from_real str_from_real interface~to_str->proc~str_from_real proc~brent->proc~set_error f f proc~brent->f proc~zero zero proc~brent->proc~zero proc~check_status->interface~to_str proc~compute_effective_field->proc~material_critical_current_density proc~compute_effective_field->proc~material_critical_field proc~compute_effective_field->proc~material_critical_temperature proc~compute_effective_field->proc~material_strain proc~compute_effective_field->proc~set_error dfloat dfloat proc~compute_effective_field->dfloat proc~eos_terms eos_terms proc~dc2_rot->proc~eos_terms 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 proc~flux_internal_calculation_channel->proc~set_error proc~wave_speed_calculation_channel wave_speed_calculation_channel proc~flux_internal_calculation_channel->proc~wave_speed_calculation_channel proc~friction_factor_blasius_init->proc~input_dbl proc~friction_factor_central_spiral_init->proc~input_dbl proc~friction_factor_katheder_init->proc~input_dbl proc~get0d_hdf5->h5fclose_f proc~get0d_hdf5->h5open_f proc~get0d_hdf5->proc~input_has_key proc~get0d_hdf5->proc~input_str h5close_f h5close_f proc~get0d_hdf5->h5close_f h5dclose_f h5dclose_f proc~get0d_hdf5->h5dclose_f h5dopen_f h5dopen_f proc~get0d_hdf5->h5dopen_f h5dread_f h5dread_f proc~get0d_hdf5->h5dread_f h5fopen_f h5fopen_f proc~get0d_hdf5->h5fopen_f h5ltget_dataset_info_f h5ltget_dataset_info_f proc~get0d_hdf5->h5ltget_dataset_info_f proc~get1d_hdf5->h5fclose_f proc~get1d_hdf5->proc~input_has_key proc~get1d_hdf5->proc~input_str proc~get1d_hdf5->h5dclose_f proc~get1d_hdf5->h5dopen_f proc~get1d_hdf5->h5dread_f proc~get1d_hdf5->h5fopen_f proc~get1d_hdf5->h5ltget_dataset_info_f proc~get1d_range->proc~input_has_key proc~he_prop->proc~jacobian_rot proc~he_prop->proc~set_error proc~incoming_branch_cold_circulator->proc~jacobian_rot proc~hhh_derivatives HHH_derivatives proc~incoming_branch_cold_circulator->proc~hhh_derivatives proc~imposed_compression_energy imposed_compression_energy proc~incoming_branch_cold_circulator->proc~imposed_compression_energy proc~jacobian_star jacobian_star proc~incoming_branch_cold_circulator->proc~jacobian_star proc~jacobian_star_req_rem jacobian_star_Req_rem proc~incoming_branch_cold_circulator->proc~jacobian_star_req_rem proc~state_rop state_roP proc~incoming_branch_cold_circulator->proc~state_rop proc~input_dbl2d->proc~input_has_key proc~input_dbl2d->proc~input_node proc~input_dbl2d->proc~select_list proc~input_dbl2d->proc~select_scalar proc~input_dbl2d->proc~continue_if proc~input_dbl2d->to_real proc~get2d_hdf5 get2d_hdf5 proc~input_dbl2d->proc~get2d_hdf5 proc~input_keys1d->proc~select_dict proc~interpolate interpolate proc~interpolate_vector->proc~interpolate proc~jacobian_channel_req_rem->proc~jacobian_rot proc~jacobian_rot->proc~eos_terms proc~material_copper_init->proc~input_dbl proc~material_glass_epoxy_init->proc~input_dbl proc~material_glass_kapton_glass_init->proc~input_dbl proc~material_nb3sn_init->proc~input_dbl proc~material_nbti_init->proc~input_dbl proc~material_stainless_steel_init->proc~input_dbl proc~mdot_derivatives->proc~jacobian_rot proc~nusselt_dbg_init->proc~input_dbl proc~nusselt_pipe_init->proc~input_dbl proc~outgoing_branch_cold_circulator->proc~dc2_rot proc~outgoing_branch_cold_circulator->proc~jacobian_rot proc~outgoing_branch_cold_circulator->proc~set_error proc~outgoing_branch_cold_circulator->proc~t_rop proc~circulator_dynamic_parameters_df circulator_dynamic_parameters_t%circulator_dynamic_parameters_df proc~outgoing_branch_cold_circulator->proc~circulator_dynamic_parameters_df proc~circulator_dynamic_parameters_f circulator_dynamic_parameters_t%circulator_dynamic_parameters_f proc~outgoing_branch_cold_circulator->proc~circulator_dynamic_parameters_f proc~outgoing_branch_cold_circulator->proc~jacobian_star proc~outgoing_branch_cold_circulator->proc~jacobian_star_req_rem proc~outgoing_branch_cold_circulator->proc~state_rop proc~outgoing_branch_cold_circulator->proc~zero proc~port_list_add->interface~to_str proc~required_variables_for_implicit_2d_heat_diffusion->proc~material_thermal_conductivity proc~required_variables_for_implicit_2d_heat_diffusion->proc~material_thermal_conductivity_der proc~required_variables_for_implicit_2d_heat_diffusion->proc~signal_v0d proc~s_heat_flux_internal_calculation->proc~material_thermal_conductivity proc~s_heat_flux_internal_calculation->proc~material_thermal_conductivity_der proc~s_heat_flux_internal_calculation~2->proc~material_thermal_conductivity proc~s_heat_flux_internal_calculation~2->proc~material_thermal_conductivity_der proc~signal_v0d->proc~signal_v1d proc~sim_print->interface~to_str proc~s_to_str s_to_str proc~sim_print->proc~s_to_str proc~solid_source_terms->proc~material_critical_current_density proc~solid_source_terms->proc~material_critical_field proc~solid_source_terms->proc~material_critical_temperature proc~solid_source_terms->proc~material_current_sharing_temperature proc~solid_source_terms->proc~material_heat_capacity proc~solid_source_terms->proc~material_heat_capacity_der proc~solid_source_terms->proc~material_strain proc~solid_source_terms->proc~set_error proc~material_critical_current_density_der material_t%material_critical_current_density_der proc~solid_source_terms->proc~material_critical_current_density_der proc~material_resistivity material_t%material_resistivity proc~solid_source_terms->proc~material_resistivity proc~material_resistivity_der material_t%material_resistivity_der proc~solid_source_terms->proc~material_resistivity_der proc~supercond_current supercond_current proc~solid_source_terms->proc~supercond_current proc~solve_boundary_mt->proc~dc2_rot proc~solve_boundary_mt->proc~jacobian_rot proc~solve_boundary_mt->proc~set_error proc~solve_boundary_mt->proc~signal_v0d proc~solve_boundary_mt->proc~t_rop proc~function_of_pstar_mt function_of_pstar_MT proc~solve_boundary_mt->proc~function_of_pstar_mt proc~jacobian_star_req_rem~2 jacobian_star_Req_rem proc~solve_boundary_mt->proc~jacobian_star_req_rem~2 proc~jacobian_star~2 jacobian_star proc~solve_boundary_mt->proc~jacobian_star~2 proc~solve_boundary_mt->proc~state_rop proc~solve_boundary_pt->proc~ro_pt proc~solve_boundary_pt->proc~state_rot proc~solve_boundary_pt->proc~dc2_rot proc~solve_boundary_pt->proc~jacobian_rot proc~solve_boundary_pt->proc~set_error proc~solve_boundary_pt->proc~signal_v0d proc~derivative_function_of_pstar_pt derivative_function_of_pstar_PT proc~solve_boundary_pt->proc~derivative_function_of_pstar_pt proc~derustar_acoustic derUstar_acoustic proc~solve_boundary_pt->proc~derustar_acoustic proc~function_of_pstar_pt function_of_pstar_PT proc~solve_boundary_pt->proc~function_of_pstar_pt proc~hugoniot_star_state hugoniot_star_state proc~solve_boundary_pt->proc~hugoniot_star_state proc~solve_boundary_pt->proc~jacobian_star_req_rem~2 proc~solve_boundary_pt->proc~jacobian_star~2 proc~solve_boundary_pt->proc~state_rop proc~state_rop_withr state_roP_withR proc~solve_boundary_pt->proc~state_rop_withr proc~solve_junction->proc~jacobian_rot proc~solve_junction->proc~set_error proc~droeint_drop droeint_droP proc~solve_junction->proc~droeint_drop proc~fsolve fsolve proc~solve_junction->proc~fsolve proc~inv inv proc~solve_junction->proc~inv proc~jacobian_star_loc jacobian_star_loc proc~solve_junction->proc~jacobian_star_loc proc~jacobian_star_req_rem_loc jacobian_star_Req_rem_loc proc~solve_junction->proc~jacobian_star_req_rem_loc proc~r_rot r_roT proc~solve_junction->proc~r_rot proc~solve_junction->proc~state_rop proc~t_roe T_roE proc~solve_junction->proc~t_roe proc~sourceterms_notfriction_channel->proc~he_prop proc~sourceterms_notfriction_channel->proc~jacobian_rot proc~sourceterms_notfriction_channel->proc~nusselt_correlation proc~sourceterms_notfriction_channel->proc~nusselt_correlation_der_pra proc~sourceterms_notfriction_channel->proc~nusselt_correlation_der_re proc~sourceterms_notfriction_channel->proc~nusselt_correlation_der_t proc~sourceterms_notfriction_channel->proc~state_roe proc~sourceterms_notfriction_channel->proc~state_roe_withr proc~state_roe->proc~jacobian_rot proc~state_roe->proc~t_roe proc~state_roe_withr->proc~jacobian_rot proc~state_roe_withr->proc~t_rop proc~t_rop->proc~brent proc~fill_f_terms fill_f_terms proc~t_rop->proc~fill_f_terms proc~fill_g_dreg_terms fill_g_Dreg_terms proc~t_rop->proc~fill_g_dreg_terms proc~circulator_dynamic_parameters_df->proc~jacobian_rot proc~circulator_dynamic_parameters_df->proc~t_rop proc~circulator_dynamic_parameters_f->proc~state_rop proc~derivative_function_of_pstar_pt->proc~jacobian_rot proc~derivative_function_of_pstar_pt->proc~t_rop proc~droeint_drop->proc~t_rop proc~droeint_drop->proc~eos_terms proc~eos_terms->proc~fill_f_terms proc~eos_e_terms eos_e_terms proc~eos_terms->proc~eos_e_terms proc~hybrd hybrd proc~fsolve->proc~hybrd proc~function_of_pstar_mt->proc~t_rop proc~function_of_pstar_pt->proc~state_rop proc~get2d_hdf5->h5fclose_f proc~get2d_hdf5->proc~input_has_key proc~get2d_hdf5->proc~input_str proc~get2d_hdf5->h5dclose_f proc~get2d_hdf5->h5dopen_f proc~get2d_hdf5->h5dread_f proc~get2d_hdf5->h5fopen_f proc~get2d_hdf5->h5ltget_dataset_info_f proc~hhh_derivatives->proc~jacobian_rot proc~hugoniot_star_state->proc~set_error proc~hugoniot_star_state->proc~droeint_drop proc~hugoniot_star_state->proc~zero proc~inv->proc~set_error dgetrf dgetrf proc~inv->dgetrf dgetri dgetri proc~inv->dgetri proc~jacobian_star_req_rem->proc~jacobian_rot proc~jacobian_star_req_rem_loc->proc~jacobian_rot proc~jacobian_star_req_rem~2->proc~jacobian_rot proc~r_rot->proc~fill_f_terms proc~r_rot->proc~fill_g_dreg_terms proc~fill_ff_terms fill_ff_terms proc~r_rot->proc~fill_ff_terms proc~state_rop->proc~jacobian_rot proc~state_rop->proc~t_rop proc~state_rop_withr->proc~jacobian_rot proc~state_rop_withr->proc~t_rop proc~supercond_current->proc~set_error float float proc~supercond_current->float proc~t_roe->proc~brent proc~fill_e_tpart fill_e_Tpart proc~t_roe->proc~fill_e_tpart proc~t_roe->proc~fill_ff_terms proc~zero->f proc~eos_e_terms->proc~fill_e_tpart proc~eos_e_terms->proc~fill_ff_terms proc~fill_e_tpart->proc~fill_g_dreg_terms fcn fcn proc~hybrd->fcn proc~dogleg dogleg proc~hybrd->proc~dogleg proc~enorm eNorm proc~hybrd->proc~enorm proc~fdjac1 fdJac1 proc~hybrd->proc~fdjac1 proc~qform qform proc~hybrd->proc~qform proc~qrfac qrFac proc~hybrd->proc~qrfac proc~r1mpyq r1mpyq proc~hybrd->proc~r1mpyq proc~r1updt r1updt proc~hybrd->proc~r1updt proc~dogleg->proc~enorm proc~fdjac1->fcn proc~qrfac->proc~enorm

Variables

Type Attributes Name Initial
class(input_t), pointer :: channels_input(:)
class(input_t), pointer :: junctions_input(:)
class(input_t), pointer :: circulators_input(:)
class(input_t), pointer :: boundaries_input(:)
class(input_t), pointer :: FSlinks_input(:)
class(input_t), pointer :: strands_input(:)
class(input_t), pointer :: mesh2Ds_input(:)
class(input_t), pointer :: SSfluxLinks_input(:)
class(input_t), pointer :: SSsrcLinks_input(:)
class(input_t), pointer :: FFsrcLinks_input(:)
class(input_t), pointer :: solids_input(:)
type(channel_t), allocatable :: channels(:)
type(strand_t), allocatable :: strands(:)
type(solid_t), allocatable :: solids(:)
type(mesh2D_t), allocatable :: mesh2Ds(:)
type(junction_t), allocatable :: junctions(:)
type(circulator_t), allocatable :: circulators(:)
type(boundary_t), allocatable :: boundaries(:)
type(FSlink_t), allocatable :: FSlinks(:)
type(FFsrcLink_t), allocatable :: FFsrcLinks(:)
type(SSfluxLink_t), allocatable :: SSfluxLinks(:)
type(SSsrcLink_t), allocatable :: SSsrcLinks(:)
type(simulation_t) :: sim
type(timer_t(20)) :: timer
type(input_t) :: file
type(krn_t) :: krn
integer :: i
integer :: error
integer(kind=i_64) :: step2D
real(kind=dp) :: next2DWriteTime
type(str_ptr), allocatable :: external_libs(:)

Functions

Arguments

None

Return Value logical


Subroutines

subroutine main_loop()

Main loop

Arguments

None

subroutine close_hdf5_files()

Arguments

None

Source Code

program reims_p
    use krn_linear_system_m
    use krn_global_tools_m
    use krn_simulation_m
    use lib_input_m, only: input_t
    use lib_material_m, only: load_materials
    use cmp_channel_flux_m
    use cmp_channel_calc_m
    use cmp_strand_flux_m
    use cmp_strand_calc_m
    use cmp_solid_flux_m
    use cmp_solid_calc_m
    use cmp_mesh2D_flux_m
    use cmp_mesh2D_calc_m
    use cmp_mesh2D_hdf5_write_m
    use cmp_junction_calc_m
    use cmp_circulator_calc_m
    use cmp_boundary_calc_m
    use cmp_FSlink_calc_m
    use cmp_SSfluxLink_m
    use cmp_SSsrcLink_calc_m
    use cmp_FFsrcLink_calc_m
    implicit none

    class(input_t), pointer :: channels_input(:), junctions_input(:), circulators_input(:)
    class(input_t), pointer :: boundaries_input(:), FSlinks_input(:), strands_input(:), mesh2Ds_input(:)
    class(input_t), pointer :: SSfluxLinks_input(:), SSsrcLinks_input(:), FFsrcLinks_input(:)
    class(input_t), pointer :: solids_input(:)
    type(channel_t),       allocatable :: channels(:)
    type(strand_t),     allocatable :: strands(:)
    type(solid_t),      allocatable :: solids(:)
    type(mesh2D_t),     allocatable :: mesh2Ds(:)
    type(junction_t),   allocatable :: junctions(:)
    type(circulator_t), allocatable :: circulators(:)
    type(boundary_t),   allocatable :: boundaries(:)
    type(FSlink_t),     allocatable :: FSlinks(:)
    type(FFsrcLink_t),  allocatable :: FFsrcLinks(:)
    type(SSfluxLink_t), allocatable :: SSfluxLinks(:)
    type(SSsrcLink_t),  allocatable :: SSsrcLinks(:)
    type(simulation_t) :: sim
    type(timer_t(20)) :: timer
    type(input_t) :: file
    type(krn_t) :: krn

    integer :: i, error
    integer(i_64) :: step2D
    real(dp) :: next2DWriteTime
    type(str_ptr), allocatable :: external_libs(:)    

    ! Variable declaration for some checks
    ! real(dp) :: FullEnergy_MC, FullEnergy_2D, mDot, HHH, mDotHOut, mDotHin, checkMDotHDt, MassSS_MC, MassSS_2D
    ! integer :: ii
    ! real(dp) :: Qext_Check,Qext_Check_step
    ! real(dp) :: Qext_Check_case,Qext_Check_case_step,SurfReg,Qext_Check_case_loc
    ! integer :: nb_e
    ! real(dp) :: Q_MC, Q_MC1, Q_MC2, Q_2D

    call timer%set(1,description='REIMS start')
    print*,'                                                                   '
    print*,'           _____________________________________________________   '
    print*,'                                                                   '
    print*,'                                    REIMS                          '
    print*,'                (Riemann Explicit Implicit Magnet Simulator)       '
    print*,'                                    v2.1a1                         '
    print*,'           _____________________________________________________   '
    print*,'                                                                   '
    print*,'                                                                   '

    call file%open(reims_config_file())
    print*, 'Read config file completed'
    call sim%init(file%dict('simulation'))

    external_libs=file%str1d('external_libs',empty=.true.)
    allocate(lib_handles(size(external_libs)))
    do i = 1, size(external_libs)
        lib_handles(i) = LoadLibraryA(external_libs(i)%p // '.dll' // c_null_char)
        if (.not. c_associated(lib_handles(i))) error stop 'one of the external libraries is not associated'
    enddo
    call load_materials(file%dict1d('materials',empty=.true.))
    call load_frictions(file%dict1d('friction_correlations',empty=.true.))
    call load_nusselts(file%dict1d('nusselt_correlations',empty=.true.))
    
    channels_input    => file%cmp1d(['channel'])
    junctions_input   => file%cmp1d(['junction'])
    circulators_input => file%cmp1d(['pump','compressor'])
    boundaries_input  => file%cmp1d(['boundary_PT','boundary_mT'])
    FSlinks_input     => file%cmp1d(['thermalink'])
    strands_input     => file%cmp1d(['strand'])
    solids_input      => file%cmp1d(['solid'])
    mesh2Ds_input     => file%cmp1d(['mesh2D'])
    FFsrcLinks_input  => file%cmp1d(['fluidlink'])
    SSfluxLinks_input => file%cmp1d(['strandlink'])
    SSsrcLinks_input  => file%cmp1d(['solidlink'])
    call krn%init_part1(file%nb_cmp())
    call h5%add_table('channel',['P','rho','u','m','T','mH','R','Su'])
    call h5%add_table('strand',['T','B','st','Tcs','marg','Joule'])
    call h5%add_table('solid',['T'])

    allocate(channels(size(channels_input)))
    allocate(strands(size(strands_input)))
    allocate(solids(size(solids_input)))
    allocate(mesh2Ds(size(mesh2Ds_input)))
    allocate(junctions(size(junctions_input)))
    allocate(circulators(size(circulators_input)))
    allocate(boundaries(size(boundaries_input)))
    allocate(FSlinks(size(FSlinks_input)))
    allocate(FFsrcLinks(size(FFsrcLinks_input)))
    allocate(SSfluxLinks(size(SSfluxLinks_input)))
    allocate(SSsrcLinks(size(SSsrcLinks_input)))

    do i = 1, size(channels)
        call channel_init_part1(channels(i), krn, channels_input(i), h5, sim)
    enddo
    do i = 1, size(strands)
        call strand_init_part1(strands(i), krn, strands_input(i), h5, sim)
    enddo
    do i = 1, size(solids)
        call solid_init_part1(solids(i), krn, solids_input(i), h5, sim)
    enddo
    do i = 1, size(mesh2Ds)
        call mesh2D_init_part1(mesh2Ds(i), krn, mesh2Ds_input(i), sim)
    enddo
    do i = 1, size(junctions)
        call junction_init_part1(junctions(i), krn, junctions_input(i))
    enddo
    do i = 1, size(circulators)
        call circulator_init_part1(circulators(i), krn, circulators_input(i))
    enddo
    do i = 1, size(boundaries)
        call boundary_init_part1(boundaries(i), krn, boundaries_input(i), sim)
    enddo
    do i = 1, size(FSlinks)
        call FSlink_init_part1(FSlinks(i), krn, FSlinks_input(i))
    enddo
    do i = 1, size(FFsrcLinks)
        call FFsrcLink_init_part1(FFsrcLinks(i), krn, FFsrcLinks_input(i))
    enddo
    do i = 1, size(SSfluxLinks)
        call SSfluxLink_init_part1(SSfluxLinks(i), krn, SSfluxLinks_input(i))
    enddo
    do i = 1, size(SSsrcLinks)
        call SSsrcLink_init_part1(SSsrcLinks(i), krn, SSsrcLinks_input(i))
    enddo

    call h5%prepare_data()
    call krn%init_part2()
    do i = 1, size(channels)
        call channel_init_part2(channels(i), krn, channels_input(i))
    enddo
    do i = 1, size(strands)
        call strand_init_part2(strands(i), krn, strands_input(i))
    enddo
    do i = 1, size(solids)
        call solid_init_part2(solids(i), krn, solids_input(i))
    enddo
    do i = 1, size(mesh2Ds)
        call mesh2D_init_part2(mesh2Ds(i), krn, mesh2Ds_input(i))
    enddo
    do i = 1, size(junctions)
        call junction_init_part2(junctions(i), krn, junctions_input(i))
    enddo
    do i = 1, size(circulators)
        call circulator_init_part2(circulators(i), krn, circulators_input(i))
    enddo
    do i = 1, size(boundaries)
        call boundary_init_part2(boundaries(i), krn, boundaries_input(i))
    enddo
    do i = 1, size(FSlinks)
        call FSlink_init_part2(FSlinks(i), krn, FSlinks_input(i))
    enddo
    do i = 1, size(FFsrcLinks)
        call FFsrcLink_init_part2(FFsrcLinks(i), krn, FFsrcLinks_input(i))
    enddo
    do i = 1, size(SSfluxLinks)
        call SSfluxLink_init_part2(SSfluxLinks(i), krn, SSfluxLinks_input(i))
    enddo
    do i = 1, size(SSsrcLinks)
        call SSsrcLink_init_part2(SSsrcLinks(i), krn, SSsrcLinks_input(i))
    enddo
    call consistency_ports(channels)
    call krn%coo_to_csr()

    call h5%init(file%dict('write_results'))
    step2D=0
    next2DWriteTime = h5%time_btw_2D_writes
    do i = 1, size(mesh2Ds)
        if(h5%write_results2D) call writing_HDF5_2D_casing(mesh2Ds(i),sim%t,step2D)
    enddo

    !Heat balance check
    ! open(unit=132,file='CheckBalance.out',status='replace')
    ! checkMDotHDt=0.0_dp
    ! MassSS_MC=0.0_dp
    ! do i=1,size(solids)
    !     do ii=1,solids(i)%MC_Prop%NbCells
    !         MassSS_MC = MassSS_MC + solids(i)%MC_Prop%ro_M * solids(i)%MC_Prop%volLoc(ii)
    !     enddo
    ! enddo
    ! MassSS_2D=0.0_dp
    ! do i=1,size(mesh2Ds)
    !     do ii=1,mesh2Ds(i)%M2D_Prop%nb_elements
    !         MassSS_2D = MassSS_2D + 7900.0_dp * mesh2Ds(i)%M2D_Prop%elem(ii)%surface * 0.5_dp
    !     enddo
    ! enddo
    ! ! Energy to be lost by the  solid part to be cooled down from 10K to 4.3K
    ! FullEnergy_MC=MassSS_MC*(CpSS_Integral(4.3_dp)-CpSS_Integral(10.0_dp))
    ! FullEnergy_2D=MassSS_2D*(CpSS_Integral(4.3_dp)-CpSS_Integral(6.0_dp))

    ! Heat balance check
    ! open(unit=134,file='CheckBalanceSS.out',status='replace')
    ! Q_MC=0.0_dp
    ! Q_MC1=0.0_dp
    ! Q_MC2=0.0_dp
    ! Q_2D=0.0_dp

    ! Load check
    ! open(unit=133,file='CheckHeatLoad.out',status='replace')
    ! Qext_Check=0.0_dp
    ! Qext_Check_case=0.0_dp    
    ! print*, 'Volume of solid:',sum(chunks%MC_Prop%VolM * chunks%MC_Prop%NbCells)
    call timer%set(2,1,'initialisation time')

    ! ---------------------------- M A I N   L O O P ---------------------------
    do while(sim%t < sim%t_final - sim_delta); call main_loop(); enddo
    ! --------------------------------------------------------------------------

    ! write(132,*)
    ! flush(132)
    ! close(132)

    ! write(133,*)
    ! flush(133)
    ! close(133)

    ! write(134,*)
    ! flush(134)
    ! close(134)

    call close_hdf5_files()
    print*,''
    print*,'   -----------------------------------'
    call timer%set(3,1,'total computation time')
    call timer%print()
    print*,'   -----------------------------------'
    print*,''

    print*,''
    print*, 'D. Furfaro, J. Kosek, A. Ovcharov, T. Schioler, R. Rotella, T. Luce,'
    print*, 'A new fast and robust thermo-hydraulic code for ITER superconducting'
    print*, 'magnet simulation, Cryogenics, Volume 144, 2024, 103978'
    print*,''

contains

subroutine main_loop() !! Main loop
    real(dp) :: error_val

    call timer%set(9,description='Main loop start')
    if(sim%rollback) then ! Rollback in progress: state already set, skip state advance
        sim%rollback = .false.
        h5%steps_to_revert = 3
    else if(sim%rejected) then ! Retrieve previous state
        channels%StVar       = channels%StVarOld
        strands%StVar     = strands%StVarOld
        solids%StVar      = solids%StVarOld
        mesh2Ds%StVar     = mesh2Ds%StVarOld
    else                  ! Advance state variables
        channels%StVarOld6   = channels%StVarOld5
        channels%StVarOld5   = channels%StVarOld4
        channels%StVarOld4   = channels%StVarOld3
        channels%StVarOld3   = channels%StVarOld2
        channels%StVarOld2   = channels%StVarOld
        channels%StVarOld    = channels%StVar
        strands%StVarOld6 = strands%StVarOld5
        strands%StVarOld5 = strands%StVarOld4
        strands%StVarOld4 = strands%StVarOld3
        strands%StVarOld3 = strands%StVarOld2
        strands%StVarOld2 = strands%StVarOld
        strands%StVarOld  = strands%StVar
        solids%StVarOld6  = solids%StVarOld5
        solids%StVarOld5  = solids%StVarOld4
        solids%StVarOld4  = solids%StVarOld3
        solids%StVarOld3  = solids%StVarOld2
        solids%StVarOld2  = solids%StVarOld
        solids%StVarOld   = solids%StVar
        mesh2Ds%StVarOld6 = mesh2Ds%StVarOld5
        mesh2Ds%StVarOld5 = mesh2Ds%StVarOld4
        mesh2Ds%StVarOld4 = mesh2Ds%StVarOld3
        mesh2Ds%StVarOld3 = mesh2Ds%StVarOld2
        mesh2Ds%StVarOld2 = mesh2Ds%StVarOld
        mesh2Ds%StVarOld  = mesh2Ds%StVar
    endif

    ! Qext_Check_step=0.0_dp

    !$omp parallel do private(i)
        do i=1, size(channels)
            call friction_source_term(channels(i))
            call channels_FF_flux_port_comm(channels(i))
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return
    !$omp parallel do private(i)
        do i=1, size(junctions)
            call junction_resolution_from_and_to_ports(junctions(i))
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return
    do i=1, size(circulators)
        call circulator_resolution_from_and_to_ports(circulators(i))
    enddo
    if (handle_numerical_error()) return
    do i=1, size(boundaries)
        call boundary_resolution_from_and_to_ports(boundaries(i))
    enddo
    if (handle_numerical_error()) return
    !$omp parallel do private(i)
        do i=1, size(channels)
            call He_Riemann_solver_channel(channels(i),sim)
            call flux_from_FF_flux_ports_self(channels(i))
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return
    !$omp parallel do private(i)
        do i=1, size(strands)
            call scenario_update(strands(i),sim)
            call strands_SS_flux_port_comm(strands(i))
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return
    !$omp parallel do private(i)
        do i=1, size(solids)
            call solid_scenario_update(solids(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(SSfluxLinks)
            call SSfluxLink_resolution_from_and_to_ports(SSfluxLinks(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(strands)
            call heat_diffusion_strand(strands(i))
            call flux_from_SS_flux_ports_self(strands(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(solids)
            call heat_diffusion_solid(solids(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(mesh2Ds)
            call heat_diffusion_mesh2D(mesh2Ds(i),sim)
            call mesh2Ds_FS_port_comm(mesh2Ds(i))
            call mesh2Ds_SS_src_port_comm(mesh2Ds(i))
        enddo
    !$omp end parallel do

    ! Calculation of minimal time for wave propagation through the node
    ! and updating explicit step
    call sim%update_exp_dt( min( &
        minVal(channels%wave_time), &
        minVal(junctions%wave_time), &
        minVal(circulators%wave_time), &
        minVal(boundaries%wave_time)))

    call timer%set(10,9,'Fluxes + Riemann')
    call timer%set(11)
    if(sim%explicit) then
        ! explicit fluxes / implicit source terms ------------------------------
        !print*,'Explicit scheme at physical time',sim%t,'(in s)'

        !$omp parallel do private(i)
            do i=1,size(channels)
                call explicit_scheme_for_fluxes_channel(channels(i),sim%dt)
                call friction_source_term(channels(i))
                call source_term_definition_channel(channels(i),sim)
            enddo
        !$omp end parallel do
        if (handle_numerical_error()) return
        !$omp parallel do private(i)
            do i=1,size(strands)
                call explicit_scheme_for_fluxes_strand(strands(i),sim%dt)
                call source_term_definition_strand(strands(i),sim) !,Qext_Check_step)   ! Attention in case of parallelization --> Qext_Check
            enddo
        !$omp end parallel do
        if (handle_numerical_error()) return
        !$omp parallel do private(i)
            do i=1,size(solids)
                call explicit_scheme_for_fluxes_solid(solids(i),sim%dt)
                call source_term_definition_solid(solids(i),sim)
            enddo
        !$omp end parallel do
    else ! full implicit -------------------------------------------------------
        !$omp parallel do private(i)
            do i=1,size(channels)
                call full_physics_definition_channel(channels(i),sim)
            enddo
        !$omp end parallel do
        if (handle_numerical_error()) return
        !$omp parallel do private(i)
            do i=1,size(strands)
                call full_physics_definition_strand(strands(i),sim) !,Qext_Check_step)
            enddo
        !$omp end parallel do
        if (handle_numerical_error()) return  
        !$omp parallel do private(i)                      
            do i=1,size(solids)
                call full_physics_definition_solid(solids(i),sim)
            enddo
        !$omp end parallel do
        !$omp parallel do private(i)
            do i=1,size(junctions)
                call links_junction_update(junctions(i),sim%dt)
            enddo
        !$omp end parallel do
        do i=1,size(circulators)
            call links_circulator_update(circulators(i),sim%dt)
        enddo
        !$omp parallel do private(i)
            do i=1,size(SSfluxLinks)
                call links_SSfluxLink_update(SSfluxLinks(i),sim%dt)
            enddo
        !$omp end parallel do
    endif ! --------------------------------------------------------------------

    ! Qext_Check_case_step=0.0_dp
    !$omp parallel do private(i)
        do i=1,size(mesh2Ds)
            ! SurfReg=0.0_dp
            ! do nb_e=1,mesh2Ds(i)%M2D_Prop%nb_elements
            !     if(trim(mesh2Ds(i)%M2D_Prop%elem(nb_e)%PhysE)=='SS_Outer') then
            !         SurfReg=SurfReg+mesh2Ds(i)%M2D_Prop%elem(nb_e)%surface
            !     endif
            ! enddo
            call full_physics_definition_mesh2D(mesh2Ds(i),sim) !,Qext_Check_case_loc)       
            ! Qext_Check_case_step = Qext_Check_case_step + Qext_Check_case_loc * SurfReg * 1.062_dp
        enddo
    !$omp end parallel do

    !$omp parallel do private(i)
        do i=1, size(FSlinks)
            call FSlink_src_reinitialization(FSlinks(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(FSlinks)
            call FSlink_resolution_from_and_to_ports(FSlinks(i))
            call links_FSlink_update(FSlinks(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(channels)
            call source_from_FS_ports_self_channel(channels(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(strands)
            call source_from_FS_ports_self_strand(strands(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(solids)
            call source_from_FS_ports_self_solid(solids(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(mesh2Ds)
            call source_from_FS_ports_self_mesh2D(mesh2Ds(i),sim%dt)
        enddo
    !$omp end parallel do

    !$omp parallel do private(i)
        do i=1, size(SSsrcLinks)
            call SSsrcLink_src_reinitialization(SSsrcLinks(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(SSsrcLinks)
            call SSsrcLink_resolution_from_and_to_ports(SSsrcLinks(i))
            call links_SSsrcLink_update(SSsrcLinks(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(solids)
            call source_from_SS_src_ports_self_solid(solids(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(mesh2Ds)
            call source_from_SS_src_ports_self_mesh2D(mesh2Ds(i),sim%dt)
        enddo
    !$omp end parallel do

    !$omp parallel do private(i)
        do i=1, size(FFsrcLinks)
            call FFsrcLink_resolution_from_and_to_ports(FFsrcLinks(i))
            call links_FFsrcLink_update(FFsrcLinks(i),sim%dt)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(channels)
            call source_from_FF_src_ports_self_channel(channels(i),sim%dt)
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return

    ! ---------------------- L I N E A R   S O L V E R -------------------------
    call Pardiso_fact_solve(krn,sim%explicit,timer)
    if (handle_numerical_error()) return
    ! --------------------------------------------------------------------------
    call timer%set(12)

    !$omp parallel do private(i)
        do i=1,size(channels)
            call from_sol_to_prim_channel(channels(i))
        enddo
    !$omp end parallel do
    if (handle_numerical_error()) return
    !$omp parallel do private(i)
        do i=1,size(strands)
            call from_sol_to_temp_strand(strands(i),sim)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1,size(solids)
            call from_sol_to_temp_solid(solids(i),sim)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1,size(mesh2Ds)
            call from_sol_to_temp_mesh2D(mesh2Ds(i),sim)
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1,size(channels)
            call channels_to_FF_src_port_comm(channels(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1, size(FFsrcLinks)
            call FFsrcLink_Prelax_resolution_from_and_to_ports(FFsrcLinks(i))
        enddo
    !$omp end parallel do
    !$omp parallel do private(i)
        do i=1,size(channels)
            call FF_src_port_to_channels_comm(channels(i))
            call last_tasks_for_channels(channels(i),sim)
        enddo
    !$omp end parallel do

    if (handle_numerical_error()) return

    if(sim%explicit) then
        ! pressure criteria for switching to implicit
        error_val = maxVal(sqrt(channels%err) / max(1.0e-6_dp, sqrt(channels%err_den)))
    else; error_val = &
        ! compute local truncation error (lte) - energy calculation as
        ! criteria for implicit step
        sqrt(sum(channels%err))   / max(sqrt(sum(channels%err_den)),   sim_delta) + &
        sqrt(sum(strands%err)) / max(sqrt(sum(strands%err_den)), sim_delta) + &
        sqrt(sum(solids%err))  / max(sqrt(sum(solids%err_den)),  sim_delta) + &
        sqrt(sum(mesh2Ds%err)) / max(sqrt(sum(mesh2Ds%err_den)), sim_delta)
    endif
    call timer%set(13,12,'Solution distribution')

    call sim%step_management(error_val)
    if(.not.sim%rejected) call h5%write(sim%t,sim%dt,sim%t_final)
    if(h5%write_results2D .and. .not.sim%rejected) then
        if(sim%t >= next2DWriteTime) then
            step2D = step2D + 1
            do i=1,size(mesh2Ds)
                call writing_HDF5_2D_casing(mesh2Ds(i),sim%t,step2D)
            enddo
            next2DWriteTime = next2DWriteTime + h5%time_btw_2D_writes
        endif
    endif

    ! if(.not.sim%rejected) then
    !   mDotHOut = channels(1)%flxHe%Cons(Con_Ene,15) * channels(1)%HeProp%Area
    !   mDotHin  = channels(1)%flxHe%Cons(Con_Ene,5)*channels(1)%HeProp%Area
    !   checkMDotHDt = checkMDotHDt + (mDotHOut-mDotHin)*sim%dt
    !   write(132,'(4(e13.6,1x))') sim%t, FullEnergy_MC, FullEnergy_2D, -checkMDotHDt

    !   Qext_Check = Qext_Check + Qext_Check_step
    !   write(133,'(2(e13.6,1x))') sim%t, Qext_Check

    !   Qext_Check_case = Qext_Check_case + Qext_Check_case_step
    !   write(133,'(2(e13.6,1x))') sim%t, Qext_Check_case

    !   do i=1,size(solids)
    !       do ii=1,solids(i)%MC_Prop%NbCells
    !           if(abs(solids(i)%StVarOld%MCtemp(ii))>1.0e-10_dp) then
    !               Q_MC = Q_MC + solids(i)%MC_Prop%ro_M * solids(i)%MC_Prop%volLoc(ii) * &
    !                             (CpSS_Integral(solids(i)%StVar%MCtemp(ii)) - CpSS_Integral(solids(i)%StVarOld%MCtemp(ii)))
    !               if(i==1) then
    !                   Q_MC1 = Q_MC1 + solids(i)%MC_Prop%ro_M * solids(i)%MC_Prop%volLoc(ii) * &
    !                             (CpSS_Integral(solids(i)%StVar%MCtemp(ii)) - CpSS_Integral(solids(i)%StVarOld%MCtemp(ii)))
    !               else if(i==2) then
    !                   Q_MC2 = Q_MC2 + solids(i)%MC_Prop%ro_M * solids(i)%MC_Prop%volLoc(ii) * &
    !                   (CpSS_Integral(solids(i)%StVar%MCtemp(ii)) - CpSS_Integral(solids(i)%StVarOld%MCtemp(ii)))
    !               endif
    !           endif
    !       enddo
    !   enddo
    !   do i=1,size(mesh2Ds)
    !       do ii=1,mesh2Ds(i)%M2D_Prop%nb_elements
    !           if(abs(mesh2Ds(i)%StVarOld%temp(ii))>1.0e-10_dp) then
    !               Q_2D = Q_2D + 7900.0_dp * mesh2Ds(i)%M2D_Prop%elem(ii)%surface * 0.5_dp * &   ! 0.5_dp for 0.5m of contact with MC
    !                             (CpSS_Integral(mesh2Ds(i)%StVar%temp(ii)) - CpSS_Integral(mesh2Ds(i)%StVarOld%temp(ii)))
    !           endif
    !       enddo
    !   enddo
    !   write(134,'(9(e13.6,1x))') sim%t, Q_MC, Q_MC1, Q_MC2, Q_2D
    ! endif

end subroutine main_loop

subroutine close_hdf5_files()
    integer :: j
    if(h5%write_results2D) then
        do j = 1, size(mesh2Ds)
            call additional_data_HDF5_2D_casing(mesh2Ds(j),step2D)
            call h5fclose_f(mesh2Ds(j)%f_id_writing, error)
        enddo
    endif
    call h5%close()
end subroutine close_hdf5_files

logical function handle_numerical_error()
    integer :: i
    handle_numerical_error = (sim_error > 0)
    if (sim_error == 0) return
    do i = 1, min(sim_error, MAX_SIM_ERRORS)
        print*, trim(sim_error_msg(i))
    enddo
    if (sim%in_recovery) then
        call close_hdf5_files()
        error stop trim(sim_error_msg(1))
    end if
    sim%consecutive_rollbacks = sim%consecutive_rollbacks + 1
    if (sim%consecutive_rollbacks > 3) then
        print*, 'Too many consecutive rollbacks (', sim%consecutive_rollbacks, ')'
        call close_hdf5_files()
        error stop trim(sim_error_msg(1))
    end if
    ! 3-step rollback: restart from n-3 (= Old4)
    ! new Old=n-3, Old2=n-4, Old3=n-5 (BDF2 + LTE history)
    channels%StVar     = channels%StVarOld4
    channels%StVarOld  = channels%StVarOld4
    channels%StVarOld2 = channels%StVarOld5
    channels%StVarOld3 = channels%StVarOld6
    strands%StVar      = strands%StVarOld4
    strands%StVarOld   = strands%StVarOld4
    strands%StVarOld2  = strands%StVarOld5
    strands%StVarOld3  = strands%StVarOld6
    solids%StVar       = solids%StVarOld4
    solids%StVarOld    = solids%StVarOld4
    solids%StVarOld2   = solids%StVarOld5
    solids%StVarOld3   = solids%StVarOld6
    mesh2Ds%StVar      = mesh2Ds%StVarOld4
    mesh2Ds%StVarOld   = mesh2Ds%StVarOld4
    mesh2Ds%StVarOld2  = mesh2Ds%StVarOld5
    mesh2Ds%StVarOld3  = mesh2Ds%StVarOld6
    sim%t          = sim%t - sim%dtPrev1 - sim%dtPrev2 - sim%dtPrev3
    sim%dtPrev1    = sim%dtPrev4
    sim%dtPrev2    = sim%dtPrev5
    sim%explicit            = .true.
    sim%expl_steps          = 3
    sim%rollback            = .true.
    sim%in_recovery         = .true.
    sim%recovery_steps_left = 3
    sim_error               = 0
end function handle_numerical_error

end program reims_p