49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
#ifndef FESA_ELEMENTS_EULER_BEAM_3D_DEFINITION_H_
|
|
#define FESA_ELEMENTS_EULER_BEAM_3D_DEFINITION_H_
|
|
|
|
#include <array>
|
|
#include <string_view>
|
|
#include <vector>
|
|
|
|
#include "fesa/elements/element_definition.h"
|
|
|
|
namespace fesa {
|
|
|
|
class Domain;
|
|
|
|
/// @brief Defines one two-node B33 semantic element.
|
|
class EulerBeam3DDefinition final : public ElementDefinition {
|
|
public:
|
|
/// @brief Constructs a parser-validated semantic definition.
|
|
EulerBeam3DDefinition(SourceEntityId source_id,
|
|
std::array<EntityIndex, 2> node_indices,
|
|
EntityIndex material_index, EntityIndex section_index,
|
|
SourceLocation location);
|
|
|
|
ElementDefinitionKind Kind() const noexcept override;
|
|
const SourceEntityId& SourceId() const noexcept override;
|
|
std::string_view SourceElementType() const noexcept override;
|
|
const std::vector<EntityIndex>& NodeIndices() const noexcept override;
|
|
EntityIndex MaterialIndex() const noexcept override;
|
|
EntityIndex PropertyIndex() const noexcept override;
|
|
|
|
SourceEntityId source_id;
|
|
std::array<EntityIndex, 2> node_indices;
|
|
EntityIndex material_index;
|
|
EntityIndex section_index;
|
|
SourceLocation location;
|
|
|
|
private:
|
|
friend class Domain;
|
|
|
|
/// @brief Synchronizes the base view after parser-candidate construction.
|
|
void SynchronizeNodeIndices();
|
|
|
|
std::vector<EntityIndex> node_indices_view_;
|
|
};
|
|
|
|
|
|
} // namespace fesa
|
|
|
|
#endif // FESA_ELEMENTS_EULER_BEAM_3D_DEFINITION_H_
|