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);
222 const std::vector<WorksetDescriptor> & wkst_desc,
223 const Teuchos::RCP<ResponseMESupportBuilderBase> & builder);
240 template <
typename ResponseEvaluatorFactory_BuilderT>
242 const std::vector<WorksetDescriptor> & wkst_desc,
243 const ResponseEvaluatorFactory_BuilderT & builder);
249 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
252 const Teuchos::ParameterList& closure_models,
253 const Teuchos::ParameterList& user_data,
254 const bool write_graphviz_file=
false,
255 const std::string& graphviz_file_prefix=
"")
256 {
responseLibrary_->buildResponseEvaluators(physicsBlocks,eqset_factory,cm_factory,closure_models,user_data,write_graphviz_file,graphviz_file_prefix);
259 this->resetDefaultBase();
261 typedef Thyra::ModelEvaluatorBase MEB;
262 MEB::OutArgsSetup<Scalar> outArgs;
263 outArgs.setModelEvalDescription(this->description());
265 outArgs.setSupports(MEB::OUT_ARG_f);
266 outArgs.setSupports(MEB::OUT_ARG_W_op);
273 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
275 const Teuchos::ParameterList& closure_models,
276 const Teuchos::ParameterList& user_data,
277 const bool write_graphviz_file=
false,
278 const std::string& graphviz_file_prefix=
"")
279 {
responseLibrary_->buildResponseEvaluators(physicsBlocks,cm_factory,closure_models,user_data,write_graphviz_file,graphviz_file_prefix);
282 this->resetDefaultBase();
284 typedef Thyra::ModelEvaluatorBase MEB;
285 MEB::OutArgsSetup<Scalar> outArgs;
286 outArgs.setModelEvalDescription(this->description());
288 outArgs.setSupports(MEB::OUT_ARG_f);
289 outArgs.setSupports(MEB::OUT_ARG_W_op);
298 const Teuchos::RCP<panzer::WorksetContainer> & wc,
299 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
300 const std::vector<panzer::BC> & bcs,
304 const Teuchos::ParameterList& closure_models,
305 const Teuchos::ParameterList& user_data,
306 const bool write_graphviz_file=
false,
307 const std::string& graphviz_file_prefix=
"");
316 const Teuchos::RCP<panzer::WorksetContainer> & wc,
317 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
318 const std::vector<panzer::BC> & bcs,
322 const Teuchos::ParameterList& closure_models,
323 const Teuchos::ParameterList& user_data,
324 const bool write_graphviz_file=
false,
325 const std::string& graphviz_file_prefix=
"");
366 for (
int i=0; i<index; i++) {
377 for (
int i=0; i<index; i++) {
398 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
412 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
426 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
440 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
451 void evalModel_D2fDx2(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
464 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
477 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
490 const Thyra::ModelEvaluatorBase::InArgs<Scalar> & inArgs,
503 virtual void evalModelImpl(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
504 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const override;
510 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
514 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
522 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
530 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
538 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
546 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
554 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
562 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
565 bool required_basic_g(
const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
586 void setParameters(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs)
const;
595 Teuchos::RCP<Teuchos::Array<std::string> >
names;
596 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
space;
601 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> >
dfdp_rl;
603 Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits> >
dgdp_rl;
612 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
space;
615 Teuchos::RCP<ResponseMESupportBuilderBase>
builder;
623 bool operator()(
const Teuchos::RCP<ResponseObject> & ro) {
return name==ro->name; }
628 const Teuchos::Array<Scalar> & in_values)
const;
632 const Teuchos::RCP<const GlobalIndexer> & ugi)
const;
636 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
x_space_;
637 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
f_space_;
663 Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> >
lof_;
665 mutable Teuchos::RCP<ReadOnlyVector_GlobalEvaluationData>
xContainer_;
685template<
typename Scalar>
686template <
typename ResponseEvaluatorFactory_BuilderT>
689 const std::vector<WorksetDescriptor> & wkst_desc,
690 const ResponseEvaluatorFactory_BuilderT & builder)
696 TEUCHOS_TEST_FOR_EXCEPTION(responseLibrary_->responseEvaluatorsBuilt(),std::logic_error,
697 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
698 "cannot be added to the model evaluator because evalModel has already been called!");
701 responseLibrary_->addResponse(responseName,wkst_desc,builder);
704 TEUCHOS_TEST_FOR_EXCEPTION(std::find_if(responses_.begin(),responses_.end(),
typename ResponseObject::SearchName(responseName))!=responses_.end(),
706 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
707 "has already been added to the model evaluator!");
715 Teuchos::RCP<panzer::ResponseBase> respBase = responseLibrary_->getResponse<
panzer::Traits::Residual>(responseName);
716 TEUCHOS_TEST_FOR_EXCEPTION(respBase==Teuchos::null,std::logic_error,
717 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
718 "has no residual type! Not sure what is going on!");
721 Teuchos::RCP<panzer::ResponseMESupportBase<panzer::Traits::Residual> > resp =
722 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<panzer::Traits::Residual> >(respBase);
723 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
724 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
"\" "
725 "resulted in bad cast to panzer::ResponseMESupportBase, the type of the response is incompatible!");
728 Teuchos::RCP<const Thyra::VectorSpaceBase<double> > vs = resp->getVectorSpace();
729 respObject->space = vs;
732 resp->setVector(Thyra::createMember(vs));
736 Teuchos::RCP<panzer::ResponseBase> respJacBase = responseLibrary_->getResponse<
panzer::Traits::Jacobian>(responseName);
737 if(respJacBase!=Teuchos::null) {
741 Teuchos::RCP<panzer::ResponseMESupportBase<RespEvalT> > resp =
742 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<RespEvalT> >(respJacBase);
743 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
744 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
745 "\" resulted in bad cast to panzer::ResponseMESupportBase<Jacobian>, the type "
746 "of the response is incompatible!");
749 if(resp->supportsDerivative())
750 resp->setDerivative(resp->buildDerivative());
753#ifdef Panzer_BUILD_HESSIAN_SUPPORT
755 Teuchos::RCP<panzer::ResponseBase> respHesBase = responseLibrary_->getResponse<
panzer::Traits::Hessian>(responseName);
756 if(respHesBase!=Teuchos::null) {
760 Teuchos::RCP<panzer::ResponseMESupportBase<RespEvalT> > resp =
761 Teuchos::rcp_dynamic_cast<panzer::ResponseMESupportBase<RespEvalT> >(respHesBase);
762 TEUCHOS_TEST_FOR_EXCEPTION(resp==Teuchos::null,std::logic_error,
763 "panzer::ModelEvaluator::addResponse: Response with name \"" << responseName <<
764 "\" resulted in bad cast to panzer::ResponseMESupportBase<Hessian>, the type "
765 "of the response is incompatible!");
768 if(resp->supportsDerivative())
769 resp->setDerivative(resp->buildDerivative());
773 respObject->name = responseName;
774 respObject->wkst_desc = wkst_desc;
776 responses_.push_back(respObject);
778 require_in_args_refresh_ =
true;
779 require_out_args_refresh_ =
true;
780 this->resetDefaultBase();
782 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?...
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="")
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.