| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(FSlink_t), | intent(out) | :: | me | |||
| type(krn_t), | intent(inout) | :: | krn | |||
| class(input_t), | intent(in), | pointer | :: | cfg |
subroutine FSlink_init_part1(me,krn,cfg) type(FSlink_t), intent(out) :: me type(krn_t), intent(inout) :: krn class(input_t), pointer, intent(in) :: cfg type(input_t), allocatable :: links(:) type(str_ptr), allocatable :: labels(:) integer :: nb_non_zeros_exp, nb_non_zeros_imp, i links = cfg%dict1d('link') me%sizeNodes=size(links(1)%int1d('node')) if(links(2)%has_key('node')) then nb_non_zeros_exp = (Nb_VarC+2)*me%sizeNodes nb_non_zeros_imp = (Nb_VarC+2)*me%sizeNodes else if(links(2)%has_key('label')) then allocate(me%nb_2D_Ports(me%sizeNodes)) labels=links(2)%str1d('label') do i = 1, me%sizeNodes me%nb_2D_Ports(i) = krn%FS_list%find_nbPorts(links(2)%str('id')//"+"//trim(labels(i)%p)) enddo nb_non_zeros_exp = (Nb_VarC+2)*sum(me%nb_2D_Ports(:)) nb_non_zeros_imp = (Nb_VarC+2)*sum(me%nb_2D_Ports(:)) else error stop 'thermalink: link[2] requires "node" or "label"' endif call krn%add('',0,nb_non_zeros_exp,nb_non_zeros_imp,0,0,0,0,0) end subroutine FSlink_init_part1