Source code for gemseo.mda.quasi_newton_settings
# Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 3 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""Settings for quasi-Newton MDA."""
from __future__ import annotations
from pydantic import Field
from strenum import StrEnum
from gemseo.mda.base_parallel_mda_settings import BaseParallelMDASettings
[docs]
class QuasiNewtonMethod(StrEnum):
"""A quasi-Newton method."""
ANDERSON = "anderson"
BROYDEN1 = "broyden1"
BROYDEN2 = "broyden2"
DF_SANE = "df-sane"
DIAG_BROYDEN = "diagbroyden"
EXCITING_MIXING = "excitingmixing"
HYBRID = "hybr"
KRYLOV = "krylov"
LEVENBERG_MARQUARDT = "lm"
LINEAR_MIXING = "linearmixing"
[docs]
class MDAQuasiNewton_Settings(BaseParallelMDASettings): # noqa: N801
"""The settings for :class:`.MDAQuasiNewton`."""
method: QuasiNewtonMethod = Field(
default=QuasiNewtonMethod.HYBRID,
description="""The name of the quasi-Newton method.""",
)
use_gradient: bool = Field(
default=False,
description="""Whether to use the analytic gradient of the discipline.""",
)