﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
705	Sensitivity of LM minimiser to 'physical' choices	Ian Culverwell	Kent Bækgaard Lauritsen	"The 'physical' limitations on the state vector in the differenced bending angle LM solver, namely
{{{
    DO i = 1, nstate

      x%state(i) = x%state(i) + SIGN( MIN( ABS(delta_x(i)), state_sigma(i) ), delta_x(i) ) 

      SELECT CASE( 1 + ((i-1)/nlayer) )

        CASE( 1 )
          IF ( x%state(i) < ropp_ZERO ) THEN
            CALL message(msg_warn, ""Levenberg-Marquardt solver returns "" // &
              ""ne_peak < 0 ... resetting to 1% of background error. \n"")
            x%state(i) = 0.01_wp * state_sigma(i)
          END IF

        CASE( 2 )
          IF ( x%state(i) < 0.01_wp*state_sigma(i) ) THEN
            CALL message(msg_info, ""Levenberg-Marquardt solver returns "" // &
              ""r_peak < 10% of background error ... resetting to 10% of background error. \n"")
            x%state(i) = 0.10_wp * state_sigma(i)
          END IF

        CASE( 3 )
          IF ( x%state(i) < 0.10_wp*state_sigma(i) ) THEN
            CALL message(msg_info, ""Levenberg-Marquardt solver returns "" // &
              ""h_zero < 10% of background error ... resetting to 10% of background error. \n"")
            x%state(i) = 0.10_wp * state_sigma(i)
          END IF

        CASE( 4 )
          IF ( x%state(i) < 1.0E-10_wp*state_sigma(i) ) THEN
            CALL message(msg_info, ""Levenberg-Marquardt solver returns "" // &
              ""h_grad < 1e-10*background error ... resetting to 1e-10*background error. \n"")
            x%state(i) = 1.0E-10_wp * state_sigma(i)
          END IF

      END SELECT

    ENDDO
}}}
are open to question, to say the least.  For example, Sean has had some success with
{{{
    x%state(i) = x%state(i) + SIGN( MIN( ABS(delta_x(i)), 0.75_wp*ABS(x%state(i)) ), delta_x(i) )
}}}

These choices need careful consideration and experimentation.  This ticket is the place to hold the results.
"	task	new	normal	12.0	ROPP(all)	11.0			
