00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef LOCA_BORDEREDSOLVER_LOWERTRIANGULARBLOCKELIMINATION_H
00043 #define LOCA_BORDEREDSOLVER_LOWERTRIANGULARBLOCKELIMINATION_H
00044
00045 #include "LOCA_BorderedSolver_AbstractStrategy.H"
00046
00047
00048 namespace LOCA {
00049 class GlobalData;
00050 namespace Parameter {
00051 class SublistParser;
00052 }
00053 }
00054
00055 namespace LOCA {
00056
00057 namespace BorderedSolver {
00058
00060
00092 class LowerTriangularBlockElimination {
00093
00094 public:
00095
00097
00100 LowerTriangularBlockElimination(
00101 const Teuchos::RCP<LOCA::GlobalData>& global_data);
00102
00104 virtual ~LowerTriangularBlockElimination();
00105
00113 NOX::Abstract::Group::ReturnType
00114 solve(Teuchos::ParameterList& params,
00115 const LOCA::BorderedSolver::AbstractOperator& op,
00116 const LOCA::MultiContinuation::ConstraintInterface& B,
00117 const NOX::Abstract::MultiVector::DenseMatrix& C,
00118 const NOX::Abstract::MultiVector* F,
00119 const NOX::Abstract::MultiVector::DenseMatrix* G,
00120 NOX::Abstract::MultiVector& X,
00121 NOX::Abstract::MultiVector::DenseMatrix& Y) const;
00122
00130 NOX::Abstract::Group::ReturnType
00131 solve(Teuchos::ParameterList& params,
00132 const LOCA::BorderedSolver::AbstractOperator& op,
00133 const NOX::Abstract::MultiVector& B,
00134 const NOX::Abstract::MultiVector::DenseMatrix& C,
00135 const NOX::Abstract::MultiVector* F,
00136 const NOX::Abstract::MultiVector::DenseMatrix* G,
00137 NOX::Abstract::MultiVector& X,
00138 NOX::Abstract::MultiVector::DenseMatrix& Y) const;
00139
00148 NOX::Abstract::Group::ReturnType
00149 solveTranspose(Teuchos::ParameterList& params,
00150 const LOCA::BorderedSolver::AbstractOperator& op,
00151 const LOCA::MultiContinuation::ConstraintInterface& B,
00152 const NOX::Abstract::MultiVector::DenseMatrix& C,
00153 const NOX::Abstract::MultiVector* F,
00154 const NOX::Abstract::MultiVector::DenseMatrix* G,
00155 NOX::Abstract::MultiVector& X,
00156 NOX::Abstract::MultiVector::DenseMatrix& Y) const;
00157
00166 NOX::Abstract::Group::ReturnType
00167 solveTranspose(Teuchos::ParameterList& params,
00168 const LOCA::BorderedSolver::AbstractOperator& op,
00169 const NOX::Abstract::MultiVector& B,
00170 const NOX::Abstract::MultiVector::DenseMatrix& C,
00171 const NOX::Abstract::MultiVector* F,
00172 const NOX::Abstract::MultiVector::DenseMatrix* G,
00173 NOX::Abstract::MultiVector& X,
00174 NOX::Abstract::MultiVector::DenseMatrix& Y) const;
00175
00176 private:
00177
00179 LowerTriangularBlockElimination(const LowerTriangularBlockElimination&);
00180
00182 LowerTriangularBlockElimination&
00183 operator = (const LowerTriangularBlockElimination&);
00184
00185 protected:
00186
00188 Teuchos::RCP<LOCA::GlobalData> globalData;
00189
00190 };
00191 }
00192 }
00193
00194 #endif