Implementation of Algower’s numerical continuation method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=pr), | intent(in) | :: | X(:) | |||
integer, | intent(in) | :: | ns | |||
real(kind=pr), | intent(in) | :: | S | |||
real(kind=pr), | intent(out) | :: | F(:) | |||
real(kind=pr), | intent(out) | :: | dF(:,:) | |||
real(kind=pr), | intent(out) | :: | dFdS(:) |
Solver to solve a point during numerical contination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
procedure(continuation_function) | :: | fun |
Function to solve |
|||
integer, | intent(out) | :: | iters |
Number of iterations needed |
||
real(kind=pr), | intent(inout) | :: | X(:) |
Variables vector |
||
integer, | intent(in) | :: | ns |
Specification number |
||
real(kind=pr), | intent(in) | :: | S |
Specification value |
||
real(kind=pr), | intent(in) | :: | dS |
Delta spec |
||
real(kind=pr), | intent(in) | :: | dXdS(:) | |||
integer, | intent(in) | :: | point |
Point number |
||
integer, | intent(in) | :: | max_iters |
Maximum iterations |
||
real(kind=pr), | intent(out) | :: | F(:) |
Function values at solved point |
||
real(kind=pr), | intent(out) | :: | df(:,:) |
Jacobian values |
||
real(kind=pr), | intent(out) | :: | dfds(:) |
dFdS |
||
real(kind=pr), | intent(in) | :: | tol |
Solver tolerance |
Function that returns true if the method should stop
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=pr), | intent(inout) | :: | X(:) |
Vector of variables |
||
integer, | intent(inout) | :: | ns |
Position of specified variable |
||
real(kind=pr), | intent(inout) | :: | S |
Specification variable value |
||
real(kind=pr), | intent(inout) | :: | dS |
Step of specification in the method |
||
real(kind=pr), | intent(inout) | :: | dXdS(:) |
|
||
integer, | intent(in) | :: | iterations |
Iterations needed to converge point |
Subroutine to make variation in the method after a point converged
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=pr), | intent(inout) | :: | X(:) |
Vector of variables |
||
integer, | intent(inout) | :: | ns |
Position of specified variable |
||
real(kind=pr), | intent(inout) | :: | S |
Specification variable value |
||
real(kind=pr), | intent(inout) | :: | dS |
Step of specification in the method |
||
real(kind=pr), | intent(inout) | :: | dXdS(:) |
|
||
integer, | intent(in) | :: | iterations |
Iterations needed to converge point |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=pr), | public | :: | S | ||||
real(kind=pr), | public, | allocatable | :: | X(:) | |||
real(kind=pr), | public | :: | dS | ||||
integer, | public | :: | ns |
Numerical continuation of a function.
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 |
Subroutine to solve a point.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
procedure(continuation_function) | :: | fun |
Function to solve |
|||
integer, | intent(out) | :: | iters |
Number of iterations needed |
||
real(kind=pr), | intent(inout) | :: | X(:) |
Variables vector |
||
integer, | intent(in) | :: | ns | |||
real(kind=pr), | intent(in) | :: | S | |||
real(kind=pr), | intent(in) | :: | dS | |||
real(kind=pr), | intent(in) | :: | dXdS(:) | |||
integer, | intent(in) | :: | point | |||
integer, | intent(in) | :: | max_iters |
Maximum iterations |
||
real(kind=pr), | intent(out) | :: | F(:) |
Function values at solved point |
||
real(kind=pr), | intent(out) | :: | df(:,:) |
Jacobian values |
||
real(kind=pr), | intent(out) | :: | dfds(:) |
dFdS |
||
real(kind=pr), | intent(in) | :: | tol |