11#ifndef PANZER_MODEL_EVALUATOR_DECL_HPP
12#define PANZER_MODEL_EVALUATOR_DECL_HPP
14#include "PanzerDiscFE_config.hpp"
24#include "Teuchos_RCP.hpp"
25#include "Teuchos_AbstractFactory.hpp"
27#include "Thyra_VectorBase.hpp"
28#include "Thyra_VectorSpaceBase.hpp"
29#include "Thyra_StateFuncModelEvaluatorBase.hpp"
30#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
36class FieldManagerBuilder;
37template<
typename>
class LinearObjFactory;
40template<
typename Scalar>
42 :
public Thyra::StateFuncModelEvaluatorBase<Scalar>
51 ModelEvaluator(
const Teuchos::RCP<panzer::FieldManagerBuilder>& fmb,
54 const std::vector<Teuchos::RCP<Teuchos::Array<std::string> > >& p_names,
55 const std::vector<Teuchos::RCP<Teuchos::Array<double> > >& p_values,
57 const Teuchos::RCP<panzer::GlobalData>& global_data,
58 bool build_transient_support,
double t_init);
62 const Teuchos::RCP<panzer::GlobalData>& global_data,
63 bool build_transient_support,
double t_init);
74 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
get_x_space()
const override;
77 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
get_f_space()
const override;
80 Teuchos::RCP<const Teuchos::Array<std::string> >
get_p_names(
int i)
const override;
83 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
get_p_space(
int i)
const override;
86 Teuchos::ArrayView<const std::string>
get_g_names(
int i)
const override;
92 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
get_g_space(
int i)
const override;
95 Teuchos::RCP<Thyra::LinearOpBase<Scalar> >
create_W_op()
const override;
98 Teuchos::RCP<const Thyra::LinearOpWithSolveFactoryBase<Scalar> >
get_W_factory()
const override;
101 Teuchos::RCP<Thyra::LinearOpBase<Scalar> >
create_DfDp_op(
int i)
const override;
104 Thyra::ModelEvaluatorBase::InArgs<Scalar>
createInArgs()
const override;
106 Thyra::ModelEvaluatorBase::InArgs<Scalar>
getNominalValues()
const override;
114 template<
typename EvalT>
117 ae_tm_.template disableType<EvalT>();
118 auto idx = Sacado::mpl::find<panzer::Traits::EvalTypes,EvalT>::value;
134 void setupModel(
const Teuchos::RCP<panzer::WorksetContainer> & wc,
135 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
136 const std::vector<panzer::BC> & bcs,
141 const Teuchos::ParameterList& closure_models,
142 const Teuchos::ParameterList& user_data,
143 bool writeGraph=
false,
const std::string & graphPrefix=
"",
144 const Teuchos::ParameterList& me_params = Teuchos::ParameterList());
157 int addParameter(
const std::string & name,
const Scalar & initial);
169 int addParameter(
const Teuchos::Array<std::string> & names,
170 const Teuchos::Array<Scalar> & initialValues);
190 const Teuchos::RCP<GlobalEvaluationData> & ged,
192 const Teuchos::RCP<const GlobalIndexer> & ugi=Teuchos::null);
203 const Teuchos::RCP<GlobalEvaluationData> & ged);
207 const std::string & name,
208 const Teuchos::RCP<GlobalEvaluationData> & ged);
227 const std::vector<WorksetDescriptor> & wkst_desc,
228 const Teuchos::RCP<ResponseMESupportBuilderBase> & builder);
245 template <
typename ResponseEvaluatorFactory_BuilderT>
247 const std::vector<WorksetDescriptor> & wkst_desc,
248 const ResponseEvaluatorFactory_BuilderT & builder);
254 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
257 const Teuchos::ParameterList& closure_models,
258 const Teuchos::ParameterList& user_data,
259 const bool write_graphviz_file=
false,
260 const std::string& graphviz_file_prefix=
"")
261 {
responseLibrary_->buildResponseEvaluators(physicsBlocks,eqset_factory,cm_factory,closure_models,user_data,write_graphviz_file,graphviz_file_prefix);
264 this->resetDefaultBase();
266 typedef Thyra::ModelEvaluatorBase MEB;
267 MEB::OutArgsSetup<Scalar> outArgs;
268 outArgs.setModelEvalDescription(this->description());
270 outArgs.setSupports(MEB::OUT_ARG_f);
271 outArgs.setSupports(MEB::OUT_ARG_W_op);
278 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
280 const Teuchos::ParameterList& closure_models,
281 const Teuchos::ParameterList& user_data,
282 const bool write_graphviz_file=
false,
283 const std::string& graphviz_file_prefix=
"")
284 {
responseLibrary_->buildResponseEvaluators(physicsBlocks,cm_factory,closure_models,user_data,write_graphviz_file,graphviz_file_prefix);
287 this->resetDefaultBase();
289 typedef Thyra::ModelEvaluatorBase MEB;
290 MEB::OutArgsSetup<Scalar> outArgs;
291 outArgs.setModelEvalDescription(this->description());
293 outArgs.setSupports(MEB::OUT_ARG_f);
294 outArgs.setSupports(MEB::OUT_ARG_W_op);
303 const Teuchos::RCP<panzer::WorksetContainer> & wc,
304 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
305 const std::vector<panzer::BC> & bcs,
309 const Teuchos::ParameterList& closure_models,
310 const Teuchos::ParameterList& user_data,
311 const bool write_graphviz_file=
false,
312 const std::string& graphviz_file_prefix=
"");
321 const Teuchos::RCP<panzer::WorksetContainer> & wc,
322 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
323 const std::vector<panzer::BC> & bcs,
327 const Teuchos::ParameterList& closure_models,
328 const Teuchos::ParameterList& user_data,
329 const bool write_graphviz_file=
false,
330 const std::string& graphviz_file_prefix=
"");
371 for (
int i=0; i<index; i++) {
382 for (
int i=0; i<index; i++) {
403 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
417 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
431 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
445 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
456 void evalModel_D2fDx2(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
469 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
482 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
495 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
508 virtual void evalModelImpl(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
509 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const override;
515 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
519 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
527 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
535 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
543 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
551 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
559 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
567 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
570 bool required_basic_g(
const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
591 void setParameters(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs)
const;
600 Teuchos::RCP<Teuchos::Array<std::string> >
names;
601 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
space;
606 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> >
dfdp_rl;
608 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> >
dgdp_rl;
617 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
space;
620 Teuchos::RCP<ResponseMESupportBuilderBase>
builder;
628 bool operator()(
const Teuchos::RCP<ResponseObject> & ro) {
return name==ro->name; }
633 const Teuchos::Array<Scalar> & in_values)
const;
637 const Teuchos::RCP<const GlobalIndexer> & ugi)
const;
641 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
x_space_;
642 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
f_space_;
668 Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> >
lof_;
670 mutable Teuchos::RCP<ReadOnlyVector_GlobalEvaluationData>
xContainer_;
691template<
typename Scalar>
692template <
typename ResponseEvaluatorFactory_BuilderT>
695 const std::vector<WorksetDescriptor> & wkst_desc,
696 const ResponseEvaluatorFactory_BuilderT & builder)
702 TEUCHOS_TEST_FOR_EXCEPTION(responseLibrary_->responseEvaluatorsBuilt(),std::logic_error,
703 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
704 "cannot be added to the model evaluator because evalModel has already been called!");
707 responseLibrary_->addResponse(responseName,wkst_desc,builder);
710 TEUCHOS_TEST_FOR_EXCEPTION(std::find_if(responses_.begin(),responses_.end(),
typename ResponseObject::SearchName(responseName))!=responses_.end(),
712 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
713 "has already been added to the model evaluator!");
721 Teuchos::RCP<panzer::ResponseBase> respBase = responseLibrary_->getResponse<
panzer::Traits::Residual>(responseName);
722 TEUCHOS_TEST_FOR_EXCEPTION(respBase==Teuchos::null,std::logic_error,
723 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
724 "has no residual type! Not sure what is going on!");
727 Teuchos::RCP<panzer::ResponseMESupportBase<panzer::Traits::Residual> > resp =
728 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<panzer::Traits::Residual> >(respBase);
729 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
730 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
731 "resulted in bad cast to panzer::ResponseMESupportBase, the type of the response is incompatible!");
734 Teuchos::RCP<const Thyra::VectorSpaceBase<double> > vs = resp->getVectorSpace();
735 respObject->space = vs;
738 resp->setVector(Thyra::createMember(vs));
742 Teuchos::RCP<panzer::ResponseBase> respJacBase = responseLibrary_->getResponse<
panzer::Traits::Jacobian>(responseName);
743 if(respJacBase!=Teuchos::null) {
747 Teuchos::RCP<panzer::ResponseMESupportBase<RespEvalT> > resp =
748 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<RespEvalT> >(respJacBase);
749 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
750 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
751 "\" resulted in bad cast to panzer::ResponseMESupportBase<Jacobian>, the type "
752 "of the response is incompatible!");
755 if(resp->supportsDerivative())
756 resp->setDerivative(resp->buildDerivative());
759#ifdef Panzer_BUILD_HESSIAN_SUPPORT
761 Teuchos::RCP<panzer::ResponseBase> respHesBase = responseLibrary_->getResponse<
panzer::Traits::Hessian>(responseName);
762 if(respHesBase!=Teuchos::null) {
766 Teuchos::RCP<panzer::ResponseMESupportBase<RespEvalT> > resp =
767 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<RespEvalT> >(respHesBase);
768 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
769 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
770 "\" resulted in bad cast to panzer::ResponseMESupportBase<Hessian>, the type "
771 "of the response is incompatible!");
774 if(resp->supportsDerivative())
775 resp->setDerivative(resp->buildDerivative());
779 respObject->name = responseName;
780 respObject->wkst_desc = wkst_desc;
782 responses_.push_back(respObject);
784 require_in_args_refresh_ =
true;
785 require_out_args_refresh_ =
true;
786 this->resetDefaultBase();
788 return responses_.size()-1;
A PHX::TemplateManager holding one panzer::AssemblyEngine<EvalT> per evaluation type in Traits::EvalT...
A PHX::TemplateManager holding one panzer::ClosureModelFactory<EvalT> per evaluation type in Traits::...
virtual void evalModelImpl_basic_dfdp_scalar_fd(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
void setOneTimeDirichletBeta(const Scalar &beta) const
virtual void evalModelImpl_basic_dgdp_scalar(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
void setupAssemblyInArgs(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, panzer::AssemblyEngineInArgs &ae_inargs) const
std::vector< bool > active_evaluation_types_
void setupModel(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 Teuchos::ParameterList &user_data, bool writeGraph=false, const std::string &graphPrefix="", const Teuchos::ParameterList &me_params=Teuchos::ParameterList())
Teuchos::RCP< panzer::LinearObjContainer > ghostedContainer_
unsigned long long write_matrix_count_
Teuchos::RCP< ReadOnlyVector_GlobalEvaluationData > xContainer_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > get_parameter_vector(int index) const
Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgsImpl() const override
bool required_basic_g(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Does this set of out args require a simple response?
void evalModel_D2fDp2(int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::LinearOpBase< Scalar > > &D2fDp2) const
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_DfDp_op(int i) const override
virtual void evalModelImpl_basic_dgdx(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > f_space_
void buildDistroParamDfDp_RL(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 > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const override
std::vector< Teuchos::RCP< ParameterObject > > parameters_
bool oneTimeDirichletBeta_on_
void resetParameters() const
std::vector< Teuchos::RCP< ResponseObject > > responses_
void setParameters(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs) const
Teuchos::RCP< ParameterObject > createDistributedParameter(const std::string &key, const Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > &vs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &initial, const Teuchos::RCP< const GlobalIndexer > &ugi) const
std::vector< Teuchos::RCP< Thyra::VectorSpaceBase< double > > > tangent_space_
panzer::AssemblyEngine_TemplateManager< panzer::Traits > ae_tm_
virtual void evalModelImpl_basic_dfdp_scalar(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
bool required_basic_dfdp_scalar(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Are derivatives of the residual with respect to the scalar parameters in the out args?...
GlobalEvaluationDataContainer assemblyGlobalEvaluationData_
bool build_bc_field_managers_
bool require_in_args_refresh_
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > solverFactory_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > x_space_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_p_space(int i) const override
virtual void evalModelImpl_basic_g(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Construct a simple response dicatated by this set of out args.
Thyra::ModelEvaluatorBase::InArgs< Scalar > nominalValues_
void evalModel_D2fDx2(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::LinearOpBase< Scalar > > &D2fDx2) const
bool required_basic_dgdx(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Are their required responses in the out args? DgDx.
bool required_basic_dgdp_distro(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Are their required responses in the out args? DgDp.
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const override
virtual void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const override
Thyra::ModelEvaluatorBase::InArgs< Scalar > prototypeInArgs_
Thyra::ModelEvaluatorBase::OutArgs< Scalar > prototypeOutArgs_
void evalModel_D2fDpDx(int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::LinearOpBase< Scalar > > &D2fDpDx) const
GlobalEvaluationDataContainer nonParamGlobalEvaluationData_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_f_space() const override
void buildVolumeFieldManagers(const bool value)
virtual void evalModelImpl_basic_dgdp_distro(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
void evalModel_D2gDxDp(int rIndex, int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_p, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &D2gDxDp) const
panzer::AssemblyEngine_TemplateManager< panzer::Traits > getAssemblyEngineTemplateManager() const
return a copy of the model evaluators template manager, this is shallow class so pass by value
int addDistributedParameter(const std::string &name, const Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > &vs, const Teuchos::RCP< GlobalEvaluationData > &ged, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &initial, const Teuchos::RCP< const GlobalIndexer > &ugi=Teuchos::null)
bool build_transient_support_
bool required_basic_dgdp_scalar(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Are their required responses in the out args? DgDp.
int addParameter(const std::string &name, const Scalar &initial)
Thyra::ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const override
Scalar oneTimeDirichletBeta_
const std::string & get_g_name(int i) const
void buildDistroParamDgDp_RL(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 > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
void addGlobalEvaluationDataToAssemblyInArgs(const std::string &name, const Teuchos::RCP< GlobalEvaluationData > &ged)
Teuchos::RCP< const Teuchos::Array< std::string > > get_p_names(int i) const override
int getXDotTangentVectorIndex(const int index) const
Teuchos::ArrayView< const std::string > get_g_names(int i) const override
void disableEvaluationType()
void applyDirichletBCs(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &f) const
Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs() const override
int addFlexibleResponse(const std::string &responseName, const std::vector< WorksetDescriptor > &wkst_desc, const Teuchos::RCP< ResponseMESupportBuilderBase > &builder)
GlobalEvaluationDataContainer distrParamGlobalEvaluationData_
void evalModel_D2gDpDx(int rIndex, int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &D2gDpDx) const
void buildBCFieldManagers(const bool value)
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > lof_
void buildResponses(const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::EquationSetFactory &eqset_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
virtual void evalModelImpl_basic_dfdp_distro(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
void evalModel_D2fDxDp(int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_p, const Teuchos::RCP< Thyra::LinearOpBase< Scalar > > &D2fDxDp) const
void evalModel_D2gDx2(int rIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &D2gDx2) const
virtual void evalModelImpl_basic(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Evaluate a simple model, meaning a residual and a jacobian, no fancy stochastic galerkin or multipoin...
Teuchos::RCP< ReadOnlyVector_GlobalEvaluationData > xdotContainer_
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_W_op() const override
void buildResponses(const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > responseLibrary_
bool require_out_args_refresh_
void evalModel_D2gDp2(int rIndex, int pIndex, const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Teuchos::RCP< const Thyra::VectorBase< Scalar > > &delta_x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &D2gDp2) const
bool build_volume_field_managers_
bool required_basic_dfdp_distro(const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Are derivatives of the residual with respect to the distributed parameters in the out args?...
Teuchos::RCP< panzer::GlobalData > global_data_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_g_space(int i) const override
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > getResponseLibrary() const
int addResponse(const std::string &responseName, const std::vector< WorksetDescriptor > &wkst_desc, const ResponseEvaluatorFactory_BuilderT &builder)
void addNonParameterGlobalEvaluationData(const std::string &name, const Teuchos::RCP< GlobalEvaluationData > &ged)
void initializeNominalValues() const
Initialize the nominal values with good starting conditions.
int getXTangentVectorIndex(const int index) const
Teuchos::RCP< ParameterObject > createScalarParameter(const Teuchos::Array< std::string > &names, const Teuchos::Array< Scalar > &in_values) const
Sacado::ScalarParameterVector< panzer::EvaluationTraits > ParamVec
A vector of named scalar parameter entries drawn from a ParamLib, e.g. for use as LOCA continuation/b...
Interface for constructing a BCStrategy_TemplateManager.
Allocates and initializes an equation set template manager.
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > space
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_value
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > dfdp_rl
Teuchos::RCP< Teuchos::Array< std::string > > names
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > dgdp_rl
panzer::ParamVec scalar_value
Teuchos::RCP< const GlobalIndexer > global_indexer
SearchName(const std::string &n)
bool operator()(const Teuchos::RCP< ResponseObject > &ro)
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > space
std::vector< WorksetDescriptor > wkst_desc
Teuchos::RCP< ResponseMESupportBuilderBase > builder
Evaluation type for computing second derivatives, using HessianType as the scalar type....
Evaluation type for computing the residual and its Jacobian, using FadType as the scalar type.
Evaluation type for computing the residual only, using RealType as the scalar type.