35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "fesa/model/domain.hpp"
|
|
|
|
#include <vector>
|
|
|
|
namespace fesa {
|
|
|
|
// Provides the sole active-step view while the referenced Domain retains all
|
|
// semantic ownership and must outlive this object.
|
|
class AnalysisModel {
|
|
public:
|
|
static Result<AnalysisModel> create(const Domain& domain);
|
|
|
|
const Domain& domain() const noexcept;
|
|
const StaticStepDefinition& step() const noexcept;
|
|
const std::vector<EntityIndex>& activeElements() const noexcept;
|
|
const std::vector<EntityIndex>& activeMaterials() const noexcept;
|
|
const std::vector<EntityIndex>& activeSections() const noexcept;
|
|
const std::vector<EntityIndex>& activeBoundaryConditions() const noexcept;
|
|
const std::vector<EntityIndex>& activeLoads() const noexcept;
|
|
|
|
private:
|
|
explicit AnalysisModel(const Domain& domain);
|
|
|
|
const Domain* domain_;
|
|
std::vector<EntityIndex> activeElements_;
|
|
std::vector<EntityIndex> activeMaterials_;
|
|
std::vector<EntityIndex> activeSections_;
|
|
std::vector<EntityIndex> activeBoundaryConditions_;
|
|
std::vector<EntityIndex> activeLoads_;
|
|
};
|
|
|
|
} // namespace fesa
|