1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | foam-extend: Open Source CFD
4 \\ / O peration | Version: 3.2
5 \\ / A nd | Web: http://www.foam-extend.org
6 \\/ M anipulation | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
9 This file is part of foam-extend.
11 foam-extend is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation, either version 3 of the License, or (at your
14 option) any later version.
16 foam-extend is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
28 BlockLduSystem is a wrapper for BlockLduMatrix with source field. This is
29 the return type of implicit div and grad operators needed for implicitly
30 coupled systems (namely p-U coupling).
33 Vuko Vukcevic, FMENA Zagreb.
38 \*---------------------------------------------------------------------------*/
40 #ifndef BlockLduSystem_H
41 #define BlockLduSystem_H
43 #include "blockVectorNMatrices.H"
44 #include "VectorNFieldTypes.H"
45 #include "volVectorNFields.H"
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 // Forward declaration of friend functions and operators
54 template<class blockType, class sourceType>
57 template<class blockType, class sourceType>
58 Ostream& operator<<(Ostream&, const BlockLduSystem<blockType, sourceType>&);
61 /*---------------------------------------------------------------------------*\
62 Class BlockLduSystem Declaration
63 \*---------------------------------------------------------------------------*/
65 template<class blockType, class sourceType>
68 public BlockLduMatrix<blockType>
73 Field<sourceType> source_;
80 //- Construct given addressing
81 explicit BlockLduSystem(const lduMesh&);
83 //- Construct given addressing and source field
84 BlockLduSystem(const lduMesh&, const Field<sourceType>&);
86 //- Construct from components
89 const BlockLduMatrix<blockType>&,
90 const Field<sourceType>&
94 BlockLduSystem(const BlockLduSystem<blockType, sourceType>&);
99 virtual ~BlockLduSystem()
107 Field<sourceType>& source()
112 const Field<sourceType>& source() const
120 void operator=(const BlockLduSystem<blockType, sourceType>&);
124 void operator+=(const BlockLduSystem<blockType, sourceType>&);
125 void operator-=(const BlockLduSystem<blockType, sourceType>&);
127 void operator*=(const scalarField&);
128 void operator*=(const scalar);
133 friend Ostream& operator<< <blockType, sourceType>
136 const BlockLduSystem<blockType, sourceType>&
141 } // End namespace Foam
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
146 # include "BlockLduSystem.C"
147 # include "BlockLduSystemOperations.C"
150 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
154 // ************************************************************************* //