Class xlifepp::Fock#

class Fock#

Collaboration diagram for xlifepp::Fock:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="xlifepp::FilonIMT< complex_t >" tooltip="xlifepp::FilonIMT< complex_t >"] "13" [label="xlifepp::Tabular< complex_t >" tooltip="xlifepp::Tabular< complex_t >"] "5" [label="xlifepp::Vector< complex_t >" tooltip="xlifepp::Vector< complex_t >"] "10" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "7" [label="std::vector< T >" tooltip="std::vector< T >"] "17" [label="std::vector< T >" tooltip="std::vector< T >"] "9" [label="std::vector< K >" tooltip="std::vector< K >"] "6" [label="std::vector< complex_t >" tooltip="std::vector< complex_t >"] "14" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "11" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "15" [label="std::vector< string_t >" tooltip="std::vector< string_t >"] "12" [label="xlifepp::FilonIMT< T >" tooltip="xlifepp::FilonIMT< T >"] "1" [label="xlifepp::Fock" tooltip="xlifepp::Fock" fillcolor="#BFBFBF"] "4" [label="xlifepp::IntegrationMethod" tooltip="xlifepp::IntegrationMethod"] "3" [label="xlifepp::SingleIM" tooltip="xlifepp::SingleIM"] "16" [label="xlifepp::Tabular< T >" tooltip="xlifepp::Tabular< T >"] "8" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "2" -> "5" [dir=forward tooltip="usage"] "2" -> "10" [dir=forward tooltip="usage"] "2" -> "12" [dir=forward tooltip="template-instance"] "13" -> "6" [dir=forward tooltip="public-inheritance"] "13" -> "11" [dir=forward tooltip="usage"] "13" -> "14" [dir=forward tooltip="usage"] "13" -> "15" [dir=forward tooltip="usage"] "13" -> "16" [dir=forward tooltip="template-instance"] "5" -> "6" [dir=forward tooltip="public-inheritance"] "5" -> "8" [dir=forward tooltip="template-instance"] "10" -> "11" [dir=forward tooltip="public-inheritance"] "10" -> "8" [dir=forward tooltip="template-instance"] "9" -> "7" [dir=forward tooltip="template-instance"] "6" -> "7" [dir=forward tooltip="template-instance"] "14" -> "7" [dir=forward tooltip="template-instance"] "11" -> "7" [dir=forward tooltip="template-instance"] "15" -> "7" [dir=forward tooltip="template-instance"] "12" -> "3" [dir=forward tooltip="public-inheritance"] "12" -> "10" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "1" -> "5" [dir=forward tooltip="usage"] "1" -> "13" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="public-inheritance"] "16" -> "17" [dir=forward tooltip="public-inheritance"] "16" -> "11" [dir=forward tooltip="usage"] "16" -> "14" [dir=forward tooltip="usage"] "16" -> "15" [dir=forward tooltip="usage"] "8" -> "9" [dir=forward tooltip="public-inheritance"] }

Public Functions

inline Fock()#

default constructor

Fock(const string_t &filename)#

constructor loading table

Fock(number_t o, number_t nr, number_t vnf, const complex_t &vq = 0., real_t va = -2.55, real_t vb = 2, real_t vc = -15, real_t vd = 5, bool rot = true)#

constructor

void clear()#

clear object

void createTable(real_t x0, real_t xf, number_t nx)#

create tabulated Fock values

complex_t Fock_s_app(real_t x) const#

compute surface Fock function using approximation

complex_t Fock_s_Filon(real_t x) const#

compute “exact” surface Fock function using Filon methods

complex_t Fock_s_interp(real_t x) const#

compute surface Fock function from tabulated values

compute surface Fock using linear interpolation from values in table x0 <= x <= x0+(n-1)*dx (n=table.size()) NO CHECK

complex_t Fock_s_trapz(real_t x, real_t a = -100, real_t b = 10, number_t nt = 2200) const#

compute “exact” surface Fock function using trapeze method

void initFilon(real_t c, real_t d, number_t nf, bool rot = true)#

initialize Filon object fimAP, fimAM used to compute Fock approximation

void initFilonMP(real_t a, real_t b, number_t nfM, number_t nfP, bool rot = true)#

initialize Filon objects fimM, fimP used to compute “exact” Fock function

void initResidue(number_t nbp = 1, bool withNewton = false)#

initialize pole stuff for residue computation

precomputation of poles zk of w2’-q.w2 and values zk.w2(zk)-q.w2’(zk) = (zk-q^2)w2(zk) q = 0 : zk = exp(2ipi/3)ak’ with ak’ the zeros of Ai’ that are tabulated (up to 10) q=inf: zk = exp(2ipi/3)ak with ak the zeros of Ai that are tabulated (up to 10) when q!=0, zk is approximated from zeros of ak’ (q small) or ak (q large) if withNewton is on, Newton’s method is used to get a better approximation

complex_t ippFock_s(real_t x, real_t c, int_t p) const#

compute surface Fock function using ipp (a<x<b)

compute part of Fock_s using integration by parts approximation (two first terms of double ipp), c>0

    / +inf                                 / c                  / +inf
(p=1) : | j_s(x,q,t)dt or (p=-1) : | j_s(x,q,t)dt = | j_s(x,q,-t)dt /c /-inf /-c
 / +inf
or (p=-2) : r | j_s(x,q,r*t)dt with r=exp(-2ipi/3) (rotated integral) /c
void loadTable(const string_t &filename)#

load from file tabulated Fock values

load tabulated Fock values from file

void newton(complex_t &r0, number_t kmax = 10, real_t tol = theTolerance) const#

improve roots of w2’-q.w2 using Newton’s method

inline complex_t operator()(real_t x, CalType ct = _defaultCal) const#

< compute Fock main function

complex_t resFock_s(real_t x) const#

compute surface Fock function using residue (x>b)

void saveTable(const string_t &filename) const#

save to file tabulated Fock values

void saveTable(real_t x0, real_t xf, number_t nx, const string_t &filename)#

create and save to file tabulated Fock values

complex_t spFock_s(real_t x) const#

compute surface Fock function using stationnary phase (x

Public Members

real_t b#

bounds defining methods to be used (default a=-2.55, b=2)

real_t d#

bounds of integral computed by quadrature (default c=-15, d = 5)

FilonIM fimAM#

Filon object to compute approximated Fock function.

FilonIM fimP#

Filon objects to compute Fock function by Filon methods.

number_t nbr#

number of residue used by the residue method

number_t nf#

number of points used by Filon method

number_t ord#

stationary phase order (0 or 1)

Vector<complex_t> poles#

poles zk

complex_t q#

impedance factor, (default q = 0)

bool qis0#

true if q = 0

mutable bool rotate#

use rotation of negative real axe in quadrature methods (default = true)

Tabular<complex_t> *table#

tabulated Fock values

Vector<complex_t> vpoles#

values (zk-q*q)*w2_Ai(zk)