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
+17
View File
@@ -33,6 +33,23 @@
"src/fortran/uel_3d_euler_beam_abi_adapter.f90",
"tests/fortran/uel_3d_euler_beam/test_invalid_inputs.f90"
]
},
{
"name": "uel_3d_euler_beam_kernel_source_smoke",
"sources": [
"tests/fortran/uel_3d_euler_beam/test_support.f90",
"src/fortran/uel_3d_euler_beam_kernel.f90",
"tests/fortran/test_uel_3d_euler_beam_kernel.f90"
]
},
{
"name": "uel_3d_euler_beam_abi_adapter_source_smoke",
"sources": [
"tests/fortran/uel_3d_euler_beam/test_support.f90",
"src/fortran/uel_3d_euler_beam_kernel.f90",
"src/fortran/uel_3d_euler_beam_abi_adapter.f90",
"tests/fortran/test_uel_3d_euler_beam_abi_adapter.f90"
]
}
]
}
@@ -0,0 +1,33 @@
program test_uel_3d_euler_beam_abi_adapter
use uel_3d_euler_beam_test_support
use uel_3d_euler_beam_kernel, only: UEL3DEB_OK
use uel_3d_euler_beam_abi_adapter, only: uel3deb_abi_static
implicit none
real(dp) :: rhs(12, 1)
real(dp) :: amatrx(12, 12)
real(dp) :: energy(8)
real(dp) :: props(9)
real(dp) :: coords(3, 2)
real(dp) :: u(12)
real(dp) :: pnewdt
integer :: lflags(5)
integer :: jprops(1)
integer :: status
coords(:, 1) = [0.0_dp, 0.0_dp, 0.0_dp]
coords(:, 2) = [2.0_dp, 0.0_dp, 0.0_dp]
props = [210.0e9_dp, 80.0e9_dp, 3.0e-3_dp, 4.0e-6_dp, 7.0e-6_dp, &
2.5e-6_dp, 0.0_dp, 1.0_dp, 0.0_dp]
u = 0.0_dp
pnewdt = 1.0_dp
lflags = 0
lflags(3) = 2
jprops = 0
call uel3deb_abi_static(rhs, amatrx, energy, 12, 1, 0, props, 9, coords, &
3, 2, u, lflags, 12, 0, pnewdt, jprops, 0, status)
call assert_equal_int(status, UEL3DEB_OK, 'abi adapter source smoke status')
call assert_matrix_symmetric(amatrx, tol_symmetry, 'abi adapter source smoke K')
write(*, '(A)') 'PASS uel_3d_euler_beam_abi_adapter_source_smoke'
end program test_uel_3d_euler_beam_abi_adapter
@@ -0,0 +1,19 @@
program test_uel_3d_euler_beam_kernel
use uel_3d_euler_beam_test_support
use uel_3d_euler_beam_kernel, only: &
UEL3DEB_OK, uel3deb_validate_kernel_inputs
implicit none
real(dp) :: coords(3, 2)
real(dp) :: props(9)
integer :: status
coords(:, 1) = [0.0_dp, 0.0_dp, 0.0_dp]
coords(:, 2) = [2.0_dp, 0.0_dp, 0.0_dp]
props = [210.0e9_dp, 80.0e9_dp, 3.0e-3_dp, 4.0e-6_dp, 7.0e-6_dp, &
2.5e-6_dp, 0.0_dp, 1.0_dp, 0.0_dp]
call uel3deb_validate_kernel_inputs(coords, props, status)
call assert_equal_int(status, UEL3DEB_OK, 'kernel source smoke status')
write(*, '(A)') 'PASS uel_3d_euler_beam_kernel_source_smoke'
end program test_uel_3d_euler_beam_kernel