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)


Calls

proc~~beach_kernel_update_charges~~CallsGraph proc~beach_kernel_update_charges beach_kernel_update_charges interface~update_state update_state proc~beach_kernel_update_charges->interface~update_state

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)])
    call update_state(kernel%plan, kernel%state, real(src_q, dp))
    kernel%charged = .true.
    status = beach_kernel_ok
  end function beach_kernel_update_charges