diff --git a/src/mo_cost.f90 b/src/mo_cost.f90 index 232f6edd1b6e1b59fb593862e2ebcc891ea5a7b3..0df50f81875e15229a4b4d91b1cafc77c2286569 100644 --- a/src/mo_cost.f90 +++ b/src/mo_cost.f90 @@ -243,7 +243,7 @@ CONTAINS config%parameters = parameterset allocate(opti_sim(1)) - call opti_sim(1)%add(name='et', dim=2_i4) + call opti_sim(1)%add(name='et', ndim=2_i4) call eval(config, opti_sim) ! function: f(x) = ax^3 + bx^2 + cx + d diff --git a/src/mo_likelihood.f90 b/src/mo_likelihood.f90 index f24b4258f365571c5df3ecc567220d4410fabd5c..895a9f38f4fa957826571714e159141d8109f7d0 100644 --- a/src/mo_likelihood.f90 +++ b/src/mo_likelihood.f90 @@ -65,7 +65,7 @@ CONTAINS config%parameters = paraset allocate(opti_sim(1)) - call opti_sim(1)%add(name="runoff", dim=2_i4) + call opti_sim(1)%add(name="runoff", ndim=2_i4) call eval(config, opti_sim=opti_sim) call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() @@ -95,7 +95,7 @@ CONTAINS config%parameters = paraset allocate(opti_sim(1)) - call opti_sim(1)%add(name="runoff", dim=2_i4) + call opti_sim(1)%add(name="runoff", ndim=2_i4) call eval(config, opti_sim=opti_sim) call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() @@ -126,7 +126,7 @@ CONTAINS config%parameters = paraset allocate(opti_sim(1)) - call opti_sim(1)%add(name="runoff", dim=2_i4) + call opti_sim(1)%add(name="runoff", ndim=2_i4) call eval(config, opti_sim=opti_sim) call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() @@ -166,7 +166,7 @@ CONTAINS config%parameters = paraset allocate(opti_sim(1)) - call opti_sim(1)%add(name="runoff", dim=2_i4) + call opti_sim(1)%add(name="runoff", ndim=2_i4) call eval(config, opti_sim=opti_sim) call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() @@ -206,7 +206,7 @@ CONTAINS if (size(opti_sim) /= 1) call error_message('model_dp: does not support opti_sim data with more than 1 dimension.') if (opti_sim(1)%has('runoff')) then - call opti_sim(1)%allocate(name="runoff", ndim=(/n, 1/)) + call opti_sim(1)%allocate(name="runoff", data_shape=(/n, 1/)) call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) end if diff --git a/src/mo_opt_functions.f90 b/src/mo_opt_functions.f90 index 10d1239f68447ce384ede9595f388f511108fe34..e6f2fd6843bbd4206d2e290c2d31d96a9cdb13ac 100644 --- a/src/mo_opt_functions.f90 +++ b/src/mo_opt_functions.f90 @@ -5644,7 +5644,7 @@ CONTAINS allocate(opti_sim(1)) config%parameters = parameterset - call opti_sim(1)%add(name='et', dim=2_i4) + call opti_sim(1)%add(name='et', ndim=2_i4) call eval(config, opti_sim) n = size(parameterset) @@ -5678,7 +5678,7 @@ CONTAINS config%parameters = parameterset allocate(opti_sim(1)) - call opti_sim(1)%add(name='et', dim=2_i4) + call opti_sim(1)%add(name='et', ndim=2_i4) call eval(config, opti_sim) nopt = size(parameterset) @@ -5721,77 +5721,77 @@ CONTAINS do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('et')) then - call opti_sim(iDomain)%allocate(name="et", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="et", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="et", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('neutrons')) then - call opti_sim(iDomain)%allocate(name="neutrons", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="neutrons", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="neutrons", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('tws')) then - call opti_sim(iDomain)%allocate(name="tws", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="tws", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="tws", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('sm')) then - call opti_sim(iDomain)%allocate(name="sm", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="sm", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="sm", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('runoff')) then - call opti_sim(iDomain)%allocate(name="runoff", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="runoff", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="runoff", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('BFI')) then - call opti_sim(iDomain)%allocate(name="BFI", ndim=(/1/)) + call opti_sim(iDomain)%allocate(name="BFI", data_shape=(/1/)) call opti_sim(iDomain)%set_pointer(name="BFI", ptr=dummyDataPtr_1d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('lake_level')) then - call opti_sim(iDomain)%allocate(name="lake_level", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="lake_level", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="lake_level", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('lake_volume')) then - call opti_sim(iDomain)%allocate(name="lake_volume", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="lake_volume", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="lake_volume", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('lake_area')) then - call opti_sim(iDomain)%allocate(name="lake_area", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="lake_area", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="lake_area", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('lake_spill')) then - call opti_sim(iDomain)%allocate(name="lake_spill", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="lake_spill", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="lake_spill", ptr=dummyDataPtr_2d) end if end do do iDomain = 1 , nDomains if (opti_sim(iDomain)%has('lake_outflow')) then - call opti_sim(iDomain)%allocate(name="lake_outflow", ndim=(/1, 1/)) + call opti_sim(iDomain)%allocate(name="lake_outflow", data_shape=(/1, 1/)) call opti_sim(iDomain)%set_pointer(name="lake_outflow", ptr=dummyDataPtr_2d) end if end do diff --git a/src/mo_optimization_types.f90 b/src/mo_optimization_types.f90 index e42fc511b8a2d3fedcfeae5917eb2f3211239173..23cd3007bbd3c497e4e96f47a692c2546137d010 100644 --- a/src/mo_optimization_types.f90 +++ b/src/mo_optimization_types.f90 @@ -44,7 +44,6 @@ MODULE mo_optimization_types procedure, public :: has => sim_data_has procedure, public :: add => sim_data_add procedure, public :: allocate => sim_data_allocate - ! ToDo only interface public, other private procedure, private :: get_id => sim_data_get_id ! One could create these similar procedures ! with fypp, for example if more dimensions are needed. @@ -106,7 +105,6 @@ MODULE mo_optimization_types contains - ! ToDo: When to charater(*) and character(256)? pure logical function sim_data_has(this, name) class(sim_data_t), intent(in) :: this character(*), intent(in) :: name @@ -128,7 +126,6 @@ MODULE mo_optimization_types type(sim_var_t) :: add_data - ! ToDo: Why name in type 256 and in input var *? add_data%name = trim(name) add_data%ndim = ndim if (present(time_avg_selector)) add_data%time_avg_selector = time_avg_selector @@ -144,26 +141,26 @@ MODULE mo_optimization_types end subroutine sim_data_add ! ToDo: rename ndim -> data_shape - subroutine sim_data_allocate(this, name, ndim) + subroutine sim_data_allocate(this, name, data_shape) class(sim_data_t), target, intent(inout) :: this character(*), intent(in) :: name - integer(i4), dimension(:), intent(in) :: ndim + integer(i4), dimension(:), intent(in) :: data_shape integer(i4) :: i do i = 1, size(this%variables) if (this%variables(i)%name == name) then - select case (size(ndim)) + select case (size(data_shape)) case(1) - allocate(this%variables(i)%data_1d(ndim(1))) + allocate(this%variables(i)%data_1d(data_shape(1))) case(2) - allocate(this%variables(i)%data_2d(ndim(1), ndim(2))) + allocate(this%variables(i)%data_2d(data_shape(1), data_shape(2))) case(3) - allocate(this%variables(i)%data_3d(ndim(1), ndim(2), ndim(3))) + allocate(this%variables(i)%data_3d(data_shape(1), data_shape(2), data_shape(3))) case(4) - allocate(this%variables(i)%data_4d(ndim(1), ndim(2), ndim(3), ndim(4))) + allocate(this%variables(i)%data_4d(data_shape(1), data_shape(2), data_shape(3), data_shape(4))) case(5) - allocate(this%variables(i)%data_5d(ndim(1), ndim(2), ndim(3), ndim(4), ndim(5))) + allocate(this%variables(i)%data_5d(data_shape(1), data_shape(2), data_shape(3), data_shape(4), data_shape(5))) case default ! ToDo: replace stop by error message stop ('sim_data_allocate: Allocating simulated data with other dimensions than 1 to 5 is not impemented.')