yaeos__math_continuation Module

Implementation of Algower’s numerical continuation method.



Abstract Interfaces

abstract interface

  • public subroutine continuation_function(X, ns, S, F, dF, dFdS)

    Arguments

    Type IntentOptional 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(:)

abstract interface

  • public subroutine continuation_solver(fun, iters, X, ns, S, dS, dXdS, point, max_iters, F, df, dfds, tol)

    Solver to solve a point during numerical contination.

    Arguments

    Type IntentOptional 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

abstract interface

  • public function continuation_stopper(X, ns, S, dS, dXdS, iterations)

    Function that returns true if the method should stop

    Arguments

    Type IntentOptional 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

    Return Value logical

abstract interface

  • public subroutine process(X, ns, S, dS, dXdS, iterations)

    Subroutine to make variation in the method after a point converged

    Arguments

    Type IntentOptional 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


Derived Types

type, public ::  ContinuationVariable

Components

Type Visibility Attributes Name Initial
real(kind=pr), public :: S
real(kind=pr), public, allocatable :: X(:)
real(kind=pr), public :: dS
integer, public :: ns

Functions

public function continuation(f, X0, ns0, S0, dS0, max_points, solver_tol, update_specification, postprocess, solver, stop) result(XS)

Numerical continuation of a function.

Read more…

Arguments

Type IntentOptional 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:

Read more…
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

Return Value real(kind=pr), (max_points,size(X0))


Subroutines

public subroutine full_newton(fun, iters, X, ns, S, dS, dXdS, point, max_iters, F, df, dfds, tol)

Subroutine to solve a point.

Read more…

Arguments

Type IntentOptional 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