44 #ifndef GLPAPP_GLPYUEPETRADATAPOOL_H
45 #define GLPAPP_GLPYUEPETRADATAPOOL_H
51 #include "Epetra_Map.h"
52 #include "Epetra_MultiVector.h"
53 #include "Epetra_Vector.h"
54 #include "Epetra_Import.h"
55 #include "Epetra_Export.h"
56 #include "Epetra_CrsMatrix.h"
57 #include "Epetra_FECrsMatrix.h"
58 #include "Epetra_LinearProblem.h"
59 #include "Epetra_LAPACK.h"
60 #include "Epetra_FEVector.h"
61 #include "Epetra_IntSerialDenseVector.h"
62 #include "Epetra_SerialDenseMatrix.h"
63 #include "Epetra_SerialDenseVector.h"
66 #include "Epetra_SerialDenseMatrix.h"
67 #include "Epetra_SerialDenseVector.h"
70 # include "Epetra_MpiComm.h"
72 # include "Epetra_SerialComm.h"
82 Teuchos::RCP<const Epetra_Comm>
const& commptr
98 int solveAugsys(
const Teuchos::RCP<const Epetra_MultiVector> & rhsy,
99 const Teuchos::RCP<const Epetra_MultiVector> & rhsu,
100 const Teuchos::RCP<const Epetra_MultiVector> & rhsp,
101 const Teuchos::RCP<Epetra_MultiVector> & y,
102 const Teuchos::RCP<Epetra_MultiVector> & u,
103 const Teuchos::RCP<Epetra_MultiVector> & p,
108 Teuchos::RCP<Epetra_FECrsMatrix>
getA();
109 Teuchos::RCP<Epetra_FECrsMatrix>
getB();
110 Teuchos::RCP<Epetra_FECrsMatrix>
getH();
111 Teuchos::RCP<Epetra_FECrsMatrix>
getR();
112 Teuchos::RCP<Epetra_CrsMatrix>
getAugmat();
113 Teuchos::RCP<Epetra_FECrsMatrix>
getNpy();
115 Teuchos::RCP<Epetra_FEVector>
getb();
116 Teuchos::RCP<Epetra_FEVector>
getq();
117 Teuchos::RCP<Epetra_FEVector>
getNy();
120 void computeNy(
const Teuchos::RCP<const Epetra_MultiVector> & y);
123 void computeNpy(
const Teuchos::RCP<const Epetra_MultiVector> & y);
128 Teuchos::RCP<const Epetra_SerialDenseMatrix>
getipcoords();
129 Teuchos::RCP<const Epetra_IntSerialDenseVector>
getipindx();
130 Teuchos::RCP<const Epetra_SerialDenseMatrix>
getpcoords();
131 Teuchos::RCP<const Epetra_IntSerialDenseVector>
getpindx();
132 Teuchos::RCP<const Epetra_IntSerialDenseMatrix>
gett();
133 Teuchos::RCP<const Epetra_IntSerialDenseMatrix>
gete();
138 void PrintVec(
const Teuchos::RCP<const Epetra_Vector> & x );
142 Teuchos::RCP<const Epetra_Comm> commptr_;
145 Teuchos::RCP<Epetra_SerialDenseMatrix> ipcoords_;
147 Teuchos::RCP<Epetra_IntSerialDenseVector> ipindx_;
149 Teuchos::RCP<Epetra_SerialDenseMatrix> pcoords_;
151 Teuchos::RCP<Epetra_IntSerialDenseVector> pindx_;
153 Teuchos::RCP<Epetra_IntSerialDenseMatrix> t_;
155 Teuchos::RCP<Epetra_IntSerialDenseMatrix> e_;
158 Teuchos::RCP<Epetra_FECrsMatrix> A_;
160 Teuchos::RCP<Epetra_FECrsMatrix> B_;
162 Teuchos::RCP<Epetra_FECrsMatrix> H_;
164 Teuchos::RCP<Epetra_FECrsMatrix> R_;
167 Teuchos::RCP<Epetra_MultiVector> B_bar_;
173 Teuchos::RCP<Epetra_CrsMatrix> Augmat_;
176 Teuchos::RCP<Epetra_FECrsMatrix> Npy_;
179 Teuchos::RCP<Epetra_FEVector> b_;
181 Teuchos::RCP<Epetra_FEVector> q_;
183 Teuchos::RCP<Epetra_FEVector> Ny_;
224 void Print(std::ostream& os)
const;
229 #endif // GLPAPP_GLPYUEPETRADATAPOOL_H
Teuchos::RCP< Epetra_FECrsMatrix > getR()
Teuchos::RCP< Epetra_FEVector > getq()
Teuchos::RCP< const Epetra_IntSerialDenseVector > getpindx()
void PrintVec(const Teuchos::RCP< const Epetra_Vector > &x)
Outputs the solution vector to files.
Epetra_SerialDenseMatrix NNw
Teuchos::RCP< const Epetra_IntSerialDenseMatrix > gett()
void computeNpy(const Teuchos::RCP< const Epetra_MultiVector > &y)
Calls the function that computes the Jacobian of the nonlinear term.
Epetra_SerialDenseMatrix Nx2
Epetra_SerialDenseMatrix * NdNdx2Nw
Epetra_SerialDenseMatrix S3
void computeNy(const Teuchos::RCP< const Epetra_MultiVector > &y)
Calls the function that computes the nonlinear term.
Epetra_SerialDenseVector Weights
Epetra_SerialDenseMatrix S1
GLpYUEpetraDataPool(Teuchos::RCP< const Epetra_Comm > const &commptr, const double beta, const double len_x, const double len_y, const int local_nx, const int local_ny, const char myfile[], const bool trace)
Teuchos::RCP< const Epetra_IntSerialDenseMatrix > gete()
Provides the interface to generic abstract vector libraries.
void Print(std::ostream &os) const
Teuchos::RCP< Epetra_FECrsMatrix > getNpy()
Provides the interface to a generic data pool.
Epetra_SerialDenseMatrix S2
Epetra_SerialDenseMatrix * NdNdx1Nw
void computeAugmat()
Assembles the augmented system (KKT-type) matrix.
Teuchos::RCP< const Epetra_SerialDenseMatrix > getpcoords()
Teuchos::RCP< const Epetra_IntSerialDenseVector > getipindx()
Teuchos::RCP< Epetra_FECrsMatrix > getH()
Teuchos::RCP< const Epetra_SerialDenseMatrix > getipcoords()
void computeAll(const GenSQP::Vector &x)
Calls functions to compute nonlinear quantities and the augmented system matrix.
Teuchos::RCP< Epetra_FECrsMatrix > getB()
Teuchos::RCP< Epetra_FECrsMatrix > getA()
Epetra_SerialDenseMatrix Nodes
Teuchos::RCP< Epetra_CrsMatrix > getAugmat()
Epetra_SerialDenseMatrix Nx1
Epetra_SerialDenseVector Nw
Epetra_SerialDenseMatrix * NNNw
int solveAugsys(const Teuchos::RCP< const Epetra_MultiVector > &rhsy, const Teuchos::RCP< const Epetra_MultiVector > &rhsu, const Teuchos::RCP< const Epetra_MultiVector > &rhsp, const Teuchos::RCP< Epetra_MultiVector > &y, const Teuchos::RCP< Epetra_MultiVector > &u, const Teuchos::RCP< Epetra_MultiVector > &p, double tol)
Solves augmented system.
Teuchos::RCP< Epetra_FEVector > getNy()
Teuchos::RCP< const Epetra_Comm > getCommPtr()
Epetra_SerialDenseMatrix N
Teuchos::RCP< Epetra_FEVector > getb()