* @author Ralf Hartmann, 1999
*/
template<typename number, typename inverse_type = number>
-class PreconditionBlock: public Subscriptor
+class PreconditionBlock
{
public:
/**
/**
* Destructor.
*/
- virtual ~PreconditionBlock();
+ ~PreconditionBlock();
/**
* Initialize matrix and block
* that it had directly after
* calling the constructor.
*/
- virtual void clear();
+ void clear();
/**
* Use only the inverse of the
* Block Jacobi preconditioning.
*/
template<typename number, typename inverse_type = number>
-class PreconditionBlockJacobi : public PreconditionBlock<number,inverse_type>
+class PreconditionBlockJacobi : public Subscriptor,
+ private PreconditionBlock<number,inverse_type>
{
public:
+ /**
+ * Make initialization function
+ * publicly available.
+ */
+ PreconditionBlock<number,inverse_type>::initialize;
+
+ /**
+ * Make function public.
+ */
+ PreconditionBlock<number,inverse_type>::invert_diagblocks;
+
/**
* Execute block Jacobi
* preconditioning.
* in the @p{operator ()} function of this class.
*/
template<typename number, typename inverse_type = number>
-class PreconditionBlockSOR : public PreconditionBlock<number,inverse_type>
+class PreconditionBlockSOR : public Subscriptor,
+ private PreconditionBlock<number,inverse_type>
{
public:
/**
*/
virtual ~PreconditionBlockSOR();
+ /**
+ * Make initialization function
+ * publicly available.
+ */
+ PreconditionBlock<number,inverse_type>::initialize;
+
+ /**
+ * Make function public.
+ */
+ PreconditionBlock<number,inverse_type>::invert_diagblocks;
+
/**
* Set the relaxation parameter.
*/
private:
/**
- * Damping parameter.
+ * Relaxation parameter.
*/
number omega;
};