diff --git a/src/mo_likelihood.f90 b/src/mo_likelihood.f90 index 2f2de16a172ffbf086320905b696ec2801edab70..6aa2d8b9a108400a51548fb4b6873e6855863518 100644 --- a/src/mo_likelihood.f90 +++ b/src/mo_likelihood.f90 @@ -67,7 +67,7 @@ CONTAINS allocate(opti_sim(1)) call opti_sim(1)%add(name="runoff", dim=2_i4) call eval(config, opti_sim=opti_sim) - call opti_sim(1)%set_pointer(ptr=runoff, name="runoff") + call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() likelihood_dp = exp(-0.5_dp * sum( errors(:) * errors(:) / stddev_global**2 )) deallocate(opti_sim) @@ -97,7 +97,7 @@ CONTAINS allocate(opti_sim(1)) call opti_sim(1)%add(name="runoff", dim=2_i4) call eval(config, opti_sim=opti_sim) - call opti_sim(1)%set_pointer(ptr=runoff, name="runoff") + call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() loglikelihood_dp = -0.5_dp * sum( errors(:) * errors(:) / stddev_global**2 ) deallocate(opti_sim) @@ -128,7 +128,7 @@ CONTAINS allocate(opti_sim(1)) call opti_sim(1)%add(name="runoff", dim=2_i4) call eval(config, opti_sim=opti_sim) - call opti_sim(1)%set_pointer(ptr=runoff, name="runoff") + call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() likelihood_stddev_dp = exp(-0.5_dp * sum( errors(:) * errors(:) / stddev_in**2 )) deallocate(opti_sim) @@ -168,7 +168,7 @@ CONTAINS allocate(opti_sim(1)) call opti_sim(1)%add(name="runoff", dim=2_i4) call eval(config, opti_sim=opti_sim) - call opti_sim(1)%set_pointer(ptr=runoff, name="runoff") + call opti_sim(1)%set_pointer(name="runoff", ptr=runoff) errors(:) = runoff(:,1)-data() loglikelihood_stddev_dp = -0.5_dp * sum( errors(:) * errors(:) / stddev_in**2 ) deallocate(opti_sim) @@ -205,7 +205,7 @@ CONTAINS do i = 1 , size(opti_sim) if (opti_sim(i)%has('runoff')) then call opti_sim(i)%allocate(name="runoff", ndim=(/n, 1/)) - call opti_sim(i)%set_pointer(ptr=runoff, name="runoff") + call opti_sim(i)%set_pointer(name="runoff", ptr=runoff) ! ToDo fix loop (don't loop, check opti_sim only 1) end if end do diff --git a/src/mo_opt_functions.f90 b/src/mo_opt_functions.f90 index f1eade54fa49d674b1ae0e0b04ca7e4aaaaf50fb..19965fb91ab285a0c4169c0e450ebc2f79ef8a6d 100644 --- a/src/mo_opt_functions.f90 +++ b/src/mo_opt_functions.f90 @@ -5722,28 +5722,28 @@ 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)%set_pointer(ptr=dummyDataPtr_2d, name="et") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="neutrons") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="tws") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="sm") + call opti_sim(iDomain)%set_pointer(name="sm", ptr=dummyDataPtr_2d) end if end do @@ -5752,49 +5752,49 @@ CONTAINS 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)%set_pointer(ptr=dummyDataPtr_2d, name="runoff") + 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)%set_pointer(ptr=dummyDataPtr_1d, name="BFI") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="lake_level") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="lake_volume") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="lake_area") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="lake_spill") + 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)%set_pointer(ptr=dummyDataPtr_2d, name="lake_outflow") + 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 7af6b392b1c75e495cd618f22721d08328f2e6f9..cba25011b4c6e7b2bcca73e90f47218133f5112a 100644 --- a/src/mo_optimization_types.f90 +++ b/src/mo_optimization_types.f90 @@ -174,8 +174,6 @@ MODULE mo_optimization_types integer(i4) :: i sim_data_get_id = -999 - ! ToDo: loop -> subroutine get_id - ! i = this%get_id(name) do i = 1, size(this%variables) if (this%variables(i)%name == name) then sim_data_get_id = i @@ -188,11 +186,10 @@ MODULE mo_optimization_types end function sim_data_get_id ! ToDo: generate with fypp - ! ToDo: switch ptr with name - subroutine sim_data_set_pointer_1d(this, ptr, name) + subroutine sim_data_set_pointer_1d(this, name, ptr) class(sim_data_t), target, intent(in) :: this - real(dp), dimension(:), pointer, intent(inout) :: ptr character(*), intent(in) :: name + real(dp), dimension(:), pointer, intent(inout) :: ptr integer(i4) :: i @@ -201,10 +198,10 @@ MODULE mo_optimization_types ptr => this%variables(i)%data_1d end subroutine sim_data_set_pointer_1d - subroutine sim_data_set_pointer_2d(this, ptr, name) + subroutine sim_data_set_pointer_2d(this, name, ptr) class(sim_data_t), target, intent(in) :: this - real(dp), dimension(:,:), pointer :: ptr character(*), intent(in) :: name + real(dp), dimension(:,:), pointer :: ptr integer(i4) :: i @@ -212,10 +209,10 @@ MODULE mo_optimization_types ptr => this%variables(i)%data_2d end subroutine sim_data_set_pointer_2d - subroutine sim_data_set_pointer_3d(this, ptr, name) + subroutine sim_data_set_pointer_3d(this, name, ptr) class(sim_data_t), target, intent(in) :: this - real(dp), dimension(:,:,:), pointer, intent(inout) :: ptr character(*), intent(in) :: name + real(dp), dimension(:,:,:), pointer, intent(inout) :: ptr integer(i4) :: i @@ -223,10 +220,10 @@ MODULE mo_optimization_types ptr => this%variables(i)%data_3d end subroutine sim_data_set_pointer_3d - subroutine sim_data_set_pointer_4d(this, ptr, name) + subroutine sim_data_set_pointer_4d(this, name, ptr) class(sim_data_t), target, intent(in) :: this - real(dp), dimension(:,:,:,:), pointer, intent(inout) :: ptr character(*), intent(in) :: name + real(dp), dimension(:,:,:,:), pointer, intent(inout) :: ptr integer(i4) :: i @@ -234,10 +231,10 @@ MODULE mo_optimization_types ptr => this%variables(i)%data_4d end subroutine sim_data_set_pointer_4d - subroutine sim_data_set_pointer_5d(this, ptr, name) + subroutine sim_data_set_pointer_5d(this, name, ptr) class(sim_data_t), target, intent(in) :: this - real(dp), dimension(:,:,:,:,:), pointer, intent(inout) :: ptr character(*), intent(in) :: name + real(dp), dimension(:,:,:,:,:), pointer, intent(inout) :: ptr integer(i4) :: i