Numerical continuation of a function.
Uses Algower method of numerical continuation to trace a line that solves a system of the kind:
Where is the variables vector and (S)\ is the value of the specification. The method works with by providing a good set of initial points to solve the system of equations with an extrapolation using the previous solved point information.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
procedure(continuation_function) | :: | f |
Function to trace |
|||
real(kind=pr), | intent(in) | :: | X0(:) |
Initial point |
||
integer, | intent(in) | :: | ns0 |
Initial specification |
||
real(kind=pr), | intent(in) | :: | S0 |
Initial specification value |
||
real(kind=pr), | intent(in) | :: | dS0 |
Initial |
||
integer, | intent(in) | :: | max_points |
Maximum number of points to trace |
||
real(kind=pr), | intent(in) | :: | solver_tol |
Point solver tolerance |
||
procedure(process), | optional | :: | update_specification |
Procedure to select the new specification and define the next step (\DeltaS)\, defaults to:
|
||
procedure(process), | optional | :: | postprocess |
Any kind of postprocess that could be done after defining the next step |
||
procedure(continuation_solver), | optional | :: | solver |
Solver procedures, uses Newton-Raphson by default |
||
procedure(continuation_stopper), | optional | :: | stop |
Stopping procedure |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=pr), | public | :: | S | ||||
real(kind=pr), | public | :: | X(size(X0)) | ||||
real(kind=pr), | public | :: | dF(size(X0),size(X0)) | ||||
real(kind=pr), | public | :: | dFdS(size(X0)) | ||||
real(kind=pr), | public | :: | dS | ||||
real(kind=pr), | public | :: | dXdS(size(X0)) | ||||
real(kind=pr), | public | :: | fval(size(X0)) | ||||
integer, | public | :: | i | ||||
integer, | public | :: | max_iters | = | 500 | ||
integer, | public | :: | newton_its | ||||
integer, | public | :: | ns |