Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "Albany_ODEProblem.hpp"
00008
00009 #include "Shards_CellTopology.hpp"
00010 #include "PHAL_FactoryTraits.hpp"
00011 #include "Albany_Utils.hpp"
00012 #include "Albany_ProblemUtils.hpp"
00013
00014
00015 Albany::ODEProblem::
00016 ODEProblem( const Teuchos::RCP<Teuchos::ParameterList>& params_,
00017 const Teuchos::RCP<ParamLib>& paramLib_,
00018 const int numDim_) :
00019 Albany::AbstractProblem(params_, paramLib_, 2),
00020 numDim(numDim_)
00021 {
00022 }
00023
00024 Albany::ODEProblem::
00025 ~ODEProblem()
00026 {
00027 }
00028
00029 void
00030 Albany::ODEProblem::
00031 buildProblem(
00032 Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs,
00033 Albany::StateManager& stateMgr)
00034 {
00035
00036 TEUCHOS_TEST_FOR_EXCEPTION(meshSpecs.size()!=1,std::logic_error,"Problem supports one Material Block");
00037 fm.resize(1);
00038 fm[0] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
00039 buildEvaluators(*fm[0], *meshSpecs[0], stateMgr, BUILD_RESID_FM,
00040 Teuchos::null);
00041 constructDirichletEvaluators(*meshSpecs[0]);
00042 }
00043
00044 Teuchos::Array< Teuchos::RCP<const PHX::FieldTag> >
00045 Albany::ODEProblem::
00046 buildEvaluators(
00047 PHX::FieldManager<PHAL::AlbanyTraits>& fm0,
00048 const Albany::MeshSpecsStruct& meshSpecs,
00049 Albany::StateManager& stateMgr,
00050 Albany::FieldManagerChoice fmchoice,
00051 const Teuchos::RCP<Teuchos::ParameterList>& responseList)
00052 {
00053
00054
00055 ConstructEvaluatorsOp<ODEProblem> op(
00056 *this, fm0, meshSpecs, stateMgr, fmchoice, responseList);
00057 boost::mpl::for_each<PHAL::AlbanyTraits::BEvalTypes>(op);
00058 return *op.tags;
00059 }
00060
00061 void
00062 Albany::ODEProblem::constructDirichletEvaluators(
00063 const Albany::MeshSpecsStruct& meshSpecs)
00064 {
00065
00066 std::vector<std::string> dirichletNames(neq);
00067 dirichletNames[0] = "X";
00068 dirichletNames[1] = "Y";
00069 Albany::BCUtils<Albany::DirichletTraits> dirUtils;
00070 dfm = dirUtils.constructBCEvaluators(meshSpecs.nsNames, dirichletNames,
00071 this->params, this->paramLib);
00072 }
00073
00074 Teuchos::RCP<const Teuchos::ParameterList>
00075 Albany::ODEProblem::getValidProblemParameters() const
00076 {
00077 Teuchos::RCP<Teuchos::ParameterList> validPL =
00078 this->getGenericProblemParams("ValidODEProblemParams");
00079
00080 return validPL;
00081 }
00082