Neko 0.9.99
A portable framework for high-order spectral element flow simulations
|
A cylindrical point zone. More...
Public Member Functions | |
procedure, pass(this) | init (this, json, size) |
Constructor from json object file. | |
procedure, pass(this) | free (this) |
Destructor. | |
procedure, pass(this) | criterion (this, x, y, z, j, k, l, e) |
Defines the criterion of selection of a GLL point in the sphere point zone. | |
procedure, pass(this) | init_base (this, size, name, invert) |
Constructor for the point_zone_t base type. | |
procedure, pass(this) | free_base (this) |
Destructor for the point_zone_t base type. | |
procedure, pass(this) | finalize (this) |
Builds the mask from the scratch stack. | |
procedure, pass(this) | add (this, idx) |
Adds a point's linear index to the scratch stack. | |
procedure, pass(this) | map (this, dof) |
Maps the GLL points that verify a point_zone's criterion by adding them to the stack. | |
procedure(point_zone_init), deferred, pass | init (this, json, size) |
The common constructor using a JSON object. | |
procedure(point_zone_free), deferred, pass | free (this) |
Destructor. | |
procedure(point_zone_criterion), deferred, pass | criterion (this, x, y, z, j, k, l, e) |
Defines the criterion of selection of a GLL point to the point_zone. | |
Public Attributes | |
real(kind=rp), dimension(3) | p0 |
real(kind=rp), dimension(3) | p1 |
real(kind=rp) | radius |
integer, dimension(:), allocatable | mask |
List of linear indices of the GLL points in the zone. | |
type(c_ptr) | mask_d = c_null_ptr |
List of linear indices of the GLL points in the zone on the device. | |
integer | size = 0 |
Size of the point zone mask. | |
character(len=80) | name |
Name of the point zone (used for retrieval in the point_zone_registry). | |
logical | invert = .false. |
If we select the inverse of the criterion or not. | |
Private Attributes | |
type(stack_i4_t), private | scratch |
Scratch stack of integers to build the list mask. | |
logical, private | finalized = .false. |
Flag to indicate if point_zone_finalize has been called and the mask has been built. | |
As defined here, a cylinder is described by its two end points and its radius, specified in the json file as e.g. "start": [<x0>, <y0>, <z0>]",
"start": [<x1>, <y1>, <z1>]", "radius": <r>
.
Definition at line 48 of file cylinder_point_zone.f90.
|
inherited |
idx | Linear index of the point to add. |
(j,k,l,e)
can be retrieved using the subroutine linear_index(j,k,l,e,lx)
in the utils
module. Definition at line 71 of file point_zone.f90.
|
pure virtualinherited |
Definition at line 80 of file point_zone.f90.
procedure, pass(this) cylinder_point_zone::cylinder_point_zone_t::criterion | ( | class(cylinder_point_zone_t), intent(in) | this, |
real(kind=rp), intent(in) | x, | ||
real(kind=rp), intent(in) | y, | ||
real(kind=rp), intent(in) | z, | ||
integer, intent(in) | j, | ||
integer, intent(in) | k, | ||
integer, intent(in) | l, | ||
integer, intent(in) | e | ||
) |
A GLL point of coordinates \( \vec{X} = (x, y, z) \) is considered as being inside the cylinder defined by endpoints \( \vec{p_0} \) and \( \vec{p_1} \) and radius \( r \) if it satisfies the following conditions:
\begin{eqnarray*} ||\vec{X} - \vec{X_0}|| &\le& r\\ 0 &\le& t \le 1 \end{eqnarray*}
where,
\begin{eqnarray*} t &=& (\vec{X} - \vec{p_0}) \cdot (\vec{p_1} - \vec{p_0}) / ||\vec{p_1} - \vec{p_0}|| \\ \vec{X_0} &=& \vec{p_0} + t \cdot (\vec{p_1} - \vec{p_0}) \end{eqnarray*}
x | x-coordinate of the GLL point. |
y | y-coordinate of the GLL point. |
z | z-coordinate of the GLL point. |
j | 1st nonlinear index of the GLL point. |
k | 2nd nonlinear index of the GLL point. |
l | 3rd nonlinear index of the GLL point. |
e | element index of the GLL point. |
Definition at line 59 of file cylinder_point_zone.f90.
|
inherited |
Definition at line 69 of file point_zone.f90.
|
pure virtualinherited |
Definition at line 78 of file point_zone.f90.
procedure, pass(this) cylinder_point_zone::cylinder_point_zone_t::free | ( | class(cylinder_point_zone_t), intent(inout) | this | ) |
Definition at line 56 of file cylinder_point_zone.f90.
|
inherited |
Definition at line 67 of file point_zone.f90.
|
pure virtualinherited |
Definition at line 76 of file point_zone.f90.
procedure, pass(this) cylinder_point_zone::cylinder_point_zone_t::init | ( | class(cylinder_point_zone_t), intent(inout) | this, |
type(json_file), intent(inout) | json, | ||
integer, intent(in) | size | ||
) |
json | Json object file. |
size | Size with which to initialize the stack |
Definition at line 54 of file cylinder_point_zone.f90.
|
inherited |
object | The object allocated by the factory. |
json | JSON object initializing the point zone. |
dof | Dofmap from which to map the point zone. Constructor for the point_zone_t base type. |
size | Size of the scratch stack. |
name | Name of the point zone. |
invert | Flag to indicate wether or not to invert the selection of points. |
Definition at line 65 of file point_zone.f90.
|
inherited |
dof | Dofmap of points to go through. |
Definition at line 74 of file point_zone.f90.
Definition at line 58 of file point_zone.f90.
|
inherited |
Definition at line 62 of file point_zone.f90.
|
inherited |
Definition at line 49 of file point_zone.f90.
|
inherited |
Definition at line 51 of file point_zone.f90.
|
inherited |
Definition at line 60 of file point_zone.f90.
Definition at line 49 of file cylinder_point_zone.f90.
Definition at line 50 of file cylinder_point_zone.f90.
Definition at line 51 of file cylinder_point_zone.f90.
|
privateinherited |
Definition at line 53 of file point_zone.f90.
|
inherited |
Definition at line 55 of file point_zone.f90.