61 procedure, pass(this) :: compute_scalar => &
76 type(
coef_t),
intent(in) :: coef
101 type(
space_t),
intent(in) :: Xh
102 type(
coef_t),
intent(in) :: coef
103 type(
field_t),
intent(inout) :: vx, vy, vz
104 type(
field_t),
intent(inout) :: fx, fy, fz
105 integer,
intent(in) :: n
106 real(kind=
rp),
intent(in),
optional :: dt
115 call conv1(temp%x, vx%x, vx%x, vy%x, vz%x, xh, coef)
117 call conv1(temp%x, vy%x, vx%x, vy%x, vz%x, xh, coef)
119 if (coef%Xh%lz .eq. 1)
then
122 call conv1(temp%x, vz%x, vx%x, vy%x, vz%x, xh, coef)
126 call conv1(temp%x, vx%x, vx%x, vy%x, vz%x, xh, coef)
127 call subcol3 (fx%x, coef%B, temp%x, n)
128 call conv1(temp%x, vy%x, vx%x, vy%x, vz%x, xh, coef)
129 call subcol3 (fy%x, coef%B, temp%x, n)
130 if (coef%Xh%lz .eq. 1)
then
131 call rzero (temp%x, n)
133 call conv1(temp%x, vz%x, vx%x, vy%x, vz%x, xh, coef)
134 call subcol3(fz%x, coef%B, temp%x, n)
156 type(
field_t),
intent(inout) :: vx, vy, vz
157 type(
field_t),
intent(inout) :: s
158 type(
field_t),
intent(inout) :: fs
159 type(
space_t),
intent(in) :: Xh
160 type(
coef_t),
intent(in) :: coef
161 integer,
intent(in) :: n
162 real(kind=
rp),
intent(in),
optional :: dt
170 call conv1(temp%x, s%x, vx%x, vy%x, vz%x, xh, coef)
172 if (coef%Xh%lz .eq. 1)
then
177 call conv1(temp%x, s%x, vx%x, vy%x, vz%x, xh, coef)
180 call subcol3 (fs%x, coef%B, temp%x, n)
181 if (coef%Xh%lz .eq. 1)
then
182 call rzero (temp%x, n)
191 type(
coef_t),
intent(in) :: coef
192 logical,
intent(in) :: moving_boundary
197 wm_x, wm_y, wm_z, fx, fy, fz, Xh, coef, n, dt)
199 type(
field_t),
intent(inout) :: vx, vy, vz
200 type(
field_t),
intent(inout) :: wm_x, wm_y, wm_z
201 type(
field_t),
intent(inout) :: fx, fy, fz
202 type(
space_t),
intent(in) :: Xh
203 type(
coef_t),
intent(in) :: coef
204 integer,
intent(in) :: n
205 real(kind=
rp),
intent(in),
optional :: dt
206 type(
field_t),
pointer :: temp, work_x, work_y, work_z
218 call div(temp%x_d, work_x%x_d, work_y%x_d, work_z%x_d, coef)
223 call addcol3(fx%x, coef%B, temp%x, n)
230 call div(temp%x_d, work_x%x_d, work_y%x_d, work_z%x_d, coef)
235 call addcol3(fy%x, coef%B, temp%x, n)
242 call div(temp%x_d, work_x%x_d, work_y%x_d, work_z%x_d, coef)
247 call addcol3(fz%x, coef%B, temp%x, n)
Compute the divergence of a vector field.
Subroutines to add advection terms to the RHS of a transport equation.
subroutine init_no_dealias(this, coef)
Constructor.
subroutine free_no_dealias(this)
Destructor.
subroutine compute_ale_advection_no_dealias(this, vx, vy, vz, wm_x, wm_y, wm_z, fx, fy, fz, xh, coef, n, dt)
subroutine compute_scalar_advection_no_dealias(this, vx, vy, vz, s, fs, xh, coef, n, dt)
Add the advection term for a scalar, i.e. , to the RHS.
subroutine recompute_metrics_no_dealias(this, coef, moving_boundary)
subroutine compute_advection_no_dealias(this, vx, vy, vz, fx, fy, fz, xh, coef, n, dt)
Add the advection term for the fluid, i.e. to the RHS.
Subroutines to add advection terms to the RHS of a transport equation.
subroutine, public device_addcol3(a_d, b_d, c_d, n, strm)
Returns .
subroutine, public device_rzero(a_d, n, strm)
Zero a real vector.
subroutine, public device_subcol3(a_d, b_d, c_d, n, strm)
Returns .
subroutine, public field_col3(a, b, c, n)
Vector multiplication with 3 vectors .
subroutine, public subcol3(a, b, c, n)
Returns .
subroutine, public addcol3(a, b, c, n)
Returns .
subroutine, public rzero(a, n)
Zero a real vector.
integer, parameter neko_bcknd_device
integer, parameter, public rp
Global precision used in computations.
subroutine, public conv1(du, u, vx, vy, vz, xh, coef, es, ee)
Compute the advection term.
Defines a registry for storing and requesting temporary objects This can be used when you have a func...
type(scratch_registry_t), target, public neko_scratch_registry
Global scratch registry.
Defines a function space.
Type encapsulating advection routines with no dealiasing applied.
Base abstract type for computing the advection operator.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
The function space for the SEM solution fields.