feat(cpp-object-oriented-modular-refactoring): step 19 - boundary-condition-policy

This commit is contained in:
KOKO\Mimi
2026-08-16 11:23:20 +09:00
parent f26e0a61a8
commit 64a43948ef
27 changed files with 919 additions and 365 deletions
+20 -3
View File
@@ -9,12 +9,24 @@ namespace fesa {
StepDefinition::StepDefinition(StaticStepDefinition definition)
: name_{std::move(definition.name)},
boundaries_{std::move(definition.boundaries)},
initial_increment_{definition.initial_increment},
time_period_{definition.time_period},
minimum_increment_{definition.minimum_increment},
maximum_increment_{definition.maximum_increment},
location_{std::move(definition.location)} {
for (auto& boundary : definition.boundaries) {
for (int source_dof = boundary.first_dof; source_dof <= boundary.last_dof;
++source_dof) {
const std::size_t source_order = boundary_conditions_.size();
auto owned = std::make_unique<PrescribedDisplacementBoundaryCondition>(
SourceTargetQuery{SourceEntityKind::kNode, "", boundary.target},
static_cast<DofComponent>(source_dof - 1), boundary.value,
source_order, boundary.location);
boundary_conditions_view_.push_back(std::cref(*owned));
prescribed_displacements_view_.Add(*owned);
boundary_conditions_.push_back(std::move(owned));
}
}
loads_.reserve(definition.loads.size());
loads_view_.reserve(definition.loads.size());
for (std::size_t source_order = 0U; source_order < definition.loads.size();
@@ -31,9 +43,14 @@ StepDefinition::StepDefinition(StaticStepDefinition definition)
const std::string& StepDefinition::Name() const noexcept { return name_; }
const std::vector<BoundaryCondition>& StepDefinition::Boundaries()
const BoundaryConditionView& StepDefinition::BoundaryConditions()
const noexcept {
return boundaries_;
return boundary_conditions_view_;
}
const DomainCollectionView<PrescribedDisplacementBoundaryCondition>&
StepDefinition::PrescribedDisplacements() const noexcept {
return prescribed_displacements_view_;
}
const LoadView& StepDefinition::Loads() const noexcept { return loads_view_; }