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