Flow123d  release_3.0.0-1106-ga3b2e4c
Classes | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
BaseMeshReader Class Referenceabstract

#include <msh_basereader.hh>

Inheritance diagram for BaseMeshReader:
Inheritance graph
[legend]
Collaboration diagram for BaseMeshReader:
Collaboration graph
[legend]

Classes

struct  HeaderQuery
 
struct  MeshDataHeader
 

Public Member Functions

 TYPEDEF_ERR_INFO (EI_FieldName, std::string)
 
 TYPEDEF_ERR_INFO (EI_Time, double)
 
 TYPEDEF_ERR_INFO (EI_MeshFile, std::string)
 
 TYPEDEF_ERR_INFO (EI_Type, std::string)
 
 TYPEDEF_ERR_INFO (EI_TokenizerMsg, std::string)
 
 TYPEDEF_ERR_INFO (EI_FileExtension, std::string)
 
 DECLARE_INPUT_EXCEPTION (ExcFieldNameNotFound,<< "No data for field: "<< EI_FieldName::qval<< " and time: "<< EI_Time::val<< " in the input file: "<< EI_MeshFile::qval)
 
 DECLARE_INPUT_EXCEPTION (ExcMissingFieldDiscretization,<< "Missing data type specification for field: "<< EI_FieldName::qval<< " and time: "<< EI_Time::val<< " in the input file: "<< EI_MeshFile::qval<< "\nPlease, add value of key 'input_discretization'.")
 
 DECLARE_EXCEPTION (ExcWrongFormat,<< "Wrong format of "<< EI_Type::val<< ", "<< EI_TokenizerMsg::val<< "\n"<< "in the input file: "<< EI_MeshFile::qval)
 
 DECLARE_EXCEPTION (ExcWrongExtension,<< "Unsupported extension "<< EI_FileExtension::qval<< " of the input file: "<< EI_MeshFile::qval)
 
 BaseMeshReader (const FilePath &file_name)
 Constructor. More...
 
void read_raw_mesh (Mesh *mesh)
 
virtual void read_physical_names (Mesh *mesh)=0
 
template<typename T >
ElementDataCache< T >::ComponentDataPtr get_element_data (unsigned int n_entities, unsigned int n_components, bool boundary_domain, unsigned int component_idx)
 
virtual void check_compatible_mesh (Mesh &mesh)=0
 
std::vector< int > const & get_element_vector (bool boundary_domain)
 
virtual MeshDataHeaderfind_header (HeaderQuery &header_query)=0
 
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())
 

Static Public Member Functions

static std::shared_ptr< BaseMeshReaderreader_factory (const FilePath &file_name)
 
static Meshmesh_factory (const Input::Record &input_mesh_rec)
 

Protected Types

typedef std::shared_ptr< ElementDataCacheBaseElementDataPtr
 
typedef std::map< string, ElementDataPtrElementDataFieldMap
 

Protected Member Functions

 BaseMeshReader (const FilePath &file_name, std::shared_ptr< ElementDataFieldMap > element_data_values)
 Constructor. More...
 
virtual void read_nodes (Mesh *mesh)=0
 
virtual void read_elements (Mesh *mesh)=0
 
virtual void make_header_table ()=0
 
virtual void read_element_data (ElementDataCacheBase &data_cache, MeshDataHeader actual_header, unsigned int n_components, bool boundary_domain)=0
 

Protected Attributes

bool has_compatible_mesh_
 
std::string data_section_name_
 Store name of field data section specify for type of mesh file. More...
 
std::shared_ptr< ElementDataFieldMapelement_data_values_
 Cache with last read element data. More...
 
Tokenizer tok_
 Tokenizer used for reading ASCII file format. More...
 
vector< LongIdxbulk_elements_id_
 
vector< LongIdxboundary_elements_id_
 
MeshDataHeader actual_header_
 Header of actual loaded data. More...
 

Friends

class ReaderCache
 

Detailed Description

Abstract parent of mesh readers.

Supported are:

Definition at line 58 of file msh_basereader.hh.

Member Typedef Documentation

Definition at line 216 of file msh_basereader.hh.

typedef std::shared_ptr<ElementDataCacheBase> BaseMeshReader::ElementDataPtr
protected

Definition at line 215 of file msh_basereader.hh.

Constructor & Destructor Documentation

BaseMeshReader::BaseMeshReader ( const FilePath file_name)

Constructor.

Definition at line 28 of file msh_basereader.cc.

BaseMeshReader::BaseMeshReader ( const FilePath file_name,
std::shared_ptr< ElementDataFieldMap element_data_values 
)
protected

Constructor.

Definition at line 33 of file msh_basereader.cc.

Member Function Documentation

virtual void BaseMeshReader::check_compatible_mesh ( Mesh mesh)
pure virtual

Check if nodes and elements of reader mesh is compatible with mesh.

OBSOLETE method - will be replace with Mesh::check_compatible_mesh after merge fields!

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

BaseMeshReader::DECLARE_EXCEPTION ( ExcWrongFormat  ,
<< "Wrong format of "<< EI_Type::val<< "  ,
"<< EI_TokenizerMsg::val<< "\n"<< "in the input file:"<< EI_MeshFile::qval   
)
BaseMeshReader::DECLARE_EXCEPTION ( ExcWrongExtension  ,
<< "Unsupported extension "<< EI_FileExtension::qval<< " of the input file: "<< EI_MeshFile::qval   
)
BaseMeshReader::DECLARE_INPUT_EXCEPTION ( ExcFieldNameNotFound  ,
<< "No data for field: "<< EI_FieldName::qval<< " and time: "<< EI_Time::val<< " in the input file: "<< EI_MeshFile::qval   
)
BaseMeshReader::DECLARE_INPUT_EXCEPTION ( ExcMissingFieldDiscretization  ,
<< "Missing data type specification for field: "<< EI_FieldName::qval<< " and time: "<< EI_Time::val<< " in the input file: "<< EI_MeshFile::qval<< "\  nPlease,
add value of key 'input_discretization'."   
)
virtual MeshDataHeader& BaseMeshReader::find_header ( HeaderQuery header_query)
pure virtual

