Neko
0.8.1
A portable framework for high-order spectral element flow simulations
precon.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
!
34
module
precon
35
use
num_types
,
only
:
rp
36
implicit none
37
private
38
40
type
,
public
,
abstract
::
pc_t
41
contains
42
procedure
(
pc_solve
), pass(this),
deferred
:: solve
43
procedure
(
pc_update
), pass(this),
deferred
:: update
44
end type
pc_t
45
50
abstract
interface
51
subroutine
pc_solve
(this, z, r, n)
52
import
rp
53
import
::
pc_t
54
implicit none
55
integer
,
intent(in)
:: n
56
class
(
pc_t
),
intent(inout)
:: this
57
real
(kind=
rp
),
dimension(n)
,
intent(inout)
:: z
58
real
(kind=
rp
),
dimension(n)
,
intent(inout)
:: r
59
end subroutine
pc_solve
60
subroutine
pc_update
(this)
61
import
rp
62
import
::
pc_t
63
implicit none
64
class
(
pc_t
),
intent(inout)
:: this
65
end subroutine
pc_update
66
end interface
67
end module
precon
precon::pc_solve
Abstract interface for solving .
Definition:
precon.f90:51
precon::pc_update
Definition:
precon.f90:60
num_types
Definition:
num_types.f90:1
num_types::rp
integer, parameter, public rp
Global precision used in computations.
Definition:
num_types.f90:12
precon
Krylov preconditioner.
Definition:
precon.f90:34
precon::pc_t
Defines a canonical Krylov preconditioner.
Definition:
precon.f90:40
src
krylov
precon.f90
Generated on Wed Sep 4 2024 13:40:34 for Neko by
1.9.1