Hermes2D  2.0
discrete_problem_linear.h
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 #ifndef __H2D_DISCRETE_PROBLEM_LINEAR_H
17 #define __H2D_DISCRETE_PROBLEM_LINEAR_H
18 
19 #include "discrete_problem.h"
20 
21 namespace Hermes
22 {
23  namespace Hermes2D
24  {
29  template<typename Scalar>
31  class HERMES_API DiscreteProblemLinear : public DiscreteProblem<Scalar>
32  {
33  public:
35  DiscreteProblemLinear(const WeakForm<Scalar>* wf, Hermes::vector<const Space<Scalar> *> spaces);
36 
38  DiscreteProblemLinear(const WeakForm<Scalar>* wf, const Space<Scalar>* space);
39 
42 
44  virtual ~DiscreteProblemLinear();
45 
48  virtual void assemble(SparseMatrix<Scalar>* mat, Vector<Scalar>* rhs = NULL, bool force_diagonal_blocks = false,
49  Table* block_weights = NULL);
50 
51  protected:
54  virtual void assemble_matrix_form(MatrixForm<Scalar>* form, int order, Func<double>** base_fns, Func<double>** test_fns, Func<Scalar>** ext, Func<Scalar>** u_ext,
55  AsmList<Scalar>* current_als_i, AsmList<Scalar>* current_als_j, Traverse::State* current_state, int n_quadrature_points, Geom<double>* geometry, double* jacobian_x_weights);
56 
57  template<typename T> friend class KellyTypeAdapt;
58  template<typename T> friend class NewtonSolver;
59  template<typename T> friend class PicardSolver;
60  template<typename T> friend class RungeKutta;
61  template<typename T> friend class LinearSolver;
62  };
63  }
64 }
65 #endif