Flow123d
JS_before_hm-2182-g6dfc51a91
|
Go to the documentation of this file.
34 : element_data_values_(element_data_values),
39 std::shared_ptr<BaseMeshReader> reader_ptr;
41 reader_ptr = std::make_shared<GmshMeshReader>(file_name);
42 }
else if ( file_name.
extension() ==
".vtu" ) {
43 reader_ptr = std::make_shared<VtkMeshReader>(file_name);
44 }
else if ( file_name.
extension() ==
".pvd" ) {
45 reader_ptr = std::make_shared<PvdMeshReader>(file_name);
47 THROW(ExcWrongExtension() << EI_FileExtension(file_name.
extension()) << EI_MeshFile((
string)file_name) );
56 Mesh * mesh =
new Mesh( input_mesh_rec );
59 auto file = input_mesh_rec.
val<
FilePath>(
"mesh_file");
61 reader->read_physical_names(mesh);
62 if (input_mesh_rec.
opt_val(
"regions", region_list)) {
65 reader->read_raw_mesh(mesh);
66 }
INPUT_CATCH(FilePath::ExcFileOpen, FilePath::EI_Address_String, input_mesh_rec)
75 ASSERT(mesh).error(
"Argument mesh is NULL.\n");
76 tok_.set_position( Tokenizer::Position() );
91 unsigned int expected_n_components,
bool boundary_domain) {
93 .error(
"Vector of mapping VTK to GMSH element is not initialized. Did you call check_compatible_mesh?");
99 (*element_data_values_)[field_name] = std::make_shared< ElementDataCache<T> >();
103 if ( !
it->second->is_actual(header.
time, field_name) ) {
105 if (header.
n_entities != expected_n_entities) {
106 WarningOut().fmt(
"In file '{}', '{}' section for field '{}', time: {}.\nDifferent number of entities: {}, computation needs {}.\n",
111 WarningOut().fmt(
"In file '{}', '{}' section for field '{}', time: {}.\nWrong number of components: {}, expected: {} .\n",
113 THROW(ExcWrongComponentsCount() << EI_FieldName(field_name) << EI_Time(header.
time) << EI_MeshFile(
tok_.f_name()) );
116 (*element_data_values_)[field_name] = std::make_shared< ElementDataCache<T> >(
117 field_name, header.
time,
118 expected_n_components*expected_n_entities);
127 double upper_bound) {
131 std::shared_ptr< ElementDataCache<double> > current_cache = dynamic_pointer_cast<ElementDataCache<double> >(
it->second);
132 ASSERT(current_cache)(field_name).error(
"scale_and_check_limits can be call only for scalable fields!\n");
134 CheckResult check_val = current_cache->check_values(default_val, lower_bound, upper_bound);
135 current_cache->scale_data(coef);
142 #define MESH_READER_GET_ELEMENT_DATA(TYPE) \
143 template typename ElementDataCache<TYPE>::CacheData BaseMeshReader::get_element_data<TYPE>( \
144 MeshDataHeader header, unsigned int n_entities, \
145 unsigned int n_components, bool boundary_domain);
Tokenizer tok_
Tokenizer used for reading ASCII file format.
#define MESH_READER_GET_ELEMENT_DATA(TYPE)
CheckResult scale_and_check_limits(string field_name, double coef, double default_val, double lower_bound=-std::numeric_limits< double >::max(), double upper_bound=std::numeric_limits< double >::max())
vector< LongIdx > boundary_elements_id_
static std::shared_ptr< BaseMeshReader > reader_factory(const FilePath &file_name)
#define ASSERT(expr)
Allow use shorter versions of macro names if these names is not used with external library.
Dedicated class for storing path to input and output files.
virtual void read_nodes(Mesh *mesh)=0
#define THROW(whole_exception_expr)
Wrapper for throw. Saves the throwing point.
void read_regions_from_input(Input::Array region_list)
const std::vector< int > & get_element_vector(bool boundary_domain)
std::shared_ptr< ElementDataFieldMap > element_data_values_
Cache with last read element data.
static Mesh * mesh_factory(const Input::Record &input_mesh_rec)
CacheData get_data()
Return underlying vector of element data.
CheckResult
Return type of method that checked data stored in ElementDataCache (NaN values, limits)
BaseMeshReader(const FilePath &file_name)
Constructor.
virtual void read_elements(Mesh *mesh)=0
std::shared_ptr< std::vector< T > > CacheData
#define WarningOut()
Macro defining 'warning' record of log.
void read_raw_mesh(Mesh *mesh)
ElementDataCache< T >::CacheData get_element_data(MeshDataHeader header, unsigned int expected_n_entities, unsigned int expected_n_components, bool boundary_domain)
std::string data_section_name_
Store name of field data section specify for type of mesh file.
virtual void read_element_data(ElementDataCacheBase &data_cache, MeshDataHeader header, bool boundary_domain)=0
bool has_compatible_mesh_
#define START_TIMER(tag)
Starts a timer with specified tag.
vector< LongIdx > bulk_elements_id_