feat(cpp-object-oriented-modular-refactoring): step 19 - boundary-condition-policy
This commit is contained in:
@@ -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_; }
|
||||
|
||||
Reference in New Issue
Block a user