OOPS
linsysteigen.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2018 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef OOPS_ASSIMILATION_LINSYSTEIGEN_H_
9 #define OOPS_ASSIMILATION_LINSYSTEIGEN_H_
10 
11 #include <Eigen/Dense>
12 
13 namespace oops {
14 
15 typedef Eigen::MatrixXd eigenmat_;
16 typedef Eigen::VectorXd eigenvec_;
17 
18 eigenmat_ linsysteigen(const eigenmat_ & AA, const eigenmat_ & YY) {
19  // Solve AX=Y (unknown X), A full square matrix, Y matrix
20  return AA.fullPivLu().solve(YY);
21 }
22 
23 eigenvec_ linsysteigen(const eigenmat_ & AA, const eigenvec_ & yy) {
24  // Solve Ax=y (unknown x), A full square matrix, y vector
25  return AA.fullPivLu().solve(yy);
26 }
27 
29  // Solve LU=I (unknown L), U & I full square matrixes
30  eigenmat_ AA = UU.transpose();
31  eigenmat_ BB = II.transpose();
32  return linsysteigen(AA, BB).transpose();
33 }
34 
35 } // namespace oops
36 #endif // OOPS_ASSIMILATION_LINSYSTEIGEN_H_
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::eigenmat_
Eigen::MatrixXd eigenmat_
Definition: linsysteigen.h:15
oops::linsysteigen
eigenmat_ linsysteigen(const eigenmat_ &AA, const eigenmat_ &YY)
Definition: linsysteigen.h:18
oops::eigenvec_
Eigen::VectorXd eigenvec_
Definition: linsysteigen.h:16
oops::linsysteigentrans
eigenmat_ linsysteigentrans(const eigenmat_ &UU, const eigenmat_ &II)
Definition: linsysteigen.h:28