16 #ifndef __H2D_FILTER_H
17 #define __H2D_FILTER_H
35 template<
typename Scalar>
46 virtual void reinit();
54 virtual void set_quad_2d(
Quad2D* quad_2d);
56 virtual void set_active_element(
Element* e);
60 virtual void push_transform(
int son);
62 virtual void pop_transform();
70 uint64_t sln_sub[H2D_MAX_COMPONENTS];
79 #ifdef _MSC_VER // For Visual Studio compiler the latter does not compile.
80 std::map<uint64_t, LightArray<Node*>*> tables[H2D_MAX_QUADRATURES];
82 std::map<uint64_t, LightArray<struct Filter<Scalar>::Node*>*> tables[H2D_MAX_QUADRATURES];
89 void copy_base(
Filter* flt);
91 virtual void setDeleteSolutions();
111 template<
typename Scalar>
125 int item[H2D_MAX_COMPONENTS];
127 virtual void filter_fn(
int n, Hermes::vector<Scalar*> values, Scalar* result) = 0;
129 void init_components();
130 virtual void precalculate(
int order,
int mask);
146 virtual void set_quad_2d(
Quad2D* quad_2d);
148 virtual void set_active_element(
Element* e);
150 virtual void push_transform(
int son);
152 virtual void pop_transform();
159 virtual void filter_fn(
int n, std::complex<double>* values,
double* result) = 0;
161 virtual void precalculate(
int order,
int mask);
170 template<
typename Scalar>
187 virtual void filter_fn (
int n, Hermes::vector<Scalar *> values, Hermes::vector<Scalar *> dx, Hermes::vector<Scalar *> dy, Scalar* rslt, Scalar* rslt_dx, Scalar* rslt_dy) = 0;
189 void init_components();
191 virtual void precalculate(
int order,
int mask);
198 template<
typename Scalar>
208 virtual void filter_fn(
int n, Hermes::vector<Scalar *> values, Hermes::vector<Scalar *> dx, Hermes::vector<Scalar *> dy, Scalar* rslt, Scalar* rslt_dx, Scalar* rslt_dy);
215 template<
typename Scalar>
226 virtual void filter_fn(
int n, Hermes::vector<Scalar*> values, Scalar* result);
241 virtual void filter_fn(
int n, Hermes::vector<double*> values,
double* result);
242 Hermes::vector<double> limits;
257 virtual void filter_fn(
int n, Hermes::vector<double*> values,
double* result);
258 Hermes::vector<double> limits;
266 ValFilter(Hermes::vector<
MeshFunction<double>*> solutions, Hermes::vector<double> low_limits, Hermes::vector<double> high_limits, Hermes::vector<int> items = *(
new Hermes::vector<int>));
273 virtual void filter_fn(
int n, Hermes::vector<double*> values,
double* result);
274 Hermes::vector<double> low_limits;
275 Hermes::vector<double> high_limits;
280 template<
typename Scalar>
289 virtual void filter_fn(
int n, Hermes::vector<Scalar*> values, Scalar* result);
294 template<
typename Scalar>
303 virtual void filter_fn(
int n, Hermes::vector<Scalar*> values, Scalar* result);
308 template<
typename Scalar>
317 virtual void filter_fn(
int n, Hermes::vector<Scalar*> values, Scalar* result);
331 virtual void filter_fn(
int n, Hermes::vector<double*> values,
double* result);
345 virtual void filter_fn(
int n, std::complex<double>* values,
double* result);
359 virtual void filter_fn(
int n, std::complex<double>* values,
double* result);
373 virtual void filter_fn(
int n, std::complex<double>* values,
double* result);
381 AngleFilter(Hermes::vector<
MeshFunction<std::complex<double> >*> solutions, Hermes::vector<int> items = *(
new Hermes::vector<int>));
385 virtual void filter_fn(
int n, Hermes::vector<std::complex<double>*> values,
double* result);
410 int cyl, item1, item2;
412 virtual void precalculate(
int order,
int mask);
419 template<
typename Scalar>
434 virtual void precalculate(
int order,
int mask);
436 void init_components();
438 virtual void set_active_element(
Element* e);