00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_OPERATOR_NU_U_DX_V_HPP
00021 #define VARIATIONAL_OPERATOR_NU_U_DX_V_HPP
00022
00023 #include <VariationalBilinearOperator.hpp>
00024 #include <ScalarFunctionBuilder.hpp>
00025 #include <ScalarFunctionBase.hpp>
00026
00035 class VariationalNuUdxVOperator
00036 : public VariationalBilinearOperator
00037 {
00038 private:
00039 ConstReferenceCounting<ScalarFunctionBase>
00040 __nu;
00042 const size_t __i;
00044 public:
00050 ConstReferenceCounting<ScalarFunctionBase> nu() const
00051 {
00052 return __nu;
00053 }
00054
00060 const size_t& i() const
00061 {
00062 return __i;
00063 }
00064
00072 ReferenceCounting<VariationalBilinearOperator>
00073 operator*(const ConstReferenceCounting<ScalarFunctionBase>& c) const
00074 {
00075 VariationalNuUdxVOperator* newOperator
00076 = new VariationalNuUdxVOperator(*this);
00077 ScalarFunctionBuilder functionBuilder;
00078 functionBuilder.setFunction(__nu);
00079 functionBuilder.setBinaryOperation(BinaryOperation::product,c);
00080
00081 newOperator->__nu = functionBuilder.getBuiltFunction();
00082
00083 return newOperator;
00084 }
00085
00096 VariationalNuUdxVOperator(const size_t& unknownNumber,
00097 const VariationalOperator::Property& unknownProperty,
00098 const size_t& testFunctionNumber,
00099 const VariationalOperator::Property& testFunctionProperty,
00100 ConstReferenceCounting<ScalarFunctionBase> nu,
00101 const size_t& i)
00102 : VariationalBilinearOperator(VariationalBilinearOperator::nuUdxV,
00103 unknownNumber, unknownProperty,
00104 testFunctionNumber, testFunctionProperty),
00105 __nu(nu),
00106 __i(i)
00107 {
00108 ;
00109 }
00110
00117 VariationalNuUdxVOperator(const VariationalNuUdxVOperator& V)
00118 : VariationalBilinearOperator(V),
00119 __nu(V.__nu),
00120 __i(V.__i)
00121 {
00122 ;
00123 }
00124
00130 ~VariationalNuUdxVOperator()
00131 {
00132 ;
00133 }
00134 };
00135
00136 #endif // VARIATIONAL_OPERATOR_NU_U_DX_V_HPP