From 83e4abf9e5d2982d5dc62b5f9b2aaafaad0c3e6c Mon Sep 17 00:00:00 2001 From: Ben Hourahine Date: Wed, 23 Jul 2025 17:24:36 +0100 Subject: [PATCH] Explicit finalization for dual types --- src/types.F90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/types.F90 b/src/types.F90 index f1b7dcc..7926de4 100644 --- a/src/types.F90 +++ b/src/types.F90 @@ -45,6 +45,8 @@ module src_types procedure :: get_derivatives => f_${label}$${bits}$ procedure :: set_derivative => setDeriv_${label}$${bits}$ procedure :: set_derivatives => setDerivs_${label}$${bits}$ + !> Finalizer for the dual type on leaving scope + final :: dual_finalizer_${name}$${bits}$ end type dual_${name}$${bits}$ #:endfor @@ -493,6 +495,16 @@ pure subroutine setDerivs_${label}$${bits}$(A, fr) end subroutine setDerivs_${label}$${bits}$ + !> Explicit finalizer for the dual type ${name}$${bits}$ + subroutine dual_finalizer_${name}$${bits}$(this) + + !> Dual number + type(dual_${name}$${bits}$), intent(inout) :: this + + if (allocated(this%f)) deallocate(this%f) + + end subroutine dual_finalizer_${name}$${bits}$ + #! Integers with dual numbers #:for intbits in INTMODEL