00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_BILINEAR_OPERATOR_HPP
00021 #define VARIATIONAL_BILINEAR_OPERATOR_HPP
00022
00023 #include <VariationalOperator.hpp>
00024
00034 class VariationalBilinearOperator
00035 : public VariationalOperator
00036 {
00037 public:
00038 enum Type {
00039 muGradUGradV,
00040 alphaDxUDxV,
00041 nuUdxV,
00042 nuDxUV,
00043 alphaUV
00044 };
00045
00046 private:
00047 const Type __type;
00048 const size_t __unknownNumber;
00050 const VariationalOperator::Property
00051 __unknownProperty;
00052 public:
00053
00059 const VariationalBilinearOperator::Type&
00060 type() const
00061 {
00062 return __type;
00063 }
00064
00070 const size_t& unknownNumber() const
00071 {
00072 return __unknownNumber;
00073 }
00074
00080 const VariationalOperator::Property& unknownProperty() const
00081 {
00082 return __unknownProperty;
00083 }
00084
00092 virtual ReferenceCounting<VariationalBilinearOperator>
00093 operator*(const ConstReferenceCounting<ScalarFunctionBase>& u) const = 0;
00094
00104 VariationalBilinearOperator(const VariationalBilinearOperator::Type& t,
00105 const size_t& unknownNumber,
00106 const VariationalOperator::Property& unknownProperty,
00107 const size_t& testFunctionNumber,
00108 const VariationalOperator::Property& testFunctionProperty)
00109 : VariationalOperator(testFunctionNumber,
00110 testFunctionProperty),
00111 __type(t),
00112 __unknownNumber(unknownNumber),
00113 __unknownProperty(unknownProperty)
00114 {
00115 ;
00116 }
00117
00123 VariationalBilinearOperator(const VariationalBilinearOperator& V)
00124 : VariationalOperator(V),
00125 __type(V.__type),
00126 __unknownNumber(V.__unknownNumber),
00127 __unknownProperty(V.__unknownProperty)
00128 {
00129 ;
00130 }
00131
00136 virtual ~VariationalBilinearOperator()
00137 {
00138 ;
00139 }
00140 };
00141
00142 #endif // VARIATIONAL_BILINEAR_OPERATOR_HPP
00143