- // {Include files}
+ // @sect3{Include files}
// This program is an daptation of step-20
// and includes some technique of DG method from step-12
#include <base/tensor_function.h>
- // {The ``TwoPhaseFlowProblem'' class template}
+ // @sect3{The ``TwoPhaseFlowProblem'' class template}
template <int dim>
- // {The inverse permeability tensor,
- Coefficient and inverse mobility scalar}
+ // @sect3{The inverse permeability tensor, Coefficient and inverse mobility scalar}
//For the inverse permeability tensor,
// of the function in the second
// argument, a list of tensors:
template <int dim>
-class KInverse : public TensorFunction<2,dim>
+class KInverse //: public TensorFunction<2,dim>
{
public:
- virtual void value_list (const std::vector<Point<dim> > &points,
+ KInverse ()
+ {}
+
+ /*virtual*/ void value_list (const std::vector<Point<dim> > &points,
std::vector<Tensor<2,dim> > &values,
const double epsilon) const;
};
- // {extract_u and friends}
+ // @sect4{extract_u and friends}
// The next five functions are
// needed for matrix and right hand
- // {TwoPhaseFlowProblem class implementation}
+ // @sect3{TwoPhaseFlowProblem class implementation}
- // {TwoPhaseFlowProblem::TwoPhaseFlowProblem}
+ // @sect4{TwoPhaseFlowProblem::TwoPhaseFlowProblem}
// we use RT(k) X DG(k),DG(k) spaces.
// time_step is small enough to make the solution
// converges stably.
- // {TwoPhaseFlowProblem::make_grid_and_dofs}
+ // @sect4{TwoPhaseFlowProblem::make_grid_and_dofs}
// This next function starts out with
// well-known functions calls that
}
- // {TwoPhaseFlowProblem::assemble_system}
+ // @sect4{TwoPhaseFlowProblem::assemble_system}
// The function that
// assembles the linear system has
// mostly been discussed already in
}
- // {Linear solvers and preconditioners}
+ // @sect3{Linear solvers and preconditioners}
- // {The ``InverseMatrix'' class template}
+ // @sect4{The ``InverseMatrix'' class template}
// Everything here is completely same with step-20
}
- // {The ``SchurComplement'' class template}
+ // @sect4{The ``SchurComplement'' class template}
class SchurComplement : public Subscriptor
}
- // {The ``ApproximateSchurComplement'' class template}
+ // @sect4{The ``ApproximateSchurComplement'' class template}
class ApproximateSchurComplement : public Subscriptor
{
- // {TwoPhaseFlowProblem::solve}
+ // @sect4{TwoPhaseFlowProblem::solve}
// After all these preparations,
// we finally solves the linear
}
- // {TwoPhaseFlow::compute_errors}
+ // @sect4{TwoPhaseFlow::compute_errors}
// After we have dealt with the
// linear solver and preconditioners,
}
}
- // {TwoPhaseFlowProblem::output_results}
+ // @sect4{TwoPhaseFlowProblem::output_results}
// The output_results function is
// the one in which we generate
}
- // {TwoPhaseFlowProblem::run}
+ // @sect4{TwoPhaseFlowProblem::run}
// This is the final function of our
// main class. It's only job is to
}
- // {The ``main'' function}
+ // @sect3{The ``main'' function}
// In the main function, we pass the
// degree of the finite element space