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

Defines a vector valued Dirichlet condition prescribed by mathematical expressions.

Data Types

type  expression_dirichlet_vector_t
 Vector valued Dirichlet condition, with one mathematical expression per component, given in the case file. More...
 

Functions/Subroutines

subroutine expression_dirichlet_vector_init (this, coef, json)
 Constructor from JSON.
 
subroutine expression_dirichlet_vector_init_from_components (this, coef, str_x, str_y, str_z)
 Constructor from components.
 
subroutine expression_dirichlet_vector_free (this)
 Destructor.
 
subroutine expression_dirichlet_vector_finalize (this, only_facets)
 Finalize.
 
subroutine expression_dirichlet_vector_update (this, time, strm)
 Bring the values up to date with the current time.
 
subroutine expression_dirichlet_vector_apply_scalar (this, x, n, time, strong)
 (No-op) Apply scalar.
 
subroutine expression_dirichlet_vector_apply_scalar_dev (this, x_d, time, strong, strm)
 (No-op) Apply scalar (device version).
 
subroutine expression_dirichlet_vector_apply_vector (this, x, y, z, n, time, strong)
 Apply the condition to a vector field.
 
subroutine expression_dirichlet_vector_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm)
 Apply the condition to a vector field (device version).
 

Function/Subroutine Documentation

◆ expression_dirichlet_vector_apply_scalar()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_apply_scalar ( class(expression_dirichlet_vector_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
[in,out]xThe field onto which to apply the values.
[in]nThe size of x.
[in]timeThe current time state.
[in]strongWhether the condition is applied strongly.

Definition at line 309 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_apply_scalar_dev()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_apply_scalar_dev ( class(expression_dirichlet_vector_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
[in,out]x_dDevice pointer to the field.
[in]timeThe current time state.
[in]strongWhether the condition is applied strongly.
[in,out]strmThe device stream to issue the work on.

Definition at line 322 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_apply_vector()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_apply_vector ( class(expression_dirichlet_vector_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
Parameters
[in,out]xThe x-component of the field.
[in,out]yThe y-component of the field.
[in,out]zThe z-component of the field.
[in]nThe size of x, y and z.
[in]timeThe current time state.
[in]strongWhether the condition is applied strongly.

Definition at line 338 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_apply_vector_dev()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_apply_vector_dev ( class(expression_dirichlet_vector_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
Parameters
[in,out]x_dDevice pointer to the x-component of the field.
[in,out]y_dDevice pointer to the y-component of the field.
[in,out]z_dDevice pointer to the z-component of the field.
[in]timeThe current time state.
[in]strongWhether the condition is applied strongly.
[in,out]strmThe device stream to issue the work on.

Definition at line 386 of file expression_dirichlet_vector.f90.

Here is the call graph for this function:

◆ expression_dirichlet_vector_finalize()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_finalize ( class(expression_dirichlet_vector_t), intent(inout), target  this,
logical, intent(in), optional  only_facets 
)
private

Tabulates the coordinates of the points of the mask and evaluates whichever of the three expressions do not depend on time.

Parameters
[in]only_facetsWhether to only mark the facets of the mask.

Definition at line 190 of file expression_dirichlet_vector.f90.

Here is the call graph for this function:

◆ expression_dirichlet_vector_free()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_free ( class(expression_dirichlet_vector_t), intent(inout), target  this)
private

Definition at line 149 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_init()

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

Definition at line 102 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_init_from_components()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_init_from_components ( class(expression_dirichlet_vector_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
character(len=*), intent(in str_x,
character(len=*), intent(in str_y,
character(len=*), intent(in str_z 
)
private
Parameters
[in]coefThe SEM coefficients.
[in]str_xThe expression for the x-component.
[in]str_yThe expression for the y-component.
[in]str_zThe expression for the z-component.

Definition at line 125 of file expression_dirichlet_vector.f90.

◆ expression_dirichlet_vector_update()

subroutine expression_dirichlet_vector::expression_dirichlet_vector_update ( class(expression_dirichlet_vector_t), intent(inout this,
type(time_state_t), intent(in), optional  time,
type(c_ptr), intent(inout), optional  strm 
)
private

A no-op unless at least one of the expressions depends on time and the values have not already been updated in this timestep. Only the time dependent components are re-evaluated, but all three are copied to the device, since they share one transfer anyway.

Parameters
[in]timeThe current time state.
[in,out]strmThe device stream to issue the copies on.

Definition at line 251 of file expression_dirichlet_vector.f90.

Here is the call graph for this function: