feat: add analysis state and base

This commit is contained in:
김경종
2026-06-09 15:12:41 +09:00
parent 7ea08441ed
commit 87529c811a
18 changed files with 1159 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
#pragma once
#include <cstddef>
#include <cstdint>
#include <vector>
namespace fesa::core {
class AnalysisState {
public:
AnalysisState();
explicit AnalysisState(std::size_t dof_count);
std::size_t dofCount() const noexcept;
void resize(std::size_t dof_count);
const std::vector<double>& displacement() const noexcept;
const std::vector<double>& externalForce() const noexcept;
const std::vector<double>& internalForce() const noexcept;
const std::vector<double>& residual() const noexcept;
const std::vector<double>& reaction() const noexcept;
void setDisplacement(std::vector<double> values);
void setExternalForce(std::vector<double> values);
void setInternalForce(std::vector<double> values);
void setResidual(std::vector<double> values);
void setReaction(std::vector<double> values);
void clearForces() noexcept;
double currentTime() const noexcept;
void setCurrentTime(double value) noexcept;
std::int64_t incrementIndex() const noexcept;
void setIncrementIndex(std::int64_t value) noexcept;
std::int64_t iterationIndex() const noexcept;
void setIterationIndex(std::int64_t value) noexcept;
private:
void setVector(std::vector<double>& target, std::vector<double> values);
static void zero(std::vector<double>& values) noexcept;
std::size_t dof_count_;
std::vector<double> displacement_;
std::vector<double> external_force_;
std::vector<double> internal_force_;
std::vector<double> residual_;
std::vector<double> reaction_;
double current_time_;
std::int64_t increment_index_;
std::int64_t iteration_index_;
};
} // namespace fesa::core