Neko  0.9.0
A portable framework for high-order spectral element flow simulations
scalar_residual_cpu.f90
Go to the documentation of this file.
1 
4  use ax_product, only : ax_t
5  use field, only : field_t
6  use coefs, only : coef_t
7  use space, only : space_t
8  use mesh, only : mesh_t
9  use num_types, only : rp
10  use math, only : copy, cfill
11  use field, only : field_t
12  use mesh, only : mesh_t
13  use ax_product, only : ax_t
14  use space, only : space_t
15  use coefs, only : coef_t
16  implicit none
17  private
18 
20  type, public, extends(scalar_residual_t) :: scalar_residual_cpu_t
21  contains
23  procedure, nopass :: compute => scalar_residual_cpu_compute
24  end type scalar_residual_cpu_t
25 
26 contains
27 
41  subroutine scalar_residual_cpu_compute(Ax, s, s_res, f_Xh, c_Xh, msh, Xh, &
42  lambda, rhocp, bd, dt, n)
43  class(ax_t), intent(in) :: Ax
44  type(mesh_t), intent(inout) :: msh
45  type(space_t), intent(inout) :: Xh
46  type(field_t), intent(inout) :: s
47  type(field_t), intent(inout) :: s_res
48  type(field_t), intent(inout) :: f_Xh
49  type(coef_t), intent(inout) :: c_Xh
50  type(field_t), intent(in) :: lambda
51  real(kind=rp), intent(in) :: rhocp
52  real(kind=rp), intent(in) :: bd
53  real(kind=rp), intent(in) :: dt
54  integer, intent(in) :: n
55  integer :: i
56 
57  call copy(c_xh%h1, lambda%x, n)
58  call cfill(c_xh%h2, rhocp * bd / dt, n)
59 
60  c_xh%ifh2 = .true.
61 
62  call ax%compute(s_res%x, s%x, c_xh, msh, xh)
63 
64  do i = 1, n
65  s_res%x(i,1,1,1) = (-s_res%x(i,1,1,1)) + f_xh%x(i,1,1,1)
66  end do
67 
68  end subroutine scalar_residual_cpu_compute
69 
70 end module scalar_residual_cpu
Defines a Matrix-vector product.
Definition: ax.f90:34
Coefficients.
Definition: coef.f90:34
Defines a field.
Definition: field.f90:34
Definition: math.f90:60
subroutine, public cfill(a, c, n)
Set all elements to a constant c .
Definition: math.f90:348
subroutine, public copy(a, b, n)
Copy a vector .
Definition: math.f90:239
Defines a mesh.
Definition: mesh.f90:34
integer, parameter, public rp
Global precision used in computations.
Definition: num_types.f90:12
Residuals in the scalar equation (CPU version).
subroutine scalar_residual_cpu_compute(Ax, s, s_res, f_Xh, c_Xh, msh, Xh, lambda, rhocp, bd, dt, n)
Compute the residual.
Defines the residual for the scalar transport equation.
Defines a function space.
Definition: space.f90:34
Base type for a matrix-vector product providing .
Definition: ax.f90:43
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
Definition: coef.f90:55
Abstract type to compute scalar residual.
Wrapper type for the routine to compute the scalar residual on the CPU.
The function space for the SEM solution fields.
Definition: space.f90:62