Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_STK_ModelEvaluatorFactory.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Panzer: A partial differential equation assembly
5// engine for strongly coupled complex multiphysics systems
6// Copyright (2011) Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Roger P. Pawlowski (rppawlo@sandia.gov) and
39// Eric C. Cyr (eccyr@sandia.gov)
40// ***********************************************************************
41// @HEADER
42
43#ifndef PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP
44#define PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP
45
46#include <iostream>
47#include <string>
48#include <map>
49
50#include "Teuchos_RCP.hpp"
51#include "Teuchos_Ptr.hpp"
52#include "Teuchos_Comm.hpp"
53#include "Teuchos_DefaultMpiComm.hpp"
54#include "Teuchos_ParameterList.hpp"
55#include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
56
57#include "PanzerAdaptersSTK_config.hpp"
68
69#include "Panzer_NodeType.hpp"
70
71#include "Thyra_EpetraModelEvaluator.hpp"
72
73#ifdef PANZER_HAVE_TEKO
74#include "Teko_RequestHandler.hpp"
75#endif
76
77namespace Piro {
78 template <typename ScalarT> class RythmosSolver;
79#ifdef PANZER_HAVE_TEMPUS
80 template <typename ScalarT> class TempusSolverForwardOnly;
81#endif
82}
83
84namespace Thyra {
85 template<typename ScalarT> class ModelEvaluator;
86 template<typename ScalarT> class LinearOpWithSolveFactoryBase;
87}
88
89namespace panzer {
90 struct GlobalData;
91 class GlobalIndexer;
92 template <typename> class LinearObjFactory;
93
94 class BlockedDOFManager;
95 class DOFManager;
96 class ConnManager;
97}
98
99namespace panzer_stk {
100
101 class STKConnManager;
102 class NOXObserverFactory;
103 class RythmosObserverFactory;
104#ifdef PANZER_HAVE_TEMPUS
105 class TempusObserverFactory;
106#endif
107 class WorksetFactory;
108
109 template<typename ScalarT>
110 class ModelEvaluatorFactory : public Teuchos::ParameterListAcceptorDefaultBase {
111
112 public:
113
116 void setParameterList(Teuchos::RCP<Teuchos::ParameterList> const& paramList);
117 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
119
128 void buildObjects(const Teuchos::RCP<const Teuchos::Comm<int> >& comm,
129 const Teuchos::RCP<panzer::GlobalData>& global_data,
130 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
131 const panzer::BCStrategyFactory & bc_factory,
133 bool meConstructionOn=true);
134
135 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > getPhysicsModelEvaluator();
136
139
140 void setNOXObserverFactory(const Teuchos::RCP<const panzer_stk::NOXObserverFactory>& nox_observer_factory);
141
142 void setRythmosObserverFactory(const Teuchos::RCP<const panzer_stk::RythmosObserverFactory>& rythmos_observer_factory);
143
144#ifdef PANZER_HAVE_TEMPUS
145 void setTempusObserverFactory(const Teuchos::RCP<const panzer_stk::TempusObserverFactory>& tempus_observer_factory);
146#endif
147
148 template <typename BuilderT>
149 int addResponse(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,const BuilderT & builder);
150
152 const bool write_graphviz_file=false,
153 const std::string& graphviz_file_prefix="");
154
155 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > getResponseOnlyModelEvaluator();
156
157 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> >
159 const Teuchos::RCP<panzer::GlobalData>& global_data,
160 const Teuchos::RCP<Piro::RythmosSolver<ScalarT> > rythmosSolver = Teuchos::null,
161#ifdef PANZER_HAVE_TEMPUS
162 const Teuchos::RCP<Piro::TempusSolverForwardOnly<ScalarT> > tempusSolver = Teuchos::null,
163#endif
164 const Teuchos::Ptr<const panzer_stk::NOXObserverFactory> & in_nox_observer_factory=Teuchos::null,
165 const Teuchos::Ptr<const panzer_stk::RythmosObserverFactory> & in_rythmos_observer_factory=Teuchos::null
166#ifdef PANZER_HAVE_TEMPUS
167 , const Teuchos::Ptr<const panzer_stk::TempusObserverFactory> & in_tempus_observer_factory=Teuchos::null
168#endif
169 );
170
172
174 void setUserWorksetFactory(Teuchos::RCP<panzer_stk::WorksetFactory>& user_wkst_factory);
175
176 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > getResponseLibrary();
177
178 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & getPhysicsBlocks() const;
179
181 Teuchos::RCP<panzer_stk::STK_Interface> getMesh() const
182 { return m_mesh; }
183
185 Teuchos::RCP<panzer::GlobalIndexer> getGlobalIndexer() const
186 { return m_global_indexer; }
187
189 Teuchos::RCP<panzer::ConnManager> getConnManager() const
190 { return m_conn_manager; }
191
193 bool isBlockedAssembly() const
194 { return m_blockedAssembly; }
195
197 Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > getLinearObjFactory() const
198 { return m_lin_obj_factory; }
199
200 bool isTransient() const
201 { return m_is_transient; }
202
206 Teuchos::RCP<Thyra::ModelEvaluator<double> >
208 const Teuchos::RCP<Teuchos::ParameterList> & physics_block_plist,
209 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
210 const panzer::BCStrategyFactory & bc_factory,
212 bool is_transient,bool is_explicit,
213 const Teuchos::Ptr<const Teuchos::ParameterList> & bc_list=Teuchos::null,
214 const Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > & physics_me=Teuchos::null) const;
215
220 panzer::WorksetContainer & wkstContainer,
221 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
224 const Teuchos::ParameterList & closure_pl,
225 const Teuchos::ParameterList & initial_cond_pl,
226 const Teuchos::ParameterList & user_data_pl,
227 bool write_dot_files,const std::string & dot_file_prefix) const;
228
233 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
234 const Teuchos::RCP<panzer::WorksetContainer> & wc,
235 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
236 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & lof,
237 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
239 const Teuchos::ParameterList & closure_model_pl,
240 const Teuchos::ParameterList & user_data_pl,
241 int workset_size) const;
242
245 Teuchos::RCP<Thyra::ModelEvaluatorDefaultBase<double> >
246 buildPhysicsModelEvaluator(bool buildThyraME,
247 const Teuchos::RCP<panzer::FieldManagerBuilder> & fmb,
248 const Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > & rLibrary,
249 const Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > & lof,
250 const std::vector<Teuchos::RCP<Teuchos::Array<std::string> > > & p_names,
251 const std::vector<Teuchos::RCP<Teuchos::Array<double> > > & p_values,
252 const Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<ScalarT> > & solverFactory,
253 const Teuchos::RCP<panzer::GlobalData> & global_data,
254 bool is_transient,double t_init) const;
255
256
258 { return useDynamicCoordinates_; }
259
265 double getInitialTime(Teuchos::ParameterList& transient_ic_params,
266 const panzer_stk::STK_Interface& mesh) const;
267
268 Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<double> >
269 buildLOWSFactory(bool blockedAssembly,
270 const Teuchos::RCP<const panzer::GlobalIndexer> & globalIndexer,
271 const Teuchos::RCP<panzer::ConnManager> & conn_manager,
272 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
273 const Teuchos::RCP<const Teuchos::MpiComm<int> > & mpi_comm
274 #ifdef PANZER_HAVE_TEKO
275 , const Teuchos::RCP<Teko::RequestHandler> & req_handler=Teuchos::null
276 #endif
277 ) const;
278
280 Teuchos::RCP<panzer::WorksetContainer> getWorksetContainer() const
281 { return m_wkstContainer; }
282
284 void addUserFieldsToMesh(panzer_stk::STK_Interface & mesh,const Teuchos::ParameterList & output_list) const;
285
287 Teuchos::RCP<STK_MeshFactory> buildSTKMeshFactory(const Teuchos::ParameterList & mesh_params) const;
288
289 void finalizeMeshConstruction(const STK_MeshFactory & mesh_factory,
290 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
291 const Teuchos::MpiComm<int> mpi_comm,
292 STK_Interface & mesh) const;
293
294 protected:
295
296 Teuchos::RCP<panzer::FieldManagerBuilder>
297 buildFieldManagerBuilder(const Teuchos::RCP<panzer::WorksetContainer> & wc,
298 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
299 const std::vector<panzer::BC> & bcs,
300 const panzer::EquationSetFactory & eqset_factory,
301 const panzer::BCStrategyFactory& bc_factory,
304 const Teuchos::ParameterList& closure_models,
306 const Teuchos::ParameterList& user_data,
307 bool writeGraph,const std::string & graphPrefix,
308 bool write_field_managers,const std::string & field_manager_prefix) const;
309
312 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > initializeSolnWriterResponseLibrary(
313 const Teuchos::RCP<panzer::WorksetContainer> & wc,
314 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
315 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & lof,
316 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh) const;
317
321 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
323 const Teuchos::ParameterList & closure_models,
324 int workset_size, Teuchos::ParameterList & user_data) const;
325
326
327 private:
328
329 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > m_physics_me;
330 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> > m_rome_me;
331
332 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> > m_response_library;
333 std::vector<Teuchos::RCP<panzer::PhysicsBlock> > m_physics_blocks;
334
335 Teuchos::RCP<panzer_stk::STK_Interface> m_mesh;
336 Teuchos::RCP<panzer::GlobalIndexer> m_global_indexer;
337 Teuchos::RCP<panzer::ConnManager> m_conn_manager;
338 Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits> > m_lin_obj_factory;
339 Teuchos::RCP<panzer::GlobalData> m_global_data;
343 Teuchos::RCP<const panzer::EquationSetFactory> m_eqset_factory;
344
345 Teuchos::RCP<const panzer_stk::NOXObserverFactory> m_nox_observer_factory;
346 Teuchos::RCP<const panzer_stk::RythmosObserverFactory> m_rythmos_observer_factory;
347#ifdef PANZER_HAVE_TEMPUS
348 Teuchos::RCP<const panzer_stk::TempusObserverFactory> m_tempus_observer_factory;
349#endif
350 Teuchos::RCP<panzer_stk::WorksetFactory> m_user_wkst_factory;
351 Teuchos::RCP<panzer::WorksetContainer> m_wkstContainer;
352
354 };
355
356template<typename ScalarT>
357template <typename BuilderT>
359addResponse(const std::string & responseName,const std::vector<panzer::WorksetDescriptor> & wkstDesc,const BuilderT & builder)
360{
361 typedef panzer::ModelEvaluator<double> PanzerME;
362
363 Teuchos::RCP<Thyra::EpetraModelEvaluator> thyra_ep_me = Teuchos::rcp_dynamic_cast<Thyra::EpetraModelEvaluator>(m_physics_me);
364 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(m_physics_me);
365
366 if(thyra_ep_me!=Teuchos::null && panzer_me==Teuchos::null) {
367 // I don't need no const-ness!
368 Teuchos::RCP<EpetraExt::ModelEvaluator> ep_me = Teuchos::rcp_const_cast<EpetraExt::ModelEvaluator>(thyra_ep_me->getEpetraModel());
369 Teuchos::RCP<panzer::ModelEvaluator_Epetra> ep_panzer_me = Teuchos::rcp_dynamic_cast<panzer::ModelEvaluator_Epetra>(ep_me);
370
371 return ep_panzer_me->addResponse(responseName,wkstDesc,builder);
372 }
373 else if(panzer_me!=Teuchos::null && thyra_ep_me==Teuchos::null) {
374 return panzer_me->addResponse(responseName,wkstDesc,builder);
375 }
376
377 TEUCHOS_ASSERT(false);
378 return -1;
379}
380
381}
382
383#endif
Class that provides access to worksets on each element block and side set.
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
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > getResponseLibrary()
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
void setRythmosObserverFactory(const Teuchos::RCP< const panzer_stk::RythmosObserverFactory > &rythmos_observer_factory)
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
Teuchos::RCP< const panzer_stk::NOXObserverFactory > m_nox_observer_factory
Teuchos::RCP< panzer_stk::STK_Interface > m_mesh
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > buildResponseOnlyModelEvaluator(const Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > &thyra_me, const Teuchos::RCP< panzer::GlobalData > &global_data, const Teuchos::RCP< Piro::RythmosSolver< ScalarT > > rythmosSolver=Teuchos::null, const Teuchos::Ptr< const panzer_stk::NOXObserverFactory > &in_nox_observer_factory=Teuchos::null, const Teuchos::Ptr< const panzer_stk::RythmosObserverFactory > &in_rythmos_observer_factory=Teuchos::null)
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
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getResponseOnlyModelEvaluator()
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< 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="")
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const &paramList)
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
void setUserWorksetFactory(Teuchos::RCP< panzer_stk::WorksetFactory > &user_wkst_factory)
Set user defined workset factory.
const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > & getPhysicsBlocks() const
std::vector< Teuchos::RCP< panzer::PhysicsBlock > > m_physics_blocks
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > m_rome_me
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getPhysicsModelEvaluator()
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< const panzer_stk::RythmosObserverFactory > m_rythmos_observer_factory
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)
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
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)
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
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.