beach_kernel_update_charges Function

public function beach_kernel_update_charges(handle, nsrc, src_q_ptr) result(status) bind(C, name='beach_kernel_update_charges'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: nsrc
type(c_ptr), value :: src_q_ptr

Return Value integer(kind=c_int)


Source Code

  integer(c_int) function beach_kernel_update_charges(handle, nsrc, src_q_ptr) &
    bind(C, name='beach_kernel_update_charges') result(status)
    type(c_ptr), value :: handle
    integer(c_int), value :: nsrc
    type(c_ptr), value :: src_q_ptr
    type(field_kernel_handle), pointer :: kernel
    real(c_double), pointer :: src_q(:)

    status = get_kernel(handle, kernel)
    if (status /= beach_kernel_ok) return
    if (.not. kernel%built) then
      status = beach_kernel_not_ready
      return
    end if
    if (nsrc /= kernel%plan%nsrc .or. .not. c_associated(src_q_ptr)) then
      status = beach_kernel_invalid_argument
      return
    end if

    call c_f_pointer(src_q_ptr, src_q, [int(nsrc)])
    kernel%src_q = real(src_q, dp)
    kernel%charged = .true.
    kernel%state_current = .false.
    status = beach_kernel_ok
  end function beach_kernel_update_charges