feat(thermal): add local shell kernel and time grid

This commit is contained in:
KOKO\Mimi
2026-09-29 18:55:48 +09:00
parent 878a71bd96
commit 2e94f70aa5
6 changed files with 99 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
#ifndef FESA_ANALYSIS_THERMAL_TIME_GRID_H_
#define FESA_ANALYSIS_THERMAL_TIME_GRID_H_
#include <cstdint>
#include "fesa/core/status.h"
namespace fesa {
class ThermalTimeGrid final { public:
static Result<ThermalTimeGrid> Create(double period,double increment,std::uint32_t maximum);
std::uint32_t Count() const noexcept; double Time(std::uint32_t index) const noexcept; double Delta(std::uint32_t index) const noexcept;
private: ThermalTimeGrid(double p,double d,std::uint32_t n,bool close):period_(p),increment_(d),count_(n),close_(close){} double period_,increment_; std::uint32_t count_; bool close_; };
}
#endif
+28
View File
@@ -0,0 +1,28 @@
#ifndef FESA_ELEMENTS_THERMAL_SHELL_H_
#define FESA_ELEMENTS_THERMAL_SHELL_H_
#include <array>
#include <cstddef>
#include "fesa/math/matrix.h"
#include "fesa/math/vector3.h"
namespace fesa {
/// @brief Local Q4 times two-segment P2 transient-heat shell kernel.
class ThermalShell final {
public:
ThermalShell(std::array<std::size_t, 4> node_indices,
std::array<Vector3, 4> coordinates, double conductivity,
double density, double specific_heat, double thickness);
const std::array<std::size_t, 4>& NodeIndices() const noexcept;
const Matrix& Conductivity() const noexcept;
const Matrix& Capacity() const noexcept;
private:
std::array<std::size_t, 4> node_indices_;
Matrix conductivity_{20U, 20U};
Matrix capacity_{20U, 20U};
};
} // namespace fesa
#endif // FESA_ELEMENTS_THERMAL_SHELL_H_