Neko 1.99.9
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)
 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 300 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 313 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 329 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 377 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)
private

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

Definition at line 189 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 242 of file expression_dirichlet_vector.f90.

Here is the call graph for this function: