Defines user neumann condition for a scalar field.
|
| type | field_neumann_t |
| | User defined neumann condition, for which the user can work with an entire field. The type stores a separate dummy field field_bc, which is passed to the user routine and can be populated with arbitrary values. The boundary condition then gathers these values at the bc mask locations into a compact flux vector and applies the weak neumann contribution. More...
|
| |
| interface | field_neumann_update |
| | Abstract interface defining a neumann condition on a list of fields. More...
|
| |
|
| subroutine | field_neumann_init (this, coef, json) |
| | Constructor.
|
| |
| subroutine | field_neumann_init_from_components (this, coef, field_name) |
| | Constructor from components.
|
| |
| subroutine | field_neumann_free (this) |
| | Destructor.
|
| |
| subroutine | field_neumann_gather_flux (this) |
| | Gather field-defined values into compact boundary flux storage.
|
| |
| subroutine | field_neumann_apply_scalar (this, x, n, time, strong) |
| | Apply scalar by adding weak neumann contribution.
|
| |
| subroutine | field_neumann_apply_scalar_dev (this, x_d, time, strong, strm) |
| | Apply scalar (device).
|
| |
| subroutine | field_neumann_apply_vector (this, x, y, z, n, time, strong) |
| | (No-op) Apply vector.
|
| |
| subroutine | field_neumann_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm) |
| | (No-op) Apply vector (device).
|
| |
| subroutine | field_neumann_finalize (this, only_facets) |
| | Finalize.
|
| |
◆ field_neumann_apply_scalar()
| subroutine field_neumann::field_neumann_apply_scalar |
( |
class(field_neumann_t), intent(inout) |
this, |
|
|
real(kind=rp), dimension(n), intent(inout) |
x, |
|
|
integer, intent(in) |
n, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong |
|
) |
| |
|
private |
- Parameters
-
| x | Field to which the weak neumann contribution is added. |
| n | Size of the array x. |
| time | The current time state. |
Definition at line 172 of file field_neumann.f90.
◆ field_neumann_apply_scalar_dev()
| subroutine field_neumann::field_neumann_apply_scalar_dev |
( |
class(field_neumann_t), intent(inout), target |
this, |
|
|
type(c_ptr), intent(inout) |
x_d, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong, |
|
|
type(c_ptr), intent(inout) |
strm |
|
) |
| |
|
private |
- Parameters
-
| x_d | Device pointer to the field to update. |
| time | The current time state. |
| strm | Device stream. |
Definition at line 227 of file field_neumann.f90.
◆ field_neumann_apply_vector()
| subroutine field_neumann::field_neumann_apply_vector |
( |
class(field_neumann_t), intent(inout) |
this, |
|
|
real(kind=rp), dimension(n), intent(inout) |
x, |
|
|
real(kind=rp), dimension(n), intent(inout) |
y, |
|
|
real(kind=rp), dimension(n), intent(inout) |
z, |
|
|
integer, intent(in) |
n, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong |
|
) |
| |
|
private |
◆ field_neumann_apply_vector_dev()
| subroutine field_neumann::field_neumann_apply_vector_dev |
( |
class(field_neumann_t), intent(inout), target |
this, |
|
|
type(c_ptr), intent(inout) |
x_d, |
|
|
type(c_ptr), intent(inout) |
y_d, |
|
|
type(c_ptr), intent(inout) |
z_d, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong, |
|
|
type(c_ptr), intent(inout) |
strm |
|
) |
| |
|
private |
◆ field_neumann_finalize()
◆ field_neumann_free()
◆ field_neumann_gather_flux()
◆ field_neumann_init()
- Parameters
-
| [in] | coef | The SEM coefficients. |
| [in,out] | json | The JSON object configuring the boundary condition. |
Definition at line 106 of file field_neumann.f90.
◆ field_neumann_init_from_components()
- Parameters
-
| [in] | coef | The SEM coefficients. |
| [in] | field_name | Name of the dummy field. |
Definition at line 123 of file field_neumann.f90.