00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_OPERATOR_F_DX_G_V_HPP
00021 #define VARIATIONAL_OPERATOR_F_DX_G_V_HPP
00022
00023 #include <VariationalLinearOperator.hpp>
00024 #include <ScalarFunctionBuilder.hpp>
00025 #include <ScalarFunctionBase.hpp>
00026
00035 class VariationalOperatorFdxGV
00036 : public VariationalLinearOperator
00037 {
00038 private:
00039 ConstReferenceCounting<ScalarFunctionBase>
00040 __f;
00041 ConstReferenceCounting<ScalarFunctionBase>
00042 __g;
00043 const size_t __i;
00044 public:
00050 const ScalarFunctionBase& f() const
00051 {
00052 return *__f;
00053 }
00054
00060 const ScalarFunctionBase& g() const
00061 {
00062 return *__g;
00063 }
00064
00070 const size_t& number() const
00071 {
00072 return __i;
00073 }
00074
00082 ReferenceCounting<VariationalLinearOperator>
00083 operator*(const ConstReferenceCounting<ScalarFunctionBase>& c) const
00084 {
00085 VariationalOperatorFdxGV* newOperator
00086 = new VariationalOperatorFdxGV(*this);
00087 ScalarFunctionBuilder functionBuilder;
00088 functionBuilder.setFunction(__f);
00089 functionBuilder.setBinaryOperation(BinaryOperation::product,c);
00090
00091 (*newOperator).__f = functionBuilder.getBuiltFunction();
00092 return newOperator;
00093 }
00094
00104 VariationalOperatorFdxGV(const size_t& testFunctionNumber,
00105 const VariationalOperator::Property& testFunctionProperty,
00106 ConstReferenceCounting<ScalarFunctionBase> f,
00107 ConstReferenceCounting<ScalarFunctionBase> g,
00108 const size_t& i)
00109 : VariationalLinearOperator(VariationalLinearOperator::FdxGV,
00110 testFunctionNumber, testFunctionProperty),
00111 __f(f),
00112 __g(g),
00113 __i(i)
00114 {
00115 ;
00116 }
00117
00123 VariationalOperatorFdxGV(const VariationalOperatorFdxGV& V)
00124 : VariationalLinearOperator(V),
00125 __f(V.__f),
00126 __g(V.__g),
00127 __i(V.__i)
00128 {
00129 ;
00130 }
00131
00136 ~VariationalOperatorFdxGV()
00137 {
00138 ;
00139 }
00140 };
00141
00142 #endif // VARIATIONAL_OPERATOR_F_DX_G_V_HPP