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