00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <BoundaryConditionExpressionFourrier.hpp>
00021
00022 #include <FunctionExpression.hpp>
00023 #include <BoundaryCondition.hpp>
00024
00025 #include <UnknownListExpression.hpp>
00026
00027 #include <Information.hpp>
00028
00029 #include <ScalarFunctionBase.hpp>
00030 #include <Fourrier.hpp>
00031
00032 std::ostream&
00033 BoundaryConditionExpressionFourrier::
00034 put(std::ostream& os) const
00035 {
00036 os << "\t\t" << (*__Alpha) << '*' << __unknownName
00037 <<" + dnu(" << __unknownName << ") = " << (*__g)
00038 << " on " << (*__boundary);
00039 return os;
00040 }
00041
00042 void
00043 BoundaryConditionExpressionFourrier::
00044 execute()
00045 {
00046 __boundary->execute();
00047 __Alpha->execute();
00048 __g->execute();
00049 ConstReferenceCounting<ScalarFunctionBase> alpha = __Alpha->function();
00050 ConstReferenceCounting<ScalarFunctionBase> g = __g->function();
00051
00052 ReferenceCounting<UnknownListExpression> L
00053 = Information::instance().getUnknownList();
00054
00055 size_t n = L->number(__unknownName);
00056
00057 ReferenceCounting<PDECondition> F = new Fourrier(alpha,g,n);
00058
00059 __boundaryCondition
00060 = new BoundaryCondition(F, __boundary->boundary());
00061 }
00062
00063 BoundaryConditionExpressionFourrier::
00064 BoundaryConditionExpressionFourrier(const std::string& unknownName,
00065 ReferenceCounting<FunctionExpression> alpha,
00066 ReferenceCounting<FunctionExpression> g,
00067 ReferenceCounting<BoundaryExpression> boundary)
00068 : BoundaryConditionExpression(boundary,
00069 unknownName,
00070 BoundaryConditionExpression::neumann),
00071 __Alpha(alpha),
00072 __g(g)
00073 {
00074 ;
00075 }
00076
00077 BoundaryConditionExpressionFourrier::
00078 BoundaryConditionExpressionFourrier(const BoundaryConditionExpressionFourrier& f)
00079 : BoundaryConditionExpression(f),
00080 __Alpha(f.__Alpha),
00081 __g(f.__g)
00082 {
00083 ;
00084 }
00085
00086 BoundaryConditionExpressionFourrier::
00087 ~BoundaryConditionExpressionFourrier()
00088 {
00089 ;
00090 }