Find data header for time and field given by header_query.

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

template<typename T >
ElementDataCache< T >::ComponentDataPtr BaseMeshReader::get_element_data ( unsigned int  n_entities,
unsigned int  n_components,
bool  boundary_domain,
unsigned int  component_idx 
)

Reads ElementData sections of opened mesh file. Method must be call after set_data_header method. If such section has not been yet read, we read the data section into raw buffer data. The buffer must have size at least n_components * n_entities. Indexes in the map must be smaller then n_entities.

Possible optimizations: If the map ID lookup seem slow, we may assume that IDs are in increasing order, use simple array of IDs instead of map and just check that they comes in in correct order.

Parameters
n_entitiescount of entities (elements)
n_componentscount of components (size of returned data is given by n_entities*n_components)
boundary_domainflag determines that data is read for boundary or bulk elements
component_idxcomponent index of MultiField

Definition at line 87 of file msh_basereader.cc.

std::vector< int > const & BaseMeshReader::get_element_vector ( bool  boundary_domain)

Returns vector of boundary or bulk element ids by parameter boundary_domain

Definition at line 80 of file msh_basereader.cc.

Here is the caller graph for this function:

virtual void BaseMeshReader::make_header_table ( )
protectedpure virtual

Reads table of data headers specific for each descendants.

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

Mesh * BaseMeshReader::mesh_factory ( const Input::Record input_mesh_rec)
static

This static method gets accessor to record with function input, dispatch to correct constructor and initialize appropriate function object from the input. Returns pointer to Mesh.

Definition at line 52 of file msh_basereader.cc.

Here is the caller graph for this function:

virtual void BaseMeshReader::read_element_data ( ElementDataCacheBase data_cache,
MeshDataHeader  actual_header,
unsigned int  n_components,
bool  boundary_domain 
)
protectedpure virtual

Read element data to data cache

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

Here is the caller graph for this function:

virtual void BaseMeshReader::read_elements ( Mesh mesh)
protectedpure virtual

Method for reading of elements.

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

Here is the caller graph for this function:

virtual void BaseMeshReader::read_nodes ( Mesh mesh)
protectedpure virtual

private method for reading of nodes

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

Here is the caller graph for this function:

virtual void BaseMeshReader::read_physical_names ( Mesh mesh)
pure virtual

Read regions from the mesh file and save the physical sections as regions in the RegionDB.

Implemented in VtkMeshReader, GmshMeshReader, and PvdMeshReader.

void BaseMeshReader::read_raw_mesh ( Mesh mesh)

Reads raw data of mesh (only nodes and elements) from the GMSH or VTKfile. Input of the mesh allows changing regions within the input file.

Definition at line 72 of file msh_basereader.cc.

std::shared_ptr< BaseMeshReader > BaseMeshReader::reader_factory ( const FilePath file_name)
static

This static method gets file path object of reader, dispatch to correct constructor and initialize appropriate function object from the input. Returns shared pointer to BaseMeshReader.

Definition at line 38 of file msh_basereader.cc.

Here is the caller graph for this function:

CheckResult BaseMeshReader::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() 
)

Scale and check data stored in ElementDataCache of given field.

Definition at line 138 of file msh_basereader.cc.

BaseMeshReader::TYPEDEF_ERR_INFO ( EI_FieldName  ,
std::string   
)
BaseMeshReader::TYPEDEF_ERR_INFO ( EI_Time  ,
double   
)
BaseMeshReader::TYPEDEF_ERR_INFO ( EI_MeshFile  ,
std::string   
)
BaseMeshReader::TYPEDEF_ERR_INFO ( EI_Type  ,
std::string   
)
BaseMeshReader::TYPEDEF_ERR_INFO ( EI_TokenizerMsg  ,
std::string   
)
BaseMeshReader::TYPEDEF_ERR_INFO ( EI_FileExtension  ,
std::string   
)

Friends And Related Function Documentation

friend class ReaderCache
friend

Definition at line 265 of file msh_basereader.hh.

Member Data Documentation

MeshDataHeader BaseMeshReader::actual_header_
protected

Header of actual loaded data.

Definition at line 263 of file msh_basereader.hh.

vector<LongIdx> BaseMeshReader::boundary_elements_id_
protected

Definition at line 260 of file msh_basereader.hh.

vector<LongIdx> BaseMeshReader::bulk_elements_id_
protected

Vector of both bulk and boundary IDs. Bulk elements come first, then boundary elements, but only the portion that appears in input mesh file and has ID assigned.

Definition at line 260 of file msh_basereader.hh.

std::string BaseMeshReader::data_section_name_
protected

Store name of field data section specify for type of mesh file.

Definition at line 250 of file msh_basereader.hh.

std::shared_ptr<ElementDataFieldMap> BaseMeshReader::element_data_values_
protected

Cache with last read element data.

Definition at line 253 of file msh_basereader.hh.

bool BaseMeshReader::has_compatible_mesh_
protected

Flag stores that check of compatible mesh was performed.

This flag has effect only for VTK reader.

Definition at line 247 of file msh_basereader.hh.

Tokenizer BaseMeshReader::tok_
protected

Tokenizer used for reading ASCII file format.

Definition at line 256 of file msh_basereader.hh.


The documentation for this class was generated from the following files: