00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIATIONAL_OPERATOR_MU_GRADU_GRADV_HPP
00021 #define VARIATIONAL_OPERATOR_MU_GRADU_GRADV_HPP
00022
00023 #include <VariationalBilinearOperator.hpp>
00024 #include <ScalarFunctionBuilder.hpp>
00025 #include <ScalarFunctionBase.hpp>
00034 class VariationalMuGradUGradVOperator
00035 : public VariationalBilinearOperator
00036 {
00037 private:
00038 ConstReferenceCounting<ScalarFunctionBase>
00039 __mu;
00041 public:
00042
00049 ConstReferenceCounting<ScalarFunctionBase> mu() const
00050 {
00051 return __mu;
00052 }
00053
00061 ReferenceCounting<VariationalBilinearOperator>
00062 operator*(const ConstReferenceCounting<ScalarFunctionBase>& c) const
00063 {
00064 VariationalMuGradUGradVOperator* newOperator
00065 = new VariationalMuGradUGradVOperator(*this);
00066
00067 ScalarFunctionBuilder functionBuilder;
00068 functionBuilder.setFunction(__mu);
00069 functionBuilder.setBinaryOperation(BinaryOperation::product,c);
00070
00071 newOperator->__mu = functionBuilder.getBuiltFunction();
00072
00073 return newOperator;
00074 }
00075
00085 VariationalMuGradUGradVOperator(const size_t& unknownNumber ,
00086 const VariationalOperator::Property& unknownProperty,
00087 const size_t& testFunctionNumber,
00088 const VariationalOperator::Property& testFunctionProperty,
00089 ConstReferenceCounting<ScalarFunctionBase> mu)
00090 : VariationalBilinearOperator(VariationalBilinearOperator::muGradUGradV,
00091 unknownNumber, unknownProperty,
00092 testFunctionNumber, testFunctionProperty),
00093 __mu(mu)
00094 {
00095 ;
00096 }
00097
00103 VariationalMuGradUGradVOperator(const VariationalMuGradUGradVOperator& V)
00104 : VariationalBilinearOperator(V),
00105 __mu(V.__mu)
00106 {
00107 ;
00108 }
00109
00114 ~VariationalMuGradUGradVOperator()
00115 {
00116 ;
00117 }
00118 };
00119
00120 #endif // VARIATIONAL_OPERATOR_MU_GRADU_GRADV_HPP