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
63 class BlockedDOFManager;
64 class DOFManager;
65 class ConnManager;
66}
67
68namespace panzer_stk {
69
70 class STKConnManager;
71 class NOXObserverFactory;
72#ifdef PANZER_HAVE_TEMPUS
73 class TempusObserverFactory;
74#endif
75 class WorksetFactory;
76
77 template<typename ScalarT>
78 class ModelEvaluatorFactory : public Teuchos::ParameterListAcceptorDefaultBase {
79
80 public:
81
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::...
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.
Interface for constructing a BCStrategy_TemplateManager.
Allocates and initializes an equation set template manager.