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

CPU implementation for LPT wall-collision handling.

Functions/Subroutines

subroutine, public lpt_handle_elastic_wall_collisions_cpu (msh, dm_xh, coef, wall_facet_mask, el_list, x_old, y_old, z_old, x, y, z, d, u, v, w, u_lag, v_lag, w_lag, u_laglag, v_laglag, w_laglag, acc_xlag, acc_ylag, acc_zlag, acc_xlaglag, acc_ylaglag, acc_zlaglag, u_old, v_old, w_old, acc_x, acc_y, acc_z, lag_len, n)
 Reflect inertial particles that hit configured wall facets on the CPU.
 
logical function wall_facet_is_hit (wall_facet_mask, dm_x, dm_y, dm_z, lx, ly, lz, coef, x_old, y_old, z_old, x, y, z, radius, el, facet, gdim)
 Return true if the particle surface reaches a given wall facet.
 
subroutine wall_facet_normal (coef, lx, ly, lz, el, facet, normal)
 Use the face-center SEM normal as the reflection normal.
 
subroutine wall_facet_center (dm_x, dm_y, dm_z, lx, ly, lz, el, facet, wall_point)
 Return the facet-center position that matches the reflection normal.
 
subroutine reflect_position (x, y, z, wall_point, normal, radius)
 Reflect the particle center across the contact plane located one radius inward from the wall plane.
 
pure real(kind=rp) function signed_plane_distance (x, y, z, wall_point, normal)
 Return signed distance from a point to a wall plane.
 
pure subroutine reflect_vector (vec, normal)
 Reflect a vector across a plane with the supplied normal.
 
pure subroutine reflect_vector_components (x, y, z, normal)
 Reflect vector components across a plane with the supplied normal.
 

Function/Subroutine Documentation

◆ lpt_handle_elastic_wall_collisions_cpu()

subroutine, public lpt_wall_collision_cpu::lpt_handle_elastic_wall_collisions_cpu ( type(mesh_t), intent(in msh,
type(dofmap_t), intent(in), target  dm_xh,
type(coef_t), intent(in coef,
logical, dimension(:, :), intent(in wall_facet_mask,
integer, dimension(:), intent(in el_list,
type(vector_t), intent(in x_old,
type(vector_t), intent(in y_old,
type(vector_t), intent(in z_old,
type(vector_t), intent(inout x,
type(vector_t), intent(inout y,
type(vector_t), intent(inout z,
type(vector_t), intent(in d,
type(vector_t), intent(inout u,
type(vector_t), intent(inout v,
type(vector_t), intent(inout w,
type(vector_t), intent(inout u_lag,
type(vector_t), intent(inout v_lag,
type(vector_t), intent(inout w_lag,
type(vector_t), intent(inout u_laglag,
type(vector_t), intent(inout v_laglag,
type(vector_t), intent(inout w_laglag,
type(vector_t), intent(inout acc_xlag,
type(vector_t), intent(inout acc_ylag,
type(vector_t), intent(inout acc_zlag,
type(vector_t), intent(inout acc_xlaglag,
type(vector_t), intent(inout acc_ylaglag,
type(vector_t), intent(inout acc_zlaglag,
type(vector_t), intent(inout u_old,
type(vector_t), intent(inout v_old,
type(vector_t), intent(inout w_old,
type(vector_t), intent(inout acc_x,
type(vector_t), intent(inout acc_y,
type(vector_t), intent(inout acc_z,
integer, intent(in lag_len,
integer, intent(in n 
)
Parameters
mshMesh containing wall facets.
dm_XhCoordinate dofmap used for facet locations.
coefCoefficients used for facet normals.
wall_facet_maskMask of facets that behave as elastic walls.
el_listLocal owner element for each particle.
nNumber of local particles.

Definition at line 54 of file lpt_wall_collision_cpu.f90.

Here is the call graph for this function:

◆ reflect_position()

subroutine lpt_wall_collision_cpu::reflect_position ( real(kind=rp), intent(inout x,
real(kind=rp), intent(inout y,
real(kind=rp), intent(inout z,
real(kind=rp), dimension(3), intent(in wall_point,
real(kind=rp), dimension(3), intent(in normal,
real(kind=rp), intent(in radius 
)
private
Parameters
xParticle x coordinate updated in place.
yParticle y coordinate updated in place.
zParticle z coordinate updated in place.
wall_pointPoint on the wall plane.
normalWall normal.
radiusParticle radius.

Definition at line 279 of file lpt_wall_collision_cpu.f90.

Here is the caller graph for this function:

◆ reflect_vector()

pure subroutine lpt_wall_collision_cpu::reflect_vector ( real(kind=rp), dimension(3), intent(inout vec,
real(kind=rp), dimension(3), intent(in normal 
)
private
Parameters
vecVector updated in place.
normalPlane normal.

Definition at line 323 of file lpt_wall_collision_cpu.f90.

Here is the caller graph for this function:

◆ reflect_vector_components()

pure subroutine lpt_wall_collision_cpu::reflect_vector_components ( real(kind=rp), intent(inout x,
real(kind=rp), intent(inout y,
real(kind=rp), intent(inout z,
real(kind=rp), dimension(3), intent(in normal 
)
private
Parameters
xX component updated in place.
yY component updated in place.
zZ component updated in place.
normalPlane normal.

Definition at line 343 of file lpt_wall_collision_cpu.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signed_plane_distance()

pure real(kind=rp) function lpt_wall_collision_cpu::signed_plane_distance ( real(kind=rp), intent(in x,
real(kind=rp), intent(in y,
real(kind=rp), intent(in z,
real(kind=rp), dimension(3), intent(in wall_point,
real(kind=rp), dimension(3), intent(in normal 
)
private
Parameters
wall_pointPoint on the wall plane.
normalWall normal.

Definition at line 304 of file lpt_wall_collision_cpu.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wall_facet_center()

subroutine lpt_wall_collision_cpu::wall_facet_center ( real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_x,
real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_y,
real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_z,
integer, intent(in lx,
integer, intent(in ly,
integer, intent(in lz,
integer, intent(in el,
integer, intent(in facet,
real(kind=rp), dimension(3), intent(out wall_point 
)
private
Parameters
wall_pointOutput point on the wall plane.

Definition at line 229 of file lpt_wall_collision_cpu.f90.

Here is the caller graph for this function:

◆ wall_facet_is_hit()

logical function lpt_wall_collision_cpu::wall_facet_is_hit ( logical, dimension(:, :), intent(in wall_facet_mask,
real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_x,
real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_y,
real(kind=rp), dimension(:,:,:,:), intent(in), pointer  dm_z,
integer, intent(in lx,
integer, intent(in ly,
integer, intent(in lz,
type(coef_t), intent(in coef,
real(kind=rp), intent(in x_old,
real(kind=rp), intent(in y_old,
real(kind=rp), intent(in z_old,
real(kind=rp), intent(in x,
real(kind=rp), intent(in y,
real(kind=rp), intent(in z,
real(kind=rp), intent(in radius,
integer, intent(in el,
integer, intent(in facet,
integer, intent(in gdim 
)
private

Definition at line 151 of file lpt_wall_collision_cpu.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wall_facet_normal()

subroutine lpt_wall_collision_cpu::wall_facet_normal ( type(coef_t), intent(in coef,
integer, intent(in lx,
integer, intent(in ly,
integer, intent(in lz,
integer, intent(in el,
integer, intent(in facet,
real(kind=rp), dimension(3), intent(out normal 
)
private
Parameters
normalOutput normal vector.

Definition at line 199 of file lpt_wall_collision_cpu.f90.

Here is the caller graph for this function: