Workspace 6.21.5
Public Member Functions | Protected Member Functions | List of all members
Hdf5MeshModelInterface Class Reference

Read-only MeshModelInterface implementation that delay-loads underlying data from a specific HDF5 file on an as-requested basis. More...

#include <HDF5/hdf5meshmodelinterface.h>

Inheritance diagram for Hdf5MeshModelInterface:
[legend]

Public Member Functions

 Hdf5MeshModelInterface ()
 
 Hdf5MeshModelInterface (const Hdf5MeshModelInterface &other)
 
 ~Hdf5MeshModelInterface () override
 
Mesh::ElementType::List attachmentInfoExistsFor () const override
 
bool attachmentInfoExistsFor (const Mesh::ElementType::Type &elementType) const override
 
Hdf5MeshModelInterfaceclone () const override
 
void discardAttachmentInfo (const Mesh::ElementType::Type &elementType) override
 
void emptyTrash () override
 
bool generateAttachmentInfo (const Mesh::ElementType::Type &elementType) override
 
Mesh::ElementHandleList getAttachedElements (const Mesh::ElementType::Type &elementType, const Mesh::NodeHandle &node) const override
 
const Mesh::MeshElementsInterfacegetElements (const Mesh::ElementType::Type &type) const override
 
Mesh::MeshElementsInterfacegetElements (const Mesh::ElementType::Type &type) override
 
Mesh::ElementType::List getElementTypesPresentInModel () const override
 
Mesh::ElementType::List getElementTypesWithStatesDefined () const override
 
const Mesh::MeshNodesInterfacegetNodes () const override
 
Mesh::MeshNodesInterfacegetNodes () override
 
bool initialize (hid_t *file, const QString &meshName, int lod)
 
bool isElementTypeSupported (const Mesh::ElementType::Type &type) const override
 
Hdf5MeshModelInterfaceoperator= (const Hdf5MeshModelInterface &other)
 
- Public Member Functions inherited from TypedMeshModelInterface< Hdf5MeshModelInterface >
DataExecution::DataObjectcreateDownCastTypedObject () override
 
const DataExecution::DataFactorygetFactory () const override
 
- Public Member Functions inherited from MeshModelInterface
 ~MeshModelInterface () override
 
bool assignFrom (const MeshModelInterface &other, bool allowPartialAssign=false)
 
virtual ElementType::List attachmentInfoExistsFor () const =0
 
virtual bool attachmentInfoExistsFor (const ElementType::Type &elementType) const =0
 
virtual void clear (bool removeAllStates=true)
 
MeshModelInterfaceclone () const override=0
 
virtual DataExecution::DataObjectcreateDownCastTypedObject ()=0
 
void discardAllAttachmentInfo ()
 
virtual void discardAttachmentInfo (const ElementType::Type &elementType)=0
 
virtual void emptyTrash ()=0
 
virtual bool generateAttachmentInfo (const ElementType::Type &elementType)=0
 
virtual ElementHandleList getAttachedElements (const ElementType::Type &elementType, const NodeHandle &node) const =0
 
virtual NodeHandleList getAttachedNodes (const ElementType::Type &elementType, const NodeHandle &node) const
 
template<typename T >
MeshElementsInterfacegetElements ()
 
template<typename T >
const MeshElementsInterfacegetElements () const
 
virtual const MeshElementsInterfacegetElements (const ElementType::Type &type) const =0
 
virtual MeshElementsInterfacegetElements (const ElementType::Type &type)=0
 
virtual ElementType::List getElementTypesPresentInModel () const =0
 
ElementType::List getElementTypesPresentOrWithStates () const
 
virtual ElementType::List getElementTypesWithStatesDefined () const =0
 
virtual const DataExecution::DataFactorygetFactory () const =0
 
MetaDatagetMetaData ()
 
const MetaDatagetMetaData () const
 
virtual const MeshNodesInterfacegetNodes () const =0
 
virtual MeshNodesInterfacegetNodes ()=0
 
virtual bool isElementTypeSupported (const ElementType::Type &type) const =0
 
virtual bool isOrganised () const
 
virtual bool load (MeshSerializer &serializer)
 
virtual bool makeUnorganised ()
 
virtual bool save (MeshSerializer &serializer) const
 
void setMetaData (const MetaData &val)
 
- Public Member Functions inherited from Clonable
virtual ~Clonable ()=default
 
virtual Clonableclone () const =0
 

Protected Member Functions

bool fastAssignFrom (const Mesh::MeshModelInterface &other) override
 
- Protected Member Functions inherited from TypedMeshModelInterface< Hdf5MeshModelInterface >
 TypedMeshModelInterface ()
 
 TypedMeshModelInterface (const TypedMeshModelInterface &other)
 
virtual bool fastAssignFrom (const MeshModelInterface &other)=0
 

Additional Inherited Members

- Public Types inherited from MeshModelInterface
using int_type = qint32
 
using MetaData = DataExecution::ObjectDictionary
 
typedef ItemHandle::size_type size_type
 
- Static Public Member Functions inherited from MeshModelInterface
static MeshModelInterfacecreateDefault ()
 

Detailed Description

When the interface is initially created, only "header-like" information will be loaded from the underlying file - enough to provide information about the number of nodes and the names and types of states stored within. When calling code attempts to access node positions, element indices or state data, the object will then load the relevant data from the underlying file and store it in memory. This minimises memory usage and file IO to only that which is actually needed by the application.

