Chaste
Release::3.4
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
PCLDUFactorisation.hpp
1
/*
2
3
Copyright (c) 2005-2016, University of Oxford.
4
All rights reserved.
5
6
University of Oxford means the Chancellor, Masters and Scholars of the
7
University of Oxford, having an administrative office at Wellington
8
Square, Oxford OX1 2JD, UK.
9
10
This file is part of Chaste.
11
12
Redistribution and use in source and binary forms, with or without
13
modification, are permitted provided that the following conditions are met:
14
* Redistributions of source code must retain the above copyright notice,
15
this list of conditions and the following disclaimer.
16
* Redistributions in binary form must reproduce the above copyright notice,
17
this list of conditions and the following disclaimer in the documentation
18
and/or other materials provided with the distribution.
19
* Neither the name of the University of Oxford nor the names of its
20
contributors may be used to endorse or promote products derived from this
21
software without specific prior written permission.
22
23
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34
*/
35
36
#ifndef PCLDUFACTORISATION_HPP_
37
#define PCLDUFACTORISATION_HPP_
38
39
#include <cassert>
40
#include <petscvec.h>
41
#include <petscmat.h>
42
#include <petscksp.h>
43
#include <petscpc.h>
44
#include "
PetscTools.hpp
"
45
56
#if (PETSC_VERSION_MAJOR == 3 && PETSC_VERSION_MINOR >= 1) //PETSc 3.1 or later
57
PetscErrorCode PCLDUFactorisationApply(PC pc_object,
Vec
x,
Vec
y);
58
#else
59
PetscErrorCode PCLDUFactorisationApply(
void
* pc_context,
Vec
x,
Vec
y);
60
#endif
61
107
class
PCLDUFactorisation
108
{
109
public
:
110
114
typedef
struct
{
115
Mat
A11_matrix_subblock
;
116
Mat
A22_matrix_subblock
;
117
Mat
B_matrix_subblock
;
118
PC
PC_amg_A11
;
119
PC
PC_amg_A22
;
120
Vec
x1_subvector
;
121
Vec
x2_subvector
;
122
Vec
y1_subvector
;
123
Vec
y2_subvector
;
124
Vec
z
;
125
Vec
temp
;
126
VecScatter
A11_scatter_ctx
;
127
VecScatter
A22_scatter_ctx
;
128
#ifdef TRACE_KSP
129
double
mScatterTime;
130
double
mA1PreconditionerTime;
131
double
mA2PreconditionerTime;
132
double
mExtraLAOperations;
133
double
mGatherTime;
134
#endif
135
136
}
PCLDUFactorisationContext
;
137
138
PCLDUFactorisationContext
mPCContext
;
139
PC
mPetscPCObject
;
141
public
:
142
148
PCLDUFactorisation
(KSP& rKspObject);
149
150
~
PCLDUFactorisation
();
151
152
private
:
153
159
void
PCLDUFactorisationCreate
(KSP& rKspObject);
160
164
void
PCLDUFactorisationSetUp
();
165
};
166
167
#endif
/*PCLDUFACTORISATION_HPP_*/
PCLDUFactorisation::PCLDUFactorisationContext
Definition:
PCLDUFactorisation.hpp:114
PCLDUFactorisation::PCLDUFactorisationContext::A11_matrix_subblock
Mat A11_matrix_subblock
Definition:
PCLDUFactorisation.hpp:115
PCLDUFactorisation::mPetscPCObject
PC mPetscPCObject
Definition:
PCLDUFactorisation.hpp:139
PCLDUFactorisation::PCLDUFactorisationContext::y1_subvector
Vec y1_subvector
Definition:
PCLDUFactorisation.hpp:122
PCLDUFactorisation::PCLDUFactorisationSetUp
void PCLDUFactorisationSetUp()
Definition:
PCLDUFactorisation.cpp:244
PCLDUFactorisation::PCLDUFactorisationContext::PC_amg_A22
PC PC_amg_A22
Definition:
PCLDUFactorisation.hpp:119
PCLDUFactorisation
Definition:
PCLDUFactorisation.hpp:107
PCLDUFactorisation::PCLDUFactorisationContext::z
Vec z
Definition:
PCLDUFactorisation.hpp:124
PCLDUFactorisation::PCLDUFactorisationContext::PC_amg_A11
PC PC_amg_A11
Definition:
PCLDUFactorisation.hpp:118
PCLDUFactorisation::mPCContext
PCLDUFactorisationContext mPCContext
Definition:
PCLDUFactorisation.hpp:138
PCLDUFactorisation::PCLDUFactorisationContext::A11_scatter_ctx
VecScatter A11_scatter_ctx
Definition:
PCLDUFactorisation.hpp:126
Vec
PCLDUFactorisation::PCLDUFactorisation
PCLDUFactorisation(KSP &rKspObject)
Definition:
PCLDUFactorisation.cpp:47
PCLDUFactorisation::PCLDUFactorisationContext::y2_subvector
Vec y2_subvector
Definition:
PCLDUFactorisation.hpp:123
PCLDUFactorisation::PCLDUFactorisationContext::B_matrix_subblock
Mat B_matrix_subblock
Definition:
PCLDUFactorisation.hpp:117
PCLDUFactorisation::PCLDUFactorisationContext::x1_subvector
Vec x1_subvector
Definition:
PCLDUFactorisation.hpp:120
PCLDUFactorisation::PCLDUFactorisationContext::A22_matrix_subblock
Mat A22_matrix_subblock
Definition:
PCLDUFactorisation.hpp:116
PetscTools.hpp
PCLDUFactorisation::PCLDUFactorisationContext::temp
Vec temp
Definition:
PCLDUFactorisation.hpp:125
PCLDUFactorisation::PCLDUFactorisationContext::x2_subvector
Vec x2_subvector
Definition:
PCLDUFactorisation.hpp:121
Mat
PCLDUFactorisation::PCLDUFactorisationContext::A22_scatter_ctx
VecScatter A22_scatter_ctx
Definition:
PCLDUFactorisation.hpp:127
PCLDUFactorisation::PCLDUFactorisationCreate
void PCLDUFactorisationCreate(KSP &rKspObject)
Definition:
PCLDUFactorisation.cpp:92
linalg
src
PCLDUFactorisation.hpp
Generated on Thu Feb 11 2016 12:39:36 for Chaste by
1.8.6