30class NavierStokesAssFE :
public NonLinearProblem<SC,LO,GO,NO> {
36 typedef typename Problem_Type::Matrix_Type Matrix_Type;
37 typedef typename Problem_Type::MatrixPtr_Type MatrixPtr_Type;
39 typedef typename Problem_Type::MapConstPtr_Type MapConstPtr_Type;
41 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
42 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
44 typedef typename Problem_Type::MultiVector_Type MultiVector_Type;
45 typedef typename Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
46 typedef typename Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
47 typedef typename Problem_Type::BlockMultiVector_Type BlockMultiVector_Type;
48 typedef typename Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type;
50 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
51 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
53 typedef NonLinearProblem<SC,LO,GO,NO> NonLinearProblem_Type;
54 typedef typename NonLinearProblem_Type::BlockMultiVectorPtrArray_Type BlockMultiVectorPtrArray_Type;
56 typedef typename NonLinearProblem_Type::TpetraMatrix_Type TpetraMatrix_Type;
58 typedef typename NonLinearProblem_Type::ThyraVecSpace_Type ThyraVecSpace_Type;
59 typedef typename NonLinearProblem_Type::ThyraVec_Type ThyraVec_Type;
60 typedef typename NonLinearProblem_Type::ThyraOp_Type ThyraOp_Type;
61 typedef Thyra::BlockedLinearOpBase<SC> ThyraBlockOp_Type;
63 typedef typename NonLinearProblem_Type::TpetraOp_Type TpetraOp_Type;
68 NavierStokesAssFE(
const DomainConstPtr_Type &domainVelocity, std::string FETypeVelocity,
const DomainConstPtr_Type &domainPressure, std::string FETypePressure, ParameterListPtr_Type parameterList );
73 virtual void assemble( std::string type =
"" )
const;
75 void assembleConstantMatrices()
const;
77 void assembleDivAndStab()
const;
79 void reAssemble( std::string type )
const;
81 virtual void reAssemble( BlockMultiVectorPtr_Type previousSolution )
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;
94 virtual void getValuesOfInterest( vec_dbl_Type& values ){};
96 virtual void computeValuesOfInterestAndExport() {};
101 void computeSteadyPostprocessingViscosity_Solution();
104 mutable MatrixPtr_Type A_;
105 vec_int_ptr_Type pressureIDsLoc;
106 MultiVectorPtr_Type u_rep_;
107 MultiVectorPtr_Type p_rep_;
109 MultiVectorPtr_Type viscosity_element_;
112 mutable bool stokesTekoPrecUsed_;
117 Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op()
const;
118 Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op_Monolithic()
const;
120 Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op_Block()
const;
122 Teuchos::RCP<Thyra::PreconditionerBase<SC> > create_W_prec()
const;
126 virtual void evalModelImpl(
127 const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
128 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs
131 void evalModelImplMonolithic(const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
132 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs)
const;
135 void evalModelImplBlock(const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
136 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs)
const;