Neko 0.9.99
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
ax.f90
Go to the documentation of this file.
1! Copyright (c) 2020-2021, The Neko Authors
2! All rights reserved.
3!
4! Redistribution and use in source and binary forms, with or without
5! modification, are permitted provided that the following conditions
6! are met:
7!
8! * Redistributions of source code must retain the above copyright
9! notice, this list of conditions and the following disclaimer.
10!
11! * Redistributions in binary form must reproduce the above
12! copyright notice, this list of conditions and the following
13! disclaimer in the documentation and/or other materials provided
14! with the distribution.
15!
16! * Neither the name of the authors nor the names of its
17! contributors may be used to endorse or promote products derived
18! from this software without specific prior written permission.
19!
20! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21! "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23! FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24! COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26! BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27! LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28! CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29! LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30! ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31! POSSIBILITY OF SUCH DAMAGE.
32!
35 use num_types, only : rp
36 use coefs, only : coef_t
37 use space, only : space_t
38 use mesh, only : mesh_t
39 implicit none
40 private
41
43 type, public, abstract :: ax_t
44 contains
45 procedure(ax_compute), nopass, deferred :: compute
46 procedure(ax_compute_vector), pass(this), deferred :: compute_vector
47 end type ax_t
48
49 interface
50
55 module subroutine ax_helm_factory(object, full_formulation)
56 class(ax_t), allocatable, intent(inout) :: object
57 logical, intent(in) :: full_formulation
58 end subroutine ax_helm_factory
59 end interface
60
61 public :: ax_helm_factory
62
70 abstract interface
71 subroutine ax_compute(w, u, coef, msh, Xh)
72 import space_t
73 import mesh_t
74 import coef_t
75 import ax_t
76 import rp
77 implicit none
78 type(space_t), intent(inout) :: Xh
79 type(mesh_t), intent(inout) :: msh
80 type(coef_t), intent(inout) :: coef
81 real(kind=rp), intent(inout) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
82 real(kind=rp), intent(inout) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
83 end subroutine ax_compute
84 end interface
85
97 abstract interface
98 subroutine ax_compute_vector(this, au, av, aw, u, v, w, coef, msh, Xh)
99 import space_t
100 import mesh_t
101 import coef_t
102 import ax_t
103 import rp
104 implicit none
105 class(ax_t), intent(in) :: this
106 type(space_t), intent(inout) :: Xh
107 type(mesh_t), intent(inout) :: msh
108 type(coef_t), intent(inout) :: coef
109 real(kind=rp), intent(inout) :: au(xh%lx, xh%ly, xh%lz, msh%nelv)
110 real(kind=rp), intent(inout) :: av(xh%lx, xh%ly, xh%lz, msh%nelv)
111 real(kind=rp), intent(inout) :: aw(xh%lx, xh%ly, xh%lz, msh%nelv)
112 real(kind=rp), intent(inout) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
113 real(kind=rp), intent(inout) :: v(xh%lx, xh%ly, xh%lz, msh%nelv)
114 real(kind=rp), intent(inout) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
115 end subroutine ax_compute_vector
116 end interface
117
118end module ax_product
Abstract interface for computing inside a Krylov method, taking 3 components of a vector field in a ...
Definition ax.f90:98
Factory routine for the a Helmholtz problem matrix-vector product. The selection is based on the comp...
Definition ax.f90:71
Defines a Matrix-vector product.
Definition ax.f90:34
Coefficients.
Definition coef.f90:34
Defines a mesh.
Definition mesh.f90:34
integer, parameter, public rp
Global precision used in computations.
Definition num_types.f90:12
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
The function space for the SEM solution fields.
Definition space.f90:62