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
@@ -0,0 +1,3 @@
#include "thermal_shell_geometry.h"
#include <cmath>
namespace fesa { Status ValidateThermalShellGeometry(const std::array<Vector3,4>& c) { for(const auto& p:c) if(!p.IsFinite()) return Status::Failure(FailureCategory::kModel,{{Severity::kError,"invalid-thermal-shell-geometry",{},"DS4","","Coordinates are nonfinite."}}); const Vector3 b=.25*(-1.*c[0]+c[1]+c[2]-c[3]); const Vector3 d=.25*(c[0]-c[1]+c[2]-c[3]); const Vector3 e=.25*(-1.*c[0]-c[1]+c[2]+c[3]); Vector3 candidate=b.Cross(e); for(double xi:{-1.,1.}) for(double eta:{-1.,1.}) { const Vector3 w=(b+eta*d).Cross(e+xi*d); if(!(candidate.Dot(w)>0.)||!std::isfinite(candidate.Dot(w))) return Status::Failure(FailureCategory::kModel,{{Severity::kError,"invalid-thermal-shell-geometry",{},"DS4","","Q4 patch has no positive orientation certificate."}}); } return Status::Ok(); } }