lapack.hh

Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include "basics/typedefs.hh"
10 
11 namespace concepts {
12 
13  template<class F>
14  class DenseMatrix;
15 
16  template<class F>
17  class DiagonalMatrix;
18 
19  // ************************************************************ LapackChol **
20 
30  class LapackChol : public VecOperator<Real> {
31  public:
32  // Flag, if the upper or the lower triangular part is stored.
33  enum UpLo {U = 0, L = 1};
34 
35  LapackChol(const ElementMatrix<Real> A, enum UpLo uplo = U);
36 
37 
38  // Ax= b now solve D*Ax = b where D is a diagonal matrix that is a variable at each apply step
39  // this leads to a change of the rhs in the routine
40  //@param Dinv is the inverse of the diagonal matrix D
41  virtual void apply(DiagonalMatrix<Real>& Dinv, const Vector<Real>& fncY, Vector<Real>& fncX);
42 
43 
44  protected:
45  virtual std::ostream& info(std::ostream& os) const;
49  virtual void apply_(const Vector<Real>& fncY, Vector<Real>& fncX);
50  virtual void apply_();
51  private:
58  char uplo_;
60  mutable bool factorized_;
61  };
62 } // namespace concepts
char uplo_
Flag, if the upper or the lower triangular part is stored in the given matrix.
Definition: lapack.hh:58
virtual void apply_()
Intrinsic application method without argument.
virtual std::ostream & info(std::ostream &os) const
virtual void apply_(const Vector< Real > &fncY, Vector< Real > &fncX)
Intrinsic application method, i.e.
virtual void apply(DiagonalMatrix< Real > &Dinv, const Vector< Real > &fncY, Vector< Real > &fncX)
Linear solver using Lapack subroutine DPOSV.
Definition: lapack.hh:30
Diagonal matrix.
Definition: diagonal.hh:24
ElementMatrix< Real > A_
Storage for factorised matrix.
Definition: lapack.hh:53
LapackChol(const ElementMatrix< Real > A, enum UpLo uplo=U)
Abstract class for an operator acting on vectors only, not arbitrary functions.
bool factorized_
Flag if the matrix is factorized.
Definition: lapack.hh:60
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich