00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_OPERATOR_ALPHA_DX_U_DX_V_HPP
00021 #define VARIATIONAL_OPERATOR_ALPHA_DX_U_DX_V_HPP
00022
00023 #include <VariationalBilinearOperator.hpp>
00024 #include <ScalarFunctionBuilder.hpp>
00025 #include <ScalarFunctionBase.hpp>
00026
00036 class VariationalAlphaDxUDxVOperator
00037 : public VariationalBilinearOperator
00038 {
00039 private:
00040 ConstReferenceCounting<ScalarFunctionBase>
00041 __Alpha;
00043 const size_t __i;
00044 const size_t __j;
00045 public:
00051 ConstReferenceCounting<ScalarFunctionBase> alpha() const
00052 {
00053 return __Alpha;
00054 }
00055
00061 const size_t& i() const
00062 {
00063 return __i;
00064 }
00065
00071 const size_t& j() const
00072 {
00073 return __j;
00074 }
00075
00083 ReferenceCounting<VariationalBilinearOperator>
00084 operator*(const ConstReferenceCounting<ScalarFunctionBase>& c) const
00085 {
00086 VariationalAlphaDxUDxVOperator* newOperator
00087 = new VariationalAlphaDxUDxVOperator(*this);
00088 ScalarFunctionBuilder functionBuilder;
00089 functionBuilder.setFunction(__Alpha);
00090 functionBuilder.setBinaryOperation(BinaryOperation::product,c);
00091
00092 (*newOperator).__Alpha = functionBuilder.getBuiltFunction();
00093 return newOperator;
00094 }
00095
00107 VariationalAlphaDxUDxVOperator(const size_t& unknownNumber,
00108 const VariationalOperator::Property& unknownProperty,
00109 const size_t& testFunctionNumber,
00110 const VariationalOperator::Property& testFunctionProperty,
00111 ConstReferenceCounting<ScalarFunctionBase> alpha,
00112 const size_t& i,
00113 const size_t& j)
00114 : VariationalBilinearOperator(VariationalBilinearOperator::alphaDxUDxV,
00115 unknownNumber, unknownProperty,
00116 testFunctionNumber, testFunctionProperty),
00117 __Alpha(alpha),
00118 __i(i),
00119 __j(j)
00120 {
00121 ;
00122 }
00123
00129 VariationalAlphaDxUDxVOperator(const VariationalAlphaDxUDxVOperator& V)
00130 : VariationalBilinearOperator(V),
00131 __Alpha(V.__Alpha),
00132 __i(V.__i),
00133 __j(V.__j)
00134 {
00135 ;
00136 }
00137
00142 ~VariationalAlphaDxUDxVOperator()
00143 {
00144 ;
00145 }
00146 };
00147
00148 #endif // VARIATIONAL_OPERATOR_ALPHA_DX_U_DX_V_HPP