17class NonLinElasAssFE :
public NonLinearProblem<SC,LO,GO,NO> {
23 typedef typename Problem_Type::Matrix_Type Matrix_Type;
24 typedef typename Problem_Type::MatrixPtr_Type MatrixPtr_Type;
26 typedef typename Problem_Type::MapConstPtr_Type MapConstPtr_Type;
28 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
29 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
31 typedef typename Problem_Type::MultiVector_Type MultiVector_Type;
32 typedef typename Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
33 typedef typename Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
34 typedef typename Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type;
36 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
37 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
39 typedef NonLinearProblem<SC,LO,GO,NO> NonLinearProblem_Type;
40 typedef typename NonLinearProblem_Type::BlockMultiVectorPtrArray_Type BlockMultiVectorPtrArray_Type;
42 typedef typename NonLinearProblem_Type::TpetraMatrix_Type TpetraMatrix_Type;
44 typedef typename NonLinearProblem_Type::ThyraVecSpace_Type ThyraVecSpace_Type;
45 typedef typename NonLinearProblem_Type::ThyraVec_Type ThyraVec_Type;
46 typedef typename NonLinearProblem_Type::ThyraOp_Type ThyraOp_Type;
48 typedef typename NonLinearProblem_Type::TpetraOp_Type TpetraOp_Type;
50 typedef Tpetra::CrsMatrix<SC, LO, GO, NO> tpetra_matrix;
57 NonLinElasAssFE(
const DomainConstPtr_Type &domain, std::string FEType, ParameterListPtr_Type parameterList );
63 virtual void assemble( std::string type =
"" )
const;
65 void reAssemble(std::string type)
const;
67 virtual void reAssemble( BlockMultiVectorPtr_Type previousSolution )
const{};
69 virtual void reAssemble( MatrixPtr_Type& massmatrix, std::string type )
const;
71 virtual void reAssembleExtrapolation(BlockMultiVectorPtrArray_Type previousSolutions);
73 virtual void calculateNonLinResidualVec(std::string type,
double time=0.)
const;
75 virtual void getValuesOfInterest( vec_dbl_Type& values ){};
77 virtual void computeValuesOfInterestAndExport() {};
79 void assembleSourceTermLoadstepping(
double time=0.)
const;
81 void updateTime()
const;
83 void updateConcentration(MultiVectorConstPtr_Type concentration) {concentration_.reset(
new MultiVector_Type (concentration));};
86 Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op()
const;
88 Teuchos::RCP<Thyra::PreconditionerBase<SC> > create_W_prec()
const;
90 mutable Teuchos::RCP<TimeSteppingTools> timeSteppingTool_;
94 virtual void evalModelImpl(
95 const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
96 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs
99 mutable MultiVectorPtr_Type u_rep_;
100 MultiVectorPtr_Type concentration_;
104 double poissonRatio_;
108 bool nonlinearExternalForce_;