{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c775311c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-02T14:42:57.084155Z",
     "iopub.status.busy": "2026-10-02T14:42:57.083980Z",
     "iopub.status.idle": "2026-10-02T14:42:57.088069Z",
     "shell.execute_reply": "2026-10-02T14:42:57.087250Z"
    },
    "papermill": {
     "duration": 0.006533,
     "end_time": "2026-10-02T14:42:57.088936+00:00",
     "exception": false,
     "start_time": "2026-10-02T14:42:57.082403+00:00",
     "status": "completed"
    },
    "tags": [
     "remove-input",
     "remove-output",
     "active-ipynb"
    ]
   },
   "outputs": [],
   "source": [
    "try:\n",
    "    from openmdao.utils.notebook_utils import notebook_mode  # noqa: F401\n",
    "except ImportError:\n",
    "    !python -m pip install openmdao[notebooks]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38b9f69b",
   "metadata": {
    "papermill": {
     "duration": 0.000604,
     "end_time": "2026-10-02T14:42:57.090882+00:00",
     "exception": false,
     "start_time": "2026-10-02T14:42:57.090278+00:00",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "# Solvers\n",
    "\n",
    "## Nonlinear Solvers\n",
    "\n",
    "- [NonlinearBlockGS](nonlinear_block_gs.ipynb)\n",
    "- [NonlinearBlockJac](nonlinear_block_jac.ipynb)\n",
    "- [NonlinearRunOnce](nonlinear_runonce.ipynb)\n",
    "- [NewtonSolver](newton.ipynb)\n",
    "- [BroydenSolver](broyden.ipynb)\n",
    "\n",
    "(linear-solvers)=\n",
    "## Linear Solvers\n",
    "\n",
    "- [LinearBlockGS](linear_block_gs.ipynb)\n",
    "- [LinearBlockJac](linear_block_jac.ipynb)\n",
    "- [LinearRunOnce](linear_runonce.ipynb)\n",
    "- [DirectSolver](direct_solver.ipynb)\n",
    "- [PETScKrylov](petsc_krylov.ipynb)\n",
    "- [ScipyKrylov](scipy_iter_solver.ipynb)\n",
    "- [LinearUserDefined](linear_user_defined.ipynb)\n",
    "- [PETScDirectSolver](petsc_direct_solver.ipynb)\n",
    "\n",
    "(linesearch-section)=\n",
    "## Linesearch/Backtracking\n",
    "\n",
    "Backtracking line searches are subsolvers that can be specified in the `linesearch` attribute of a NewtonSolver, and are used to pull back to a reasonable point when a Newton step goes too far. This can occur when a step causes output variables to exceed their specified lower and upper bounds. It can also happen in more complicated problems where a full Newton step happens to take you well past the nonlinear solution, even to an area where the residual norm is worse than the initial point. Specifying a value for linesearch can help alleviate these problems and improve robustness of your Newton solve.\n",
    "There are two different backtracking line-search algorithms in OpenMDAO:\n",
    "\n",
    "- [ArmijoGoldsteinLS](armijo_goldstein.ipynb)\n",
    "- [BoundsEnforceLS](bounds_enforce.ipynb)\n",
    "\n",
    "(modify-options-section)=\n",
    "## Modifying Solver Options\n",
    "\n",
    "A method is provided to allow the user to modify solver options:\n",
    "\n",
    "- [Modifying Solver Options](modify_solver_options.ipynb)"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.14"
  },
  "orphan": true,
  "papermill": {
   "default_parameters": {},
   "duration": 4.141931,
   "end_time": "2026-10-02T14:43:00.617725+00:00",
   "environment_variables": {},
   "exception": null,
   "input_path": "/home/runner/work/OpenMDAO/OpenMDAO/openmdao/docs/openmdao_book/features/building_blocks/solvers/solvers.ipynb",
   "output_path": "/home/runner/work/OpenMDAO/OpenMDAO/openmdao/docs/_executed_book/features/building_blocks/solvers/solvers.ipynb",
   "parameters": {},
   "start_time": "2026-10-02T14:42:56.475794+00:00",
   "version": "2.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}