Documentation for module negf_integr_cc

Adaptive Clenshaw-Curtis quadrature algorithm to integrate a complex-valued function in a complex plane

source: negf_integr_cc.F
Loading...

public Types:

ccquad_type
Adaptive Clenshaw-Curtis environment.

public Subroutines/Functions:

Get the next set of points at which the integrand needs to be computed. These points are then can be used to refine the integral approximation.
Initialise a Clenshaw-Curtis quadrature environment variable.
Prepare Clenshaw-Curtis environment for the subsequent refinement of the integral.
Refine approximated integral.
SUBROUTINE
ccquad_release (cc_env)
Release a Clenshaw-Curtis quadrature environment variable.

Parameters:

INTEGER
:: cc_interval_full = 0
INTEGER
:: cc_interval_half = 1
INTEGER
:: cc_shape_arc = contour_shape_arc
INTEGER
:: cc_shape_linear = contour_shape_linear

public Types:

TYPE :: ccquad_type

Adaptive Clenshaw-Curtis environment.


COMPLEX(dp)
:: a ...
COMPLEX(dp)
:: b ...
INTEGER
:: interval_id ...
INTEGER
:: shape_id ...
REAL(dp)
:: error ...
POINTER :: integral ...
TYPE(cp_fm_type),
POINTER :: error_fm ...
TYPE(cp_fm_type),
POINTER :: weights ...
ALLOCATABLE, DIMENSION(:) :: zdata_cache ...
REAL(dp),
ALLOCATABLE, DIMENSION(:) :: tnodes ...

SUBROUTINEccquad_double_number_of_points(cc_env, xnodes_next)

Get the next set of points at which the integrand needs to be computed. These points are then can be used to refine the integral approximation.

Arguments:
INTENT(inout)
:: cc_env environment variable (modified on exit)
COMPLEX(dp),
INTENT(inout),
ALLOCATABLE
:: xnodes_next(:) set of additional points (allocated and initialised on exit)

SUBROUTINEccquad_init(cc_env, xnodes, nnodes, a, b, interval_id, shape_id, weights, tnodes_restart)

Initialise a Clenshaw-Curtis quadrature environment variable.

Arguments:
INTENT(out)
:: cc_env environment variable to initialise
COMPLEX(dp),
INTENT(out)
:: xnodes(nnodes) points at which an integrand needs to be computed (initialised on exit)
INTEGER,
INTENT(inout)
:: nnodes initial number of points to compute (initialised on exit)
COMPLEX(dp),
INTENT(in)
:: a integral lower bound
COMPLEX(dp),
INTENT(in)
:: b integral upper bound
INTEGER,
INTENT(in)
:: interval_id full [-1 .. 1] or half [-1 .. 0] interval
INTEGER,
INTENT(in)
:: shape_id shape of a curve along which the integral will be evaluated
TYPE(cp_fm_type),
POINTER
:: weights weights associated with matrix elements; used to compute cumulative error
REAL(dp),
INTENT(in),
OPTIONAL
:: tnodes_restart(nnodes) list of nodes over the interval [-1 .. 1] from a previous integral evaluation. If present, the same set of 'xnodes' will be used to compute this integral.

SUBROUTINEccquad_reduce_and_append_zdata(cc_env, zdata_next)

Prepare Clenshaw-Curtis environment for the subsequent refinement of the integral.

Arguments:
INTENT(inout)
:: cc_env environment variable (modified on exit)
INTENT(inout)
:: zdata_next(:) additional integrand value at additional points (modified on exit)

SUBROUTINEccquad_refine_integral(cc_env)

Refine approximated integral.

Arguments:
INTENT(inout)
:: cc_env environment variable (modified on exit)

SUBROUTINEccquad_release(cc_env)

Release a Clenshaw-Curtis quadrature environment variable.

Arguments:
INTENT(inout)
:: cc_env environment variable to release (modified on exit)