From 3379b59669fc532b7182f52ab36ffcf97a997bfe Mon Sep 17 00:00:00 2001
From: Maren Kaluza <maren.kaluza@ufz.de>
Date: Wed, 11 Dec 2024 09:49:27 +0100
Subject: [PATCH] Added ToDos as comments

---
 src/mo_likelihood.f90         | 1 +
 src/mo_optimization_types.f90 | 9 +++++++++
 src/mo_optimization_utils.f90 | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/src/mo_likelihood.f90 b/src/mo_likelihood.f90
index 74d33fd..d76c187 100644
--- a/src/mo_likelihood.f90
+++ b/src/mo_likelihood.f90
@@ -206,6 +206,7 @@ CONTAINS
       if (opti_sim(i)%has('runoff')) then
         call opti_sim(i)%allocate(name="runoff", dim1=n, dim2=1)
         call opti_sim(i)%set_pointer(ptr=runoff, name="runoff")
+        ! ToDo fix loop (don't loop, check opti_sim only 1)
       end if
     end do
 
diff --git a/src/mo_optimization_types.f90 b/src/mo_optimization_types.f90
index abe0caa..a7f9031 100644
--- a/src/mo_optimization_types.f90
+++ b/src/mo_optimization_types.f90
@@ -36,6 +36,8 @@ MODULE mo_optimization_types
     integer(i4), dimension(:), allocatable :: opti_indices
   end type config_t
 
+! ToDo: documentation like mo_cli
+
 !  type opti_sim_t
 !    type(optidata_sim), target, dimension(:), allocatable :: data
 !    character(256)                                        :: name
@@ -45,6 +47,7 @@ MODULE mo_optimization_types
     contains
     procedure :: has => opti_sim_t_has
     procedure :: add => opti_sim_t_add
+    ! ToDo only interface public, other private
     procedure :: opti_sim_t_allocate_1d
     procedure :: opti_sim_t_allocate_2d
     procedure :: opti_sim_t_allocate_3d
@@ -55,6 +58,7 @@ MODULE mo_optimization_types
     procedure :: opti_sim_t_set_pointer_3d
     procedure :: opti_sim_t_set_pointer_4d
     procedure :: opti_sim_t_set_pointer_5d
+    ! ToDo: destructor
     generic   :: set_pointer => opti_sim_t_set_pointer_1d, opti_sim_t_set_pointer_2d, &
       opti_sim_t_set_pointer_3d, opti_sim_t_set_pointer_4d, opti_sim_t_set_pointer_5d
     generic   :: allocate => opti_sim_t_allocate_1d, opti_sim_t_allocate_2d, &
@@ -135,6 +139,7 @@ MODULE mo_optimization_types
     add_data%dimen = dim
     if (present(time_avg_selector)) add_data%time_avg_selector = time_avg_selector
     ! ToDo: is the if case needed?
+    ! Tested: the else case works
     if (allocated(this%opti_vars)) then
       this%opti_vars = [this%opti_vars, add_data]
     else
@@ -225,6 +230,7 @@ MODULE mo_optimization_types
   end subroutine opti_sim_t_allocate_5d
 
   ! ToDo: generate with fypp
+  ! ToDo: switch ptr with name
   subroutine opti_sim_t_set_pointer_1d(this, ptr, name)
     class(opti_sim_t), target, intent(in) :: this
     real(dp), dimension(:), pointer, intent(inout) :: ptr
@@ -232,9 +238,12 @@ MODULE mo_optimization_types
 
     integer(i4) :: i
 
+    ! ToDo: loop -> subroutine get_id
+    ! i = this%get_id(name)
     do i = 1, size(this%opti_vars)
       if (this%opti_vars(i)%name == name) then
         ptr => this%opti_vars(i)%data_1d
+        ! ToDo: exit
       end if
     end do
   end subroutine opti_sim_t_set_pointer_1d
diff --git a/src/mo_optimization_utils.f90 b/src/mo_optimization_utils.f90
index 827f0c3..57d1939 100644
--- a/src/mo_optimization_utils.f90
+++ b/src/mo_optimization_utils.f90
@@ -30,6 +30,8 @@ module mo_optimization_utils
   end interface
 
   !> \brief Interface for objective function.
+  !> \details The optional arguments are motivated by likelihood objective functions.
+  ! ToDo: eval optional
   interface
     function objective_interface (parameterset, eval, arg1, arg2, arg3)
       use mo_kind, only : dp
-- 
GitLab