00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_OPERATOR_ALPHA_U_V_HPP
00021 #define VARIATIONAL_OPERATOR_ALPHA_U_V_HPP
00022
00023 #include <VariationalBilinearOperator.hpp>
00024 #include <ScalarFunctionBuilder.hpp>
00025 #include <ScalarFunctionBase.hpp>
00026
00035 class VariationalAlphaUVOperator
00036 : public VariationalBilinearOperator
00037 {
00038 private:
00039 ConstReferenceCounting<ScalarFunctionBase>
00040 __Alpha;
00042 public:
00048 ConstReferenceCounting<ScalarFunctionBase> alpha() const
00049 {
00050 return __Alpha;
00051 }
00052
00060 ReferenceCounting<VariationalBilinearOperator>
00061 operator*(const ConstReferenceCounting<ScalarFunctionBase>& c) const
00062 {
00063 VariationalAlphaUVOperator* newOperator = new VariationalAlphaUVOperator(*this);
00064 ScalarFunctionBuilder functionBuilder;
00065 functionBuilder.setFunction(__Alpha);
00066 functionBuilder.setBinaryOperation(BinaryOperation::product,c);
00067
00068 (*newOperator).__Alpha = functionBuilder.getBuiltFunction();
00069
00070 return newOperator;
00071 }
00072
00082 VariationalAlphaUVOperator(const size_t& unknownNumber,
00083 const VariationalOperator::Property& unknownProperty,
00084 const size_t& testFunctionNumber,
00085 const VariationalOperator::Property& testFunctionProperty,
00086 ConstReferenceCounting<ScalarFunctionBase> alpha)
00087 : VariationalBilinearOperator(VariationalBilinearOperator::alphaUV,
00088 unknownNumber, unknownProperty,
00089 testFunctionNumber, testFunctionProperty),
00090 __Alpha(alpha)
00091 {
00092 ;
00093 }
00094
00100 VariationalAlphaUVOperator(const VariationalAlphaUVOperator& V)
00101 : VariationalBilinearOperator(V),
00102 __Alpha(V.__Alpha)
00103 {
00104 ;
00105 }
00106
00111 ~VariationalAlphaUVOperator()
00112 {
00113 ;
00114 }
00115 };
00116
00117 #endif // VARIATIONAL_OPERATOR_ALPHA_U_V_HPP