PTCLineSearch

Options for unsteady line search used by PTC in the startup phase, used by SolverOpts (diablo). toc This is similar in principle but generally more useful than the steady LineSearch which can be activated in the Inexact Newton Phase.

Click here to return to the Jetstream Input Parameters main page.

//**Use:**// diablo%strtup_ls

//**Description:**// PTCLineSearch is the derived sub-type used by PTC in the startup phase

Unsteady line search algorithm, as implemented by D. Brown in Jetstream: math \mathcal{R}_t\left(\mathbf{Q}^{\left(n+1\right)}\right)\equiv \mathcal{T}\left(\mathbf{Q}^{\left(n+1\right)}-\mathbf{Q}^{\left(n\right)}\right)+\mathcal{R}_s\left(\mathbf{Q}^{\left(n+1\right)}\right) math math \mathcal{T}^{\left(n\right)}=\frac1{\Delta t}_i\mathcal{I}, \,\,\Delta t_i^{\left(n\right)}=T_i\zeta a\left(b\right)^{m\left\lfloor \frac{n}{m}\right\rfloor}, \,\, T_i=\frac1{1+J_i^{\frac13}} math 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}_t\left(\tilde{\mathbf{Q}}_\eta\right)\right\|>f_{\mathcal{R}}\left\|\mathcal{R}_t\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

The algorithm generally works better if the steady line search is tracked instead of the unsteady residual (ls%steady = .true.). Recommended use is to just set diablo%strtup_ls%on=.true. and to use it with the default settings. If additional damping is desired, it is generally advised to match the time step relaxation with the solution update relaxation (ls%damp = ls%dt_red_fac).

A similar derived sub-type LineSearch can be used for steady line search in the Newton phase.

ls% on

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

ls% steady

 * //Description://** Track the steady residual? (Alternative is unsteady, as seen in the algorithm)
 * //Parameter Type://** logical

ls% dt_red_fac(1:2)

 * //Description://** Damping factor on the time step update (f_{\zeta 1} and f_{\zeta 2} in the above algorithm)
 * //Parameter Type://** real
 * //Range of Acceptable values://** (0,1)

ls% damp

 * //Description://** Damping factor on the solution update (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