00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "FEApp_HeatNonlinearSourceProblem.hpp"
00033 #include "FEApp_ConstantNodeBCStrategy.hpp"
00034
00035 FEApp::HeatNonlinearSourceProblem::
00036 HeatNonlinearSourceProblem(
00037 const Teuchos::RCP<Teuchos::ParameterList>& params_,
00038 const Teuchos::RCP<Sacado::ScalarParameterLibrary>& paramLib_) :
00039 params(params_),
00040 paramLib(paramLib_)
00041 {
00042 leftBC = params->get("Left BC", 0.0);
00043 rightBC = params->get("Right BC", 0.0);
00044 }
00045
00046 FEApp::HeatNonlinearSourceProblem::
00047 ~HeatNonlinearSourceProblem()
00048 {
00049 }
00050
00051 unsigned int
00052 FEApp::HeatNonlinearSourceProblem::
00053 numEquations() const
00054 {
00055 return 1;
00056 }
00057
00058 void
00059 FEApp::HeatNonlinearSourceProblem::
00060 buildProblem(const Epetra_Map& dofMap,
00061 const Epetra_Map& overlapped_dofMap,
00062 FEApp::AbstractPDE_TemplateManager<ValidTypes>& pdeTM,
00063 std::vector< Teuchos::RCP<FEApp::NodeBC> >& bcs,
00064 const Teuchos::RCP<Epetra_Vector>& u)
00065 {
00066
00067 FEApp::HeatNonlinearSourcePDE_TemplateBuilder pdeBuilder(params, paramLib);
00068 pdeTM.buildObjects(pdeBuilder);
00069
00070
00071 FEApp::ConstantNodeBCStrategy_TemplateBuilder leftBuilder(0, 0, leftBC, 1,
00072 paramLib);
00073 FEApp::ConstantNodeBCStrategy_TemplateBuilder rightBuilder(0, 0, rightBC, 2,
00074 paramLib);
00075 int left_node = dofMap.MinAllGID();
00076 int right_node = dofMap.MaxAllGID();
00077 bcs.resize(2);
00078 bcs[0] = Teuchos::rcp(new FEApp::NodeBC(dofMap, overlapped_dofMap,
00079 left_node, 1, leftBuilder));
00080 bcs[1] = Teuchos::rcp(new FEApp::NodeBC(dofMap, overlapped_dofMap,
00081 right_node, 1, rightBuilder));
00082
00083
00084 u->PutScalar(1.0);
00085 }