!--------------------------------------------------------------------------- !--------------------------------------------------------------------------- !--------------------------------------------------------------------------- !+ ! Function subroutine MERIT_1DIM (X) ! ! Function to evaluate the merit function along a line !- function merit_1dim (x) result (merit_1) use cesrv_struct use cesrv_interface use super_universe_com implicit none real(rp), intent(in) :: x real(rp) merit0, merit_1, scale integer i, j ! The factor of %h_scale is to increase X since BRENT cannot ! handle small numbers. scale = logic%h_scale do i = 1, size(super%u_(1)%var) if (super%u_(1)%var(i)%useit) then super%u_(1)%var(i)%model = super%u_(1)%var(i)%old + & x * super%u_(1)%var(i)%step * super%u_(1)%var(i)%H / scale do j = 1, logic%u_num super%u_(j)%var(i)%model = super%u_(1)%var(i)%model call var_bookkeeper(super%u_(j)%var(i), super%u_(j)%ring, & super%u_(j)%orb) enddo end if end do call merit_calc(merit0) merit_1 = merit0 logic%n_1dim_calls = logic%n_1dim_calls + 1 ! count calls return end function