#include <VariationalProblem.hpp>


Definition at line 45 of file VariationalProblem.hpp.
typedef std::list<ConstReferenceCounting<VariationalBilinearOperator> > VariationalProblem::BilinearOperatorListType [private] |
Definition at line 50 of file VariationalProblem.hpp.
typedef std::list<ConstReferenceCounting<VariationalLinearOperator> > VariationalProblem::LinearOperatorListType [private] |
Definition at line 56 of file VariationalProblem.hpp.
typedef std::list<ConstReferenceCounting<VariationalBilinearBorderOperator> > VariationalProblem::BilinearBorderOperatorListType [private] |
Definition at line 63 of file VariationalProblem.hpp.
typedef std::list<ConstReferenceCounting<VariationalLinearBorderOperator> > VariationalProblem::LinearBorderOperatorListType [private] |
Definition at line 72 of file VariationalProblem.hpp.
| typedef BilinearOperatorListType::iterator VariationalProblem::bilinearOperatorIterator |
Definition at line 83 of file VariationalProblem.hpp.
| typedef BilinearOperatorListType::const_iterator VariationalProblem::bilinearOperatorConst_iterator |
Definition at line 84 of file VariationalProblem.hpp.
| typedef LinearOperatorListType::iterator VariationalProblem::linearOperatorIterator |
Definition at line 86 of file VariationalProblem.hpp.
| typedef LinearOperatorListType::const_iterator VariationalProblem::linearOperatorConst_iterator |
Definition at line 87 of file VariationalProblem.hpp.
| typedef BilinearBorderOperatorListType::iterator VariationalProblem::bilinearBorderOperatorIterator |
Definition at line 89 of file VariationalProblem.hpp.
| typedef BilinearBorderOperatorListType::const_iterator VariationalProblem::bilinearBorderOperatorConst_iterator |
Definition at line 90 of file VariationalProblem.hpp.
| typedef LinearBorderOperatorListType::iterator VariationalProblem::linearBorderOperatorIterator |
Definition at line 92 of file VariationalProblem.hpp.
| typedef LinearBorderOperatorListType::const_iterator VariationalProblem::linearBorderOperatorConst_iterator |
Definition at line 93 of file VariationalProblem.hpp.
enum Problem::Type [inherited] |
| VariationalProblem::VariationalProblem | ( | std::vector< ConstReferenceCounting< BoundaryConditionSet > > | bc | ) | [inline] |
Constructor
| bc | Boundary condition sets |
Definition at line 332 of file VariationalProblem.hpp.
Referenced by operator*().
00333 : Problem(Problem::variational, 0), 00334 __bc(bc) 00335 { 00336 ; 00337 }
| VariationalProblem::VariationalProblem | ( | const VariationalProblem & | V, | |
| const bool & | getOnlyBilinearForms = false | |||
| ) | [inline] |
Copy constructor
| V | original variational problem | |
| getOnlyBilinearForms | only gets the bilinear part of the problem. This can be useful for preconditioners only. |
Definition at line 346 of file VariationalProblem.hpp.
References __linearBorderOperatorList, and __linearOperatorList.
00348 : Problem(V), 00349 __bilinearOperatorList(V.__bilinearOperatorList), 00350 __linearOperatorList(V.__linearOperatorList), 00351 __bilinearBorderOperatorList(V.__bilinearBorderOperatorList), 00352 __linearBorderOperatorList(V.__linearBorderOperatorList), 00353 __bc(V.__bc) 00354 { 00355 if (getOnlyBilinearForms) { 00356 __linearOperatorList.clear(); 00357 __linearBorderOperatorList.clear(); 00358 } 00359 }
| VariationalProblem::~VariationalProblem | ( | ) | [inline] |
| bilinearOperatorIterator VariationalProblem::beginBilinearOperator | ( | ) | [inline] |
Bilinear Operator iterator begin
Definition at line 100 of file VariationalProblem.hpp.
References __bilinearOperatorList.
Referenced by DiscretizedOperators< FiniteElement::ElementaryMatrix >::DiscretizedOperators(), SpectralLegendreDiscretizer::getDiagonal(), SpectralLegendreDiscretizer::getMultiDiagonal(), SpectralLegendreDiscretizer::timesX(), and SpectralLegendreDiscretizer::transposedTimesX().
00101 { 00102 return __bilinearOperatorList.begin(); 00103 }
| bilinearOperatorConst_iterator VariationalProblem::beginBilinearOperator | ( | ) | const [inline] |
Bilinear Operator const iterator begin
Definition at line 110 of file VariationalProblem.hpp.
References __bilinearOperatorList.
00111 { 00112 return __bilinearOperatorList.begin(); 00113 }
| bilinearOperatorConst_iterator VariationalProblem::endBilinearOperator | ( | ) | const [inline] |
Bilinear Operator const iterator end
Definition at line 120 of file VariationalProblem.hpp.
References __bilinearOperatorList.
Referenced by DiscretizedOperators< FiniteElement::ElementaryMatrix >::DiscretizedOperators(), SpectralLegendreDiscretizer::getDiagonal(), SpectralLegendreDiscretizer::getMultiDiagonal(), SpectralLegendreDiscretizer::timesX(), and SpectralLegendreDiscretizer::transposedTimesX().
00121 { 00122 return __bilinearOperatorList.end(); 00123 }
| linearOperatorIterator VariationalProblem::beginLinearOperator | ( | ) | [inline] |
Linear Operator iterator begin
Definition at line 130 of file VariationalProblem.hpp.
References __linearOperatorList.
Referenced by SpectralLegendreDiscretizer::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
00131 { 00132 return __linearOperatorList.begin(); 00133 }
| linearOperatorConst_iterator VariationalProblem::beginLinearOperator | ( | ) | const [inline] |
Linear Operator iterator begin
Definition at line 140 of file VariationalProblem.hpp.
References __linearOperatorList.
00141 { 00142 return __linearOperatorList.begin(); 00143 }
| linearOperatorConst_iterator VariationalProblem::endLinearOperator | ( | ) | const [inline] |
Linear Operator iterator end
Definition at line 150 of file VariationalProblem.hpp.
References __linearOperatorList.
Referenced by SpectralLegendreDiscretizer::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
00151 { 00152 return __linearOperatorList.end(); 00153 }
| bilinearBorderOperatorIterator VariationalProblem::beginBilinearBorderOperator | ( | ) | [inline] |
Bilinear Border Operator iterator begin
Definition at line 160 of file VariationalProblem.hpp.
References __bilinearBorderOperatorList.
Referenced by BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation(), BoundaryMeshAssociation::BoundaryMeshAssociation(), BoundaryConditionDiscretizationSpectralConform::getDiagonal(), BoundaryConditionDiscretizationSpectralConform::timesX(), and BoundaryConditionDiscretizationSpectralConform::transposedTimesX().
00161 { 00162 return __bilinearBorderOperatorList.begin(); 00163 }
| bilinearBorderOperatorConst_iterator VariationalProblem::beginBilinearBorderOperator | ( | ) | const [inline] |
Bilinear Border Operator const iterator begin
Definition at line 170 of file VariationalProblem.hpp.
References __bilinearBorderOperatorList.
00171 { 00172 return __bilinearBorderOperatorList.begin(); 00173 }
| bilinearBorderOperatorConst_iterator VariationalProblem::endBilinearBorderOperator | ( | ) | const [inline] |
Bilinear Border Operator const iterator end
Definition at line 180 of file VariationalProblem.hpp.
References __bilinearBorderOperatorList.
Referenced by BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation(), BoundaryMeshAssociation::BoundaryMeshAssociation(), BoundaryConditionDiscretizationSpectralConform::getDiagonal(), BoundaryConditionDiscretizationSpectralConform::timesX(), and BoundaryConditionDiscretizationSpectralConform::transposedTimesX().
00181 { 00182 return __bilinearBorderOperatorList.end(); 00183 }
| linearBorderOperatorIterator VariationalProblem::beginLinearBorderOperator | ( | ) | [inline] |
Linear Border Operator iterator begin
Definition at line 190 of file VariationalProblem.hpp.
References __linearBorderOperatorList.
Referenced by BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation(), BoundaryMeshAssociation::BoundaryMeshAssociation(), and BoundaryConditionDiscretizationSpectralConform::setSecondMember().
00191 { 00192 return __linearBorderOperatorList.begin(); 00193 }
| linearBorderOperatorConst_iterator VariationalProblem::beginLinearBorderOperator | ( | ) | const [inline] |
Linear Border Operator iterator begin
Definition at line 200 of file VariationalProblem.hpp.
References __linearBorderOperatorList.
00201 { 00202 return __linearBorderOperatorList.begin(); 00203 }
| linearBorderOperatorConst_iterator VariationalProblem::endLinearBorderOperator | ( | ) | const [inline] |
Linear Border Operator iterator end
Definition at line 210 of file VariationalProblem.hpp.
References __linearBorderOperatorList.
Referenced by BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation(), BoundaryMeshAssociation::BoundaryMeshAssociation(), and BoundaryConditionDiscretizationSpectralConform::setSecondMember().
00211 { 00212 return __linearBorderOperatorList.end(); 00213 }
| ReferenceCounting<Problem> VariationalProblem::operator* | ( | const ConstReferenceCounting< ScalarFunctionBase > & | u | ) | const [inline, virtual] |
Returns the problem given by the "product" of a function u in the variational forms
| u | the given function |
Implements Problem.
Definition at line 224 of file VariationalProblem.hpp.
References __bilinearOperatorList, __linearOperatorList, and VariationalProblem().
00225 { 00226 VariationalProblem* newVariationalProblem = new VariationalProblem(*this); 00227 00228 newVariationalProblem->__bilinearOperatorList.clear(); 00229 for (BilinearOperatorListType::const_iterator i = __bilinearOperatorList.begin(); 00230 i != __bilinearOperatorList.end(); ++i) { 00231 newVariationalProblem->__bilinearOperatorList.push_back((**i) * u); 00232 } 00233 00234 newVariationalProblem->__linearOperatorList.clear(); 00235 for (LinearOperatorListType::const_iterator i = __linearOperatorList.begin(); 00236 i != __linearOperatorList.end(); ++i) { 00237 newVariationalProblem->__linearOperatorList.push_back((**i) * u); 00238 } 00239 00240 return newVariationalProblem; 00241 }

