44 #ifndef GLPAPP_GLPYUEPETRADATAPOOL_H 45 #define GLPAPP_GLPYUEPETRADATAPOOL_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 );
147 Teuchos::RCP<Epetra_IntSerialDenseVector>
ipindx_;
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_;
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_FEVector > Ny_
Teuchos::RCP< Epetra_FECrsMatrix > getR()
Teuchos::RCP< Epetra_FEVector > getq()
Teuchos::RCP< const Epetra_Comm > commptr_
Teuchos::RCP< Epetra_FEVector > b_
Right-hand side of the PDE.
Teuchos::RCP< const Epetra_IntSerialDenseVector > getpindx()
double beta_
Regularization parameter.
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
Teuchos::RCP< Epetra_CrsMatrix > Augmat_
Augmented system matrix: [ I Jac* ] [Jac 0 ].
Epetra_SerialDenseMatrix S3
void computeNy(const Teuchos::RCP< const Epetra_MultiVector > &y)
Calls the function that computes the nonlinear term.
Epetra_SerialDenseVector Weights
Teuchos::RCP< Epetra_FECrsMatrix > A_
Volume stiffness matrix.
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.
Teuchos::RCP< Epetra_FECrsMatrix > getNpy()
Teuchos::RCP< Epetra_IntSerialDenseMatrix > t_
Elements (this includes all overlapping nodes).
Teuchos::RCP< Epetra_SerialDenseMatrix > pcoords_
Coordinates of all nodes in this subdomain.
Provides the interface to a generic data pool.
Epetra_SerialDenseMatrix S2
Epetra_SerialDenseMatrix * NdNdx1Nw
Teuchos::RCP< Epetra_FECrsMatrix > Npy_
Jacobian of the nonlinear term.
Teuchos::RCP< Epetra_FECrsMatrix > R_
Edge mass matrix.
void computeAugmat()
Assembles the augmented system (KKT-type) matrix.
Teuchos::RCP< const Epetra_SerialDenseMatrix > getpcoords()
Teuchos::RCP< Epetra_FECrsMatrix > B_
Control/state mass matrix.
Teuchos::RCP< Epetra_SerialDenseMatrix > ipcoords_
Coordinates of nodes that are unique to this subdomain.
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_FEVector > q_
The desired state.
Teuchos::RCP< Epetra_FECrsMatrix > getA()
Epetra_SerialDenseMatrix Nodes
Teuchos::RCP< Epetra_IntSerialDenseVector > pindx_
Global nodes (interior + shared, overlapping) in this subdomain.
Teuchos::RCP< Epetra_MultiVector > B_bar_
Basis matrix for p_bar=B*p.
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()
void Print(std::ostream &os) const
Teuchos::RCP< const Epetra_Comm > getCommPtr()
Epetra_SerialDenseMatrix N
Teuchos::RCP< Epetra_FEVector > getb()
Teuchos::RCP< Epetra_IntSerialDenseMatrix > e_
Edges.
Teuchos::RCP< Epetra_IntSerialDenseVector > ipindx_
Global nodes (interior, nonoverlapping) in this subdomain.
Teuchos::RCP< Epetra_FECrsMatrix > H_
Volume mass matrix.