build_fragment_payload Subroutine

subroutine build_fragment_payload(fragment_idx, polymers, fragment_type, fragment_size, fragment_indices)

Build fragment payload arrays for a given fragment index. Caller owns the returned fragment_indices and must deallocate it.

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: fragment_idx
integer, intent(in) :: polymers(:,:)
integer(kind=int32), intent(out) :: fragment_type
integer(kind=int32), intent(out) :: fragment_size
integer, intent(out), allocatable :: fragment_indices(:)

Called by

proc~~build_fragment_payload~~CalledByGraph proc~build_fragment_payload build_fragment_payload proc~send_fragment_payload send_fragment_payload proc~send_fragment_payload->proc~build_fragment_payload proc~send_fragment_to_node send_fragment_to_node proc~send_fragment_to_node->proc~send_fragment_payload proc~send_fragment_to_worker send_fragment_to_worker proc~send_fragment_to_worker->proc~send_fragment_payload proc~handle_local_worker_requests handle_local_worker_requests proc~handle_local_worker_requests->proc~send_fragment_to_worker proc~handle_node_requests handle_node_requests proc~handle_node_requests->proc~send_fragment_to_node

Source Code

   subroutine build_fragment_payload(fragment_idx, polymers, fragment_type, fragment_size, fragment_indices)
      !! Build fragment payload arrays for a given fragment index.
      !! Caller owns the returned fragment_indices and must deallocate it.
      integer(int64), intent(in) :: fragment_idx
      integer, intent(in) :: polymers(:, :)
      integer(int32), intent(out) :: fragment_type
      integer(int32), intent(out) :: fragment_size
      integer, allocatable, intent(out) :: fragment_indices(:)

      fragment_size = count(polymers(fragment_idx, :) > 0)
      allocate (fragment_indices(fragment_size))
      fragment_indices = polymers(fragment_idx, 1:fragment_size)

      ! Standard MBE always uses monomer indices
      fragment_type = FRAGMENT_TYPE_MONOMERS
   end subroutine build_fragment_payload