Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
field_neumann Module Reference

Defines user neumann condition for a scalar field.

Data Types

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...
 

Functions/Subroutines

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.
 

Function/Subroutine Documentation

◆ 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
xField to which the weak neumann contribution is added.
nSize of the array x.
timeThe current time state.

Definition at line 172 of file field_neumann.f90.

Here is the call graph for this function:

◆ 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_dDevice pointer to the field to update.
timeThe current time state.
strmDevice stream.

Definition at line 227 of file field_neumann.f90.

Here is the call graph for this function:

◆ 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

Definition at line 258 of file field_neumann.f90.

◆ 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

Definition at line 272 of file field_neumann.f90.

◆ field_neumann_finalize()

subroutine field_neumann::field_neumann_finalize ( class(field_neumann_t), intent(inout), target  this,
logical, intent(in), optional  only_facets 
)
private

Definition at line 287 of file field_neumann.f90.

◆ field_neumann_free()

subroutine field_neumann::field_neumann_free ( class(field_neumann_t), intent(inout), target  this)
private

Definition at line 138 of file field_neumann.f90.

◆ field_neumann_gather_flux()

subroutine field_neumann::field_neumann_gather_flux ( class(field_neumann_t), intent(inout this)
private

Definition at line 153 of file field_neumann.f90.

Here is the call graph for this function:

◆ field_neumann_init()

subroutine field_neumann::field_neumann_init ( class(field_neumann_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(json_file), intent(inout json 
)
private
Parameters
[in]coefThe SEM coefficients.
[in,out]jsonThe JSON object configuring the boundary condition.

Definition at line 106 of file field_neumann.f90.

◆ field_neumann_init_from_components()

subroutine field_neumann::field_neumann_init_from_components ( class(field_neumann_t), intent(inout), target  this,
type(coef_t), intent(in coef,
character(len=*), intent(in field_name 
)
private
Parameters
[in]coefThe SEM coefficients.
[in]field_nameName of the dummy field.

Definition at line 123 of file field_neumann.f90.