38 use json_module,
only: json_file
49 real(kind=
rp),
dimension(3) :: p0
50 real(kind=
rp),
dimension(3) :: p1
51 real(kind=
rp) :: radius
69 type(json_file),
intent(inout) :: json
70 integer,
intent(in) :: size
72 character(len=:),
allocatable :: name
73 real(kind=
rp),
dimension(:),
allocatable :: p0, p1
74 real(kind=
rp) :: radius
80 call json_get(json,
"radius", radius)
83 if (all(shape(p0) .ne. (/3/)))
then
84 call neko_error(
"Cylinder point zone: invalid start point")
87 if (all(shape(p1) .ne. (/3/)))
then
88 call neko_error(
"Cylinder point zone: invalid end point")
91 if (radius .lt. 0.0_rp)
then
92 call neko_error(
"Cylinder point zone: invalid radius")
111 integer,
intent(in),
optional :: size
112 character(len=*),
intent(in) :: name
113 logical,
intent(in) :: invert
114 real(kind=
rp),
intent(in),
dimension(3) :: p0
115 real(kind=
rp),
intent(in),
dimension(3) :: p1
116 real(kind=
rp),
intent(in) :: radius
118 call this%init_base(
size, name, invert)
130 call this%free_base()
164 real(kind=
rp),
intent(in) :: x
165 real(kind=
rp),
intent(in) :: y
166 real(kind=
rp),
intent(in) :: z
167 integer,
intent(in) :: j
168 integer,
intent(in) :: k
169 integer,
intent(in) :: l
170 integer,
intent(in) :: e
173 real(kind=
rp),
dimension(3) :: p
174 real(kind=
rp),
dimension(3) :: centerline
175 real(kind=
rp),
dimension(3) :: vec_p
178 real(kind=
rp) :: distance
182 centerline = this%p1 - this%p0
184 t = dot_product(vec_p, centerline) / dot_product(centerline, centerline)
189 is_inside = t >= 0.0_rp .and. t <= 1.0_rp .and. distance <= this%radius
Retrieves a parameter by name or assigns a provided default value. In the latter case also adds the m...
Retrieves a parameter by name or throws an error.
Implements a cylinder geometry subset.
subroutine cylinder_point_zone_free(this)
Destructor.
subroutine cylinder_point_zone_init_common(this, size, name, invert, p0, p1, radius)
Initializes a cylinder point zone from its endpoint coordinates and radius.
pure logical function cylinder_point_zone_criterion(this, x, y, z, j, k, l, e)
Defines the criterion of selection of a GLL point in the cylinder point zone.
subroutine cylinder_point_zone_init_from_json(this, json, size)
Constructor from json object file.
Utilities for retrieving parameters from the case files.
integer, parameter, public rp
Global precision used in computations.
Project x onto X, the space of old solutions and back again.
A cylindrical point zone.
Base abstract type for point zones.