Skip to content

Commit caa4eed

Browse files
committed
updates
1 parent 610827c commit caa4eed

File tree

9 files changed

+175
-159
lines changed

9 files changed

+175
-159
lines changed

source/user/manual/analysis/algorithm.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,31 @@
33
algorithm
44
^^^^^^^^^
55

6-
This method is used to define a ``SolutionAlgorithm``, which determines the sequence of steps taken to solve the non-linear equation.
7-
86
.. tabs::
97

108
.. tab:: Python
119

1210
.. py:method:: Model.algorithm(name, *args)
1311
12+
Configure a root-finding algorithm to solve the nonlinear residual equations.
13+
1414
.. tab:: Tcl
1515

1616
.. function:: algorithm name? arg1? ...
1717

1818

1919
where ``name`` is a string indentifying one of the following algorithms:
2020

21+
2122
.. toctree::
2223
:maxdepth: 1
2324

2425
algorithm/LinearAlgorithm
2526
algorithm/Newton
2627
algorithm/NewtonLineSearch
2728
algorithm/ModifiedNewton
28-
algorithm/KrylovNewton
29-
algorithm/SecantNewton
30-
algorithm/BFGS
29+
algorithm/AcceleratedNewton
3130
algorithm/Broyden
3231
algorithm/ExpressNewton
3332

33+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
.. _KrylovNewton:
2+
3+
Accelerated Newton
4+
^^^^^^^^^^^^^^^^^^
5+
6+
Accelerated Newton algorithms are designed to mitigate the slow convergence of the Modified Newton method and to accommodate complications such as tangent inconsistency, all while imposing minimal additional computational overhead.
7+
8+
9+
.. tabs::
10+
11+
.. tab:: Python
12+
13+
.. py:method:: Model.algorithm("AcceleratedNewton", iterate='current', increment='current', maxDim=3, accelerator='raphson')
14+
:no-index:
15+
16+
:param iterate: tangent to iterate on, options are ``current``, ``initial``, ``None``. default is ``current``.
17+
:type iterate: |string|
18+
:param increment: tangent to increment on, options are ``current``, ``initial``, ``None``. default is ``current``
19+
:type increment: |string|
20+
:param maxDim: max number of iterations within a time step before the tangent is reformed and acceleration restarts (default = 3)
21+
:type maxDim: |float|
22+
23+
.. tab:: Tcl
24+
25+
.. function:: algorithm KrylovNewton <-iterate $tangIter> <-increment $tangIncr> <-maxDim $maxDim>
26+
27+
.. list-table::
28+
:widths: 10 10 40
29+
:header-rows: 1
30+
31+
* - Argument
32+
- Type
33+
- Description
34+
* - $tangIter
35+
- |string|
36+
- tangent to iterate on, options are current, initial, noTangent. default is current.
37+
* - $tangIncr
38+
- |string|
39+
- tangent to increment on, options are current, initial, noTangent. default is current
40+
* - $maxDim
41+
- |float|
42+
- max number of iterations until the tangent is reformed and acceleration restarts (default = 3) of iterations within a time step until a new tangent is formed
43+
44+
45+
Accelerators
46+
47+
48+
Krylov-Newton
49+
=============
50+
51+
The *KrylovNewton* algorithm uses a modified :ref:`Newton` method with Krylov subspace acceleration to advance to the next time step.
52+
The accelerator is described by Carlson and Miller (1998) and Scott and Fenves (2010).
53+
54+
55+
Secant
56+
=======
57+
58+
59+
The *SecantNewton* algorithm uses the two-term update to accelerate the convergence of the modified Newton method.
60+
61+
.. note::
62+
63+
* The default "cut-out" values recommended by Crisfield (R1=3.5, R2=0.3) are used.
64+
65+
66+
Examples
67+
--------
68+
69+
The following examples demonstrate the command to create a SecantNewton solution algorithm.
70+
71+
.. tabs::
72+
73+
.. tab:: Python
74+
75+
.. code-block:: python
76+
77+
model.algorithm('SecantNewton',
78+
iterate='current',
79+
increment='current',
80+
maxDim=3)
81+
82+
.. tab:: Tcl
83+
84+
.. code-block:: tcl
85+
86+
algorithm SecantNewton -iterate current -increment current -maxDim 3
87+
88+
89+
References
90+
----------
91+
92+
* Crisfield, M.A. "Non-linear Finite Element Analysis of Solids and Structures", Vol. 1, Wiley, 1991.
93+
* Carlson and Miller "Design and Application of a 1D GWMFE Code" SIAM Journal of Scientific Computing (Vol. 19, No. 3, pp. 728-765, May 1998)
94+
* Scott, M.H. and G.L. Fenves. "A Krylov Subspace Accelerated Newton Algorithm: Application to Dynamic Progressive Collapse Simulation of Frames." Journal of Structural Engineering, 136(5), May 2010. DOI

source/user/manual/analysis/algorithm/BFGS.rst

Lines changed: 0 additions & 31 deletions
This file was deleted.

source/user/manual/analysis/algorithm/Broyden.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
.. _Broyden:
22

3-
Broyden
3+
Broyden/BFGS
44
^^^^^^^
55

6-
The Broyden algorithm object for general unsymmetric systems which performs successive rank-one updates of the tangent at the first iteration of the current time step.
6+
The Broyden algorithm for general unsymmetric systems which performs successive rank-one updates of the tangent at the first iteration of the current time step.
77

88
.. tabs::
99

1010
.. tab:: Python
1111

12-
.. py:method:: Model.algorithm("Broyden" [, count])
12+
.. py:method:: Model.algorithm("Broyden" [, count, symmetric=False])
1313
:no-index:
1414

