FFsrcLink_init_part2 Subroutine

public subroutine FFsrcLink_init_part2(me, krn, cfg)

Arguments

Type IntentOptional Attributes Name
type(FFsrcLink_t), intent(inout) :: me
type(krn_t), intent(inout), target :: krn
class(input_t), intent(in), pointer :: cfg

Calls

proc~~ffsrclink_init_part2~~CallsGraph proc~ffsrclink_init_part2 FFsrcLink_init_part2 interface~to_ptr_arr to_ptr_arr proc~ffsrclink_init_part2->interface~to_ptr_arr proc~all_ffsrclink_allocation all_FFsrcLink_allocation proc~ffsrclink_init_part2->proc~all_ffsrclink_allocation proc~input_dbl input_t%input_dbl proc~ffsrclink_init_part2->proc~input_dbl proc~input_dict1d input_t%input_dict1d proc~ffsrclink_init_part2->proc~input_dict1d proc~input_int1d input_t%input_int1d proc~ffsrclink_init_part2->proc~input_int1d proc~input_str input_t%input_str proc~ffsrclink_init_part2->proc~input_str proc~krn_coo_add_link krn_t%krn_coo_add_link proc~ffsrclink_init_part2->proc~krn_coo_add_link proc~nusselt_init nusselt_init proc~ffsrclink_init_part2->proc~nusselt_init proc~port_list_find port_list_t%port_list_find proc~ffsrclink_init_part2->proc~port_list_find 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~continue_if continue_if proc~input_dbl->proc~continue_if proc~get0d_hdf5 get0d_hdf5 proc~input_dbl->proc~get0d_hdf5 proc~input_has_key input_t%input_has_key proc~input_dbl->proc~input_has_key proc~input_node input_t%input_node proc~input_dbl->proc~input_node to_real to_real proc~input_dbl->to_real 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 interface~to_str to_str proc~input_int1d->interface~to_str proc~input_int1d->proc~continue_if proc~get1d_range get1d_range proc~input_int1d->proc~get1d_range proc~input_int1d->proc~input_has_key proc~input_int1d->proc~input_node proc~select_scalar select_scalar proc~input_int1d->proc~select_scalar to_integer to_integer proc~input_int1d->to_integer proc~input_str->proc~input_has_key proc~input_str->proc~input_node proc~input_str->proc~select_scalar proc~nusselt_init->proc~input_str proc~port_list_find->interface~to_str proc~to_int to_int proc~port_list_find->proc~to_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~get0d_hdf5->proc~input_str proc~get0d_hdf5->proc~input_has_key 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 h5fclose_f h5fclose_f proc~get0d_hdf5->h5fclose_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 h5open_f h5open_f proc~get0d_hdf5->h5open_f proc~get1d_range->proc~input_has_key proc~input_has_key->proc~select_dict get get proc~input_has_key->get proc~input_node->proc~select_dict proc~input_node->get proc~dictionary_traverse dictionary_traverse proc~input_node->proc~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~~ffsrclink_init_part2~~CalledByGraph proc~ffsrclink_init_part2 FFsrcLink_init_part2 program~reims_p reims_p program~reims_p->proc~ffsrclink_init_part2

Source Code

subroutine FFsrcLink_init_part2(me,krn,cfg)
    type(FFsrcLink_t), intent(inout) :: me
    type(krn_t), target, intent(inout) :: krn
    class(input_t), pointer, intent(in)    :: cfg

    type(input_t), allocatable :: links(:)
    integer, allocatable :: nodes1(:), nodes2(:)
    integer :: i,offset1,offset2

    call all_FFsrcLink_allocation(me)

    links = cfg%dict1d('link')
    nodes1=links(1)%int1d('node')
    nodes2=links(2)%int1d('node')
    offset1 = krn%FF_src_list%find(links(1)%str('id'), 1) - 1
    offset2 = krn%FF_src_list%find(links(2)%str('id'), 1) - 1
    do i = 1, me%sizeNodes
        me%lk(1,i)%p => krn%FF_src_ports(offset1 + nodes1(i))
        me%lk(2,i)%p => krn%FF_src_ports(offset2 + nodes2(i))
    enddo

    me%WetPerChan = cfg%dbl('wetted_perim_channels')

    call nusselt_init(me%nuss,cfg) ! nusselt required in the link       
    if(.NOT.associated(me%nuss)) error stop 'Nusselt does not exist in FluidLink'     

    do i = 1, me%sizeNodes
      call krn%coo_add_link(me%lk(1,i)%p, me%lk(2,i)%p, idx_2x4_col, idx_2x4_row, to_ptr_arr(me%Matrix(:,:,1,i)), me%MxUp(:,i))
      call krn%coo_add_link(me%lk(2,i)%p, me%lk(1,i)%p, idx_2x4_col, idx_2x4_row, to_ptr_arr(me%Matrix(:,:,2,i)), me%MxDown(:,i))
    enddo
    
end subroutine FFsrcLink_init_part2