From d9244a474387977b08ef83af5404437d7bb733e2 Mon Sep 17 00:00:00 2001
From: Maren Kaluza <maren.kaluza@ufz.de>
Date: Wed, 26 Feb 2025 10:40:58 +0100
Subject: [PATCH] Implemented final procedures for sim_data_t and sim_var_t.

---
 src/mo_optimization_types.f90 | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/mo_optimization_types.f90 b/src/mo_optimization_types.f90
index 062a5a1..8ecbdb1 100644
--- a/src/mo_optimization_types.f90
+++ b/src/mo_optimization_types.f90
@@ -56,6 +56,7 @@ MODULE mo_optimization_types
     procedure, private :: sim_data_set_pointer_4d
     procedure, private :: sim_data_set_pointer_5d
     ! ToDo: destructor
+    final :: sim_data_destructor
     generic, public   :: set_pointer => sim_data_set_pointer_1d, sim_data_set_pointer_2d, &
       sim_data_set_pointer_3d, sim_data_set_pointer_4d, sim_data_set_pointer_5d
   end type sim_data_t
@@ -72,6 +73,7 @@ MODULE mo_optimization_types
                                                                                 !< 0 total, n every n timestep
   contains
     procedure, public :: is_allocated => sim_var_is_allocated
+    final :: sim_var_destructor
   end type sim_var_t
 
   !> \brief optional data, such as sm, neutrons, et, tws
@@ -396,4 +398,23 @@ MODULE mo_optimization_types
     this%averageCounter = this%averageCounter + 1
   end subroutine optidata_sim_average_add
 
+  subroutine sim_data_destructor(this)
+    type(sim_data_t),    intent(inout) :: this
+
+    if (allocated(this%variables)) deallocate(this%variables)
+
+  end subroutine sim_data_destructor
+
+  subroutine sim_var_destructor(this)
+    type(sim_var_t),    intent(inout) :: this
+
+    if (allocated(this%name)) deallocate(this%name)
+    if (allocated(this%data_1d)) deallocate(this%data_1d)
+    if (allocated(this%data_2d)) deallocate(this%data_2d)
+    if (allocated(this%data_3d)) deallocate(this%data_3d)
+    if (allocated(this%data_4d)) deallocate(this%data_4d)
+    if (allocated(this%data_5d)) deallocate(this%data_5d)
+
+  end subroutine sim_var_destructor
+
 END MODULE mo_optimization_types
-- 
GitLab