See also
Hdf5Mesh::MeshNodesInterface
Hdf5Mesh::MeshElementsInterface
Hdf5StateStorage

Constructor & Destructor Documentation

◆ Hdf5MeshModelInterface() [1/2]

◆ Hdf5MeshModelInterface() [2/2]

◆ ~Hdf5MeshModelInterface()

~Hdf5MeshModelInterface ( )
override

Member Function Documentation

◆ attachmentInfoExistsFor() [1/2]

ElementType::List attachmentInfoExistsFor ( ) const
overridevirtual
Returns
A list of element types for which attachment info exists
See also
generateAttachmentInfo, discardAttachmentInfo, getAttached, isAttached

Implements MeshModelInterface.

◆ attachmentInfoExistsFor() [2/2]

bool attachmentInfoExistsFor ( const Mesh::ElementType::Type elementType) const
overridevirtual
Parameters
elementTypeThe type of element we want to check if attachment info exists for
See also
generateAttachmentInfo, discardAttachmentInfo, getAttached, isAttached

Implements MeshModelInterface.

◆ clone()

Hdf5MeshModelInterface * clone ( ) const
overridevirtual

Derived classes should return their derived type.

Implements MeshModelInterface.

◆ discardAttachmentInfo()

void discardAttachmentInfo ( const Mesh::ElementType::Type elementType)
overridevirtual
Parameters
elementTypeThe type of element we want discard attachment info for
See also
generateAttachmentInfo, attachmentInfoExistsFor, attachmentInfoExistsFor, getAttached, isAttached

Implements MeshModelInterface.

◆ emptyTrash()

void emptyTrash ( )
overridevirtual

Depending on the implementation, removing nodes or elements may just mark their index as invalid rather than completely removing it from internal lists/storage. It should also be noted that removing a node does not guarantee any bookkeeping to update any attached elements, calling code is responsible for this if needed. Specific implementations of MeshModelInterface can use emptyTrash to completely remove any stored nodes and elements (e.g. in a single more efficient way after multiple remove operations) and can optionally use this to remove elements now referencing invalid nodes. This behaviour is implementation specific and calling code should check specific implementation class documentation.

Implements MeshModelInterface.

◆ fastAssignFrom()

bool fastAssignFrom ( const Mesh::MeshModelInterface other)
overrideprotectedvirtual

Perform assignment from another MeshModelInterface. This method is called by operator=() allowing the derived class to check other.getFactory() to see if the other object is the same type as themselves or some other known MeshModelInterface implementation that they can cast for faster assignment (via the derived class assignment operator for example). If the derived class can not offer a fast assignment then it must return false signaling that an assignment should be performed using just the base class interface.

Returns
true if a fast assignment has been performed or false if it couldn't.
See also
operator=()

Implements MeshModelInterface.

◆ generateAttachmentInfo()

bool generateAttachmentInfo ( const Mesh::ElementType::Type elementType)
overridevirtual
Precondition
If the model has been modified since the last call to generateAttachmentInfo then clients should first call discardAttachmentInfo() before this call to ensure the correct attachment info exists.

Implements MeshModelInterface.

◆ getAttachedElements()

ElementHandleList getAttachedElements ( const Mesh::ElementType::Type elementType,
const Mesh::NodeHandle node 
) const
overridevirtual
Precondition
generateAttachmentInfo must have already been called successfully for elementType.
Parameters
elementTypeThe type of attached element
nodeThe node we're querying the attachments of
See also
generateAttachmentInfo, discardAttachmentInfo, attachmentInfoExistsFor, isAttached

Implements MeshModelInterface.

◆ getElements() [1/2]

const MeshElementsInterface & getElements ( const Mesh::ElementType::Type type) const
overridevirtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Implements MeshModelInterface.

◆ getElements() [2/2]

MeshElementsInterface & getElements ( const Mesh::ElementType::Type type)
overridevirtual

Derived class should return MeshElementsInterface::getNullMeshElementsInterface() if an unsupported type is requested. This should be consistent with calls to isElementTypeSupported().

Implements MeshModelInterface.

◆ getElementTypesPresentInModel()

ElementType::List getElementTypesPresentInModel ( ) const
overridevirtual
Returns
A list of ElementType::Types that this model currently contains.

Implements MeshModelInterface.

◆ getElementTypesWithStatesDefined()

ElementType::List getElementTypesWithStatesDefined ( ) const
overridevirtual
Returns
A list of ElementType::Types that currently have states defined in this model.

Implements MeshModelInterface.

◆ getNodes() [1/2]

const MeshNodesInterface & getNodes ( ) const
overridevirtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Implements MeshModelInterface.

◆ getNodes() [2/2]

MeshNodesInterface & getNodes ( )
overridevirtual
Returns
A MeshNodesInterface

Implements MeshModelInterface.

◆ initialize()

bool initialize ( hid_t *  file,
const QString &  meshName,
int  lod 
)
Parameters
file
meshName
lod
Returns
true if init was successful, false otherwise. The cause of most failures will be an invalid mesh name, invalid LOD, or the file is unable to be read from.
Note
Takes ownership of file

◆ isElementTypeSupported()

bool isElementTypeSupported ( const Mesh::ElementType::Type type) const
overridevirtual
Returns
Whether the implementation supports elements of this type

Implements MeshModelInterface.

◆ operator=()

Hdf5MeshModelInterface & operator= ( const Hdf5MeshModelInterface other)