libMesh
Loading...
Searching...
No Matches
dense_submatrix.C
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// Lesser General Public License for more details.
13
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19// Local Includes
20#include "libmesh/dense_submatrix.h"
21
22namespace libMesh
23{
24
25
26
27
28// // ------------------------------------------------------------
29// // Dense Matrix member functions
30template<typename T>
32{
33 // (*this) <- M2 * M3
34 // Where:
35 // (*this) = (m x n),
36 // M2 = (m x p),
37 // M3 = (p x n)
38
39 // M3 is a simply a copy of *this
40 DenseSubMatrix<T> M3(*this);
41
42 // Call the multiply function in the base class
43 this->multiply(*this, M2, M3);
44}
45
46
47
48template<typename T>
50{
51 // (*this) <- M2 * M3
52 // Where:
53 // (*this) = (m x n),
54 // M2 = (m x p),
55 // M3 = (p x n)
56
57 // M2 is simply a copy of *this
58 DenseSubMatrix<T> M2(*this);
59
60 // Call the multiply function in the base class
61 this->multiply(*this, M2, M3);
62}
63
64
65
66//--------------------------------------------------------------
67// Explicit instantiations
68template class LIBMESH_EXPORT DenseSubMatrix<Real>;
69
70#ifdef LIBMESH_USE_COMPLEX_NUMBERS
71template class LIBMESH_EXPORT DenseSubMatrix<Complex>;
72#endif
73
74} // namespace libMesh
Defines an abstract dense matrix base class for use in Finite Element-type computations.
Defines a dense submatrix for use in Finite Element-type computations.
virtual void left_multiply(const DenseMatrixBase< T > &M2) override final
Performs the operation: (*this) <- M2 * (*this)
virtual void right_multiply(const DenseMatrixBase< T > &M3) override final
Performs the operation: (*this) <- (*this) * M3.
The libMesh namespace provides an interface to certain functionality in the library.