| void VariationalProblem::add | ( | ReferenceCounting< VariationalBilinearOperator > | v | ) | [inline] |
Adds a variational bilinear operator to its list
| v | a variational bilinear operator |
Definition at line 248 of file VariationalProblem.hpp.
References __bilinearOperatorList.
Referenced by SpectralFEMPreconditioner::Internal::__solveFEM().
00249 { 00250 __bilinearOperatorList.push_back(v); 00251 }
| void VariationalProblem::add | ( | ReferenceCounting< VariationalBilinearBorderOperator > | v | ) | [inline] |
Adds a variational "border" bilinear operator to its list
| v | a variational "border" bilinear operator |
Definition at line 259 of file VariationalProblem.hpp.
References __bilinearBorderOperatorList.
00260 { 00261 __bilinearBorderOperatorList.push_back(v); 00262 }
| void VariationalProblem::add | ( | ReferenceCounting< VariationalLinearOperator > | v | ) | [inline] |
Adds a variational linear operator to its list
| v | a variational linear operator |
Definition at line 269 of file VariationalProblem.hpp.
References __linearOperatorList.
00270 { 00271 __linearOperatorList.push_back(v); 00272 }
| void VariationalProblem::add | ( | ReferenceCounting< VariationalLinearBorderOperator > | v | ) | [inline] |
Adds a variational "border" linear operator to its list
| v | a variational "border" linear operator |
Definition at line 279 of file VariationalProblem.hpp.
References __linearBorderOperatorList.
00280 { 00281 __linearBorderOperatorList.push_back(v); 00282 }
| size_t VariationalProblem::numberOfUnknown | ( | ) | const [inline, virtual] |
Returns the number of unknowns
Implements Problem.
Definition at line 290 of file VariationalProblem.hpp.
References __bc.
Referenced by SpectralFEMPreconditioner::Internal::__solveFEM(), and BoundaryMeshAssociation::BoundaryMeshAssociation().
00291 { 00292 return __bc.size(); 00293 }
| const BoundaryConditionSet& VariationalProblem::boundaryConditionSet | ( | const size_t & | i | ) | const [inline, virtual] |
Returns the boundary condition set associated to the ith unknown
| i |
Implements Problem.
Definition at line 302 of file VariationalProblem.hpp.
References __bc.
00303 { 00304 return *(__bc[i]); 00305 }
| bool VariationalProblem::hasJumpOrMean | ( | ) | const [inline] |
Definition at line 307 of file VariationalProblem.hpp.
References __bilinearOperatorList, __linearOperatorList, and VariationalOperator::normal.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
00308 { 00309 for (BilinearOperatorListType::const_iterator i=__bilinearOperatorList.begin(); 00310 i != __bilinearOperatorList.end(); ++i) { 00311 if (((*i)->testFunctionProperty() != VariationalOperator::normal) or 00312 ((*i)->unknownProperty() != VariationalOperator::normal)) { 00313 return true; 00314 } 00315 } 00316 00317 for (LinearOperatorListType::const_iterator i=__linearOperatorList.begin(); 00318 i != __linearOperatorList.end(); ++i) { 00319 if ((*i)->testFunctionProperty() != VariationalOperator::normal) { 00320 return true; 00321 } 00322 } 00323 00324 return false; 00325 }
| void Problem::setDomain | ( | ReferenceCounting< Domain > | omega | ) | [inline, inherited] |
Sets the domain of computation
| omega | |
Definition at line 58 of file Problem.hpp.
References Problem::__omega.
00059 { 00060 __omega = omega; 00061 }
| const Problem::Type& Problem::type | ( | ) | const [inline, inherited] |
Access to the problem type
Definition at line 69 of file Problem.hpp.
References Problem::__type.
Referenced by SpectralFEMPreconditioner::Internal::__solveFEM(), SpectralLegendreDiscretizer::assembleSecondMember(), BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation(), BoundaryMeshAssociation::BoundaryMeshAssociation(), DiscretizedOperators< FiniteElement::ElementaryMatrix >::DiscretizedOperators(), SpectralLegendreDiscretizer::getDiagonal(), BoundaryConditionDiscretizationSpectralConform::getDiagonal(), SpectralLegendreDiscretizer::getMultiDiagonal(), BoundaryConditionDiscretizationSpectralConform::setSecondMember(), SpectralLegendreDiscretizer::timesX(), BoundaryConditionDiscretizationSpectralConform::timesX(), SpectralLegendreDiscretizer::transposedTimesX(), and BoundaryConditionDiscretizationSpectralConform::transposedTimesX().
00070 { 00071 return __type; 00072 }
| std::string Problem::typeName | ( | ) | const [inline, inherited] |
Definition at line 74 of file Problem.hpp.
References Problem::__type, Problem::pde, ErrorHandler::unexpected, and Problem::variational.
00075 { 00076 switch(__type) { 00077 case pde: { 00078 return "PDE"; 00079 } 00080 case variational: { 00081 return "Variational"; 00082 } 00083 default: { 00084 throw ErrorHandler(__FILE__,__LINE__, 00085 "Unknown problem type name", 00086 ErrorHandler::unexpected); 00087 } 00088 } 00089 return ""; 00090 }
| ConstReferenceCounting<Domain> Problem::domain | ( | ) | const [inline, inherited] |
Access to the domain of computation
Definition at line 98 of file Problem.hpp.
References Problem::__omega.
00099 { 00100 return __omega; 00101 }
list of bilinear operators
Definition at line 53 of file VariationalProblem.hpp.
Referenced by add(), beginBilinearOperator(), endBilinearOperator(), hasJumpOrMean(), and operator*().
list of linear operators
Definition at line 59 of file VariationalProblem.hpp.
Referenced by add(), beginLinearOperator(), endLinearOperator(), hasJumpOrMean(), operator*(), and VariationalProblem().
list of bilinear border operators, ie operators living on the border for natural BC as an example
Definition at line 66 of file VariationalProblem.hpp.
Referenced by add(), beginBilinearBorderOperator(), and endBilinearBorderOperator().
list of bilinear border operators, ie operators living on the border for natural BC for example
Definition at line 75 of file VariationalProblem.hpp.
Referenced by add(), beginLinearBorderOperator(), endLinearBorderOperator(), and VariationalProblem().
std::vector<ConstReferenceCounting<BoundaryConditionSet> > VariationalProblem::__bc [private] |
list of dirichlet conditions
Definition at line 80 of file VariationalProblem.hpp.
Referenced by boundaryConditionSet(), and numberOfUnknown().
1.5.6