| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | handle | |||
| integer(kind=c_int), | value | :: | nsrc | |||
| type(c_ptr), | value | :: | src_q_ptr |
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