Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
CDR_Model_Tpetra_decl.hpp
Go to the documentation of this file.
1//@HEADER
2// *****************************************************************************
3// Tempus: Time Integration and Sensitivity Analysis Package
4//
5// Copyright 2017 NTESS and the Tempus contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8//@HEADER
9
10#ifndef TEMPUS_CDR_MODEL_TPETRA_DECL_HPP
11#define TEMPUS_CDR_MODEL_TPETRA_DECL_HPP
12
13#include "Thyra_StateFuncModelEvaluatorBase.hpp"
14#include "Thyra_TpetraThyraWrappers_decl.hpp"
15
16#include <Tpetra_CrsGraph_decl.hpp>
17#include <Tpetra_Import_decl.hpp>
18#include <Tpetra_Map_decl.hpp>
19#include <Tpetra_Vector_decl.hpp>
20
21namespace Tempus_Test {
22
43template <typename SC, typename LO, typename GO, typename Node>
44class CDR_Model_Tpetra : public ::Thyra::StateFuncModelEvaluatorBase<SC> {
45 public:
46 using tpetra_map = Tpetra::Map<LO, GO, Node>;
47 using tpetra_graph = Tpetra::CrsGraph<LO, GO, Node>;
48 using tpetra_matrix = Tpetra::CrsMatrix<SC, LO, GO, Node>;
49 using tpetra_vec = Tpetra::Vector<SC, LO, GO, Node>;
51 ::Thyra::TpetraOperatorVectorExtraction<SC, LO, GO, Node>;
52
53 CDR_Model_Tpetra(const Teuchos::RCP<const Teuchos::Comm<int>> &comm,
54 const GO numGlobalElements, const SC zMin, const SC zMax,
55 const SC a, // convection
56 const SC k); // source
57
60
61 void set_x0(const Teuchos::ArrayView<const SC> &x0);
62
63 void setShowGetInvalidArgs(bool showGetInvalidArg);
64
65 void set_W_factory(
66 const Teuchos::RCP<const ::Thyra::LinearOpWithSolveFactoryBase<SC>>
67 &W_factory);
68
70
73
74 Teuchos::RCP<const ::Thyra::VectorSpaceBase<SC>> get_x_space() const;
75 Teuchos::RCP<const ::Thyra::VectorSpaceBase<SC>> get_f_space() const;
76 ::Thyra::ModelEvaluatorBase::InArgs<SC> getNominalValues() const;
77 Teuchos::RCP<Thyra::LinearOpWithSolveBase<double>> create_W() const;
78 Teuchos::RCP<::Thyra::LinearOpBase<SC>> create_W_op() const;
79 Teuchos::RCP<const ::Thyra::LinearOpWithSolveFactoryBase<SC>> get_W_factory()
80 const;
81 ::Thyra::ModelEvaluatorBase::InArgs<SC> createInArgs() const;
82 Teuchos::RCP<::Thyra::PreconditionerBase<SC>> create_W_prec() const;
84
85 private:
87 virtual Teuchos::RCP<const Tpetra::CrsGraph<LO, GO, Node>> createGraph();
88
91
92 ::Thyra::ModelEvaluatorBase::OutArgs<SC> createOutArgsImpl() const;
93 void evalModelImpl(
94 const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
95 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs) const;
96
98
99 private: // data members
100 const Teuchos::RCP<const Teuchos::Comm<int>> comm_;
102 const SC zMin_;
103 const SC zMax_;
104 const SC a_;
105 const SC k_;
106
107 Teuchos::RCP<const ::Thyra::VectorSpaceBase<SC>> xSpace_;
108 Teuchos::RCP<const tpetra_map> xOwnedMap_;
109 Teuchos::RCP<const tpetra_map> xGhostedMap_;
110 Teuchos::RCP<const Tpetra::Import<LO, GO, Node>> importer_;
111
112 Teuchos::RCP<const ::Thyra::VectorSpaceBase<SC>> fSpace_;
113 Teuchos::RCP<const tpetra_map> fOwnedMap_;
114
115 Teuchos::RCP<const tpetra_graph> wGraph_;
116
117 Teuchos::RCP<const ::Thyra::LinearOpWithSolveFactoryBase<SC>> wFactory_;
118
119 Teuchos::RCP<tpetra_vec> nodeCoordinates_;
120 Teuchos::RCP<tpetra_vec> GhostedNodeCoordinates_;
121
122 mutable Teuchos::RCP<tpetra_vec> uPtr_;
123 mutable Teuchos::RCP<tpetra_vec> uDotPtr_;
124 mutable Teuchos::RCP<tpetra_vec> xPtr_;
125
126 mutable Teuchos::RCP<tpetra_vec> jDiag_;
127
128 ::Thyra::ModelEvaluatorBase::InArgs<SC> nominalValues_;
129 Teuchos::RCP<::Thyra::VectorBase<SC>> x0_;
130 Teuchos::Array<SC> p_;
132 ::Thyra::ModelEvaluatorBase::InArgs<SC> prototypeInArgs_;
133 ::Thyra::ModelEvaluatorBase::OutArgs<SC> prototypeOutArgs_;
134};
135
136} // namespace Tempus_Test
137
138#endif // TEMPUS_CDR_MODEL_TPETRA_DECL_HPP
1D CGFEM model for convection/diffusion/reaction
Teuchos::RCP< Thyra::LinearOpWithSolveBase< double > > create_W() const
Tpetra::CrsGraph< LO, GO, Node > tpetra_graph
Teuchos::RCP< const ::Thyra::VectorSpaceBase< SC > > get_x_space() const
Teuchos::RCP< tpetra_vec > GhostedNodeCoordinates_
void set_x0(const Teuchos::ArrayView< const SC > &x0)
Teuchos::RCP< const tpetra_map > xGhostedMap_
Teuchos::RCP< const ::Thyra::VectorSpaceBase< SC > > get_f_space() const
Teuchos::RCP< const ::Thyra::LinearOpWithSolveFactoryBase< SC > > wFactory_
::Thyra::TpetraOperatorVectorExtraction< SC, LO, GO, Node > tpetra_extract
Teuchos::RCP< const tpetra_map > fOwnedMap_
virtual Teuchos::RCP< const Tpetra::CrsGraph< LO, GO, Node > > createGraph()
Teuchos::RCP<::Thyra::VectorBase< SC > > x0_
Teuchos::RCP< const tpetra_map > xOwnedMap_
Teuchos::RCP< const ::Thyra::VectorSpaceBase< SC > > fSpace_
void set_W_factory(const Teuchos::RCP< const ::Thyra::LinearOpWithSolveFactoryBase< SC > > &W_factory)
Tpetra::CrsMatrix< SC, LO, GO, Node > tpetra_matrix
::Thyra::ModelEvaluatorBase::InArgs< SC > getNominalValues() const
Teuchos::RCP< tpetra_vec > uDotPtr_
Teuchos::RCP< const tpetra_graph > wGraph_
Teuchos::RCP<::Thyra::PreconditionerBase< SC > > create_W_prec() const
const Teuchos::RCP< const Teuchos::Comm< int > > comm_
void evalModelImpl(const ::Thyra::ModelEvaluatorBase::InArgs< SC > &inArgs, const ::Thyra::ModelEvaluatorBase::OutArgs< SC > &outArgs) const
Teuchos::RCP< tpetra_vec > nodeCoordinates_
Tpetra::Vector< SC, LO, GO, Node > tpetra_vec
void setShowGetInvalidArgs(bool showGetInvalidArg)
::Thyra::ModelEvaluatorBase::InArgs< SC > nominalValues_
Teuchos::RCP<::Thyra::LinearOpBase< SC > > create_W_op() const
::Thyra::ModelEvaluatorBase::InArgs< SC > createInArgs() const
Teuchos::RCP< const ::Thyra::VectorSpaceBase< SC > > xSpace_
::Thyra::ModelEvaluatorBase::OutArgs< SC > prototypeOutArgs_
Teuchos::RCP< const Tpetra::Import< LO, GO, Node > > importer_
Teuchos::RCP< tpetra_vec > jDiag_
Tpetra::Map< LO, GO, Node > tpetra_map
::Thyra::ModelEvaluatorBase::InArgs< SC > prototypeInArgs_
Teuchos::RCP< const ::Thyra::LinearOpWithSolveFactoryBase< SC > > get_W_factory() const
::Thyra::ModelEvaluatorBase::OutArgs< SC > createOutArgsImpl() const