bem_field_kernel_c Module

C ABI wrapper for the simulator-independent Coulomb FMM field kernel.


Uses

  • module~~bem_field_kernel_c~~UsesGraph module~bem_field_kernel_c bem_field_kernel_c ieee_arithmetic ieee_arithmetic module~bem_field_kernel_c->ieee_arithmetic iso_c_binding iso_c_binding module~bem_field_kernel_c->iso_c_binding module~bem_constants bem_constants module~bem_field_kernel_c->module~bem_constants module~bem_coulomb_fmm_core bem_coulomb_fmm_core module~bem_field_kernel_c->module~bem_coulomb_fmm_core module~bem_kinds bem_kinds module~bem_field_kernel_c->module~bem_kinds module~bem_panel_geometry bem_panel_geometry module~bem_field_kernel_c->module~bem_panel_geometry module~bem_version bem_version module~bem_field_kernel_c->module~bem_version module~bem_constants->module~bem_kinds module~bem_coulomb_fmm_core->module~bem_kinds module~bem_coulomb_fmm_types bem_coulomb_fmm_types module~bem_coulomb_fmm_core->module~bem_coulomb_fmm_types iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_panel_geometry->ieee_arithmetic module~bem_panel_geometry->module~bem_kinds module~bem_coulomb_fmm_types->module~bem_kinds module~bem_coulomb_fmm_types->module~bem_panel_geometry module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan module~bem_coulomb_fmm_types->module~bem_periodic_zero_mode_plan module~bem_periodic_zero_mode_plan->ieee_arithmetic module~bem_periodic_zero_mode_plan->module~bem_constants module~bem_periodic_zero_mode_plan->module~bem_kinds module~bem_types bem_types module~bem_periodic_zero_mode_plan->module~bem_types module~bem_types->module~bem_kinds

Variables

Type Visibility Attributes Name Initial
integer(kind=c_int), public, parameter :: beach_kernel_ok = 0_c_int
integer(kind=c_int), public, parameter :: beach_kernel_invalid_handle = 1_c_int
integer(kind=c_int), public, parameter :: beach_kernel_invalid_argument = 2_c_int
integer(kind=c_int), public, parameter :: beach_kernel_not_ready = 3_c_int
integer(kind=c_int), public, parameter :: beach_kernel_abi_major = 2_c_int
integer(kind=c_int), public, parameter :: beach_kernel_abi_minor = 1_c_int

Functions

public function beach_kernel_get_abi_version(major_ptr, minor_ptr) result(status) bind(C, name='beach_kernel_get_abi_version'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: major_ptr
type(c_ptr), value :: minor_ptr

Return Value integer(kind=c_int)

public function beach_kernel_get_build_info(buffer_ptr, buffer_capacity, length_ptr) result(status) bind(C, name='beach_kernel_get_build_info'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: buffer_ptr
integer(kind=c_int), value :: buffer_capacity
type(c_ptr), value :: length_ptr

Return Value integer(kind=c_int)

public function beach_kernel_create(handle) result(status) bind(C, name='beach_kernel_create'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), intent(out) :: handle

Return Value integer(kind=c_int)

public function beach_kernel_destroy(handle) result(status) bind(C, name='beach_kernel_destroy'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle

Return Value integer(kind=c_int)

public function beach_kernel_set_periodic_cache(handle, path_ptr, path_len, tolerance) result(status) bind(C, name='beach_kernel_set_periodic_cache'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
type(c_ptr), value :: path_ptr
integer(kind=c_int), value :: path_len
real(kind=c_double), value :: tolerance

Return Value integer(kind=c_int)

public function beach_kernel_get_periodic_cache_info(handle, hit_ptr, build_count_ptr, fingerprint_ptr, fingerprint_capacity, fingerprint_length_ptr, path_ptr, path_capacity, path_length_ptr) result(status) bind(C, name='beach_kernel_get_periodic_cache_info'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
type(c_ptr), value :: hit_ptr
type(c_ptr), value :: build_count_ptr
type(c_ptr), value :: fingerprint_ptr
integer(kind=c_int), value :: fingerprint_capacity
type(c_ptr), value :: fingerprint_length_ptr
type(c_ptr), value :: path_ptr
integer(kind=c_int), value :: path_capacity
type(c_ptr), value :: path_length_ptr

Return Value integer(kind=c_int)

public function beach_kernel_build(handle, nsrc, v0_ptr, v1_ptr, v2_ptr, theta, leaf_max, order, use_periodic2, periodic_axes_ptr, periodic_len_ptr, image_layers, far_correction, ewald_alpha, ewald_layers, box_min_ptr, box_max_ptr) result(status) bind(C, name='beach_kernel_build'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: nsrc
type(c_ptr), value :: v0_ptr
type(c_ptr), value :: v1_ptr
type(c_ptr), value :: v2_ptr
real(kind=c_double), value :: theta
integer(kind=c_int), value :: leaf_max
integer(kind=c_int), value :: order
integer(kind=c_int), value :: use_periodic2
type(c_ptr), value :: periodic_axes_ptr
type(c_ptr), value :: periodic_len_ptr
integer(kind=c_int), value :: image_layers
integer(kind=c_int), value :: far_correction
real(kind=c_double), value :: ewald_alpha
integer(kind=c_int), value :: ewald_layers
type(c_ptr), value :: box_min_ptr
type(c_ptr), value :: box_max_ptr

Return Value integer(kind=c_int)

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)

public function beach_kernel_eval_e(handle, ntarget, target_pos_ptr, e_ptr) result(status) bind(C, name='beach_kernel_eval_e'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: ntarget
type(c_ptr), value :: target_pos_ptr
type(c_ptr), value :: e_ptr

Return Value integer(kind=c_int)

public function beach_kernel_eval_phi(handle, ntarget, target_pos_ptr, phi_ptr) result(status) bind(C, name='beach_kernel_eval_phi'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: ntarget
type(c_ptr), value :: target_pos_ptr
type(c_ptr), value :: phi_ptr

Return Value integer(kind=c_int)

public function beach_kernel_eval_e_direct(handle, ntarget, target_pos_ptr, e_ptr) result(status) bind(C, name='beach_kernel_eval_e_direct'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: ntarget
type(c_ptr), value :: target_pos_ptr
type(c_ptr), value :: e_ptr

Return Value integer(kind=c_int)

public function beach_kernel_eval_phi_direct(handle, ntarget, target_pos_ptr, phi_ptr) result(status) bind(C, name='beach_kernel_eval_phi_direct'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: ntarget
type(c_ptr), value :: target_pos_ptr
type(c_ptr), value :: phi_ptr

Return Value integer(kind=c_int)

public function beach_kernel_force_on_charges(handle, ntarget, target_pos_ptr, target_q_ptr, origin_ptr, force_ptr, torque_ptr) result(status) bind(C, name='beach_kernel_force_on_charges'))

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: handle
integer(kind=c_int), value :: ntarget
type(c_ptr), value :: target_pos_ptr
type(c_ptr), value :: target_q_ptr
type(c_ptr), value :: origin_ptr
type(c_ptr), value :: force_ptr
type(c_ptr), value :: torque_ptr

Return Value integer(kind=c_int)