19 #ifndef __H2D_LINEARIZER_H
20 #define __H2D_LINEARIZER_H
27 #include "../function/solution.h"
43 template<
typename LinearizerDataDimensions>
45 public Hermes::Mixins::TimeMeasurable,
46 public Hermes::Mixins::Loggable,
62 void save_solution_vtk(
MeshFunctionSharedPtr<double> sln,
const char* filename,
const char* quantity_name,
bool mode_3D =
true,
int item = H2D_FN_VAL_0);
64 void save_solution_vtk(std::vector<
MeshFunctionSharedPtr<double> > slns, std::vector<int> items,
const char* filename,
const char* quantity_name,
bool mode_3D =
true);
68 void save_solution_tecplot(std::vector<
MeshFunctionSharedPtr<double> > slns, std::vector<int> items,
const char* filename, std::vector<std::string> quantity_names);
92 int& get_marker()
const;
96 int current_thread_index;
98 int current_thread_size;
99 std::vector<int> thread_sizes;
101 void check_zero_lengths();
115 int get_vertex_count()
const;
117 int get_triangle_count()
const;
119 int get_edge_count()
const;
121 int get_triangle_index_count()
const;
123 void set_max_absolute_value(
double max_abs);
125 double get_min_value()
const;
126 double get_max_value()
const;
132 void set_curvature_epsilon(
double curvature_epsilon);
135 double get_curvature_epsilon()
const;
145 void lock_data()
const;
146 void unlock_data()
const;
149 void calc_vertices_aabb(
double* min_x,
double* max_x,
double* min_y,
double* max_y)
const;
152 Quad2D *old_quad[LinearizerDataDimensions::dimension], *old_quad_x, *old_quad_y;
166 std::vector<MeshSharedPtr> meshes;
175 mutable pthread_mutex_t data_mutex;
185 int item[LinearizerDataDimensions::dimension], component[LinearizerDataDimensions::dimension], value_type[LinearizerDataDimensions::dimension];
191 unsigned int num_states;
193 double min_val, max_val;
Class utilizes parallel calculation.
double curvature_epsilon
Standard and curvature epsilon.
bool user_xdisp
Information if user-supplied displacement functions have been provided.
File containing ThreadLinearizerMultidimensional class.
LinearizerOutputType linearizerOutputType
File containing utilities for class.
double dmult
Displacement multiplicator - used e.g. in Elasticity to multiply the displacement to make it more not...
ThreadLinearizerMultidimensional< LinearizerDataDimensions > ** threadLinearizerMultidimensional
Assembly data.
MeshFunctionSharedPtr< double > xdisp
Displacement functions, default to ZeroFunctions, may be supplied by set_displacement();.
LinearizerMultidimensional< ScalarLinearizerDataDimensions< LINEARIZER_DATA_TYPE > > Linearizer
Linearizer for scalar cases - historically called Linearizer.
LinearizerMultidimensional< VectorLinearizerDataDimensions< LINEARIZER_DATA_TYPE > > Vectorizer
Linearizer for vector cases - historically called Vectorizer.
LinearizerCriterion criterion
Abstract class for criterion according to which the linearizer stops dividing elements at some point ...
bool end
The iterator has reached the end of the data.