LineSearch

Options for line search, used by SolverOpts (diablo) and Hom (c_hom, g_hom). This is similar in principle but generally not as useful as the unsteady PTCLineSearch which can be activated in the startup phase of PTC. toc Click here to return to the Jetstream Input Parameters main page.

//**Use:**// diablo%newton_ls c_hom%ls(1:3) g_hom%ls(1:3)

//**Description:**// Line search is the derived sub-type used by both PTC and homotopy for line search in the inexact Newton phase. Unlike global line search methods, this implementation just applies a bit of damping to help stabilize difficult cases.

Unsteady line search is described below. The difference with steady line search is that it is applied to the steady residual instead of the unsteady residual, and of course no time step relaxation is required.

Steady line search algorithm, as implemented by D. Brown in Jetstream: math \begin{align*} & \eta = \eta_0,\,\, \tilde{\mathbf{Q}}_\eta = \mathbf{Q}^{\left(n\right)}+\eta\Delta\mathbf{Q}^{\left(n\right)} \\ & \mathrm{\textbf{while}}\,\, \left\{\left(\left\|\mathcal{R}\left(\tilde{\mathbf{Q}}_\eta\right)\right\|>f_{\mathcal{R}}\left\|\mathcal{R}\left(\tilde{\mathbf{Q}}^{\left(n\right)}\right)\right\|\right) \,\&\, \left(\eta > \eta_{\mathrm{min}}\right)\right\} \,\, \mathrm{\textbf{do}}\\ & \,\,\,\,\,\,\,\, \eta\leftarrow f_{\eta}\eta,\,\, \tilde{\mathbf{Q}}_\eta=\mathbf{Q}^{\left(n\right)}+\eta\Delta\mathbf{Q}\\ & \mathrm{\textbf{done}}\\ & \mathrm{\textbf{if}}\,\, \left(\eta = \eta_0\right)\,\, \mathrm{\textbf{then}}\\ & \,\,\,\,\,\,\,\, \mathbf{Q}^{\left(n+1\right)} = \tilde{\mathbf{Q}}_\eta^{\left(n\right)} + \eta\Delta\mathbf{Q}\\ & \mathrm{\textbf{else}}\,\,\mathrm{\textbf{if}}\,\, \left(\eta > \eta_{\mathrm{min}}\right)\,\, \mathrm{\textbf{then}}\\ & \,\,\,\,\,\,\,\, \zeta \leftarrow f_{\zeta 1}\zeta,\,\, \mathbf{Q}^{\left(n+1\right)} = \tilde{\mathbf{Q}}_\eta^{\left(n\right)} + \eta\Delta\mathbf{Q}\\ & \mathrm{\textbf{else}}\\ & \,\,\,\,\,\,\,\, \zeta \leftarrow f_{\zeta 2}\zeta,\,\, \mathbf{Q}^{\left(n+1\right)}=\mathbf{Q}^{\left(n\right)}\\ & \mathrm{\textbf{end}}\,\,\mathrm{if} \end{align*} math

A similar derived sub-type PTCLineSearch exists for the PTC phase and includes damping on the time step.

ls% on

 * //Description://** Turn it on?
 * //Parameter Type://** logical

ls% damp

 * //Description://** Damping factor (f_{\eta} in the above algorithm)
 * //Parameter Type://** real
 * //Range of Acceptable values://** (0,1)

ls% eta_in

 * //Description://** Initial value of \eta (\eta_0 in the above algorithm)
 * //Parameter Type://** real
 * //Range of Acceptable values://** (0,1]

ls% eta_min

 * //Description://** Minimum value of \eta (\eta_{min} in the above algorithm)
 * //Parameter Type://** real
 * //Range of Acceptable values://** (0,ls%eta_in)

ls% rfac_tol

 * //Description://** A factor that allows us to relax when to apply line search (f_R in the above algorithm)
 * //Parameter Type://** real
 * //Range of Acceptable values://** The intended use is f_R >= 1