22class NavierStokes :
public NonLinearProblem<SC,LO,GO,NO> {
29 typedef Teuchos::RCP<Matrix_Type> MatrixPtr_Type;
30 typedef Teuchos::RCP<const MatrixPtr_Type> MatrixConstPtr_Type;
32 typedef typename Problem_Type::MapConstPtr_Type MapConstPtr_Type;
34 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
35 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
37 typedef typename Problem_Type::MultiVector_Type MultiVector_Type;
38 typedef typename Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
39 typedef typename Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
40 typedef typename Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type;
42 typedef typename Problem_Type::Domain_Type Domain_Type;
43 typedef typename Problem_Type::DomainPtr_Type DomainPtr_Type;
44 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
45 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
47 typedef NonLinearProblem<SC,LO,GO,NO> NonLinearProblem_Type;
48 typedef typename NonLinearProblem_Type::BlockMultiVectorPtrArray_Type BlockMultiVectorPtrArray_Type;
50 typedef typename NonLinearProblem_Type::TpetraMatrix_Type TpetraMatrix_Type;
52 typedef typename NonLinearProblem_Type::ThyraVecSpace_Type ThyraVecSpace_Type;
53 typedef typename NonLinearProblem_Type::ThyraVec_Type ThyraVec_Type;
54 typedef typename NonLinearProblem_Type::ThyraOp_Type ThyraOp_Type;
55 typedef Thyra::BlockedLinearOpBase<SC> ThyraBlockOp_Type;
58 typedef Teuchos::RCP<BC_Type> BCPtr_Type;
59 typedef Teuchos::RCP<const BC_Type> BCConstPtr_Type;
61 typedef typename NonLinearProblem_Type::TpetraOp_Type TpetraOp_Type;
66 NavierStokes(
const DomainConstPtr_Type &domainVelocity, std::string FETypeVelocity,
const DomainConstPtr_Type &domainPressure, std::string FETypePressure, ParameterListPtr_Type parameterList );
71 virtual void assemble( std::string type =
"" )
const;
73 void assembleConstantMatrices()
const;
75 void assembleDivAndStab()
const;
77 void updateConvectionDiffusionOperator()
const;
79 void reAssemble( std::string type )
const;
81 void reAssemble( BlockMultiVectorPtr_Type previousSolution )
const override{}
83 void reAssembleFSI(std::string type, MultiVectorPtr_Type u_minus_w, MatrixPtr_Type P)
const;
85 virtual void reAssemble(MatrixPtr_Type& massmatrix, std::string type )
const;
87 virtual void reAssembleExtrapolation(BlockMultiVectorPtrArray_Type previousSolutions);
89 virtual void calculateNonLinResidualVec(std::string type=
"standard",
double time=0.)
const;
91 void calculateNonLinResidualVecWithMeshVelo(std::string type,
double time, MultiVectorPtr_Type u_minus_w, MatrixPtr_Type P)
const;
94 void getValuesOfInterest( vec_dbl_Type& values )
override {}
96 void computeValuesOfInterestAndExport()
override {}
101 mutable MatrixPtr_Type A_;
102 vec_int_ptr_Type pressureIDsLoc;
103 MultiVectorPtr_Type u_rep_;
105 BCPtr_Type bcFactoryPCD_;
106 mutable MatrixPtr_Type Mp_;
107 mutable MatrixPtr_Type BT_Mp_;
108 mutable MatrixPtr_Type BT_Mp_B_;
109 mutable MatrixPtr_Type Ap_;
111 bool augmentedLagrange_=
false;