Neko 0.9.99
A portable framework for high-order spectral element flow simulations
|
A shear stress boundary condition, computing the stress values using a wall model. More...
Public Member Functions | |
procedure, pass(this) | init (this, coef, json) |
Constructor. | |
procedure, pass(this) | free (this) |
Destructor. | |
procedure, pass(this) | finalize (this) |
Finalize by building mask arrays and init'ing the wall model. | |
procedure, pass(this) | apply_scalar (this, x, n, t, tstep, strong) |
Apply shear stress for a scalar field x. | |
procedure, pass(this) | apply_vector (this, x, y, z, n, t, tstep, strong) |
Apply the boundary condition to the right-hand side. | |
procedure, pass(this) | apply_scalar_dev (this, x_d, t, tstep, strong) |
Boundary condition apply for a generic wall_model_bc condition to a vector x (device version) | |
procedure, pass(this) | apply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong) |
Boundary condition apply for a generic wall_model_bc condition to vectors x, y and z (device version) | |
procedure, pass(this) | apply_scalar (this, x, n, t, tstep, strong) |
Apply shear stress for a scalar field x. | |
procedure(bc_apply_scalar), deferred, pass | apply_scalar (this, x, n, t, tstep, strong) |
Apply the boundary condition to a scalar field on the CPU. | |
procedure, pass(this) | apply_vector (this, x, y, z, n, t, tstep, strong) |
Boundary condition apply for a generic shear_stress condition to vectors x, y and z. | |
procedure(bc_apply_vector), deferred, pass | apply_vector (this, x, y, z, n, t, tstep, strong) |
Apply the boundary condition to a vector field on the CPU. | |
procedure, pass(this) | apply_scalar_dev (this, x_d, t, tstep, strong) |
Boundary condition apply for a generic shear_stress condition to a vector x (device version) | |
procedure(bc_apply_scalar_dev), deferred, pass | apply_scalar_dev (this, x_d, t, tstep, strong) |
Device version of apply_scalar on the device. | |
procedure, pass(this) | apply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong) |
Boundary condition apply for a generic shear_stress condition to vectors x, y and z (device version) | |
procedure(bc_apply_vector_dev), deferred, pass | apply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong) |
Device version of apply_vector on the device. | |
procedure, pass(this) | init (this, coef, json) |
Constructor. | |
procedure(bc_constructor), deferred, pass | init (this, coef, json) |
Deferred constructor. | |
procedure, pass(this) | init_from_components (this, coef, value) |
Constructor from components. | |
procedure, pass(this) | set_stress_scalar (this, tau_x, tau_y, tau_z) |
Set the value of the shear stress vector using 3 scalars. | |
procedure, pass(this) | set_stress_array (this, tau_x, tau_y, tau_z) |
Set the shear stress components. | |
generic | set_stress (this, tau_x, tau_y, tau_z) |
Set the shear stress to apply. | |
generic | set_stress (this, tau_x, tau_y, tau_z) |
Set the shear stress to apply. | |
procedure, pass(this) | free (this) |
Destructor. | |
procedure(bc_destructor), deferred, pass | free (this) |
Deferred destructor. | |
procedure, pass(this) | finalize (this) |
Finalize the construction. | |
procedure(bc_finalize), deferred, pass | finalize (this) |
Deferred finalizer. | |
procedure, pass(this) | init_base (this, coef) |
Constructor. | |
procedure, pass(this) | free_base (this) |
Destructor. | |
procedure, pass(this) | mark_facet (this, facet, el) |
Mark a facet on an element as part of the boundary condition. | |
procedure, pass(this) | mark_facets (this, facet_list) |
Mark all facets from a (facet, element) tuple list. | |
procedure, pass(this) | mark_zone (this, bc_zone) |
Mark all facets from a zone. | |
procedure, pass(this) | finalize_base (this, only_facets) |
Finalize the construction of the bc by populating the msk and facet arrays. | |
procedure, pass(this) | apply_scalar_generic (this, x, n, t, tstep) |
Apply the boundary condition to a scalar field. Dispatches to the CPU or the device version. | |
procedure, pass(this) | apply_vector_generic (this, x, y, z, n, t, tstep) |
Apply the boundary condition to a vector field. Dispatches to the CPU or the device version. | |
procedure, pass(this) | debug_mask_ (this, file_name) |
Write a field showing the mask of the bcs. | |
Public Attributes | |
class(wall_model_t), allocatable | wall_model |
The wall model to compute the stress. | |
real(kind=rp) | nu |
The kinematic viscosity. | |
type(json_file) | params_ |
Parameter dictionary for the wall model. | |
type(symmetry_t) | symmetry |
type(neumann_t) | neumann_x |
Neumann condition for the x direction. | |
type(neumann_t) | neumann_y |
Neumann condition for the y direction. | |
type(neumann_t) | neumann_z |
Neumann condition for the z direction. | |
integer, dimension(:), allocatable | msk |
The linear index of each node in each boundary facet. | |
integer, dimension(:), allocatable | facet |
A list of facet ids (1 to 6), one for each element in msk. | |
type(dofmap_t), pointer | dof => null() |
Map of degrees of freedom. | |
type(coef_t), pointer | coef => null() |
SEM coefficients. | |
type(mesh_t), pointer | msh => null() |
The mesh. | |
type(space_t), pointer | xh => null() |
The function space. | |
type(stack_i4t2_t) | marked_facet |
Index tuples (facet, element) marked as part of the boundary condition. | |
type(c_ptr) | msk_d = C_NULL_PTR |
Device pointer for msk. | |
type(c_ptr) | facet_d = C_NULL_PTR |
Device pointer for facet. | |
logical | strong = .true. |
Wether the bc is strongly enforced. Essentially valid for all Dirichlet types of bcs. These need to be masked out for solvers etc, so that values are not affected. Mixed bcs are, by convention, weak. | |
logical | updated = .false. |
Indicates wether the bc has been updated, for those BCs that need additional computations. | |
Definition at line 53 of file wall_model_bc.f90.
|
pure virtualinherited |
|
inherited |
Definition at line 63 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_scalar | ( | class(wall_model_bc_t), intent(inout) | this, |
real(kind=rp), dimension(n), intent(inout) | x, | ||
integer, intent(in) | n, | ||
real(kind=rp), intent(in), optional | t, | ||
integer, intent(in), optional | tstep, | ||
logical, intent(in), optional | strong | ||
) |
Definition at line 67 of file wall_model_bc.f90.
|
inherited |
Definition at line 65 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_scalar_dev | ( | class(wall_model_bc_t), intent(inout), target | this, |
type(c_ptr) | x_d, | ||
real(kind=rp), intent(in), optional | t, | ||
integer, intent(in), optional | tstep, | ||
logical, intent(in), optional | strong | ||
) |
Definition at line 69 of file wall_model_bc.f90.
|
pure virtualinherited |
|
inherited |
Definition at line 64 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_vector | ( | class(wall_model_bc_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, | ||
real(kind=rp), intent(in), optional | t, | ||
integer, intent(in), optional | tstep, | ||
logical, intent(in), optional | strong | ||
) |
x | The x component of the right-hand side |
y | The y component of the right-hand side |
z | The z component of the right-hand side |
n | The size of the right-hand side arrays. |
t | The time value. |
tstep | The time step. |
Definition at line 68 of file wall_model_bc.f90.
|
pure virtualinherited |
|
inherited |
Definition at line 66 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_vector_dev | ( | class(wall_model_bc_t), intent(inout), target | this, |
type(c_ptr) | x_d, | ||
type(c_ptr) | y_d, | ||
type(c_ptr) | z_d, | ||
real(kind=rp), intent(in), optional | t, | ||
integer, intent(in), optional | tstep, | ||
logical, intent(in), optional | strong | ||
) |
Definition at line 71 of file wall_model_bc.f90.
|
inherited |
|
inherited |
Definition at line 81 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::finalize | ( | class(wall_model_bc_t), intent(inout), target | this | ) |
Definition at line 66 of file wall_model_bc.f90.
|
inherited |
Definition at line 79 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::free | ( | class(wall_model_bc_t), intent(inout), target | this | ) |
Definition at line 64 of file wall_model_bc.f90.
|
inherited |
[in] | coef | The SEM coefficients. |
[in,out] | json | The JSON object configuring the boundary condition. |
Definition at line 68 of file shear_stress.f90.
procedure, pass(this) wall_model_bc::wall_model_bc_t::init | ( | class(wall_model_bc_t), intent(inout), target | this, |
type(coef_t), intent(in) | coef, | ||
type(json_file), intent(inout) | json | ||
) |
[in] | coef | The SEM coefficients. |
[in,out] | json | The JSON object configuring the boundary condition. |
Definition at line 62 of file wall_model_bc.f90.
|
inherited |
[in] | coef | The SEM coefficients. |
[in] | value | The value of the shear stress to apply. |
Definition at line 70 of file shear_stress.f90.
|
inherited |
Definition at line 77 of file shear_stress.f90.
|
inherited |
Definition at line 77 of file shear_stress.f90.
|
inherited |
Definition at line 74 of file shear_stress.f90.
|
inherited |
Definition at line 72 of file shear_stress.f90.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Definition at line 57 of file shear_stress.f90.
|
inherited |
Definition at line 59 of file shear_stress.f90.
|
inherited |
Definition at line 61 of file shear_stress.f90.
Definition at line 57 of file wall_model_bc.f90.
type(json_file) wall_model_bc::wall_model_bc_t::params_ |
Definition at line 59 of file wall_model_bc.f90.
|
inherited |
Definition at line 54 of file shear_stress.f90.
class(wall_model_t), allocatable wall_model_bc::wall_model_bc_t::wall_model |
Definition at line 55 of file wall_model_bc.f90.