1515
.. tab:: Tcl
@@ -28,3 +28,9 @@ The Broyden algorithm object for general unsymmetric systems which performs succ
2828
- number of iterations within a time step until a new tangent is formed
2929

3030

31+
BFGS
32+
====
33+
34+
35+
BFGS implements the `Broyden–Fletcher–Goldfarb–Shanno <https://en.wikipedia.org/wiki/BFGS>`_ (BFGS) algorithm for symmetric systems.
36+
This performs successive rank-two updates of the tangent at the first iteration of the current time step.

source/user/manual/analysis/algorithm/ExpressNewton.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
ExpressNewton
44
^^^^^^^^^^^^^
55

6-
*ExpressNewton* accepts the solution after a constant number of Newton-Raphson iterations using a constant system Jacobian matrix. It is advised to be combined with transient integrators only.
6+
*ExpressNewton* accepts the solution after a constant number of Newton-Raphson iterations using a constant system Jacobian matrix.
7+
It is advised to be combined with transient integrators only.
78

89
.. tabs::
910

@@ -31,6 +32,7 @@ ExpressNewton
3132

3233
The strategy of the *ExpressNewton* algorithm is to adopt a typical transient integrator and accept the solution after a constant number of iterations using a constant system Jacobian matrix. The algorithm inherits the advantages of the host transient integrators, such as the unconditional stability, the order of accuracy, and the numerical dissipation that helps suppress the spurious high-frequency oscillation. Using a constant Jacobian matrix is vital to minimizing the computational expense associated with matrix operations. The algorithm helps achieve an exponential efficiency improvement in a response history analysis with any transient integrator.
3334

35+
3436
.. warning::
3537

3638
There is no check on the convergence of the model in this algorithm. It iterates a constant number of iterations and then proceeds to the next time step.

source/user/manual/analysis/algorithm/KrylovNewton.rst

Lines changed: 0 additions & 48 deletions
This file was deleted.

source/user/manual/analysis/algorithm/NewtonLineSearch.rst

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,36 @@ Line Search
66
This command is used to select a NewtonLineSearch algorithm which introduces line search to the Newton-Raphson algorithm to solve the nonlinear residual equation.
77
Line search increases the effectiveness of the Newton method when convergence is slow due to roughness of the residual.
88

9-
.. function:: algorithm NewtonLineSearch <-type $typeSearch> <-tol $tol> <-maxIter $maxIter> <-minEta $minEta> <-maxEta $maxEta>
9+
.. tabs::
1010

11-
.. csv-table::
12-
:header: "Argument", "Type", "Description"
13-
:widths: 10, 10, 40
11+
.. tab:: Python
1412

15-
typeSearch, |string|, Line Search algorithm. Optional, default is ``InitialInterpolated``. Valid types are: ``Bisection``, ``Secant``, ``RegulaFalsi``
16-
``InitialInterpolated``.
17-
tol, |float|, tolerance for search. optional. The default is 0.8.
18-
maxIter, |integer|, maximum number of iteration to try. The default is 10.
19-
minEta, |float|, a minimum :math:`\eta` value. Optional; The default is 0.1
20-
maxEta, |float|, a maximum :math:`\eta` value. Optional; The default is 10.0
13+
.. py:method:: Model.algorithm("NewtonLineSearch", ratio, maxIter, minEta, maxEta, type="InitialInterpolated")
14+
:no-index:
15+
16+
Configure the *NewtonLineSearch* algorithm.
17+
18+
:param ratio: limiting ratio between the residuals before and after the incremental update (between 0.5 and 0.8)
19+
:param maxIter: integer value of the maximum number of iterations to try. Optional; default is 10.
20+
:param minEta: float value of a minimum :math:`\eta` value. Optional; default is 0.1.
21+
:param maxEta: float value of a maximum :math:`\eta` value. Optional; default is 10.0.
22+
:param type: string specifying the line search algorithm. Optional; default is ``InitialInterpolated``. Valid types are: ``Bisection``, ``Secant``, ``RegulaFalsi``, ``InitialInterpolated``.
23+
24+
25+
.. tab:: OpenSees
26+
27+
.. function:: algorithm NewtonLineSearch <-type $typeSearch> <-tol $tol> <-maxIter $maxIter> <-minEta $minEta> <-maxEta $maxEta>
28+
29+
.. csv-table::
30+
:header: "Argument", "Type", "Description"
31+
:widths: 10, 10, 40
32+
33+
typeSearch, |string|, Line Search algorithm. Optional, default is ``InitialInterpolated``. Valid types are: ``Bisection``, ``Secant``, ``RegulaFalsi``
34+
``InitialInterpolated``.
35+
tol, |float|, tolerance for search. optional. The default is 0.8.
36+
maxIter, |integer|, maximum number of iteration to try. The default is 10.
37+
minEta, |float|, a minimum :math:`\eta` value. Optional; The default is 0.1
38+
maxEta, |float|, a maximum :math:`\eta` value. Optional; The default is 10.0
2139

2240

2341
Theory
@@ -40,3 +58,22 @@ The different line search algorithms use different root finding methods to obtai
4058
with :math:`s_0 \triangleq \delta-U R(U_n)`
4159

4260
Code Developed by: |fmk|
61+
62+
63+
Examples
64+
--------
65+
66+
67+
.. tabs::
68+
69+
.. tab:: Python
70+
71+
.. code-block:: python
72+
73+
model.algorithm("NewtonLineSearch", 0.6)
74+
75+
.. tab:: OpenSees
76+
77+
.. code-block:: tcl
78+
79+
algorithm NewtonLineSearch 0.6

source/user/manual/analysis/algorithm/SecantNewton.rst

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)