feat: add analysis state and base
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user