docs: refresh Abaqus subroutine guidance

This commit is contained in:
KOKO\Mimi
2026-08-18 11:27:22 +09:00
parent a3197dc2e3
commit e76c1b96fd
64 changed files with 498 additions and 4560 deletions
-99
View File
@@ -1,99 +0,0 @@
import re
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
WRAPPER = ROOT / "src" / "fortran" / "uel_3d_euler_beam_uel.for"
def normalized_source() -> str:
if not WRAPPER.exists():
raise AssertionError(f"missing Abaqus UEL wrapper: {WRAPPER}")
return re.sub(r"\s+", " ", WRAPPER.read_text(encoding="utf-8").upper())
class Uel3dEulerBeamWrapperContractTests(unittest.TestCase):
def test_wrapper_file_exists(self):
self.assertTrue(WRAPPER.exists(), f"missing Abaqus UEL wrapper: {WRAPPER}")
def test_wrapper_preserves_manual_uel_signature(self):
text = normalized_source()
self.assertIn("SUBROUTINE UEL(", text)
self.assertIn("INCLUDE 'ABA_PARAM.INC'", text)
for token in (
"RHS",
"AMATRX",
"SVARS",
"ENERGY",
"NDOFEL",
"NRHS",
"NSVARS",
"PROPS",
"NPROPS",
"COORDS",
"MCRD",
"NNODE",
"U",
"DU",
"V",
"A",
"JTYPE",
"TIME",
"DTIME",
"KSTEP",
"KINC",
"JELEM",
"PARAMS",
"NDLOAD",
"JDLTYP",
"ADLMAG",
"PREDEF",
"NPREDF",
"LFLAGS",
"MLVARX",
"DDLMAG",
"MDLOAD",
"PNEWDT",
"JPROPS",
"NJPROP",
"PERIOD",
):
self.assertRegex(text, rf"\b{token}\b")
signature = text.split("INCLUDE 'ABA_PARAM.INC'", 1)[0]
self.assertNotRegex(signature, r"\bSTATUS\b")
def test_wrapper_uses_abaqus_dimensions_and_thin_adapter_call(self):
text = normalized_source()
for shape in (
"RHS(MLVARX,*)",
"AMATRX(NDOFEL,NDOFEL)",
"SVARS(*)",
"ENERGY(8)",
"PROPS(*)",
"COORDS(MCRD,NNODE)",
"U(NDOFEL)",
"DU(MLVARX,*)",
"V(NDOFEL)",
"A(NDOFEL)",
"TIME(2)",
"PARAMS(*)",
"JDLTYP(MDLOAD,*)",
"ADLMAG(MDLOAD,*)",
"DDLMAG(MDLOAD,*)",
"PREDEF(2,NPREDF,NNODE)",
"LFLAGS(*)",
"JPROPS(*)",
):
self.assertIn(shape, text)
self.assertIn("USE UEL_3D_EULER_BEAM_ABI_ADAPTER", text)
self.assertIn("CALL UEL3DEB_ABI_STATIC", text)
self.assertIn("CALL XIT", text)
if __name__ == "__main__":
unittest.main()
+4 -4
View File
@@ -93,10 +93,10 @@ class ValidateFortranTests(unittest.TestCase):
{
"tests": [
{
"name": "uel_3d_euler_beam_kernel_stiffness",
"name": "sample_kernel_stiffness",
"sources": [
"src/fortran/uel_3d_euler_beam_kernel.f90",
"tests/fortran/test_uel_3d_euler_beam_kernel.f90",
"src/fortran/sample_kernel.f90",
"tests/fortran/test_sample_kernel.f90",
],
}
]
@@ -109,7 +109,7 @@ class ValidateFortranTests(unittest.TestCase):
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"
build_dir = root / "build" / "fortran-tests" / "sample_kernel_stiffness"
self.assertTrue(build_dir.is_dir())