43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
#ifndef FESA_ELEMENTS_ELEMENT_DEFINITION_H_
|
|
#define FESA_ELEMENTS_ELEMENT_DEFINITION_H_
|
|
|
|
#include <string_view>
|
|
#include <vector>
|
|
|
|
#include "fesa/core/source_identity.h"
|
|
|
|
namespace fesa {
|
|
|
|
/// @brief Identifies the supported semantic element-definition kinds.
|
|
enum class ElementDefinitionKind { kEulerBeam3D, kMitc4Shell };
|
|
|
|
/// @brief Provides immutable source identity and topology for one element.
|
|
/// @note Numerical stiffness, recovery, and equation ids are intentionally
|
|
/// excluded from this semantic interface.
|
|
class ElementDefinition {
|
|
public:
|
|
virtual ~ElementDefinition() = default;
|
|
|
|
/// @brief Returns the concrete semantic definition kind.
|
|
virtual ElementDefinitionKind Kind() const noexcept = 0;
|
|
|
|
/// @brief Returns the stable external source identity.
|
|
virtual const SourceEntityId& SourceId() const noexcept = 0;
|
|
|
|
/// @brief Returns the preserved source element type such as B33 or S4R.
|
|
virtual std::string_view SourceElementType() const noexcept = 0;
|
|
|
|
/// @brief Returns stable Domain node collection positions.
|
|
virtual const std::vector<EntityIndex>& NodeIndices() const noexcept = 0;
|
|
|
|
/// @brief Returns the stable Domain material collection position.
|
|
virtual EntityIndex MaterialIndex() const noexcept = 0;
|
|
|
|
/// @brief Returns the stable Domain property collection position.
|
|
virtual EntityIndex PropertyIndex() const noexcept = 0;
|
|
};
|
|
|
|
} // namespace fesa
|
|
|
|
#endif // FESA_ELEMENTS_ELEMENT_DEFINITION_H_
|