feat(thermal): certify shell geometry and local heat operators

This commit is contained in:
KOKO\Mimi
2026-09-29 19:22:44 +09:00
parent e33ee6a04f
commit 32f0c161af
11 changed files with 1639 additions and 83 deletions
+16 -11
View File
@@ -13,8 +13,8 @@ TEST(ThermalTimeGrid, SingleStepUsesPeriodAsActualIncrement) {
}
TEST(ThermalTimeGrid, PreservesGenuineRemainderOutsideInputCells) {
const auto grid = fesa::ThermalTimeGrid::Create(
std::nextafter(.9, 1.0), .3, 4U);
const auto grid =
fesa::ThermalTimeGrid::Create(std::nextafter(.9, 1.0), .3, 4U);
ASSERT_TRUE(grid.HasValue());
EXPECT_EQ(grid.Value().Count(), 4U);
EXPECT_EQ(grid.Value().Delta(4U), 1.6653345369377348e-16);
@@ -41,13 +41,14 @@ TEST(ThermalTimeGrid, DecimalCellsCounterexampleAndScale) {
EXPECT_EQ(grid.Value().Delta(3U), delta);
EXPECT_EQ(grid.Value().Time(3U), period);
}
const auto old_counterexample = fesa::ThermalTimeGrid::Create(
5.351455173733616, .17262758624947144, 31U);
const auto old_counterexample =
fesa::ThermalTimeGrid::Create(5.351455173733616, .17262758624947144, 31U);
ASSERT_TRUE(old_counterexample.HasValue());
EXPECT_EQ(old_counterexample.Value().Count(), 31U);
EXPECT_EQ(old_counterexample.Value().Delta(31U), .17262758624947144);
EXPECT_FALSE(fesa::ThermalTimeGrid::Create(
5.351455173733616, .17262758624947144, 30U).HasValue());
EXPECT_FALSE(
fesa::ThermalTimeGrid::Create(5.351455173733616, .17262758624947144, 30U)
.HasValue());
}
TEST(ThermalTimeGrid, BinadeLimitsAndMaximumFinitePreserveOriginalCells) {
@@ -56,13 +57,16 @@ TEST(ThermalTimeGrid, BinadeLimitsAndMaximumFinitePreserveOriginalCells) {
ASSERT_TRUE(grid.HasValue());
EXPECT_EQ(grid.Value().Count(), 3U);
EXPECT_EQ(grid.Value().Delta(3U), max / 3);
const auto upper = fesa::ThermalTimeGrid::Create(4294967295., 1., 4294967295U);
const auto upper =
fesa::ThermalTimeGrid::Create(4294967295., 1., 4294967295U);
ASSERT_TRUE(upper.HasValue());
EXPECT_EQ(upper.Value().Count(), 4294967295U);
EXPECT_TRUE(upper.Value().Frame(4294967295U).HasValue());
EXPECT_FALSE(fesa::ThermalTimeGrid::Create(4294967296., 1., 4294967295U).HasValue());
EXPECT_FALSE(fesa::ThermalTimeGrid::Create(max,
std::numeric_limits<double>::denorm_min(), 4294967295U).HasValue());
EXPECT_FALSE(
fesa::ThermalTimeGrid::Create(4294967296., 1., 4294967295U).HasValue());
EXPECT_FALSE(fesa::ThermalTimeGrid::Create(
max, std::numeric_limits<double>::denorm_min(), 4294967295U)
.HasValue());
}
TEST(ThermalTimeGrid, ShortenedIncrementAndCheckedFrames) {
@@ -83,7 +87,8 @@ TEST(ThermalTimeGrid, ShortenedIncrementAndCheckedFrames) {
EXPECT_EQ(decimals.Value().Delta(10U), .1);
const double below = std::nextafter(.9, 0.);
const auto close = fesa::ThermalTimeGrid::Create(below, .3, 3U);
const auto short_last = fesa::ThermalTimeGrid::Create(std::nextafter(below, 0.), .3, 3U);
const auto short_last =
fesa::ThermalTimeGrid::Create(std::nextafter(below, 0.), .3, 3U);
ASSERT_TRUE(close.HasValue());
ASSERT_TRUE(short_last.HasValue());
EXPECT_EQ(close.Value().Delta(3U), .3);