Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_STK_ModelEvaluatorFactory.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Panzer: A partial differential equation assembly
4// engine for strongly coupled complex multiphysics systems
5//
6// Copyright 2011 NTESS and the Panzer contributors.
7// SPDX-License-Identifier: BSD-3-Clause
8// *****************************************************************************
9// @HEADER
10
11#ifndef PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP
12#define PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP
13
14#include <iostream>
15#include <string>
16#include <map>
17
18#include "Teuchos_RCP.hpp"
19#include "Teuchos_Ptr.hpp"
20#include "Teuchos_Comm.hpp"
21#include "Teuchos_DefaultMpiComm.hpp"
22#include "Teuchos_ParameterList.hpp"
23#include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
24
25#include "PanzerAdaptersSTK_config.hpp"
35
36#include "Panzer_NodeType.hpp"
37
38#ifdef PANZER_HAVE_EPETRA_STACK
40#include "Thyra_EpetraModelEvaluator.hpp"
41#endif
42
43#ifdef PANZER_HAVE_TEKO
44#include "Teko_RequestHandler.hpp"
45#endif
46
47namespace Piro {
48#ifdef PANZER_HAVE_TEMPUS
49 template <typename ScalarT> class TempusSolverForwardOnly;
50#endif
51}
52
53namespace Thyra {
54 template<typename ScalarT> class ModelEvaluator;
55 template<typename ScalarT> class LinearOpWithSolveFactoryBase;
56}
57
58namespace panzer {
59 struct GlobalData;
60 class GlobalIndexer;
61 template <typename> class LinearObjFactory;
62
64 class DOFManager;
65 class ConnManager;
66}
67
68namespace panzer_stk {
69
70 class STKConnManager;
72#ifdef PANZER_HAVE_TEMPUS
74#endif
75 class WorksetFactory;
76
77 template<typename ScalarT>
78 class ModelEvaluatorFactory : public Teuchos::ParameterListAcceptorDefaultBase {
79
80 public:
81
84
85 void setParameterList(Teuchos::RCP<Teuchos::ParameterList> const& paramList);
87 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
89
97 void setStratimikosList(const Teuchos::RCP<Teuchos::ParameterList>& paramList);
98
106 void buildObjects(const Teuchos::RCP<const Teuchos::Comm<int> >& comm,
107 const Teuchos::RCP<panzer::GlobalData>& global_data,
108 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
109 const panzer::BCStrategyFactory & bc_factory,
111 bool meConstructionOn=true);
112
114 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > getPhysicsModelEvaluator();
115
118
120 void setNOXObserverFactory(const Teuchos::RCP<const panzer_stk::NOXObserverFactory>& nox_observer_factory);
121
122#ifdef PANZER_HAVE_TEMPUS
124 void setTempusObserverFactory(const Teuchos::RCP<const panzer_stk::TempusObserverFactory>& tempus_observer_factory);
125#endif
126
128 template <typename BuilderT>
129 int addResponse(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,const BuilderT & builder);
130
133 template <typename BuilderT>
134 int addResponseWithDerivatives(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,BuilderT & builder);
135
138 const bool write_graphviz_file=false,
139 const std::string& graphviz_file_prefix="");
140
142 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > getResponseOnlyModelEvaluator();
143
145 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> >
147 const Teuchos::RCP<panzer::GlobalData>& global_data,
148#ifdef PANZER_HAVE_TEMPUS
149 const Teuchos::RCP<Piro::TempusSolverForwardOnly<ScalarT> > tempusSolver = Teuchos::null,
150#endif
151 const Teuchos::Ptr<const panzer_stk::NOXObserverFactory> & in_nox_observer_factory=Teuchos::null
152#ifdef PANZER_HAVE_TEMPUS
153 , const Teuchos::Ptr<const panzer_stk::TempusObserverFactory> & in_tempus_observer_factory=Teuchos::null
154#endif
155 );
156
158
160 void setUserWorksetFactory(Teuchos::RCP<panzer_stk::WorksetFactory>& user_wkst_factory);
161
163 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > getResponseLibrary();
164
166 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & getPhysicsBlocks() const;
167
169 Teuchos::RCP<panzer_stk::STK_Interface> getMesh() const
170 { return m_mesh; }
171
173 Teuchos::RCP<panzer::GlobalIndexer> getGlobalIndexer() const
174 { return m_global_indexer; }
175
177 Teuchos::RCP<panzer::ConnManager> getConnManager() const
178 { return m_conn_manager; }
179
181 bool isBlockedAssembly() const
182 { return m_blockedAssembly; }
183
185 Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > getLinearObjFactory() const
186 { return m_lin_obj_factory; }
187
189 bool isTransient() const
190 { return m_is_transient; }
191
195 Teuchos::RCP<Thyra::ModelEvaluator<double> >
197 const Teuchos::RCP<Teuchos::ParameterList> & physics_block_plist,
198 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
199 const panzer::BCStrategyFactory & bc_factory,
201 bool is_transient,bool is_explicit,
202 const Teuchos::Ptr<const Teuchos::ParameterList> & bc_list=Teuchos::null,
203 const Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > & physics_me=Teuchos::null) const;
204
209 panzer::WorksetContainer & wkstContainer,
210 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
213 const Teuchos::ParameterList & closure_pl,
214 const Teuchos::ParameterList & initial_cond_pl,
215 const Teuchos::ParameterList & user_data_pl,
216 bool write_dot_files,const std::string & dot_file_prefix) const;
217
222 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
223 const Teuchos::RCP<panzer::WorksetContainer> & wc,
224 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
225 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & lof,
226 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
228 const Teuchos::ParameterList & closure_model_pl,
229 const Teuchos::ParameterList & user_data_pl,
230 int workset_size) const;
231
234 Teuchos::RCP<Thyra::ModelEvaluatorDefaultBase<double> >
235 buildPhysicsModelEvaluator(bool buildThyraME,
236 const Teuchos::RCP<panzer::FieldManagerBuilder> & fmb,
237 const Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > & rLibrary,
238 const Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > & lof,
239 const std::vector<Teuchos::RCP<Teuchos::Array<std::string> > > & p_names,
240 const std::vector<Teuchos::RCP<Teuchos::Array<double> > > & p_values,
241 const Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<ScalarT> > & solverFactory,
242 const Teuchos::RCP<panzer::GlobalData> & global_data,
243 bool is_transient,double t_init) const;
244
245
248 { return useDynamicCoordinates_; }
249
255 double getInitialTime(Teuchos::ParameterList& transient_ic_params,
256 const panzer_stk::STK_Interface& mesh) const;
257
259 Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<double> >
260 buildLOWSFactory(bool blockedAssembly,
261 const Teuchos::RCP<const panzer::GlobalIndexer> & globalIndexer,
262 const Teuchos::RCP<panzer::ConnManager> & conn_manager,
263 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
264 const Teuchos::RCP<const Teuchos::MpiComm<int> > & mpi_comm
265 #ifdef PANZER_HAVE_TEKO
266 , const Teuchos::RCP<Teko::RequestHandler> & req_handler=Teuchos::null
267 #endif
268 ) const;
269
271 Teuchos::RCP<panzer::WorksetContainer> getWorksetContainer() const
272 { return m_wkstContainer; }
273
275 void addUserFieldsToMesh(panzer_stk::STK_Interface & mesh,const Teuchos::ParameterList & output_list) const;
276
278 Teuchos::RCP<STK_MeshFactory> buildSTKMeshFactory(const Teuchos::ParameterList & mesh_params) const;
279
281 void finalizeMeshConstruction(const STK_MeshFactory & mesh_factory,
282 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
283 const Teuchos::MpiComm<int> mpi_comm,
284 STK_Interface & mesh) const;
285
286 protected:
287
289 Teuchos::RCP<panzer::FieldManagerBuilder>
290 buildFieldManagerBuilder(const Teuchos::RCP<panzer::WorksetContainer> & wc,
291 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
292 const std::vector<panzer::BC> & bcs,
293 const panzer::EquationSetFactory & eqset_factory,
294 const panzer::BCStrategyFactory& bc_factory,
297 const Teuchos::ParameterList& closure_models,
299 const Teuchos::ParameterList& user_data,
300 bool writeGraph,const std::string & graphPrefix,
301 bool write_field_managers,const std::string & field_manager_prefix) const;
302
305 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > initializeSolnWriterResponseLibrary(
306 const Teuchos::RCP<panzer::WorksetContainer> & wc,
307 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
308 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & lof,
309 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh) const;
310
314 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
316 const Teuchos::ParameterList & closure_models,
317 int workset_size, Teuchos::ParameterList & user_data) const;
318
320 void registerMeshWithClosureModelFactories(const Teuchos::RCP<panzer_stk::STK_Interface>& mesh,
322 private:
323
324 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > m_physics_me;
325 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > m_rome_me;
326
327 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > m_response_library;
328 std::vector<Teuchos::RCP<panzer::PhysicsBlock> > m_physics_blocks;
329
330 Teuchos::RCP<panzer_stk::STK_Interface> m_mesh;
331 Teuchos::RCP<panzer::GlobalIndexer> m_global_indexer;
332 Teuchos::RCP<panzer::ConnManager> m_conn_manager;
333 Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > m_lin_obj_factory;
334 Teuchos::RCP<panzer::GlobalData> m_global_data;
338 Teuchos::RCP<const panzer::EquationSetFactory> m_eqset_factory;
339
340 Teuchos::RCP<const panzer_stk::NOXObserverFactory> m_nox_observer_factory;
341#ifdef PANZER_HAVE_TEMPUS
342 Teuchos::RCP<const panzer_stk::TempusObserverFactory> m_tempus_observer_factory;
343#endif
344 Teuchos::RCP<panzer_stk::WorksetFactory> m_user_wkst_factory;
345 Teuchos::RCP<panzer::WorksetContainer> m_wkstContainer;
346
348 Teuchos::RCP<Teuchos::ParameterList> m_stratimikos_params;
349 };
350
351template<typename ScalarT>
352template <typename BuilderT>
354addResponse(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,const BuilderT & builder)
355{
356 typedef panzer::ModelEvaluator<double> PanzerME;
357
358#ifdef PANZER_HAVE_EPETRA_STACK
359 Teuchos::RCP<Thyra::EpetraModelEvaluator> thyra_ep_me = Teuchos::rcp_dynamic_cast<Thyra::EpetraModelEvaluator>(m_physics_me);
360 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(m_physics_me);
361
362 if(thyra_ep_me!=Teuchos::null && panzer_me==Teuchos::null) {
363 // I don't need no const-ness!
364 Teuchos::RCP<EpetraExt::ModelEvaluator> ep_me = Teuchos::rcp_const_cast<EpetraExt::ModelEvaluator>(thyra_ep_me->getEpetraModel());
365 Teuchos::RCP<panzer::ModelEvaluator_Epetra> ep_panzer_me = Teuchos::rcp_dynamic_cast<panzer::ModelEvaluator_Epetra>(ep_me);
366
367 return ep_panzer_me->addResponse(responseName,wkstDesc,builder);
368 }
369 else if(panzer_me!=Teuchos::null && thyra_ep_me==Teuchos::null) {
370 return panzer_me->addResponse(responseName,wkstDesc,builder);
371 }
372#else
373 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(m_physics_me);
374 if(panzer_me!=Teuchos::null) {
375 return panzer_me->addResponse(responseName,wkstDesc,builder);
376 }
377#endif
378
379 TEUCHOS_ASSERT(false);
380 return -1;
381}
382
383template<typename ScalarT>
384template <typename BuilderT>
386addResponseWithDerivatives(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,BuilderT & builder)
387{
388 typedef panzer::ModelEvaluator<double> PanzerME;
389
390 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(m_physics_me);
391 if(panzer_me!=Teuchos::null) {
392 return panzer_me->addFlexibleResponse(responseName,wkstDesc,Teuchos::rcpFromRef(builder));
393 }
394
395 TEUCHOS_ASSERT(false);
396 return -1;
397}
398
399}
400
401#endif
A PHX::TemplateManager holding one panzer::ClosureModelFactory<EvalT> per evaluation type in Traits::...
Pure virtual base class for supplying mesh connectivity information to the DOF Manager.
Class that provides access to worksets on each element block and side set.
bool isTransient() const
Returns true if this a transient problem.
Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< double > > buildLOWSFactory(bool blockedAssembly, const Teuchos::RCP< const panzer::GlobalIndexer > &globalIndexer, const Teuchos::RCP< panzer::ConnManager > &conn_manager, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh, const Teuchos::RCP< const Teuchos::MpiComm< int > > &mpi_comm) const
Builds a Thyra LOWS (linear-op-with-solve) factory from this object's Stratimikos parameter list,...
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > getResponseLibrary()
Returns the response library used to build and evaluate registered responses.
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > initializeSolnWriterResponseLibrary(const Teuchos::RCP< panzer::WorksetContainer > &wc, const Teuchos::RCP< const panzer::GlobalIndexer > &ugi, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh) const
Builds a response library configured to write the solution out to the STK mesh.
void registerMeshWithClosureModelFactories(const Teuchos::RCP< panzer_stk::STK_Interface > &mesh, panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &user_cm_factory)
Registers the given mesh with a closure model factory template manager, e.g. so its closure models ca...
Teuchos::RCP< panzer_stk::WorksetFactory > m_user_wkst_factory
Teuchos::RCP< panzer::FieldManagerBuilder > buildFieldManagerBuilder(const Teuchos::RCP< panzer::WorksetContainer > &wc, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const std::vector< panzer::BC > &bcs, const panzer::EquationSetFactory &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &volume_cm_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &bc_cm_factory, const Teuchos::ParameterList &closure_models, const panzer::LinearObjFactory< panzer::Traits > &lo_factory, const Teuchos::ParameterList &user_data, bool writeGraph, const std::string &graphPrefix, bool write_field_managers, const std::string &field_manager_prefix) const
Builds the field manager builder used to register and evaluate the physics/BC/closure-model evaluator...
Teuchos::RCP< const panzer_stk::NOXObserverFactory > m_nox_observer_factory
Teuchos::RCP< panzer_stk::STK_Interface > m_mesh
double getInitialTime(Teuchos::ParameterList &transient_ic_params, const panzer_stk::STK_Interface &mesh) const
Gets the initial time from either the input parameter list or an exodus file.
void finalizeMeshConstruction(const STK_MeshFactory &mesh_factory, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const Teuchos::MpiComm< int > mpi_comm, STK_Interface &mesh) const
Commits the mesh's meta data, builds its bulk data, and writes it out if requested,...
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getResponseOnlyModelEvaluator()
Returns the response-only model evaluator built by buildResponseOnlyModelEvaluator().
void buildObjects(const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< panzer::GlobalData > &global_data, const Teuchos::RCP< const panzer::EquationSetFactory > &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, bool meConstructionOn=true)
Builds the model evaluators for a panzer assembly.
void addUserFieldsToMesh(panzer_stk::STK_Interface &mesh, const Teuchos::ParameterList &output_list) const
Add the user fields specified by output_list to the mesh.
Teuchos::RCP< panzer::GlobalIndexer > getGlobalIndexer() const
Get global indexer used to build model evaluator.
Teuchos::RCP< const panzer::EquationSetFactory > m_eqset_factory
Teuchos::RCP< Thyra::ModelEvaluator< double > > cloneWithNewPhysicsBlocks(const Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< ScalarT > > &solverFactory, const Teuchos::RCP< Teuchos::ParameterList > &physics_block_plist, const Teuchos::RCP< const panzer::EquationSetFactory > &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &user_cm_factory, bool is_transient, bool is_explicit, const Teuchos::Ptr< const Teuchos::ParameterList > &bc_list=Teuchos::null, const Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > &physics_me=Teuchos::null) const
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > m_response_library
Teuchos::RCP< panzer::WorksetContainer > getWorksetContainer() const
Get the workset container associated with the mesh database.
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > buildResponseOnlyModelEvaluator(const Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > &thyra_me, const Teuchos::RCP< panzer::GlobalData > &global_data, const Teuchos::Ptr< const panzer_stk::NOXObserverFactory > &in_nox_observer_factory=Teuchos::null)
Wraps the given physics model evaluator with a solver (e.g. NOX/Tempus), exposing only the registered...
Teuchos::RCP< panzer::ConnManager > m_conn_manager
void buildResponses(const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
Builds and registers the evaluators for all responses added via addResponse().
int addResponseWithDerivatives(const std::string &responseName, const std::vector< panzer::WorksetDescriptor > &wkstDesc, BuilderT &builder)
Add a response along with support for state and parameter derivatives and , respectively.
void setStratimikosList(const Teuchos::RCP< Teuchos::ParameterList > &paramList)
Set the Stratimikos Linear Solver sublist used to create the LinearOpWithSolve factory.
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const &paramList)
Sets and validates the top-level parameter list describing the physics, mesh, and solver setup.
bool isBlockedAssembly() const
Returns true if assembly is blocked.
void setupInitialConditions(Thyra::ModelEvaluator< ScalarT > &model, panzer::WorksetContainer &wkstContainer, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const panzer::LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &closure_pl, const Teuchos::ParameterList &initial_cond_pl, const Teuchos::ParameterList &user_data_pl, bool write_dot_files, const std::string &dot_file_prefix) const
Setup the initial conditions in a model evaluator. Note that this is entirely self contained.
Teuchos::RCP< panzer::WorksetContainer > m_wkstContainer
bool useDynamicCoordinates() const
Should coordinates be recomputed dynamically (e.g. for a moving mesh) rather than cached once?
void setUserWorksetFactory(Teuchos::RCP< panzer_stk::WorksetFactory > &user_wkst_factory)
Set user defined workset factory.
const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > & getPhysicsBlocks() const
Returns the physics blocks built by buildObjects().
std::vector< Teuchos::RCP< panzer::PhysicsBlock > > m_physics_blocks
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > m_rome_me
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getPhysicsModelEvaluator()
Returns the physics model evaluator built by buildObjects().
Teuchos::RCP< Teuchos::ParameterList > m_stratimikos_params
Teuchos::RCP< panzer_stk::STK_Interface > getMesh() const
Get mesh object used to build model evaluator.
Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > m_lin_obj_factory
Teuchos::RCP< panzer::GlobalIndexer > m_global_indexer
Teuchos::RCP< panzer::GlobalData > m_global_data
Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > getLinearObjFactory() const
Get linear object factory used to build model evaluator.
Teuchos::RCP< STK_MeshFactory > buildSTKMeshFactory(const Teuchos::ParameterList &mesh_params) const
build STK mesh factory from a mesh parameter list
void setNOXObserverFactory(const Teuchos::RCP< const panzer_stk::NOXObserverFactory > &nox_observer_factory)
Sets the factory used to build a NOX observer for the solver built by buildResponseOnlyModelEvaluator...
void finalizeSolnWriterResponseLibrary(panzer::ResponseLibrary< panzer::Traits > &rl, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, int workset_size, Teuchos::ParameterList &user_data) const
Builds and registers the evaluators needed by a solution-writer response library built with initializ...
Teuchos::RCP< Thyra::ModelEvaluatorDefaultBase< double > > buildPhysicsModelEvaluator(bool buildThyraME, const Teuchos::RCP< panzer::FieldManagerBuilder > &fmb, const Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > &rLibrary, const Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > &lof, const std::vector< Teuchos::RCP< Teuchos::Array< std::string > > > &p_names, const std::vector< Teuchos::RCP< Teuchos::Array< double > > > &p_values, const Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< ScalarT > > &solverFactory, const Teuchos::RCP< panzer::GlobalData > &global_data, bool is_transient, double t_init) const
Teuchos::RCP< panzer::ConnManager > getConnManager() const
Get connection manager.
int addResponse(const std::string &responseName, const std::vector< panzer::WorksetDescriptor > &wkstDesc, const BuilderT &builder)
Registers a response to be built by buildResponses(), using the given response evaluator factory buil...
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
Returns the valid parameters (with defaults) for the top-level parameter list.
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > m_physics_me
void writeInitialConditions(const Thyra::ModelEvaluator< ScalarT > &model, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const Teuchos::RCP< panzer::WorksetContainer > &wc, const Teuchos::RCP< const panzer::GlobalIndexer > &ugi, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_model_pl, const Teuchos::ParameterList &user_data_pl, int workset_size) const
Write the initial conditions to exodus. Note that this is entirely self contained.
Abstract factory for building a NOX::Observer that has access to the STK mesh, DOF manager,...
A panzer::ConnManager implementation backed by an STK mesh, mapping local element IDs to global mesh-...
Abstract factory for building a Tempus integrator observer that has access to the STK mesh,...
Interface for constructing a BCStrategy_TemplateManager.
Allocates and initializes an equation set template manager.
Struct for global data to be stored.