feat: implement 3d euler beam fortran kernel

This commit is contained in:
김경종
2026-06-11 14:29:20 +09:00
parent a3b5d7d383
commit 1fc3128ed5
14 changed files with 614 additions and 26 deletions
+37 -6
View File
@@ -3,6 +3,7 @@ import json
import os
import tempfile
import unittest
from unittest import mock
from pathlib import Path
@@ -19,7 +20,7 @@ class ValidateFortranTests(unittest.TestCase):
validate_fortran = load_validate_fortran()
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
with unittest.mock.patch.dict(os.environ, {}, clear=True):
with mock.patch.dict(os.environ, {}, clear=True):
commands = validate_fortran.discover_commands(root)
self.assertEqual(commands, [])
@@ -31,7 +32,7 @@ class ValidateFortranTests(unittest.TestCase):
manifest = root / "tests" / "fortran" / "manifest.json"
manifest.parent.mkdir(parents=True)
manifest.write_text(json.dumps({"tests": []}), encoding="utf-8")
with unittest.mock.patch.dict(os.environ, {"HARNESS_FORTRAN_VALIDATION": "off"}, clear=True):
with mock.patch.dict(os.environ, {"HARNESS_FORTRAN_VALIDATION": "off"}, clear=True):
commands = validate_fortran.discover_commands(root)
self.assertEqual(commands, [])
@@ -43,8 +44,8 @@ class ValidateFortranTests(unittest.TestCase):
manifest = root / "tests" / "fortran" / "manifest.json"
manifest.parent.mkdir(parents=True)
manifest.write_text(json.dumps({"tests": [{"name": "case", "sources": ["a.f90"]}]}), encoding="utf-8")
with unittest.mock.patch.dict(os.environ, {}, clear=True):
with unittest.mock.patch.object(validate_fortran, "resolve_toolchain", return_value=None):
with mock.patch.dict(os.environ, {}, clear=True):
with mock.patch.object(validate_fortran, "resolve_toolchain", return_value=None):
with self.assertRaises(validate_fortran.FortranValidationError):
validate_fortran.discover_commands(root)
@@ -71,8 +72,8 @@ class ValidateFortranTests(unittest.TestCase):
encoding="utf-8",
)
toolchain = validate_fortran.FortranToolchain(name="ifx", executable="ifx", env_script=None)
with unittest.mock.patch.dict(os.environ, {}, clear=True):
with unittest.mock.patch.object(validate_fortran, "resolve_toolchain", return_value=toolchain):
with mock.patch.dict(os.environ, {}, clear=True):
with mock.patch.object(validate_fortran, "resolve_toolchain", return_value=toolchain):
commands = validate_fortran.discover_commands(root)
self.assertEqual(len(commands), 2)
@@ -81,6 +82,36 @@ class ValidateFortranTests(unittest.TestCase):
self.assertIn("/exe:", commands[0])
self.assertTrue(commands[1].endswith("umat_linear_elastic_kernel.exe"))
def test_manifest_build_commands_create_test_build_directories(self):
validate_fortran = load_validate_fortran()
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
manifest = root / "tests" / "fortran" / "manifest.json"
manifest.parent.mkdir(parents=True)
manifest.write_text(
json.dumps(
{
"tests": [
{
"name": "uel_3d_euler_beam_kernel_stiffness",
"sources": [
"src/fortran/uel_3d_euler_beam_kernel.f90",
"tests/fortran/test_uel_3d_euler_beam_kernel.f90",
],
}
]
}
),
encoding="utf-8",
)
toolchain = validate_fortran.FortranToolchain(name="ifx", executable="ifx", env_script=None)
with mock.patch.dict(os.environ, {}, clear=True):
with mock.patch.object(validate_fortran, "resolve_toolchain", return_value=toolchain):
validate_fortran.discover_commands(root)
build_dir = root / "build" / "fortran-tests" / "uel_3d_euler_beam_kernel_stiffness"
self.assertTrue(build_dir.is_dir())
if __name__ == "__main__":
unittest.main()