Namespace xlifepp#

namespace xlifepp

main namespace of XLiFE++ library

Typedefs

typedef EcType BcType
typedef void (*BFFunction)(BFComputationData &bfd)
typedef std::pair<BasicBilinearForm*, complex_t> bfPair

useful typedefs to MatrixBilinearForm class

typedef EssentialCondition BoundaryCondition
typedef EssentialConditions BoundaryConditions
typedef Disk Circle
typedef std::map<uvPair, SuBilinearForm>::const_iterator cit_mublc
typedef std::map<constUnknown*, SuLinearForm>::const_iterator cit_mulc
typedef std::map<uvPair, SuTermMatrix*>::const_iterator cit_mustm
typedef std::map<constUnknown*, SuTermVector*>::const_iterator cit_mustv
typedef std::vector<OpkuvValPair>::const_iterator cit_opkuvval
typedef std::vector<OpusValPair>::const_iterator cit_opusval
typedef std::vector<OpuValPair>::const_iterator cit_opuval
typedef std::vector<bfPair>::const_iterator cit_vbfp
typedef std::vector<lfPair>::const_iterator cit_vlfp
typedef std::vector<real_t>::const_iterator cit_vr
typedef std::vector<Unknown*>::const_iterator cit_vu
typedef real_t (*ColoringRule)(const GeomElement&, const std::vector<real_t>&)

alias of a function describing a GeomElement coloring rule

typedef complex_t Complex
typedef Vector<complex_t> Complexes
typedef Matrix<Matrix<Complex>> ComplexMatrices
typedef Matrix<Complex> ComplexMatrix
typedef Complexes ComplexVector
typedef Vector<Complexes> ComplexVectors
typedef dimen_t Dimen
typedef short unsigned int dimen_t

typedef for short unsigned int

typedef std::pair<dimen_t, dimen_t> dimPair

useful alias

typedef ClusterTree<FeDof> &DofCluster
typedef GeomDomain &Domain
typedef std::pair<const GeomDomain*, const GeomDomain*> DomainPair

useful typedef for domain objects

typedef PCollection<GeomDomain> Domains

collection of GeomDomain pointers

typedef map<number_t, ELTDEF> ELTDEFMAP
typedef std::pair<MeshElement*, number_t> EltNumPair

useful alias of a pair of MeshElement* and number_t

typedef EulerT<real_t> Euler
typedef Interpolation &FEInterpolation
typedef FilonIMT<complex_t> FilonIM
complex_t() funSC1_t (const complex_t &)
complex_t() funSC2_t (const complex_t &, const complex_t &)
complex_t() funSC_t (const Point &, Parameters &)
real_t() funSR1_t (const real_t &)
real_t() funSR2_t (const real_t &, const real_t &)
real_t() funSR_t (const Point &, Parameters &)
typedef std::pair<GeomElement*, number_t> GeoNumPair

useful typedef for GeomElement class

alias of a pair of GeomElement* and a number

typedef map<number_t, GMXL> GMSHMAP
typedef int_t Index
typedef std::vector<number_t> Indexing
typedef int_t Int

alias for basic type

typedef long long int_t

typedef for integer

typedef PCollection<Interpolation> Interpolations

collection of Interpolation pointers

typedef Collection<int_t> Ints

collection of Int

typedef std::map<uvPair, SuBilinearForm>::iterator it_mublc

useful typedefs to BilinearForm class

typedef std::map<constUnknown*, SuLinearForm>::iterator it_mulc

useful typedefs to LinearForm class

typedef std::map<uvPair, SuTermMatrix*>::iterator it_mustm

useful aliases for TermMatrix class

typedef std::map<constUnknown*, SuTermVector*>::iterator it_mustv
typedef std::vector<OpkuvValPair>::iterator it_opkuvval
typedef std::vector<OpusValPair>::iterator it_opusval
typedef std::vector<OpuValPair>::iterator it_opuval
typedef std::vector<bfPair>::iterator it_vbfp
typedef std::vector<lfPair>::iterator it_vlfp
typedef std::vector<real_t>::iterator it_vr
typedef std::vector<Unknown*>::iterator it_vu
typedef std::pair<SIDELTMAP::const_iterator, SIDELTMAP::const_iterator> ITPARENTS
complex_t() kerSC_t (const Point &, const Point &, Parameters &)
Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef real_t() kerSR_t (const Point &, const Point &, Parameters &)
typedef std::pair<BasicLinearForm*, complex_t> lfPair

useful typedefs to SuLinearForm class

Parameters &typedef Parameters &typedef Parameters &typedef Matrix< complex_t > (funMC_t)(const Point &
Parameters &typedef Parameters &typedef Matrix< real_t > (funMR_t)(const Point &
typedef MeshGenerator MeshPattern
typedef map<number_t, pair<number_t, number_t>> Mn_Pnn
typedef map<number_t, set<number_t>> Mn_Sn
typedef MonomialT Monomial
typedef number_t Number
typedef size_t number_t

typedef for size_t

typedef Collection<number_t> Numbers

collection of Number

typedef std::pair<number_t, number_t> NumPair
typedef Ode45T<real_t> Ode45
typedef std::pair<xlifepp::KernelOperatorOnUnknowns*, xlifepp::complex_t> OpkuvValPair
typedef Parameters Options
typedef std::pair<OperatorOnUnknowns*, complex_t> OpusValPair
typedef std::pair<OperatorOnUnknown*, complex_t> OpuValPair
typedef std::pair<number_t, number_t> pairNN
typedef Vector<real_t> (*par_fun)(const Point&, Parameters&, DiffOpType)

alias of real vector function

typedef Collection<Points> PointMatrix

collection of Points

typedef Collection<Point> Points

collection of Point

typedef PolyNodeT PolyNode
typedef PolynomialT Polynomial
typedef PolynomialBasisT PolynomialBasis
typedef PolynomialsBasisT PolynomialsBasis
typedef real_t Real
typedef Matrix<Matrix<Real>> RealMatrices
typedef Matrix<Real> RealMatrix

alias for matrix type

typedef std::pair<real_t, real_t> RealPair
typedef Vector<real_t> Reals
typedef Reals RealVector

alias for vector type

typedef Vector<Reals> RealVectors
typedef RK4T<real_t> RK4
typedef std::multimap<std::vector<number_t>, pairNN> SIDELTMAP
typedef PCollection<Space> Spaces

collection of Space pointers

typedef Ball Sphere
typedef std::vector<std::pair<ShapeType, std::vector<number_t>>> splitvec_t
typedef string_t String
typedef Collection<string_t> Strings

collection of String

typedef std::pair<ValueType, StrucType> structPair
typedef Unknown TestFct

alias of Unknown

typedef PCollection<TestFunction> TestFunctions

collection of TestFunction pointers

typedef unsigned long long uint_t
typedef PCollection<Unknown> Unknowns

collection of Unknown pointers

typedef std::pair<const Unknown*, const Unknown*> uvPair
Parameters &typedef Vector< complex_t > (funVC_t)(const Point &
const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Vector< Matrix< complex_t > > (vfunMC_t)(const Vector< Point > &
const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Vector< Matrix< real_t > > (vfunMR_t)(const Vector< Point > &
const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef Vector< real_t > (vfunSR_t)(const Vector< Point > &
const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef Parameters &typedef Parameters &typedef Parameters &typedef Vector< Vector< complex_t > > (vfunVC_t)(const Vector< Point > &
const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef const Point Parameters &typedef Parameters &typedef Parameters &typedef Vector< Vector< real_t > > (vfunVR_t)(const Vector< Point > &
typedef real_t (*VectorColoringRule)(const GeomElement&, const std::vector<Vector<real_t>>&)

alias of a function describing a GeomElement coloring rule

typedef std::vector<std::pair<complex_t, VectorEntry*>> VpacVEp

Enums

enum AccessType

access type of storage

Values:

enumerator _noAccess
enumerator _sym
enumerator _row
enumerator _col
enumerator _dual
enum AdjacentStatus

Values:

enumerator _notAdjacent
enumerator _adjacentByElement
enumerator _adjacentBySide
enumerator _adjacentBySideOfSide
enumerator _adjacentByVertex
enum AlgebraicOperator

Values:

enumerator _product
enumerator _innerProduct
enumerator _crossProduct
enumerator _contractedProduct
enum Alignment

Values:

enumerator _centerAlignment
enumerator _leftAlignment
enumerator _rightAlignment
enum AngleUnitType

Values:

enumerator _deg
enumerator _rad
enum ArgType

Values:

enumerator _pointArg
enumerator _vectorOfPointArg
enum BoundaryCondionType

Helmholtz kernel in the strip ]-inf,+inf[x]0,h[ with either Dirichlet or Neumann boundary condition computed using modal expansion far from xs axis and accelerated image expansion close to the xs axis manage following parameters number_t bc: boundary type on both sides (0=Dirichlet,1=Neumann, …) real_t k: wave number real_t h: strip height (default 1) number_t N: maximum of terms in expansion (default 1000, must be greater than the number of propagative modes!) real_t l: abcissa separating image expansion and modal expansion (default h/10) real_t eps: threshold used to cut expansions , say |an|<eps, (default 1E-6)

Values:

enumerator _Dirichlet
enumerator _Neumann
enum CalType

type of calculation in Fock, Malyuzhinets function

Values:

enumerator _defaultCal
enumerator _filonCal
enumerator _trapezeCal
enumerator _approxCal
enumerator _interpCal
enumerator _laguerreCal
enumerator _adaptiveCal
enum CloseNodeRule

Values:

enumerator _fmmCloseNodeRule
enum ClusteringMethod

Values:

enumerator _regularBisection
enumerator _boundingBoxBisection
enumerator _cardinalityBisection
enumerator _uniformKdtree
enumerator _nonuniformKdtree
enum ComparisonOperator

ComparisonFunction class handling expresion t opc1 a1 ao t opc2 a2 ao … where opc1, opc2, … are one of =, !=, <, > , >=, <= ao is one of && or || (the same in expression) a1, a2, … are objects of same type, supporting comparison operator let cop be a ComparisonFunction object cof(t) return the bool value of t opc1 a opao t opc2 2

Values:

enumerator _noComparison
enumerator _isEqual
enumerator _isNotEqual
enumerator _isLess
enumerator _isGreater
enumerator _isLessEqual
enumerator _isGreaterEqual
enum ComputationInfo

Enum for reporting the status of a computation.

Values:

enumerator _success

Computation was successful.

enumerator _numericalIssue

The provided data did not satisfy the prerequisites.

enumerator _noConvergence

Iterative procedure did not converge.

enumerator _invalidInput

The inputs are invalid, or the algorithm has been improperly called.

When assertions are enabled, such errors trigger an assert.

enum ComputationType

type of computation

Values:

enumerator _undefComputation
enumerator _FEComputation
enumerator FEComputation
enumerator _IEComputation
enumerator IEComputation
enumerator _SPComputation
enumerator SPComputation
enumerator _FESPComputation
enumerator FESPComputation
enumerator _IESPComputation
enumerator IESPComputation
enumerator _FEextComputation
enumerator FEextComputation
enumerator _IEextComputation
enumerator IEextComputation
enumerator _IEHmatrixComputation
enumerator IEHmatrixComputation
enumerator _DGComputation
enumerator DGComputation
enum ComputeIntgFlag

Values:

enumerator _computeI1
enumerator _computeI2
enumerator _computeBoth
enum ConstCastStorage

Values:

enumerator _constCastSt
enum ContinuityOrder

continuity order C0 : only geometric continuity, C1 : continuity of the first derivative all along the Curve, C2 : continuity of the second derivative all along the Curve, C3 : continuity of the third derivative all along the Curve, G1 : tangency continuity all along the Curve, G2 : curvature continuity all along the Curve, Cinf: the order of continuity is infinite.

Values:

enumerator _notRegular
enumerator _regC0
enumerator _regC1
enumerator _regC2
enumerator _regC3
enumerator _regG1
enumerator _regG2
enumerator _regCinf
enum ConvAngleType

Values:

enumerator _noAngleConversion
enumerator _degToRad
enumerator _radToDeg
enum CrackType

type of crack

Values:

enumerator _noCrack
enumerator _openCrack
enumerator _closedCrack
enum Ctype

Values:

enumerator _rm
enumerator rm
enumerator _shem
enumerator shem
enum DataAccess

Values:

enumerator _copy
enumerator _view
enum DiffComputation

Values:

enumerator _IdComputation
enumerator _funComputation
enumerator _invComputation
enumerator _lengthComputation
enumerator _lengthsComputation
enumerator _curvatureComputation
enumerator _curvaturesComputation
enumerator _curabcComputation
enumerator _curabcsComputation
enumerator _normalComputation
enumerator _tangentComputation
enum DiffOpType

type fo differential operator

Values:

enumerator _id
enumerator _d0
enumerator _dt
enumerator _d1
enumerator _dx
enumerator _d2
enumerator _dy
enumerator _d3
enumerator _dz
enumerator _grad
enumerator _nabla
enumerator _div
enumerator _curl
enumerator _rot
enumerator _gradS
enumerator _nablaS
enumerator _divS
enumerator _curlS
enumerator _rotS
enumerator _scurlS
enumerator _srotS
enumerator _ntimes
enumerator _timesn
enumerator _ndot
enumerator _ncross
enumerator _ncrossncross
enumerator _ndotgrad
enumerator _ndiv
enumerator _ncrosscurl
enumerator _ncrossgrad
enumerator _ncrossntimes
enumerator _timesncrossn
enumerator _ntimesndot
enumerator _divG
enumerator _gradG
enumerator _nablaG
enumerator _curlG
enumerator _rotG
enumerator _epsilon
enumerator _epsilonG
enumerator _epsilonR
enumerator _voigtToM
enumerator _grad_x
enumerator _nabla_x
enumerator _grad_y
enumerator _nabla_y
enumerator _grad_xy
enumerator _nabla_xy
enumerator _div_x
enumerator _div_y
enumerator _div_xy
enumerator _curl_x
enumerator _rot_x
enumerator _curl_y
enumerator _rot_y
enumerator _curl_xy
enumerator _rot_xy
enumerator _ntimes_x
enumerator _timesn_x
enumerator _ndot_x
enumerator _ncross_x
enumerator _ncrossncross_x
enumerator _ncrossntimes_x
enumerator _timesncrossn_x
enumerator _ndotgrad_x
enumerator _ndiv_x
enumerator _ncrosscurl_x
enumerator _ntimes_y
enumerator _timesn_y
enumerator _ndot_y
enumerator _ncross_y
enumerator _ncrossncross_y
enumerator _ncrossntimes_y
enumerator _timesncrossn_y
enumerator _ndotgrad_y
enumerator _ndiv_y
enumerator _ncrosscurl_y
enumerator _ndotgrad_xy
enumerator _nxdotny_times
enumerator _nxcrossny_dot
enumerator _nycrossnx_dot
enumerator _nxcrossny_cross
enumerator _nycrossnx_cross
enumerator _nxcrossny_times
enumerator _nycrossnx_times
enumerator _dt2
enumerator _d11
enumerator _dxx
enumerator _d22
enumerator _dyy
enumerator _d33
enumerator _dzz
enumerator _d12
enumerator _dxy
enumerator _d21
enumerator _dyx
enumerator _d13
enumerator _dxz
enumerator _d31
enumerator _dzx
enumerator _d23
enumerator _dyz
enumerator _d32
enumerator _dzy
enumerator _lap
enumerator _lapG
enumerator _d2G
enumerator _dt3
enumerator _d111
enumerator _dxxx
enumerator _d222
enumerator _dyyy
enumerator _d333
enumerator _dzzz
enumerator _d112
enumerator _dxxy
enumerator _d113
enumerator _dxxz
enumerator _d122
enumerator _dxyy
enumerator _d123
enumerator _dxyz
enumerator _d133
enumerator _dxzz
enumerator _d223
enumerator _dyyz
enumerator _d233
enumerator _dyzz
enum DimensionType

space or mesh dimension

Values:

enumerator _undefDim
enumerator _1D
enumerator _2D
enumerator _3D
enumerator _nD
enum DofCompatibility

types of compatibility rule to applied to side dofs _noDofCompatibility : no rule to apply (case of Lagrange dofs) _signDofCompatibility: sign correction due to normal/tangent vector orientation (case of Hcurl, Hdiv element)

Values:

enumerator _noDofCompatibility
enumerator _signDofCompatibility
enum DofLocalization

Values:

enumerator _nowhere
enumerator _onVertex
enumerator _onEdge
enumerator _onFace
enumerator _onElement
enum DofType

DoF type.

Values:

enumerator _feDof
enumerator _spDof
enumerator _otherDof
enum DomainExtensionType

type of extension if an extended domain

Values:

enumerator _noExtension
enumerator _vertexExtension
enumerator _sideExtension
enumerator _ficticiousExtension
enum DomainType

type of domain

Values:

enumerator _undefDomain
enumerator _analyticDomain
enumerator _meshDomain
enumerator _compositeDomain
enumerator _pointsDomain
enum ECMethod

method to translate essential condition to constraints

Values:

enumerator _undefECMethod
enumerator _dofEC
enumerator _internalNodeEC
enumerator _momentEC
enum EcType

type of essential condition

Values:

enumerator _undefEcType
enumerator _DirichletEc
enumerator _transmissionEc
enumerator _crackEc
enumerator _periodicEc
enumerator _meanEc
enumerator _lfEc
enumerator _NeumannEc
enumerator _FourierEc
enum EigenComputationalMode

computational mode for eigen solvers

Values:

enumerator _davidson
enumerator _krylovSchur
enumerator _buckling
enumerator _cayley
enumerator _cshiftRe
enumerator _cshiftIm
enum EigenSolverMode

type of eigen problems

Values:

enumerator _eigenValueOnly

Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify that only the eigenvalues are to be computed and not the eigenvectors.

enumerator _computeEigenVector

Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify that both the eigenvalues and the eigenvectors are to be computed.

enumerator _eigVecMask
enumerator _Ax_lBx

Used in GeneralizedSelfAdjointEigenSolver to indicate that it should solve the generalized eigenproblem \( Ax = \lambda B x \).

enumerator _ABx_lx

Used in GeneralizedSelfAdjointEigenSolver to indicate that it should solve the generalized eigenproblem \( ABx = \lambda x \).

enumerator _BAx_lx

Used in GeneralizedSelfAdjointEigenSolver to indicate that it should solve the generalized eigenproblem \( BAx = \lambda x \).

enumerator _genEigMask
enum EigenSolverType

Eigen solvers.

Values:

enumerator _intern
enumerator _arpack
enum EigenSortKind

Possible choices to sort the eigenvalues.

Values:

enumerator _decr_module
enumerator _decr_realpart
enumerator _decr_imagpart
enumerator _incr_module
enumerator _incr_realpart
enumerator _incr_imagpart
enum EllipsoidParametrizationType

Values:

enumerator _thetaphi
enumerator _stereographic
enumerator _bistereographic
enum FactorizationType

factorization of matrices

Values:

enumerator _noFactorization
enumerator _lu
enumerator _ldlt
enumerator _ldlstar
enumerator _llt
enumerator _llstar
enumerator _qr
enumerator _ilu
enumerator _ildlt
enumerator _ildlstar
enumerator _illt
enumerator _illstar
enumerator _umfpack
enum FEMapType

types of map applied to shape functions of reference element standard map : J{-t} Lagrange FE contravariantPiolaMap: J*J{-t}/|J| div conforming FE covariantPiolaMap : J{-t}*J{-t} curl conforming FE MorleyMap : see Morley element ArgyrisMap : see Argyris element

Values:

enumerator _standardMap
enumerator _contravariantPiolaMap
enumerator _covariantPiolaMap
enumerator _MorleyMap
enumerator _ArgyrisMap
enum FESubType

finite element subfamily

Values:

enumerator _standard
enumerator standard
enumerator _GaussLobattoPoints
enumerator GaussLobattoPoints
enumerator _firstFamily
enumerator firstFamily
enumerator _secondFamily
enumerator secondFamily
enum FEType

finite element family

Values:

enumerator _Lagrange
enumerator Lagrange
enumerator _Hermite
enumerator Hermite
enumerator _CrouzeixRaviart
enumerator CrouzeixRaviart
enumerator _Nedelec
enumerator Nedelec
enumerator _RaviartThomas
enumerator RaviartThomas
enumerator _NedelecFace
enumerator NedelecFace
enumerator _NedelecEdge
enumerator NedelecEdge
enumerator _BuffaChristiansen
enumerator BuffaChristiansen
enumerator _Morley
enumerator Morley
enumerator _Argyris
enumerator Argyris
enum FieldPart

Values:

enumerator _totalField
enumerator _diffractedField
enumerator _wedgeField
enum FieldType

Values:

enumerator _noFieldType
enumerator _terminator
enumerator _lightOP
enumerator _lightFock
enumerator _shadowFock
enumerator _creeping
enumerator _focal
enum FuncFormType

type of function (C++ function or TermVector)

Values:

enumerator _analytical
enumerator _interpolated
enum FunctionPart

regular/singular part

Values:

enumerator _allFunction
enumerator allFunction
enumerator _regularPart
enumerator regularPart
enumerator _singularPart
enumerator singularPart
enum FunctType

type of functions (one Point variable, or two)

Values:

enumerator _function
enumerator _kernel
enum GaussianGenerator

Values:

enumerator _BoxMullerGenerator
enumerator _MarsagliaGenerator
enum GeodesicType

Values:

enumerator _geodesic
enumerator _parametrizedGeodesic
enumerator _meshedGeodesic
enumerator _analyticGeodesic
enumerator _geometricGeodesic
enumerator _compositeGeodesic
enum GeometricEndShape

used for RevTrunk class in lib geometry

Values:

enumerator _gesNone
enumerator gesNone
enumerator _gesFlat
enumerator gesFlat
enumerator _gesCone
enumerator gesCone
enumerator _gesEllipsoid
enumerator gesEllipsoid
enumerator _gesSphere
enumerator gesSphere
enum GeometryRelationType

enum to describe the relative position of 2 geometries

Values:

enumerator _inside
enumerator _contains
enumerator _intersects
enumerator _outside
enum GeoOperation

Values:

enumerator _noneGeOp
enumerator _plusGeOp
enumerator _minusGeOp
enumerator _commonGeOp
enumerator _loopGeOp
enumerator _extrusionGeOp
enum Gtype

Values:

enumerator dual
enumerator nodal
enum HMAdmissibilityRule

Values:

enumerator _noRule
enumerator _boxesRule
enum HMApproximationMethod

Enumerated list of available HMatrix approximation method.

Values:

enumerator _noHMApproximation
enumerator _svdCompression
enumerator _rsvdCompression
enumerator _r3svdCompression
enumerator _acaFull
enumerator _acaPartial
enumerator _acaPlus
enum HMatrixMethod

Values:

enumerator _standardHM
enumerator _denseHM
enum IntegrationMethodType

integration methods

Values:

enumerator _undefIM
enumerator _quadratureIM
enumerator _polynomialIM
enumerator _productIM
enumerator _LenoirSalles2dIM
enumerator LenoirSalles2d
enumerator _LenoirSalles3dIM
enumerator LenoirSalles3d
enumerator _LenoirSalles2dIR
enumerator _LenoirSalles3dIR
enumerator _SauterSchwabIM
enumerator SauterSchwab
enumerator _SauterSchwabSymIM
enumerator SauterSchwabSym
enumerator _DuffyIM
enumerator Duffy
enumerator _DuffySymIM
enumerator Duffy_sym
enumerator _HMatrixIM
enumerator H_Matrix
enumerator _CollinoIM
enumerator _FilonIM
enum InterpolationType

interpolation type :

  • P0, … P10, Q0, … Q10 stands for Lagrange FE interpolation

  • name nomenclature of edge/face element 2D (triangle) 3D (tetrahedron) FE face type (Hdiv) Raviart-Thomas(RT) Nedelec Face first family (NF1) Brezzi-Douglas-Marini(BDM) Nedelec Face second family(NF2) FE edge type (Hrot) Nedelec first family (N1) Nedelec Edge first family (NE1) Nedelec second family(N2) Nedelec Edge second family(NE2)

Note

according to the previous table, there is an equivalence between 2D and 3D shortname: for instance NF_1 in 2D is understood as RT_1 and RT_1 in 3D is understood as NF_1

Values:

enumerator _P0
enumerator P0
enumerator _P1
enumerator P1
enumerator _P2
enumerator P2
enumerator _P3
enumerator P3
enumerator _P4
enumerator P4
enumerator _P5
enumerator P5
enumerator _P6
enumerator P6
enumerator _P7
enumerator P7
enumerator _P8
enumerator P8
enumerator _P9
enumerator P9
enumerator _P10
enumerator P10
enumerator _P1BubbleP3
enumerator P1BubbleP3
enumerator _CR
enumerator CR
enumerator _Q0
enumerator Q0
enumerator _Q1
enumerator Q1
enumerator _Q2
enumerator Q2
enumerator _Q3
enumerator Q3
enumerator _Q4
enumerator Q4
enumerator _Q5
enumerator Q5
enumerator _Q6
enumerator Q6
enumerator _Q7
enumerator Q7
enumerator _Q8
enumerator Q8
enumerator _Q9
enumerator Q9
enumerator _Q10
enumerator Q10
enumerator _RT_1
enumerator RT_1
enumerator _NF1_1
enumerator NF1_1
enumerator _RT_2
enumerator RT_2
enumerator _NF1_2
enumerator NF1_2
enumerator _RT_3
enumerator RT_3
enumerator _NF1_3
enumerator NF1_3
enumerator _RT_4
enumerator RT_4
enumerator _NF1_4
enumerator NF1_4
enumerator _RT_5
enumerator RT_5
enumerator _NF1_5
enumerator NF1_5
enumerator _BDM_1
enumerator BDM_1
enumerator _NF2_1
enumerator NF2_1
enumerator _BDM_2
enumerator BDM_2
enumerator _NF2_2
enumerator NF2_2
enumerator _BDM_3
enumerator BDM_3
enumerator _NF2_3
enumerator NF2_3
enumerator _BDM_4
enumerator BDM_4
enumerator _NF2_4
enumerator NF2_4
enumerator _BDM_5
enumerator BDM_5
enumerator _NF2_5
enumerator NF2_5
enumerator _N1_1
enumerator N1_1
enumerator _NE1_1
enumerator NE1_1
enumerator _N1_2
enumerator N1_2
enumerator _NE1_2
enumerator NE1_2
enumerator _N1_3
enumerator N1_3
enumerator _NE1_3
enumerator NE1_3
enumerator _N1_4
enumerator N1_4
enumerator _NE1_4
enumerator NE1_4
enumerator _N1_5
enumerator N1_5
enumerator _NE1_5
enumerator NE1_5
enumerator _N2_1
enumerator N2_1
enumerator _NE2_1
enumerator NE2_1
enumerator _N2_2
enumerator N2_2
enumerator _NE2_2
enumerator NE2_2
enumerator _N2_3
enumerator N2_3
enumerator _NE2_3
enumerator NE2_3
enumerator _N2_4
enumerator N2_4
enumerator _NE2_4
enumerator NE2_4
enumerator _N2_5
enumerator N2_5
enumerator _NE2_5
enumerator NE2_5
enum IOFormat

I/O mesh format.

Values:

enumerator _undefFormat
enumerator _vtk
enumerator vtk
enumerator _vtu
enumerator vtu
enumerator _msh
enumerator msh
enumerator _geo
enumerator geo
enumerator _mel
enumerator mel
enumerator _ply
enumerator ply
enumerator _medit
enumerator medit
enumerator _matlab
enumerator matlab
enumerator _raw
enumerator raw
enumerator _xyzv
enumerator xyzv
enum Iptype

Values:

enumerator _grow
enumerator grow
enumerator _iprandom
enumerator iprandom
enum IterativeSolverType

Iterative solvers.

Values:

enumerator _noIterativeSolver
enumerator _cg
enumerator _cgs
enumerator _qmr
enumerator _bicg
enumerator _bicgstab
enumerator _gmres
enumerator _sor
enumerator _ssor
enum JumpType

type of jump

Values:

enumerator _nojump
enumerator _jump
enumerator _mean
enum KeepStatus

Values:

enumerator _keep
enumerator _nokeep
enum KernelType

Values:

enumerator _generalKernel
enumerator _tensorKernel
enum Language

multilingual messages

Values:

enumerator _en
enumerator en
enumerator english
enumerator _fr
enumerator fr
enumerator francais
enumerator _de
enumerator de
enumerator deutsch
enumerator _es
enumerator es
enumerator espanol
enumerator _nbLanguages
enum LinearFormType

type of linear form

Values:

enumerator _undefLf
enumerator _intg
enumerator _doubleIntg
enumerator _bilinearAsLinear
enumerator _linearCombination
enumerator _composedLf
enumerator _explicitLf
enumerator _userLf
enum MatrixApproximationType

Values:

enumerator _lowRankApproximation
enumerator _fmmApproximation
enum MatrixConditioning

Enumerated list of matrix properties regarding invertibility.

Values:

enumerator _well_conditioned_matrix
enumerator _bad_conditioned_matrix
enumerator _non_invertible_matrix
enum MatrixPart

part of matrices

Values:

enumerator _all
enumerator _lower
enumerator _upper
enum MemoryUnit

memory units

Values:

enumerator _byte
enumerator _kilobyte
enumerator _megabyte
enumerator _gigabyte
enumerator _terabyte
enum MeshGenerator

enum to select the mesh generator/algorithm

Values:

enumerator _defaultGenerator
enumerator _defaultPattern
enumerator _structured
enumerator structured
enumerator _subdiv
enumerator subdiv
enumerator _gmsh
enumerator gmsh
enumerator _unstructured
enumerator unstructured
enumerator _gmshOC
enumerator gmshOC
enumerator _fromParametrization
enumerator fromParametrization
enum MeshOption

enum to select the mesh generator/algorithm

Values:

enumerator _defaultMeshOption
enumerator _unstructuredMesh
enumerator unstructuredMesh
enumerator _structuredMesh
enumerator structuredMesh
enumerator _leftSplit
enumerator leftSplit
enumerator _rightSplit
enumerator rightSplit
enumerator _randomSplit
enumerator randomSplit
enumerator _alternateSplit
enumerator alternateSplit
enumerator _crossSplit
enumerator crossSplit
enum MsgEigenType

Enumerated list of available message types recognized by the eigensolvers.

These message types are also used with verboseLevel to print out warning (debugging) info.

Values:

enumerator _errorsEigen

Errors [ always printed ].

enumerator _warningsEigen

Internal warnings.

enumerator _iterationDetailsEigen

Approximate eigenvalues, errors.

enumerator _orthoDetailsEigen

Orthogonalization/orthonormalization details.

enumerator _finalSummaryEigen

Final computational summary.

enumerator _timingDetailsEigen

Timing details.

enumerator _statusTestDetailsEigen

Status test details.

enumerator _debugEigen

Debugging information.

enum MsgType

Message types enumeration.

Values:

enumerator _error
enumerator _warning
enumerator _info
enum Objtype

Objtype.

Values:

enumerator _cut
enumerator cut
enumerator _vol
enumerator vol
enum OCShapeType

Open Cascade shape.

Values:

enumerator _undefOCShape
enumerator _OCSolid
enumerator _solid
enumerator _OCShell
enumerator _shell
enumerator _OCFace
enumerator _face
enumerator _OCWire
enumerator _wire
enumerator _OCEdge
enumerator _edge
enumerator _OCVertex
enumerator _vertex
enum OrientationType

orientation type for a spacedim-1 domain

Values:

enumerator _undefOrientationType
enumerator _towardsInfinite
enumerator towardsInfinite
enumerator _outwardsInfinite
enumerator outwardsInfinite
enumerator _towardsDomain
enumerator towardsDomain
enumerator _outwardsDomain
enumerator outwardsDomain
enum ParameterKey

used for GeomParameter class in lib geometry

Values:

enumerator _pk_none
enumerator _pk_lang
enumerator _pk_verbose
enumerator _pk_nbThreads
enumerator _pk_trackingMode
enumerator _pk_pushpop
enumerator _pk_traceMemory
enumerator _pk_isLogged
enumerator _pk_varnames
enumerator _pk_vertices
enumerator _pk_faces
enumerator _pk_center
enumerator _pk_center1
enumerator _pk_center2
enumerator _pk_apogee
enumerator _pk_origin
enumerator _pk_apex
enumerator _pk_v1
enumerator _pk_v2
enumerator _pk_v3
enumerator _pk_v4
enumerator _pk_v5
enumerator _pk_v6
enumerator _pk_v7
enumerator _pk_v8
enumerator _pk_xmin
enumerator _pk_xmax
enumerator _pk_ymin
enumerator _pk_ymax
enumerator _pk_zmin
enumerator _pk_zmax
enumerator _pk_spline
enumerator _pk_spline_type
enumerator _pk_spline_subtype
enumerator _pk_degree
enumerator _pk_spline_BC
enumerator _pk_tension
enumerator _pk_spline_parametrization
enumerator _pk_weights
enumerator _pk_tangent_0
enumerator _pk_tangent_1
enumerator _pk_nbu
enumerator _pk_tmin
enumerator _pk_tmax
enumerator _pk_parametrization
enumerator _pk_partitioning
enumerator _pk_nbParts
enumerator _pk_shapePartition
enumerator _pk_partmesh
enumerator _pk_ncommon
enumerator _pk_ptype
enumerator _pk_objtype
enumerator _pk_ctype
enumerator _pk_iptype
enumerator _pk_rtype
enumerator _pk_savedoms
enumerator _pk_repsortie
enumerator _pk_length
enumerator _pk_xlength
enumerator _pk_ylength
enumerator _pk_zlength
enumerator _pk_radius
enumerator _pk_radius1
enumerator _pk_radius2
enumerator _pk_xradius
enumerator _pk_yradius
enumerator _pk_zradius
enumerator _pk_basis
enumerator _pk_scale
enumerator _pk_dir
enumerator _pk_axis
enumerator _pk_normal
enumerator _pk_end_shape
enumerator _pk_end1_shape
enumerator _pk_end2_shape
enumerator _pk_end_distance
enumerator _pk_end1_distance
enumerator _pk_end2_distance
enumerator _pk_nnodes
enumerator _pk_hsteps
enumerator _pk_base_names
enumerator _pk_domain_name
enumerator _pk_side_names
enumerator _pk_naming_domain
enumerator _pk_naming_section
enumerator _pk_naming_side
enumerator _pk_init_transformation
enumerator _pk_layers
enumerator _pk_nbsubdomains
enumerator _pk_nboctants
enumerator _pk_angle
enumerator _pk_angle1
enumerator _pk_angle2
enumerator _pk_type
enumerator _pk_shape
enumerator _pk_generator
enumerator _pk_pattern
enumerator _pk_split_direction
enumerator _pk_refinement_depth
enumerator _pk_dim
enumerator _pk_domain
enumerator _pk_extension_domain
enumerator _pk_extension_domain_u
enumerator _pk_extension_domain_v
enumerator _pk_FE_type
enumerator _pk_FE_subtype
enumerator _pk_Sobolev_type
enumerator _pk_order
enumerator _pk_interpolation
enumerator _pk_optimizeNumbering
enumerator _pk_notOptimizeNumbering
enumerator _pk_withLocateData
enumerator _pk_withoutLocateData
enumerator _pk_basis_dim
enumerator _pk_rank
enumerator _pk_method
enumerator _pk_quad
enumerator _pk_quad1
enumerator _pk_quad2
enumerator _pk_order1
enumerator _pk_order2
enumerator _pk_bound
enumerator _pk_isogeo
enumerator _pk_symmetry
enumerator _pk_computation
enumerator _pk_function_part
enumerator _pk_compute
enumerator _pk_notCompute
enumerator _pk_assembled
enumerator _pk_unassembled
enumerator _pk_storage
enumerator _pk_nodal
enumerator _pk_reduction
enumerator _pk_pseudoReductionMethod
enumerator _pk_realReductionMethod
enumerator _pk_penalizationReductionMethod
enumerator _pk_maxIt
enumerator _pk_krylovDim
enumerator _pk_solver
enumerator _pk_tolerance
enumerator _pk_convToStd
enumerator _pk_forceNonSym
enumerator _pk_ncv
enumerator _pk_nev
enumerator _pk_mode
enumerator _pk_sigma
enumerator _pk_sort
enumerator _pk_which
enumerator _pk_omega
enumerator _pk_name
enumerator _pk_format
enumerator _pk_data_name
enumerator _pk_aFilePerDomain
enumerator _pk_aUniqueFile
enumerator _pk_encodingFileName
enumerator _pk_noEncodingFileName
enumerator _pk_transformation
enumerator _pk_suffix
enum Partitioning

type of partitioning

Values:

enumerator _nonePartition
enumerator _linearPartition
enumerator _splinePartition
enum PolynomialSpace

Values:

enumerator _Pk
enumerator _PHk
enumerator _Qk
enumerator _Qks
enumerator _Rk
enumerator _SHk
enumerator _Dk
enumerator _DQk
enumerator _DQ2k
enumerator _DQ3k
enum PreconditionerType

preconditioner

Values:

enumerator _noPrec
enumerator _luPrec
enumerator _ldltPrec
enumerator _ldlstarPrec
enumerator _ssorPrec
enumerator _diagPrec
enumerator _productPrec
enumerator _iluPrec
enumerator _ildltPrec
enumerator _ildlstarPrec
enumerator _illtPrec
enumerator _userPrec
enum ProjectionType

Values:

enumerator _noProjection
enumerator _givenProjection
enumerator _dotnProjection
enumerator _crossnProjection
enum ProjectorType

type of space projectors

Values:

enumerator _noProjectorType
enumerator _userProjector
enumerator userProjector
enumerator _L2Projector
enumerator L2Projector
enumerator _H1Projector
enumerator H1Projector
enumerator _H10Projector
enumerator H10Projector
enum Ptype

Ptype.

Values:

enumerator _rec
enumerator rec
enumerator recursive
enumerator _kway
enumerator kway
enum QuadRule

quadrature rules

Values:

enumerator _defaultRule
enumerator defaultQuadrature
enumerator _GaussLegendreRule
enumerator GaussLegendre
enumerator _symmetricalGaussRule
enumerator symmetricalGauss
enumerator _GaussLobattoRule
enumerator GaussLobatto
enumerator _nodalRule
enumerator nodalQuadrature
enumerator _miscRule
enumerator miscQuadrature
enumerator _GrundmannMollerRule
enumerator GrundmannMoller
enumerator _doubleQuadrature
enumerator _evenGaussLegendreRule
enumerator _evenGaussLobattoRule
enum ReductionMethodType

reduction method to deal with essential conditions

Values:

enumerator _noReduction
enumerator _pseudoReduction
enumerator _realReduction
enumerator _penalizationReduction
enumerator _dualReduction
enum Rtype

Values:

enumerator _fm
enumerator fm
enumerator _greedy
enumerator greedy
enumerator _sep2sided
enumerator sep2sided
enumerator _sep1sided
enumerator sep1sided
enum SetOperationType

type of composition of domains

Values:

enumerator _union
enumerator _intersection
enum ShapesType

geometrical shapes

Values:

enumerator _noShapes
enumerator _fromFiles
enumerator _points
enumerator _segments
enumerator segments
enumerator _triangles
enumerator triangles
enumerator _quadrangles
enumerator quadrangles
enumerator _tetrahedra
enumerator tetrahedra
enumerator _hexahedra
enumerator hexahedra
enumerator _prisms
enumerator prisms
enumerator _pyramids
enumerator pyramids
enumerator _ellArcs
enumerator _circArcs
enumerator _parametrizedArcs
enumerator _polygons
enumerator _parallelograms
enumerator _rectangles
enumerator _squares
enumerator _ellipses
enumerator _disks
enumerator _ellipticSectors
enumerator _circularSectors
enumerator _ellipsoidSideParts
enumerator _sphereSideParts
enumerator _setsofpoints
enumerator _setsofelems
enumerator _trunkSideParts
enumerator _cylinderSideParts
enumerator _coneSideParts
enumerator _polyhedra
enumerator _parallelepipeds
enumerator _cuboids
enumerator _cubes
enumerator _ellipsoids
enumerator _balls
enumerator _trunks
enumerator _revTrunks
enumerator _cylinders
enumerator _revCylinders
enumerator _cones
enumerator _revCones
enumerator _composites
enumerator _loops
enumerator _extrusions
enum ShapeType

geometrical shapes

Values:

enumerator _noShape
enumerator _fromFile
enumerator _point
enumerator _segment
enumerator segment
enumerator _triangle
enumerator triangle
enumerator _quadrangle
enumerator quadrangle
enumerator _tetrahedron
enumerator tetrahedron
enumerator _hexahedron
enumerator hexahedron
enumerator _prism
enumerator prism
enumerator _pyramid
enumerator pyramid
enumerator _ellArc
enumerator _circArc
enumerator _splineArc
enumerator _parametrizedArc
enumerator _parametrizedSurface
enumerator _splineSurface
enumerator _polygon
enumerator _parallelogram
enumerator _rectangle
enumerator _square
enumerator _ellipse
enumerator _disk
enumerator _ellipticSector
enumerator _circularSector
enumerator _ellipsoidSidePart
enumerator _sphereSidePart
enumerator _setofpoints
enumerator _setofelems
enumerator _trunkSidePart
enumerator _cylinderSidePart
enumerator _coneSidePart
enumerator _polyhedron
enumerator _parallelepiped
enumerator _cuboid
enumerator _cube
enumerator _ellipsoid
enumerator _ball
enumerator _trunk
enumerator _revTrunk
enumerator _cylinder
enumerator _revCylinder
enumerator _cone
enumerator _revCone
enumerator _composite
enumerator _loop
enumerator _extrusion
enumerator _ocShape
enum SingularityType

Values:

enumerator _notsingular
enumerator _r_
enumerator _logr
enumerator _loglogr
enum SmartPointerNullType

Values:

enumerator _smPtrNull
enum SobolevType

Sobolev space.

Values:

enumerator _L2
enumerator L2
enumerator _H1
enumerator H1
enumerator _Hdiv
enumerator Hdiv
enumerator _Hcurl
enumerator Hcurl
enumerator _Hrot
enumerator Hrot
enumerator _H2
enumerator H2
enumerator _Hinf
enumerator Hinf
enumerator Linf
enum SorSolverType

SOR solver type.

Values:

enumerator _diagSorS
enumerator _upperSorS
enumerator _lowerSorS
enumerator _matrixVectorSorS
enum SpaceType

space type

Values:

enumerator _feSpace
enumerator _spSpace
enumerator _subSpace
enumerator _prodSpace
enum SpecialMatrix

enumeration for special matrices

Values:

enumerator _zeroMatrix
enumerator zeroMatrix
enumerator _idMatrix
enumerator idMatrix
enumerator _onesMatrix
enumerator onesMatrix
enumerator _hilbertMatrix
enumerator hilbertMatrix
enum SplineBC

spline boundary condition

Values:

enumerator _undefBC
enumerator _naturalBC
enumerator _clampedBC
enumerator _periodicBC
enum SplineParametrization

spline parametrization type

Values:

enumerator _undefParametrization
enumerator _xParametrization
enumerator _uniformParametrization
enumerator _chordalParametrization
enumerator _centripetalParametrization
enum SplineSubtype

subtype of spline

Values:

enumerator _noSplineSubtype
enumerator _SplineInterpolation
enumerator _SplineApproximation
enum SplineType

type of spline

Values:

enumerator _noSpline
enumerator _C2Spline
enumerator _CatmullRomSpline
enumerator _BSpline
enumerator _BezierSpline
enumerator _Nurbs
enum StorageAccessType

short names of storage and access

Values:

enumerator _csRow
enumerator csRow
enumerator _csCol
enumerator csCol
enumerator _csDual
enumerator csDual
enumerator _csSym
enumerator csSym
enumerator _denseRow
enumerator denseRow
enumerator _denseCol
enumerator denseCol
enumerator _denseDual
enumerator denseDual
enumerator _skylineSym
enumerator skylineSym
enumerator _skylineDual
enumerator skylineDual
enum StorageBuildType

storage build type

Values:

enumerator _undefBuild
enumerator _feBuild
enumerator _dgBuild
enumerator _diagBuild
enumerator _ecBuild
enumerator _globalBuild
enumerator _otherBuild
enum StorageType

storage of matrices

Values:

enumerator _noStorage
enumerator _dense
enumerator dense
enumerator _cs
enumerator cs
enumerator _skyline
enumerator skyline
enumerator _coo
enumerator coo
enumerator _hmatrix
enumerator hmatrix
enum StructuredMeshSplitRule

enum to select the mesh generator/algorithm

Values:

enumerator _noSplitRule
enumerator _left
enumerator left
enumerator _right
enumerator right
enumerator _random
enumerator random
enumerator _alternate
enumerator alternate
enumerator _cross
enumerator cross
enum StrucType

structure of matrices and vectors

Values:

enumerator _scalar
enumerator _vector
enumerator _matrix
enumerator _vectorofvector
enumerator _vectorofmatrix
enumerator _matrixofmatrix
enumerator _undefStrucType
enum SupportType

DoF support type.

Values:

enumerator _undefSupport
enumerator _pointSupport
enumerator _faceSupport
enumerator _edgeSupport
enumerator _elementSupport
enum SymbolicOperation

symbolic operations

Values:

enumerator _idop
enumerator _plus
enumerator _minus
enumerator _multiply
enumerator _divide
enumerator _power
enumerator _atan2
enumerator _equal
enumerator _different
enumerator _less
enumerator _lessequal
enumerator _greater
enumerator _greaterequal
enumerator _and
enumerator _or
enumerator _abs
enumerator _sign
enumerator _realPart
enumerator _imagPart
enumerator _sqrt
enumerator _squared
enumerator _sin
enumerator _cos
enumerator _tan
enumerator _asin
enumerator _acos
enumerator _atan
enumerator _sinh
enumerator _cosh
enumerator _tanh
enumerator _asinh
enumerator _acosh
enumerator _atanh
enumerator _exp
enumerator _log
enumerator _log10
enumerator _pow
enumerator _not
enumerator _conj
enumerator _adj
enumerator _tran
enumerator _inv
enum SymType

symmetry of matrices

Values:

enumerator _noSymmetry
enumerator noSymmetry
enumerator _symmetric
enumerator symmetric
enumerator _skewSymmetric
enumerator skewSymmetric
enumerator _selfAdjoint
enumerator selfAdjoint
enumerator _skewAdjoint
enumerator skewAdjoint
enumerator _diagonal
enumerator diagonal
enumerator _undefSymmetry
enumerator undefSymmetry
enum TermType

Values:

enumerator _termUndef
enumerator _termVector
enumerator _termMatrix
enumerator _sutermVector
enumerator _sutermMatrix
enum TestStatus

Enumerated type used to pass back information from a StatusTest.

Values:

enumerator _passed

The solver passed the test.

enumerator _failed

The solver failed the test.

enumerator _undefined

The test has not been evaluated on the solver.

enum Trans_uvw

Values:

enumerator _uvw
enumerator _puv
enumerator _puw
enumerator _pvw
enumerator _su
enumerator _sv
enumerator _sw
enum TransformType

geometrical transformations

Values:

enumerator _noTransform
enumerator _translation
enumerator _rotation2d
enumerator _rotation3d
enumerator _homothety
enumerator _scaling
enumerator _ptReflection
enumerator _reflection2d
enumerator _reflection3d
enumerator _composition
enumerator _explicitLinear
enum UmfPackComputationMode

Enum for computation mode of UmfPack.

Values:

enumerator _A

Computation Ax[]=b.

enumerator _At

Computation A’x=b.

enumerator _Aat

Computation A.’x=b.

enumerator _Pt_L

Computation P’Lx=b.

enumerator _L

Computation Lx=b.

enumerator _Lt_P

Computation L’Px=b.

enumerator _Lat_P

Computation L.’Px=b.

enumerator _Lt

Computation L’x=b.

enumerator _Lat

Computation L.’x=b.

enumerator _U_Qt

Computation UQ’x=b.

enumerator _U

Computation Ux=b.

enumerator _Q_Ut

Computation QU’x=b.

enumerator _Q_Uat

Computation QU.’x=b.

enumerator _Ut

Computation U’x=b.

enumerator _Uat

Computation U.’x=b.

enum UnitaryVector

type of unitary vector

Values:

enumerator _n
enumerator _nx
enumerator _ny
enumerator _nxdotny
enumerator _nxcrossny
enumerator _nycrossnx
enumerator _ncrossn
enumerator _tau
enumerator _taux
enumerator _tauy
enumerator _btau
enumerator _btaux
enumerator _btauy
enum UnknownType

type of unknown

Values:

enumerator _feUnknown
enumerator _spUnknown
enumerator _mixedUnknown
enum ValueType

types of values of matrices and vectors

Values:

enumerator _none
enumerator _integer
enumerator _bool
enumerator _real
enumerator _complex
enumerator _string
enumerator _pt
enumerator _pointer
enumerator _integerVector
enumerator _boolVector
enumerator _realVector
enumerator _complexVector
enumerator _stringVector
enumerator _ptVector
enumerator _integerMatrix
enumerator _boolMatrix
enumerator _realMatrix
enumerator _complexMatrix
enumerator _stringMatrix
enumerator _ptMatrix
enumerator _pointerGeomDomain
enumerator _pointerFunction
enumerator _pointerIntegrationMethod
enumerator _pointerIntegrationMethods
enumerator _pointerParametrization
enumerator _pointerSpline
enumerator _pointerTermVectors
enumerator _pointerTransformation
enumerator _enumComputationType
enumerator _enumCtype
enumerator _enumDimensionType
enumerator _enumEigenComputationalMode
enumerator _enumEigenSolverType
enumerator _enumEigenSortKind
enumerator _enumFESubType
enumerator _enumFEType
enumerator _enumFunctionPart
enumerator _enumGeometricEndShape
enumerator _enumGtype
enumerator _enumIntegrationMethodType
enumerator _enumInterpolationType
enumerator _enumIOFormat
enumerator _enumIptype
enumerator _enumIterativeSolverType
enumerator _enumLanguage
enumerator _enumMeshGenerator
enumerator _enumObjtype
enumerator _enumPartitioning
enumerator _enumPtype
enumerator _enumQuadRule
enumerator _enumReductionMethodType
enumerator _enumRtype
enumerator _enumShapeType
enumerator _enumSobolevType
enumerator _enumSplineBC
enumerator _enumSplineParametrization
enumerator _enumSplineSubtype
enumerator _enumSplineType
enumerator _enumStorageAccessType
enumerator _enumStructuredMeshSplitRule
enumerator _enumStorageType
enumerator _enumSymType
enumerator _enumTransformType
enum VarComparison

Values:

enumerator _index
enumerator _color
enum VariableName

variable symbolic name

Values:

enumerator _varUndef
enumerator _x
enumerator _x1
enumerator _y
enumerator _x2
enumerator _z
enumerator _x3
enumerator _t
enumerator _x4
enumerator _xy
enumerator _yx
enumerator _xx
enumerator _yy
enumerator _r
enumerator _theta
enumerator _phi

Functions

Parameter _nbIterations (0, "nbiterations")
Parameter _residue (0.,"residue")
template<typename K>
inline Matrix<real_t> abs(const Matrix<K> &mat)

abs of a matrix

template<typename K>
inline Matrix<Matrix<real_t>> abs(const Matrix<Matrix<K>> &mat)

abs of a matrix of matrices

template<typename K>
inline SparseMatrix<real_t> abs(const SparseMatrix<K> &mat)

abs of a matrix

inline SuTermVector abs(const SuTermVector &s)
inline SymbolicFunction &abs(const SymbolicFunction &f)
TermVector abs(const TermVector &tv)

extracts modulus

Vector<real_t> abs(const Vector<complex_t> &a)

abs of a complex vector

Vector<real_t> abs(const Vector<real_t> &a)

abs of a real vector

Vector<Vector<real_t>> abs(const Vector<Vector<complex_t>> &a)

abs of a vector of complex vectors

Vector<Vector<real_t>> abs(const Vector<Vector<real_t>> &a)

abs of a vector of real vectors

template<typename T1_iterator, typename R_iterator>
void absTpl(T1_iterator b1, T1_iterator e1, R_iterator Rb)

returns magnitude of vector entries: R[i] = abs(T1[i])

template<typename T, typename K>
void acaFull(const SuBilinearForm &subf, LowRankMatrix<T> &lrm, number_t rmax, real_t eps, const std::vector<number_t> &rowDofs, const std::vector<number_t> &colDofs, const std::vector<Element*> &rowElts, const std::vector<Element*> &colElts, IEcomputationParameters &ieparams, K &vt, const std::list<std::multimap<real_t, IntgMeth>> &intgMaps, const std::vector<KernelOperatorOnUnknowns*> &kopregs, const std::vector<KernelOperatorOnUnknowns*> &kopsings, const std::map<Element*, GeoNumPair> &sidelts_u, const std::map<Element*, GeoNumPair> &sidelts_v, bool noUpdatedNormal, bool same_interpolation, bool sym)

compute Low Rank Matrix using ACA full pivoting method algorithm from the phd thesis of Benoît Lizé

T: type of the matrix coefficient K: type of computation (real or complex)

subf: a single unknown bilinear form defined on a unique domains pair (assumed) vt: to pass as template the scalar type (real or complex) lrm: the LowRankMatrix to build rmax: maximum rank of low rank matrix (if 0, not used) eps: threshold of of low rank matrix: |A-Ar|< eps*|A| rowDofs, colDofs: row and col dofs involved rowElts, colElts: row/col elements supporting row/col dofs ieparams: useful informations on ie computation intgMaps: list of integration methods to be used (built outside) kopregs , kopsings: list of regular and singular kernels when required

Produce a low rank matrix of the form A*B’ with A of size m x k and B of size n x k, k the rank

template<typename T, typename K>
void acaPartial(const SuBilinearForm &subf, LowRankMatrix<T> &lrm, number_t rmax, real_t eps, const std::vector<number_t> &rowDofs, const std::vector<number_t> &colDofs, const std::vector<Element*> &rowElts, const std::vector<Element*> &colElts, const Space *rowSpace, const Space *colSpace, IEcomputationParameters &ieparams, K &vt, const std::list<std::multimap<real_t, IntgMeth>> &intgMaps, const std::vector<KernelOperatorOnUnknowns*> &kopregs, const std::vector<KernelOperatorOnUnknowns*> &kopsings, const std::map<Element*, GeoNumPair> &sidelts_u, const std::map<Element*, GeoNumPair> &sidelts_v, bool noUpdatedNormal, bool same_interpolation, bool sym)

compute Low Rank Matrix using ACA partial pivoting method algorithm from the phd thesis of Benoît Lizé

T: type of the matrix coefficient K: type of computation (real or complex)

subf: a single unknown bilinear form defined on a unique domains pair (assumed) vt: to pass as template the scalar type (real or complex) mat: the LowRankMatrix to build rowDofs, colDofs: row and col dofs involved (start at 0) rowElts, colElts: pointers to row/col element supporting row/col dofs rowSpace, colSpace: row/col spaces (required to get FeDof) ieparams: useful informations on ie computation intgMaps: list of integration methods to be used (built outside) kopregs , kopsings: list of regular and singular kernels when required

Produce a low rank matrix of the form A*I*B

template<typename T, typename K>
void acaPlus(const SuBilinearForm &subf, LowRankMatrix<T> &lrm, number_t rmax, real_t eps, const std::vector<number_t> &rowDofs, const std::vector<number_t> &colDofs, const std::vector<Element*> &rowElts, const std::vector<Element*> &colElts, const Space *rowSpace, const Space *colSpace, IEcomputationParameters &ieparams, K &vt, const std::list<std::multimap<real_t, IntgMeth>> &intgMaps, const std::vector<KernelOperatorOnUnknowns*> &kopregs, const std::vector<KernelOperatorOnUnknowns*> &kopsings, const std::map<Element*, GeoNumPair> &sidelts_u, const std::map<Element*, GeoNumPair> &sidelts_v, bool noUpdatedNormal, bool same_interpolation, bool sym)

compute Low Rank Matrix using ACA plus partial pivoting method algorithm from the phd thesis of Benoît Lizé

T: type of the matrix coefficient K: type of computation (real or complex)

subf: a single unknown bilinear form defined on a unique domains pair (assumed) vt: to pass as template the scalar type (real or complex) mat: the LowRankMatrix to build rowDofs, colDofs: row and col dofs involved (start at 0) rowElts, colElts: pointers to row/col element supporting row/col dofs rowSpace, colSpace: row/col spaces (required to get FeDof) ieparams: useful informations on ie computation intgMaps: list of integration methods to be used (built outside) kopregs , kopsings: list of regular and singular kernels when required

Produce a low rank matrix of the form A*I*B

complex_t acos(const complex_t &z)
inline SuTermVector acos(const SuTermVector &s)
inline SymbolicFunction &acos(const SymbolicFunction &f)
inline TermVector acos(const TermVector &s)
complex_t acosh(const complex_t &z)
real_t acosh(const real_t &r)
inline SuTermVector acosh(const SuTermVector &s)
inline SymbolicFunction &acosh(const SymbolicFunction &f)
inline TermVector acosh(const TermVector &s)
template<typename T>
T adaptiveTrapz(T (*f)(real_t), real_t a, real_t b, real_t eps = 1E-6)
template<typename T>
T adaptiveTrapz(T (*f)(real_t, Parameters&), Parameters &pars, real_t a, real_t b, real_t eps = 1E-6)
TermVector add(const TermVector&, const TermVector&)

create TermVector U+V evaluate dofs on a function: dof_i(f) for any scalar dofs related to scalar unknown u and domain

void addCanonicalAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void addCompositeAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void addCompositeAndComposite(const Geometry &g1, const Geometry &g2, Geometry &g)
void addCompositeAndLoop(const Geometry &g1, const Geometry &g2, Geometry &g)
void addElts(Node<GeomElement> *node, std::set<GeomElement*> &elts, const std::set<number_t> &vns, std::map<string_t, std::pair<GeomElement*, GeomElement*>> &sideIndex, std::set<number_t> vBoundaryIndex, std::map<string_t, GeomElement*> &cdomIndex, dimen_t d)
void addElts(std::set<GeomElement*> &elts, std::set<GeomElement*> &elts1, std::set<GeomElement*> &elts2, const std::set<number_t> &vSideCrack)
void addLoopAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void addLoopAndLoop(const Geometry &g1, const Geometry &g2, Geometry &g)
void addMatrixMatrix(const LargeMatrix<complex_t> &matA, const LargeMatrix<real_t> &matB, LargeMatrix<complex_t> &matC)

Add two different type largeMatrix and store result into the third The two matrices must share the same storage.

The result matrix will point to the same storage after the summation

Parameters:
  • matA – complex matrix

  • matB – real matrix

  • matC – complex matrix which share the same storage.

void addMatrixMatrix(const LargeMatrix<real_t> &matA, const LargeMatrix<complex_t> &matB, LargeMatrix<complex_t> &matC)

Add two different type largeMatrix and store result into the third The two matrices must share the same storage.

The result matrix will point to the same storage after the summation

Parameters:
  • matA – real matrix

  • matB – complex matrix

  • matC – complex matrix which share the same storage.

template<typename T>
void addMatrixMatrix(const LargeMatrix<T> &matA, const LargeMatrix<T> &matB, LargeMatrix<T> &matC)
template<typename T>
LargeMatrix<T> addMatrixMatrix(const LargeMatrix<T> &matA, const LargeMatrix<T> &matB, T s = T(1))

A+s*B.

template<typename S>
LargeMatrix<S> *addMatrixMatrixSkyline(const LargeMatrix<S> &matA, const LargeMatrix<S> &matB)
template<typename T>
LargeMatrix<T> *addMatrixMatrixSkyline(const LargeMatrix<T> &matA, const LargeMatrix<T> &matB)
template<typename T>
void addScaledVector(SuTermVector &x, SuTermVector &v, const T &t)

special operation to accumulate t*v in x, assumed consistent unknown and same size

x+=v*t

template<typename T>
void addScaledVector(TermVector &x, TermVector &v, const T &t)

x+=t*v

void addScaledVector(VectorEntry&, VectorEntry&, const complex_t&)

x+=t*v (t complex)

void addScaledVector(VectorEntry&, VectorEntry&, const real_t&)

x+=t*v (t real)

void addVectorThenAssign(TermVector &tv1, const TermVector &tv2)

function used in solver

operation U+=t

template<typename K, typename KK>
void addVectorThenAssign(Vector<K> &v, const Vector<KK> &b)
void addVectorThenAssign(Vector<real_t> &v, const Vector<complex_t> &cA)

Add then assign complex_t to real_t In fact, this kind of function is forbidden but we implement it here as a trick to overcome the problem of instantiation in Solver.

inline complex_t adj(const complex_t&)
Matrix<complex_t> adj(const Matrix<complex_t> &cB)

adjoint of a complex matrix

adjoint complex matrix

Matrix<real_t> adj(const Matrix<real_t> &rB)

adjoint of a real matrix (transpose)

adjoint (transpose) real matrix

inline real_t adj(const real_t&)
template<typename T>
Value &adj(const T &v)
OperatorOnFunction &adj(Function&)

conjugate and transpose f

OperatorOnKernel &adj(Kernel&)

conjugate and transpose k

OperatorOnFunction &adj(OperatorOnFunction&)

conjugate and transpose opf

OperatorOnKernel &adj(OperatorOnKernel&)

conjugate and transpose opk

SymbolicTermMatrix &adj(SymbolicTermMatrix &S)
template<typename T> inline Function & adj (T(fun)(const Point &, const Point &, Parameters &))
template<typename T> inline Function & adj (T(fun)(const Point &, Parameters &))
template<typename T> inline Function & adj (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))
template<typename T> inline Function & adj (T(fun)(const Vector< Point > &, Parameters &))
Value &adj(Value &v)

set to true or false the temporary conjugate/transpose flag

set to true or false the temporary transpose/conjugate flag

inline complex_t adjoint(const complex_t &c)
template<typename M_it, typename MM_it>
void adjoint(const dimen_t nbr, const dimen_t nbc, M_it it_m1b, MM_it it_m2b)
Matrix<complex_t> adjoint(const Matrix<complex_t> &cB)

adjoint of a complex matrix

adjoint complex matrix

Matrix<real_t> adjoint(const Matrix<real_t> &rB)

adjoint of a real matrix (transpose)

adjoint (transpose) real matrix

template<typename K>
MatrixEigenDense<K> adjoint(const MatrixEigenDense<K> &mat)
inline real_t adjoint(const real_t &r)
template<typename K>
SparseMatrix<K> adjoint(const SparseMatrix<K> &m)
template<typename K>
VectorEigenDense<K> adjointVec(const VectorEigenDense<K> &v)

Adjoint a vector.

Parameters:

v[in] source vector

Returns:

adjointed vector

void adjustScalarEntriesG(VectorEntry *&scalar_entries_p, std::vector<DofComponent> &cdofs, const std::vector<DofComponent> &newcdofs)

adjust the scalar entries to the cdofs numbering newcdofs when cdofs is included in newcdofs, new zeros are introduced (extension) when newcdofs is included in cdofs , coefficients are removed (restriction) else it is in a same time a restriction (removed cdofs) and an extension (omitted cdof) in any case, the coefficient may be permuted and cdofs = newcdofs at the end

tool to adjust VectorEntry

used by SuTermVector and TermVector

inline complex_t airy(const complex_t &z, DiffOpType d = _id)

Airy function: Ai(z) or Ai’(z)

inline complex_t airy(real_t x, DiffOpType d = _id)

Airy function: Ai(x) or Ai’(x)

void airyError(int err, const complex_t &z, const string_t &pr)
inline real_t airyR(const real_t &x)
inline real_t airyRp(const real_t &x)
inline real_t airyRpp(const real_t &x)
void alignTermMatrix(TermMatrix*&, TermMatrix*&, bool keepMatrix = true)

check if same dofs and align Termatrix’s if not the same dofs (internal tool)

check if A and B are defined on the same dofs, if not, align matrix to the largest set of dofs (union of A dofs and B dofs) use the sums A+0*diag(B) and B+0*diag(A) to produced matrices with same dofs if keepMatrix = true, create copy of A, B matrices on the memory stack if keepMatrix = false, A, B matrices are modified if not the same dofs NOTE: adding diagonal 0 induces storage change and may increase significatively the storage size !

template<class MAB_, class MAsB_>
MAsB_ *allocAsB(const MAB_ &matA, const MAB_ &matB, const complex_t sigma)
template<class K_, class MAsB_, class MB_>
MAsB_ *allocAsB(const MAsB_ &matA, const MB_ &matB, const K_ sigma)

Allocation of temporary matrix A - s B.

template<class K_, class MA_>
MA_ *allocAsI(const MA_ &matA, const K_ sigma)

Allocation of temporary matrix A - s Id.

void alternateRule(QuadRule, ShapeType, const string_t&)

display message before choosing an alternate rule

inline real_t angle(const std::vector<real_t> &u, const std::vector<real_t> &v, const std::vector<real_t> &n = std::vector<real_t>())

signed or unsigned angle u to v in [-pi,pi], n unit normal to u-v plane in 2D and 3D; |n|=1 and n^(u^v) = 0 are not checked ! sign of angle is related to n, if n is not given, n=u^v is chosen and thus angle is always >=0 (not signed) if u=0 or v=0 it returns 0

void appliedRhsCorrectorTo(VectorEntry *b, const std::vector<DofComponent> &cdofsb, MatrixEntry *rhsmat, const Constraints *cu, const Constraints *cv, const ReductionMethod &rm)

correct a right hand side b to take into account constraints recall that constraints on unknown are of the form Ue1 + CUr1 = f (C matrix e1 x r1) and constraints on test functions are of the form Ve2 + DVr2 = 0 (D matrix e2 x r2) where ei stands for eliminated indices and ri for reduced indices (e1=e2 and r1=r2 in most cases) in the matrix reduction process, a corrector matrix has been computed, say E matrix m x e1 the correction process consists in first step : b -= E * f_e1 (column combination) second step: b_r2 -= Dt * b_e2 (row combination) third step : b_e2 = f_e1 (deletion in case of real reduction) in simple cases (Dirichlet for instance), C=D=0 so the second step is not required

right hand side constraints correction

b : scalar vector to be corrected cdofsb: component dof of vector b rhsmap: pointer to correction matrix (C) cu, cv: pointer to u/v constraints system

void applyEssentialConditions(VectorEntry &v, const std::vector<DofComponent> &cdofs, const Constraints &cs)

apply essential condition to a VectorEntry (user tool) v : the SCALAR vector to be reduced cdofs: the component dofs of the vector v cs : the constraints to apply once reduced, the constraints reads Ve = f - C*Vr where Ve the ne eliminated components, Vr the nr reduced components and C a ne x nr matrix this function, first build the vector s = f - C*Vr and then set the eliminated components of v to s

apply constraints to a vector

int arConvergedEigenvalues()
std::string arEigInfos()

This function calls the previous ones, gather the informations in a string which is returned.

bool areNeighbors2D(const Point &p, const Point &q, real_t tol)

determines if a prism is valid

determines if 2D points are neighbors

bool areNeighbors3D(const Point &p, const Point &q, real_t tol)

determines if 3D points are neighbors

bool arePointsCoplanar(const Point &p1, const Point &p2, const Point &p3, const Point &p4, real_t tol)

test if 4 points are coplanar

bool arePointsCoplanar(const std::vector<Point> &p, real_t tol)

test if a set of points is coplanar

bool arGetAutoShift()
int arGetIter()
int arGetMaxit()
int arGetMode()
std::string arGetModeStr()
int arGetN()
int arGetNcv()
int arGetNev()
std::complex<double> arGetShift()
double arGetShiftImag()
double arGetTol()
std::string arGetWhich()
void Argyris2dMap(const std::vector<real_t> &rw, std::vector<real_t> &w, real_t j11, real_t j12, real_t j21, real_t j22, real_t t11, real_t t12, real_t t13, real_t t21, real_t t22, real_t t23, real_t t31, real_t t32, real_t t33, real_t a1, real_t a2, real_t a3, real_t b1, real_t b2, real_t b3, real_t c1, real_t c2, real_t c3, real_t d1, real_t d2, real_t d3, real_t n1x, real_t n1y, real_t n2x, real_t n2y, real_t n3x, real_t n3y)
std::string arInterfaceObj()
std::string arKindOfFactorization()
std::string arpackObj()
EigenElements arpackSolve(TermMatrix *A, TermMatrix *B, const std::vector<Parameter> &ps)

Main entry point for Arpack eigenvalue solver.

bool arParametersDefined()
template void array2Vector (const complex_t *source, std::vector< complex_t > &vec)
template<typename K_>
void array2Vector(const K_ *source, std::vector<K_> &vec)

Convert array of K_ to vector.

template void array2Vector (const real_t *source, std::vector< real_t > &vec)
complex_t ascendingSeriesOfE1(const complex_t &z)

ascending series in E1 formula (used for ‘small’ z)

complex_t asin(const complex_t &z)
inline SuTermVector asin(const SuTermVector &s)
inline SymbolicFunction &asin(const SymbolicFunction &f)
inline TermVector asin(const TermVector &s)
complex_t asinh(const complex_t &z)
real_t asinh(const real_t &r)
inline SuTermVector asinh(const SuTermVector &s)
inline SymbolicFunction &asinh(const SymbolicFunction &f)
inline TermVector asinh(const TermVector &s)
template<typename T, typename K>
void assemblyDG(LargeMatrix<T> &mat, std::vector<Matrix<K>> &matels, const K &coef, bool onlyM11, const std::vector<number_t> &adrs11, const std::vector<number_t> &adrs12, const std::vector<number_t> &adrs21, const std::vector<number_t> &adrs22, bool sym, const std::vector<number_t> &dofNum_u1, const std::vector<number_t> &dofNum_v1, number_t ncu1, number_t ncv1, const std::vector<number_t> &dofNum_u2, const std::vector<number_t> &dofNum_v2, number_t ncu2, number_t ncv2)
inline void assemblyMat(complex_t &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMat(complex_t &mat, Matrix<real_t>::iterator itM, number_t nbu)
template<typename K, typename IteratorM>
inline void assemblyMat(K &mat, IteratorM itM, number_t nbu)
inline void assemblyMat(Matrix<complex_t> &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMat(Matrix<complex_t> &mat, Matrix<real_t>::iterator itM, number_t nbu)
template<typename K, typename IteratorM>
inline void assemblyMat(Matrix<K> &mat, IteratorM itM, number_t nbu)
inline void assemblyMat(Matrix<real_t> &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMat(Matrix<real_t> &mat, Matrix<real_t>::iterator itM, number_t nbu)
inline void assemblyMat(real_t &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMat(real_t &mat, Matrix<real_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(complex_t &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(complex_t &mat, Matrix<real_t>::iterator itM, number_t nbu)
template<typename K, typename IteratorM>
inline void assemblyMatNoCritical(K &mat, IteratorM itM, number_t nbu)
inline void assemblyMatNoCritical(Matrix<complex_t> &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(Matrix<complex_t> &mat, Matrix<real_t>::iterator itM, number_t nbu)
template<typename K, typename IteratorM>
inline void assemblyMatNoCritical(Matrix<K> &mat, IteratorM itM, number_t nbu)
inline void assemblyMatNoCritical(Matrix<real_t> &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(Matrix<real_t> &mat, Matrix<real_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(real_t &mat, Matrix<complex_t>::iterator itM, number_t nbu)
inline void assemblyMatNoCritical(real_t &mat, Matrix<real_t>::iterator itM, number_t nbu)
inline void assign(complex_t &x, const complex_t &y)
inline void assign(complex_t &x, const real_t &y)
inline void assign(real_t &x, const complex_t &y)
inline void assign(real_t &x, const real_t &y)

Assigns y to x for all combinations of a priori unknown types of x and y thus preventing from an invalid cast.

template<>
inline void assignVectorTo(complex_t &t, const complex_t &v)
template<>
inline void assignVectorTo(complex_t &t, const real_t &v)
template<>
inline void assignVectorTo(real_t &t, const real_t &v)
template<typename T, typename K>
inline void assignVectorTo(T &t, const K &v)

some fake functions to override template compilation problem of OperatorOnFunction::eval

template<>
inline void assignVectorTo(Vector<complex_t> &t, const Vector<complex_t> &v)
template<>
inline void assignVectorTo(Vector<complex_t> &t, const Vector<real_t> &v)
template<>
inline void assignVectorTo(Vector<real_t> &t, const Vector<real_t> &v)
string_t asString(GeoOperation op)

give a string representation of GeoOperation

string representation of GeoOperation

complex_t atan(const complex_t &z)
inline SuTermVector atan(const SuTermVector &s)
inline SymbolicFunction &atan(const SymbolicFunction &f)
inline TermVector atan(const TermVector &s)
inline SymbolicFunction &atan2(const real_t &r, const SymbolicFunction &f)
inline SymbolicFunction &atan2(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &atan2(const SymbolicFunction &f1, const SymbolicFunction &f2)
complex_t atanh(const complex_t &z)
real_t atanh(const real_t &r)
inline SuTermVector atanh(const SuTermVector &s)
inline SymbolicFunction &atanh(const SymbolicFunction &f)
inline TermVector atanh(const TermVector &s)
void badDegreeRule(int degree, const string_t &name, ShapeType sh)

error message

void badNodeRule(int n_nodes, const string_t &name, ShapeType sh)

error message

string_t basename(const string_t &f)

return basename of a file name using last slash and last point as delimiters

string_t basenameWithExtension(const string_t &f)

return basename of a file name using last slash as delimiter

inline complex_t besselI(const complex_t &z, real_t N)

Modified Bessel function of the first kind and order N: I_N(z) (complex case)

template<>
inline real_t besselI(real_t x, real_t N)

Modified Bessel function of the first kind and real order N: I_N(x)

template<class T_>
real_t besselI(real_t x, T_ N)
inline complex_t besselI0(const complex_t &z)

Modified Bessel function of the first kind and order 0 : I_0(z) (complex case)

real_t besselI0(real_t x)

Modified Bessel function of the first kind and order 0 : I_0(x)

std::vector<real_t> besselI0N(real_t x, number_t n)

Modified Bessel functions of the first kind and order 0..N.

inline complex_t besselI1(const complex_t &z)

Modified Bessel function of the first kind and order 1 : I_1(z) (complex case)

real_t besselI1(real_t x)

Modified Bessel function of the first kind and order 1 : I_1(x)

inline complex_t besselJ(const complex_t &z, real_t N)

Bessel function of the first kind and order N: J_N(z) (complex case)

template<>
inline real_t besselJ(real_t x, real_t N)

Bessel function of the first kind and real order N: J_N(x)

template<class T_>
real_t besselJ(real_t x, T_ N)
inline complex_t besselJ0(const complex_t &z)

Bessel function of the first kind and order 0 : J_0(z) (complex case)

real_t besselJ0(real_t x)

Bessel function of the first kind and order 0 : J_0(x)

std::vector<real_t> besselJ0N(real_t x, number_t N)

Bessel functions of the first kind and order 0..N.

inline complex_t besselJ1(const complex_t &z)

Bessel function of the first kind and order 1 : J_1(z) (complex case)

real_t besselJ1(real_t x)

Bessel function of the first kind and order 1 : J_1(x)

void besselJY01Test(std::ostream &out)
inline complex_t besselK(const complex_t &z, real_t N)

Modified Bessel function of the second kind and order N: K_N(z) (complex case)

template<>
inline real_t besselK(real_t x, real_t N)

Modified Bessel function of the second kind and real order N: K_N(x)

template<class T_>
real_t besselK(real_t x, T_ N)
inline complex_t besselK0(const complex_t &z)

Modified Bessel function of the second kind and order 0 : K_0(z) (complex case)

real_t besselK0(real_t x)

Modified Bessel function of the second kind and order 0 : K_0(x)

std::vector<real_t> besselK0N(real_t x, number_t n)

Modified Bessel functions of the second kind and order 0..N.

inline complex_t besselK1(const complex_t &z)

Modified Bessel function of the second kind and order 1 : K_1(z) (complex case)

real_t besselK1(real_t x)

Modified Bessel function of the second kind and order 1 : K_1(x)

inline complex_t besselY(const complex_t &z, real_t N)

Bessel function of the second kind and order N: Y_N(z) (complex case)

template<>
inline real_t besselY(real_t x, real_t N)

Bessel function of the second kind and real order N: Y_N(x)

template<class T_>
real_t besselY(real_t x, T_ N)
inline complex_t besselY0(const complex_t &z)

Bessel function of the second kind and order 0 : Y_0(z) (complex case)

real_t besselY0(real_t x)

Bessel function of the second kind and order 0 : Y_0(x)

std::vector<real_t> besselY0N(real_t x, number_t N)

Bessel functions of the second kind and order 0..N.

real_t besselY0withoutSingularity(real_t x)
inline complex_t besselY1(const complex_t &z)

Bessel function of the second kind and order 0 : Y_1(z) (complex case)

real_t besselY1(real_t x)

Bessel function of the second kind and order 0 : Y_1(x)

real_t besselY1withoutSingularity(real_t x)
number_t binomialCoefficient(int n, int k)

ompute binomial coefficient C_n^k = n! / ( k! * (n-k)! )

compute binomial coefficient C_n^k = = n! / ( k! * (n-k)! )

void binomialCoefficients(std::vector<number_t> &row)

compute n-th row in Pascal’s triangle of binomial coefficients

compute n-th row of Pascal binomial coefficients where n = row.size()-1

  • k = 0 1 2 3 4 5

  • n = 1 | 1 1

  • n = 2 | 1 2 1 C^n_k = C^{n-1}_{k-1} + C^{n-1}_k , 0 <= k <= n

  • n = 3 | 1 3 3 1

  • n = 4 | 1 4 6 4 1

  • n = 5 | 1 5 10 10 5 1 - n = ………………….

void binomialCoefficientsScaled(std::vector<real_t> &row)

ompute n-th row in Pascal’s triangle of binomial coefficients scaled by 1/(n-1)!

compute n-th row of Pascal binomial coefficients scaled by (n-1)! where n = row.size()-1

inline complex_t biry(real_t x, DiffOpType d = _id)

Airy function: Bi(x) or Bi’(x)

inline number_t bitReverse(number_t x, int log2n)
void blanks(std::string&, int_t n)

add to or remove from end of string n blanks(keep always first char)

template<typename I>
bool blockAdmissible(ClusterNode<I>*, ClusterNode<I>*, HMAdmissibilityRule, real_t eta = 1.)

admissibility rule for a cluster node product

string_t booltoWord(bool)

convert bool to string true or false

inline Geometry &boundary(const Geometry &g)

definition of a geometry by restriction to boundary

BoundingBox boundingBox(const Element &elt)
BoundingBox boundingBox(const FeDof &fed)
BoundingBox boundingBox(const Point &p)
template<typename T>
BoundingBox boundingBox(const T&)
std::map<const Unknown*, Constraints*> buildConstraints(const EssentialConditions &ecs)

build Constraints set from EssentialConditions (list of essential conditions)

build Constraints from EssentialConditions

  • create Constraints object for each essential condition

  • merge constraints involving same unknown

  • if there exist a constraint coupling different unknowns merge all Constraints object in one Constraints object the output is a map of Constraints pointer indexed by unknown pointer; only one Constraints pointer in case of coupling conditions

void buildInterpolationData(InterpolationType interpType, number_t dim, FEType &typ, FESubType &sub, number_t &num, SobolevType &spa)

build interpolation data from InterpolationType

const Function *buildMap(const GeomDomain&, const GeomDomain&)

build map from dom1 to dom2 in simple cases

void buildNameAndSuffixTransformParams(std::vector<Parameter> &ps, string_t &name, string_t &suffix)
void buildParamSaveToFile(const Parameter &p, IOFormat &iof, bool &aFilePerDomain)

save mesh to file in format _msh, _melina ,_vtk or _vtu when withDomains is true, domain informations are also exported

input/output function

void buildParamSaveToFile(const Parameter &p, IOFormat &iof, string_t &dataName, bool &aFilePerDomain)

input/output function

void buildParamSaveToFile(const Parameter &p, StorageType &st, bool &encodingFileName)
void buildSolverParams(const std::vector<Parameter> &ps, real_t &tol, number_t &maxIt, real_t &omega, number_t &krylovDim, number_t &verboseLevel, string_t &name, IterativeSolverType &solverType)

main routine to manage parameters of solver constructors

MatrixStorage *buildStorage(const Space &rs, const Space &cs, StorageType st, AccessType at, StorageBuildType bt)

build a storage from a pair of Space

MatrixStorage *buildStorage(StorageType st, AccessType at, StorageBuildType bt, number_t dimr, number_t dimc, const std::vector<std::set<number_t>> &indices, const string_t &id = "")

build a storage from type, dimension and column indices (vector of sets)

MatrixStorage *buildStorage(StorageType st, AccessType at, StorageBuildType bt, number_t dimr, number_t dimc, const std::vector<std::vector<number_t>> &indices, const string_t &id = "")

build a storage from type, dimension and column indices (vector of vectors)

MatrixStorage *buildStorage(StorageType st, AccessType at, StorageBuildType bt, number_t dimr, number_t dimc, const string_t &id = "")

build a storage from type and dimension, no allocation of pointers (void matrix)

template<class T>
inline RefToValue<T> ByRef(T &t)

RefToValue creator.

real_t byteTo(number_t mem, MemoryUnit mu = _megabyte)

convert from byte to xxxbyte

string_t capitalize(const string_t &s)

convert “abCdeF” to “AbCdeF”

returns string_t with initial converted to uppercase

std::vector<complex_t> cardan(complex_t a, complex_t b, complex_t c, complex_t d)

computes roots of degree 3 polynomial (complex Cardan method)

std::vector<complex_t> cardan(real_t a, real_t b, real_t c, real_t d)

computes roots of degree 3 polynomial (real Cardan method)

complex_t cbrt(const complex_t &z)
real_t cbrt(const real_t &r)
template<typename Scalar>
complex_t cdiv(Scalar xr, Scalar xi, Scalar yr, Scalar yi)
void chebyshevPolynomials(real_t, std::vector<real_t>&)

Chebyshev polynomials (of the first kind) on [-1, 1] up to order n T_0(x) = 1, T_1(x) = x, T_n(x) = 2 x T_{n-1}(x) - T_{n-1}(x) , n > 1.

void checkBC(BcType &bcP, BcType &bcM, complex_t &thetaP, complex_t &thetaM)
template<class M_p>
void checkCond(M_p fact_p, string_t matName)
bool checkConsistancy(const OperatorOnUnknown&, AlgebraicOperator, const OperatorOnUnknown&)

check opu aop opv consistancy

void checkTermVectorInOperator(const TermVector &tv, const string_t &op)
void childNodes(Node<GeomElement> *curnode, const MeshDomain *momega, GeomElement *gelt, std::set<GeomElement*> &pickedElts)

test intersection of E1 with E2 with a tolerance (default is theEpsilon)

internal tool

void clear(Term &t1)

user aliases to term(s) cleaning

void clear(Term &t1, Term &t2)
void clear(Term &t1, Term &t2, Term &t3)
void clear(Term &t1, Term &t2, Term &t3, Term &t4)
void clear(Term &t1, Term &t2, Term &t3, Term &t4, Term &t5)
void clearProjectors(const Space &sp)

clear Projectors depending on a space (implemented in Projector.cpp)

void clearStorages(const Space &sp)

clear Storages depending on a space (implemented in Term.cpp)

void clearTerms(const Space &sp)

clear Terms depending on a space (implemented in Term.cpp)

void clearUnknowns(const Space &sp)

clear Unknowns depending on a space (implemented in Unknown.cpp)

void *cloneFunction(const void *p)
void *cloneGeomDomain(const void *p)
void *cloneIntegrationMethod(const void *p)
void *cloneIntegrationMethods(const void *p)
void *cloneParametrization(const void *p)
void *cloneSpline(const void *p)
void *cloneTermVectors(const void *p)
void *cloneTransformation(const void *p)
inline void closedCrack(Geometry &g1)

user shortcut to crack one geometry

inline void closedCrack(Geometry &g1, Geometry &g2)

user shortcut to crack 2 geometries

inline void closedCrack(Geometry &g1, Geometry &g2, Geometry &g3)

user shortcut to crack 3 geometries

inline void closedCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4)

user shortcut to crack 4 geometries

inline void closedCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5)

user shortcut to crack 5 geometries

inline void closedCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6)

user shortcut to crack 6 geometries

inline void closedCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6, Geometry &g7)

user shortcut to crack 7 geometries

inline void closeFile(FILE *data)
inline void closeFile(std::ifstream &data)
inline const complex_t &cmplx(const complex_t &x)
Matrix<complex_t> cmplx(const Matrix<real_t> &rB)

cast a real matrix to a complex matrix

template<typename K>
MatrixEigenDense<complex_t> cmplx(const MatrixEigenDense<K> &mat)
complex_t cmplx(const Parameter&)

cast to complex_t

inline complex_t cmplx(const real_t &x)

various useful definition to insure consistancy with other classes

Vector<complex_t> cmplx(const Vector<complex_t> &a)

cast a complex vector to a complex vector

Vector<complex_t> cmplx(const Vector<real_t> &a)

cast a real vector to a complex vector

Vector<Vector<complex_t>> cmplx(const Vector<Vector<real_t>> &a)

cast a real vector to a complex vector

cast a real vector vector to a complex vector vector

string_t coefAsString(bool isFirst, const complex_t &a)

string form of a complex coefficient in a linear combination

bool colAmd(number_t nbr, number_t nbc, const std::vector<number_t> &rowIndices, const std::vector<number_t> &colPointer, std::vector<number_t> &colPerm)
template<typename T>
LowRankMatrix<T> combine(const LowRankMatrix<T> &L1, const T &s1, const LowRankMatrix<T> &L2, const T &s2, real_t eps = 0)
template<typename K>
PolynomialT<K> combine(const PolynomialBasisT<K> &ps, const std::vector<K> &a)

return combination a1*p1+a2*p2+…

template<typename K>
std::vector<PolynomialT<K>> combine(const PolynomialsBasisT<K> &ps, const std::vector<K> &a)

return combination a1*p1+a2*p2+…

template<typename T, typename K>
void combine(std::vector<std::pair<number_t, K>> &u, const std::map<number_t, T> &v, K a)
std::pair<Point, Point> commonPerpendicularOfStraightLines(const Point &Am, const Point &Ap, const Point &Bm, const Point &Bp)

common perpendicular of the straight lines defined respectively by the pair of points Am, Ap and Bm, Bp returns a pair of points defining the perpendicular the first point is on (AmAp), the second on (BmBp)

common perpendicular of the straight lines

int_t compare(const Point &p, const real_t &s, int c)

comparaison function used by KdTree

bool compareGELTs(const GELT &a, const GELT &b)

Comparison function of two Gmsh elements according to type and domain numbers: a < b if its type number is smaller, then if its domain number is smaller.

bool compareMELTs(const MELT &a, const MELT &b)
bool compareSpaceUsingSize(const Space *sp1, const Space *sp2)

compare spaces using their sizes

inline bool compColSize(SuTermMatrix *sut1, SuTermMatrix *sut2)

compare SuTermMatrix regarding col sizes

TermVector complex(const TermVector &tv)

converts a real TermVector into a complex one

complex_t complex_const_fun(const Point &P, Parameters &pa)
Matrix<complex_t> complex_matrix_const_fun(const Point &P, Parameters &pa)
Vector<complex_t> complex_vector_const_fun(const Point &P, Parameters &pa)
inline complex_t complexRorC(const complex_t &c, const Vector<complex_t> &vc)
inline complex_t complexToRorC(const complex_t &c, const complex_t &cc)
inline complex_t complexToRorC(const complex_t &c, const Matrix<complex_t> &mc)
inline real_t complexToRorC(const complex_t &c, const Matrix<real_t> &mr)
inline real_t complexToRorC(const complex_t &c, const real_t &r)
inline real_t complexToRorC(const complex_t &c, const Vector<real_t> &vr)
template<class T>
inline T complexToT(const complex_t &c)

forced cast complex to any

template<>
inline real_t complexToT(const complex_t &c)
template<>
inline Matrix<real_t> complexToT(const complex_t &c)
template<>
inline Matrix<complex_t> complexToT(const complex_t &c)
template<class T>
inline T complexToT(const Matrix<complex_t> &c)

special forced cast complex

template<>
inline Matrix<real_t> complexToT(const Matrix<complex_t> &c)
template<class T>
inline T complexToT(const Vector<complex_t> &c)

forced cast complex to any

template<>
inline Vector<real_t> complexToT(const Vector<complex_t> &c)
void compNext(int n, int k, int a[], bool *more, int *h, int *t)

computes the compositions of the integer N into K parts

inline bool compNnzSutermMatrix(SuTermMatrix *sut1, SuTermMatrix *sut2)

compare SuTermMatrix regarding their numbers of non zero

Transformation composeCanonicalAndCanonical(const Transformation &t1, const Transformation &t2)

composition of canonical transformations

Transformation composeCanonicalAndComposite(const Transformation &t1, const Transformation &t2)

composition of a canonical transformation and a composite transformation

Transformation composeCompositeAndCanonical(const Transformation &t1, const Transformation &t2)

composition of a composite transformation and a canonical transformation

Transformation composeCompositeAndComposite(const Transformation &t1, const Transformation &t2)

composition of composite transformations

inline bool compRowSize(SuTermMatrix *sut1, SuTermMatrix *sut2)

compare SuTermMatrix regarding row sizes

void compute(Term &t)

user aliases to term(s) computation

void compute(Term &t1, Term &t2)
void compute(Term &t1, Term &t2, Term &t3)
void compute(Term &t1, Term &t2, Term &t3, Term &t4)
void compute(Term &t1, Term &t2, Term &t3, Term &t4, Term &t5)
template<typename T, typename K>
void computeBilAsLin(const std::pair<BasicLinearForm*, complex_t> &lf, Vector<T> &val, K &vt)

Computation of a linear form defined from a bilinear form and a TermVector to apply to l(v) = a(U,v) or l(u)=a(u,V) where U,V are some term vectors.

example: intg_gamma grad(U)|grad(v) dy U a termvector int_sigma intg_gamma (U*G)*v U a termvector

The algorithm is the most lazy one:

  • go to the TermMatrix machinery to compute matrix A from a(u,v)

  • do the product A*U or V*A

  • add the product result to vector val

Parameters:
  • lf – a pair of BasicLinearForm and coefficient

  • val – vector of values to fill in

  • vt – type of value type

void computeGeometricalQuantities(const Point &S1, const Point &S2, const Point &S3, const Point &normalT, const Point &X, Vector<Point> &I, real_t &h, bool I3)

Internal functions

template<typename T, typename K, typename I>
void computeHMatrix(const SuBilinearForm &subf, HMatrix<T, I> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)

IE computation of a scalar SuBiinearForm on a == unique domain == using HMatrix method type T: type of the matrix coefficient K: type of computation (real or complex) I: type of the tree node index of the HMatrix.

subf: a single unknown bilinear form defined on a unique domains pair (assumed) mat: the HMatrix, its structure is assumed to be up to date space_u_p, space_v_p: pointers to real u-space and real v-space vt: to pass as template the scalar type (real or complex)

template<typename T, typename K>
void computeMatel(LargeMatrix<T> &mat, std::vector<number_t> &adrs, bool sym, const Quadrature *quad, bool upmapdata, GeomMapData *mapdata, Vector<real_t> &nv, K coef, bool invJacobian, bool normalRequired, AlgebraicOperator aop, bool uonE1, bool vonE1, RefElement *relt_u, GeomElement *gelt_u, number_t side_u, MeshElement *melt_u, bool upmapdata_u, GeomMapData *mapdata_u, number_t nbc_u, number_t nbt_u, const OperatorOnUnknown &op_u, number_t ord_opu, bool mapsh_u, FEMapType femt_u, bool rotsh_u, bool changeSign_u, Vector<real_t> *sign_u, dimen_t dimfun_u, std::vector<ShapeValues> &shv_us, std::vector<number_t> &dofNum_u, RefElement *relt_v, GeomElement *gelt_v, number_t side_v, MeshElement *melt_v, bool upmapdata_v, GeomMapData *mapdata_v, number_t nbc_v, number_t nbt_v, const OperatorOnUnknown &op_v, number_t ord_opv, bool mapsh_v, FEMapType femt_v, bool rotsh_v, bool changeSign_v, Vector<real_t> *sign_v, dimen_t dimfun_v, std::vector<ShapeValues> &shv_vs, std::vector<number_t> &dofNum_v, const std::vector<number_t> &perm = std::vector<number_t>())
std::vector<Vector<real_t>> computeNormalsAt(const GeomDomain &dom, const std::vector<Point> &xs, ProjectorType pt = _noProjectorType, OrientationType orient = _undefOrientationType, const GeomDomain *gp = nullptr)

compute normals at some points of a GeomDomain

template<typename T, typename K>
void computePartialIE(const SuBilinearForm &subf, LargeMatrix<T> &mat, K &vt, const std::vector<number_t> &rowDofs, const std::vector<number_t> &colDofs, const std::vector<Element*> &rowElts, const std::vector<Element*> &colElts, IEcomputationParameters &ieparams, const std::list<std::multimap<real_t, IntgMeth>> &intgMaps, const std::vector<KernelOperatorOnUnknowns*> &kopregs, const std::vector<KernelOperatorOnUnknowns*> &kopsings, const std::map<Element*, GeoNumPair> &sidelts_u, const std::map<Element*, GeoNumPair> &sidelts_v, bool noUpdatedNormal, bool same_interpolation, bool sym)

partial IE computation of a scalar SuBilinearForm on a list of elements subf: a single unknown bilinear form defined on a unique domains pair (assumed) mat: matrix to build, with size rowDofs.size x colDofs.size rowDofs, colDofs: vector of row/col dofs involved rowElts, colElts: vector of row/col elements involved vt: to pass as template the scalar type (real or complex) ieparams: some precomputed IE information intgMaps: list of integration methods to be used (built outside) kopregs , kopsings: list of regular and singular kernels when required

NOTE: precomputation of normals, quadrature points, shape values, … has to be done before

template<typename K>
void computeQuadratureIE(const Element *elt_S, const Element *elt_T, const KernelOperatorOnUnknowns &kuv, Quadrature *quadx, Quadrature *quady, Matrix<K> &res, IEcomputationParameters &ieparams, Vector<K> &val_opu, Vector<K> &val_opv, Vector<K> &val_opk)

computation of elementary matrix of IE term using double quadrature (quadx, quady) intg elt_S intg elt_V opu(y) opk(x,y) opv(x) dy dx assuming precomputation of geometrical stuff (jacobian,diffelt, normals, …), shape values and mapping of quadrature points onto physical space

the template parameter K is always a scalar type (real_t or complex_t)

elt_S: element supporting u(y) elt_T: element supporting v(x) kuv: operator on kernel and unknowns opu(y) opk(x,y) opv(x) quadx: quadrature in x variable (i.e on elt_T) quady: quadrature in y variable (i.e on elt_S) ieparams: computation parameters val_opu, val_opv, val_opk: working vectors to store value of opu, opv and opk res: matrix result in SCALAR representation even the problem is a vector problem ! the calling function has to do the conversion from SCALAR MATRIX to MATRIX of MATRIX in case of vector problem

Assume here that either Kernel is Matrix or ShapeFunctions are vectors

template<typename T, typename K>
void computeRowColIE(const SuBilinearForm &subf, bool row, number_t rc, T *rowcol, number_t n, const std::vector<number_t> &crDofs, const std::vector<Element*> &crElts, const Space *rcSpace, IEcomputationParameters &ieparams, K &vt, const std::list<std::multimap<real_t, IntgMeth>> &intgMaps, const std::vector<KernelOperatorOnUnknowns*> &kopregs, const std::vector<KernelOperatorOnUnknowns*> &kopsings, const std::map<Element*, GeoNumPair> &sidelts_u, const std::map<Element*, GeoNumPair> &sidelts_v, bool noUpdatedNormal, bool same_interpolation, bool sym)

compute a row or a col of integral equation subf: bilinear form defining ie to compute row: true if a row computation, false if a col computation n: length of row/col rowcol: pointer to the first element of row or col, has to be correctly sized before rc: row/col index (>=1) crDofs: col/ row dof indices crElts: list of elements supporting col/row dofs rcSpace: space of row/col dof IEcomputationParameters: computation ie parameters intgMaps: list of integration methods to be used (built outside) kopregs , kopsings: list of regular and singular kernels when required

NOTE:for the moment this routine uses the general computePartialIE that involves LargeMatrix

template<typename K>
void computeSPfunByQuadrature(const std::vector<Vector<K>> &val, const SpectralBasis &spbasis, const std::vector<Point> &phyPts, const Quadrature &quad, std::vector<Vector<K>> &phi_w, bool isconj, const Function *mapto = nullptr)

utility for computeSP: compute sum_q[pq*phi_m(Xq)*wj(xq)] from wj(xq) GENERAL CASE (xq, Xq) : quadrature points in reference/physical space (phi_m) : basis functions from spectral basis (pq) : quadrature weights (wj(xq)) : FE shape functions at quadrature points (already computed)

val: wj(xq)) may be d-vector shape functions: val(q) = w11(xq),w12(xq), …, w1d(xq), w21(xq), … spbasis: spectral basis (function) phyPts: physical points quad: quadrature object mapto: if non zero, pointer to the map: domain -> reference domain of spectral basis

phi_w: computed values sum_q[pq*phi_m(Xq)*wj(xq)] when isconj=false sum_q[pq*conj(phi_m(Xq))*wj(xq)] when isconj=true

template<typename K>
void computeSPintByQuadrature(const std::vector<Vector<K>> &val, const SpectralBasis &spbasis, const std::vector<Point> &phyPts, const Quadrature &quad, const Element &elt, const Space *space_u, const GeomDomain *dom, const std::vector<ShapeValues> &shv, std::vector<Vector<K>> &phi_w, bool isconj, const Function *mapto = nullptr)

utility for computeSP, compute sum_q[pq*phi_m(Xq) op wj(xq)] from wj(xq) (INTERPOLATED CASE, interpolated spectral basis function) (xq, Xq) : quadrature points in reference/physical space (phi_m) : basis functions from spectral basis (pq) : quadrature weights (wj(xq)) : FE shape functions at quadrature points (already computed) op: * or |, automatically detected regarding structure of SpectralBasis

phi_m(Xq) is computed by interpolation: sum_s phi_ms tau_s(xq) where phi_ms are components of phi_m in current element two cases occur:

  • same interpolation (common case) -> tau_s = wj

  • different interpolation -> computation of tau_s

val: wj(xq)) may be d-vector shape functions: val(q) = w11(xq),w12(xq), …, w1d(xq), w21(xq), … spbasis: spectral basis (vector) phyPts: physical points quad: quadrature object mapto: if non zero, pointer to the map: domain -> reference domain of spectral basis elt: current element space_u: space dom: current domain shv: shapevalues

phi_w: computed values Vjm=sum_q[pq*phi_m(Xq) op wj(xq)] ( say phi_w(j)=[Vj1,Vj2, …, Vjn])

template<typename K>
void computeSPOperator(const OperatorOnUnknown &op, const SpectralBasis *spbasis, const Point &x, ValueType vtphi, number_t nbfun, dimen_t dimfun, Vector<K> &val, const Vector<real_t> *np = nullptr)

compute values of operator on spectral unknown at quadrature point, say op(phi_n)(x) with (phi) i=1,n the spectral functions and x a quadrature point in physical space

op: operator on unknown basis: spectral basis associated to unknown x: point where operator is evaluated (in physical space of spectral functions) vtphi: value type of basis function nbfun: number of function dimfun: dimension of function val: computed values as a vector of vectors: val = (op(phi_n)(x)) i=1,n phyPoints: quadrature points in physical space

NOTE: operator with derivatives are only supported with ANALYTICAL spectral functions in Function defining them, user has to provide derivatives using the parameter “derivative” and its value Number(_dx), Number(_dxx), ….

operator with derivatives are not yet handled for VECTOR spectral functions

Matrix<complex_t> conj(const Matrix<complex_t> &cB)

conjugate a complex matrix

conjugate complex matrix

Matrix<real_t> conj(const Matrix<real_t> &cB)

conjugate a real matrix (do nothing)

conjugate real matrix (compatibility)

template<typename K>
MatrixEigenDense<K> conj(const MatrixEigenDense<K> &mat)
MatrixEntry conj(const MatrixEntry &me)

return the conjugate of a matrix entry

inline const Point &conj(const Point &p)
inline real_t conj(const real_t&)
template<typename T>
inline std::vector<T> conj(const std::vector<T> &v)
inline SymbolicFunction &conj(const SymbolicFunction &f)
template<typename T>
Value &conj(const T &v)
TermMatrix conj(const TermMatrix &tm)
TermVector conj(const TermVector &tv)

conjugate TermVector

template<typename K>
Vector<K> conj(const Vector<K> &a)

conjugate a Vector<K>

template<typename K>
VectorEigenDense<K> conj(const VectorEigenDense<K> &v)

Conjugate a vector.

Parameters:

v[in] source vector

Returns:

conjugated vector

OperatorOnFunction &conj(Function&)

conjugate f

OperatorOnKernel &conj(Kernel&)

conjugate k

OperatorOnFunction &conj(OperatorOnFunction&)

conjugate opf

OperatorOnKernel &conj(OperatorOnKernel&)

conjugate opk

SymbolicTermMatrix &conj(SymbolicTermMatrix &S)
template<typename T> inline Function & conj (T(fun)(const Point &, const Point &, Parameters &))
template<typename T> inline Function & conj (T(fun)(const Point &, Parameters &))
template<typename T> inline Function & conj (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))
template<typename T> inline Function & conj (T(fun)(const Vector< Point > &, Parameters &))
inline Unknown &conj(TestFunction &v)
Unknown &conj(Unknown&)

set to true or false the temporary conjugate flag

Value &conj(Value &v)

set to true or false the temporary conjugate flag

template<typename T1_iterator, typename R_iterator>
void conjTpl(T1_iterator b1, T1_iterator e1, R_iterator Rb)

returns complex conjugate of vector entries: R[i] = conj(T1[i])

void constructorError()

message sent when in trouble in object constructor

complex_t continuedFractionOfE1(const complex_t &z)

continued fraction in E1 formula (used for ‘large’ z)

int convertmeshfile(const string_t &inputfilename, string_t &outputfilename)
std::vector<Point> convexHull2D(std::vector<Point> P)

convex hull of 2D points

convex hull in 2D

real_t coords(const Element &elt, dimen_t i)
real_t coords(const FeDof &fed, dimen_t i)
real_t coords(const Point &p, dimen_t i)
template<typename T>
real_t coords(const T &p, dimen_t i)
inline SuTermVector cos(const SuTermVector &s)
inline SymbolicFunction &cos(const SymbolicFunction &f)
inline TermVector cos(const TermVector &s)
inline SuTermVector cosh(const SuTermVector &s)
inline SymbolicFunction &cosh(const SymbolicFunction &f)
inline TermVector cosh(const TermVector &s)
inline bool cpp11()
real_t cpuTime()

returns user time (“cputime”) interval since last runtime ‘call’ according to unit defined in Time::deltaCpuTime

returns user time (“cputime”) interval in sec.

since last runtime ‘call’

real_t cpuTime(const string_t &comment, CoutStream &out)
real_t cpuTime(const string_t &comment, PrintStream &out)
real_t cpuTime(const string_t &comment, std::ostream &out = std::cout)

returns user time (“cputime”) interval in sec.

since last runtime ‘call’ and prints it with comment

GeomDomain &crack(const GeomDomain &side1, const GeomDomain &side2)

defined a crack domain from both sides of the crack in fact, define the crack domain as side 1

defined a crack domain from both sides of the crack (alias)

void crack(Geometry &g1, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack one geometry

void crack(Geometry &g1, Geometry &g2, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 2 geometries

void crack(Geometry &g1, Geometry &g2, Geometry &g3, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 3 geometries

void crack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 4 geometries

void crack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 5 geometries

void crack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 6 geometries

void crack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6, Geometry &g7, CrackType ct = _closedCrack, string_t domNameToOpen = string_t())

user shortcut to crack 7 geometries

std::vector<DofComponent> createCdofs(const Unknown *u, const std::vector<number_t> &dofs)

create cdofs from unknown dofs

MatrixStorage *createMatrixStorage(StorageType st, AccessType at, StorageBuildType sb, number_t nbr, number_t nbc, const std::vector<std::vector<number_t>> &indices, const string_t &idu)

create matrix storage from indices (vector of column indices for each row)

void createPath(Node<GeomElement>*, std::map<GeomElement*, bool>&, std::map<string_t, std::list<GeomElement*>>&)

utility

void createSideEltIndex(const std::vector<GeomElement*> &elements, std::map<string_t, GeomElement*> &sideEltIndex)

create an index of all side elements in given side element list, do not clear current sideEltIndex !

create the side index map of side elements of a list of elements

void createSideIndex(const MeshDomain &mdom, std::map<string_t, std::vector<GeoNumPair>> &sideIndex)

create an index of all sides of a meshDomain similar to previous one, but dedicated to any domain

create the side index map of a MeshDomain

void createSideIndex(const std::vector<GeomElement*> &elements, std::map<string_t, std::vector<GeoNumPair>> &sideIndex)

create an index of all sides of a list of elements very similar to buildSides function except the fact that no new side element are created do not clear current sideIndex !

create the side index map of a list of elements

void createTeXFile(const string_t &TeXFilename, subdivision::SubdivisionMesh *TM_p, const float psi, const float theta, const number_t nbviews, const std::string &DimProj, const bool withInterface, const bool withElems)

create TeX file, using Fig4TeX macros, to draw the mesh

inline Point cross3D(const Point &A, const Point &B)
complex_t crossProduct(const complex_t &x, const complex_t &y)
complex_t crossProduct(const complex_t &x, const real_t &y)
Point crossProduct(const Point&, const Point&)

returns the cross product of 2 points

complex_t crossProduct(const real_t &x, const complex_t &y)
real_t crossProduct(const real_t &x, const real_t &y)
template<typename K>
std::vector<PolynomialT<K>> crossProduct(const std::vector<PolynomialT<K>> &p, const std::vector<K> &v)
template<typename K>
std::vector<PolynomialT<K>> crossProduct(const std::vector<PolynomialT<K>> &p, const std::vector<PolynomialT<K>> &q)
template<typename T>
std::vector<T> crossProduct(const std::vector<T> &u, const std::vector<T> &v)

crossproduct of two vectors (dimension 2 and 3), be care in 2D return a 1-vector

template<typename T, typename K>
T crossProduct(const T &v, const K &s)
Vector<complex_t> crossProduct(const Vector<complex_t> &u, const Vector<real_t> &v)

Specialization complex_t/real_t of cross product.

template<typename K, typename IteratorV, typename IteratorR>
void crossProduct(const Vector<K> &u, const IteratorV &itv, IteratorR &itr)

cross product with vector and iterator in 3D and 2D (return a scalar)

template<typename K>
Vector<K> crossProduct(const Vector<K> &u, const Vector<K> &v)

cross product in 3D

Vector<complex_t> crossProduct(const Vector<real_t> &u, const Vector<complex_t> &v)
real_t crossProduct2D(const Point &A, const Point &B)
real_t crossProduct2D(const Point &O, const Point &A, const Point &B)

returns the cross product OAxOB (2D)

template<typename T, typename K>
T crossProduct2D(const T &v, const K &s)
complex_t crossProduct2D(const Vector<complex_t> &u, const Vector<real_t> &v)
template<typename K>
K crossProduct2D(const Vector<K> &u, const Vector<K> &v)

cross product in 2D, return a scalar

complex_t crossProduct2D(const Vector<real_t> &u, const Vector<complex_t> &v)
template<typename K>
std::vector<PolynomialT<K>> curl(const MonomialT<K> &m, dimen_t d = 3)
template<typename K>
PolynomialsBasisT<K> curl(const PolynomialsBasisT<K> &ps)
template<typename K>
std::vector<PolynomialT<K>> curl(const PolynomialT<K> &p, dimen_t d = 3)
template<typename K>
std::vector<PolynomialT<K>> curl(const std::vector<PolynomialT<K>> &p)
OperatorOnUnknown &curl(const Unknown &un)
OperatorOnKernel &curl_x(const Kernel&)

curl_x(k)

OperatorOnKernel &curl_x(OperatorOnKernel&)

curl_x(opk)

OperatorOnKernel &curl_y(const Kernel&)

curl_y(k)

OperatorOnKernel &curl_y(OperatorOnKernel&)

curl_y(opk)

OperatorOnUnknown &curlG(const Unknown &un, const complex_t &ax, const complex_t &ay, const complex_t &az, const complex_t &at)
OperatorOnUnknown &curlS(const Unknown &un)
inline number_t currentThread()

if omp is available, return the current thread number else return 0

inline number_t curThread()

if omp is available, return the current thread number else return 0

Vector<real_t> cylinderSidePartGeodesic(const Point &P, Parameters &params, DiffOpType dif)
Vector<real_t> cylinderSidePartGeodesicCurvatures(const Point &p, const Point &d, bool fromParameters, Parameters &pars)
Vector<real_t> cylinderSidePartGeodesicNormal(const Point &p, bool fromParameters, Parameters &pars)
OperatorOnUnknown &d0(const Unknown &un)
OperatorOnUnknown &d1(const Unknown &un)
OperatorOnUnknown &d11(const Unknown &un)
OperatorOnUnknown &d12(const Unknown &un)
OperatorOnUnknown &d13(const Unknown &un)
OperatorOnUnknown &d2(const Unknown &un)
OperatorOnUnknown &d22(const Unknown &un)
OperatorOnUnknown &d23(const Unknown &un)
OperatorOnUnknown &d2G(const Unknown &un, const complex_t &axx, const complex_t &axy, const complex_t &ayy, const complex_t &axz, const complex_t &ayz, const complex_t &azz)
OperatorOnUnknown &d2G(const Unknown &un, const Matrix<complex_t> &a)
OperatorOnUnknown &d3(const Unknown &un)
OperatorOnUnknown &d33(const Unknown &un)
real_t defaultColoringRule(const GeomElement &gelt, const std::vector<real_t> &val)

the default GeomElement coloring rule is the following let np the number of strictly positive values (v_i) on the n vertices of the geomelement if(np>n/2) then color =1 else color =0 for a triangle: color is 1 if at least 2 vertex values are >0 for a quadrangle: color is 1 if at least 3 vertex values are >0 for a tetrahedron: color is 1 if at least 3 vertex values are >0 for a hexahedron: color is 1 if at least 5 vertex values are >0

default Geomelement coloring rule

gelt: geom element val: real values on vertices

Parameters defaultParameters (0)

default ParameterList object used as default argument in Function constructor

real_t defaultVectorColoringRule(const GeomElement &gelt, const std::vector<Vector<real_t>> &val)

default Geomelement vector coloring rule

void defineMap(const GeomDomain&, const GeomDomain&, const Function&, bool nearest = false)

define a map between 2 geomdomains, default name

void defineMap(const GeomDomain&, const GeomDomain&, const Function&, const string_t&, bool nearest = false)

define a map between 2 geomdomains with explicit name

AngleUnit deg_ (_deg, defaultAngleUnit, 0.)
void deleteFunction(void *p)
void deleteGeomDomain(void *p)
void deleteIntegrationMethod(void *p)
void deleteIntegrationMethods(void *p)
void deleteParametrization(void *p)
void deleteSpline(void *p)
void deleteTermVectors(void *p)
void deleteTransformation(void *p)
string_t delSpace(const string_t &s)

convert “ a b c d e f “ to “abcefd”

delete all white space from string_t

SymbolicFunction &derivative(const SymbolicFunction &f, const SymbolicFunction &v)
SymbolicFunction &derivative(const SymbolicFunction &f, VariableName v)
template<typename K>
PolynomialT<K> derivative(VariableName vn, const MonomialT<K> &m)
template<typename K>
PolynomialT<K> derivative(VariableName vn, const PolynomialT<K> &p)
template<typename K>
std::vector<PolynomialT<K>> derivative(VariableName vn, const std::vector<PolynomialT<K>> &ps)
inline complex_t diag(const complex_t&)
inline real_t diag(const real_t&)
template<typename K>
void diag(Matrix<K> &m)

change matrix into diagonal matrix made of diagonal of matrix

template<typename T>
LargeMatrix<T> diagonalMatrix(const LargeMatrix<T> &mat, const T v)
template<typename T>
LargeMatrix<T> diagonalMatrix(StorageType st, AccessType at, number_t nbr, number_t nbc, const T v)
complex_t diGamma(const complex_t &z)
real_t diGamma(int_t n)

return \(-gamma + \sum_1^{n-1} 1/n\) where gamma is Euler-Mascheroni constant

real_t diGamma(real_t x)
dimen_t dim(const Element &elt)
dimen_t dim(const FeDof &fed)
dimen_t dim(const Point &p)
template<typename T>
dimen_t dim(const T&)
std::pair<dimen_t, dimen_t> dimsOf(const complex_t &v)
template<typename K>
std::pair<dimen_t, dimen_t> dimsOf(const Matrix<K> &v)
std::pair<dimen_t, dimen_t> dimsOf(const real_t &v)
template<typename K>
std::pair<dimen_t, dimen_t> dimsOf(const SparseMatrix<K> &v)
template<typename T>
std::pair<dimen_t, dimen_t> dimsOf(const Vector<T> &v)

useful dimension functions

TermVectors directSolve(TermMatrix &A, const std::vector<TermVector> &Bs, bool keepA)
TermVector directSolve(TermMatrix &A, const TermVector &B, bool keepA)

solve linear system by direct method, trying to find the well adapted direct method if A is already factorized goto upper-lower solver (factSolve) if umfpack is available, it is used (umfpackSolve) if A is single unknown dense matrix use pivoting gauss elimination process (gaussSolve) else factorize LU, LDLt or LDL* and goto upper-lower solver (factSolve)

if keepA is false (default) the matrix A is modified else it is not modified

TermMatrix directSolve(TermMatrix &A, TermMatrix &B, KeepStatus k)
string_t dirname(const string_t &f)

return dirname of a file name using last slash as delimiter

real_t dist(const BoundingBox &bb1, const BoundingBox &bb2)

distance from two bounding boxes

real_t dist(const Point &p, const Point &q)

returns Point as Point in polar coordinates/cylindrical (r,theta,z) r=sqrt(x*x+y*y) theta = atan2(y,x) in ]-pi,pi], z unchanged reverse map: x= r cos(theta) y = r sin(theta) z= z

returns the euclidian distance between 2 points

real_t distance(const MeshElement &elt1, const MeshElement &elt2)

distance from two MeshElement, assuming not intersection and using first order, i.e vertices under these assumptions dist(e1,e2)= min{dist(p1,p2), p1 in e1, p2 in e2} = min{dist(p1,p2), p1 any vertex of e1, p2 any vertex of e2}

distance from two MeshElement

template<typename K>
PolynomialBasisT<K> div(const PolynomialsBasisT<K> &ps)
template<typename K>
PolynomialT<K> div(const std::vector<PolynomialT<K>> &p)
OperatorOnUnknown &div(const Unknown &un)
OperatorOnKernel &div_x(const Kernel&)

grad_x(k)

OperatorOnKernel &div_x(OperatorOnKernel&)

grad_x(opk)

OperatorOnKernel &div_y(const Kernel&)

grad_y(k)

OperatorOnKernel &div_y(OperatorOnKernel&)

grad_y(opk)

OperatorOnUnknown &divG(const Unknown &un, const complex_t &ax, const complex_t &ay, const complex_t &az, const complex_t &at)
OperatorOnUnknown &divS(const Unknown &un)
bool doesQuadrangleIntersectsQuadrangle(const Point &P, const Point &Q, const Point &R, const Point &S, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol)

determines if quadrangles PQRS and ABCD have a intersection or not

bool doesSegmentCrossesQuadrangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol)

determines if a segment [PQ] and a quadrangle ABCD have a unique intersection or not

bool doesSegmentCrossesSegment(const Point &P, const Point &Q, const Point &A, const Point &B, real_t tol)

determines if 2 segments [PQ] and [AB] have a unique intersection or not (2D or 3D)

bool doesSegmentCrossesSegment2D(const Point &P, const Point &Q, const Point &A, const Point &B, real_t tol)

determines if 2 2D segments [PQ] and [AB] have a unique intersection or not

determines if 2 segments [PQ] and [AB] have a intersection or not (faster 2D version)

bool doesSegmentCrossesTriangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, real_t tol)

determines if a segment [PQ] and a triangle ABC have a unique intersection or not

bool doesSegmentIntersectsQuadrangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol)

determines if a segment [PQ] and a triangle ABC have a intersection or not

bool doesSegmentIntersectsTriangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, real_t tol)

determines if segments [PQ] and [AB] have a intersection or not

bool doesTriangleIntersectsQuadrangle(const Point &P, const Point &Q, const Point &R, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol)

determines if a triangle PQR and a quadrangle ABCD have a intersection or not

bool doesTriangleIntersectsTriangle(const Point &P, const Point &Q, const Point &R, const Point &A, const Point &B, const Point &C, real_t tol)

determines if triangles PQR and ABC have a intersection or not

std::vector<Point> dofCoords(Space &sp, const GeomDomain &dom)

list of coordinates of ponctual dofs of Space on a given domain

inline const GeomDomain *domainFromParameters(Parameters &pars)
inline number_t domainIdFromParameters(Parameters &pars)
const DomainMap *domainMap(const GeomDomain&, const GeomDomain&)

find DomainMap from dom1 to dom2

inline string_t domainNameFromParameters(Parameters &pars)

extract GeomDomain or GeomElement information from Parameters

Note

if pointer parameter does not exist, it is created with 0 value (see Parameters.get member function)

inline std::vector<number_t> domainsFromLevelSet(TermVector &tv, number_t mainDomNum, number_t insideDomNum, bool outside = true)
std::vector<number_t> domainsFromLevelSet(TermVector &tv, number_t mainDomNum, std::vector<number_t> insideDomNums, bool outside)

main routine for levelset method

Parameters:
  • tvTermVector containing the criteria

  • mainDomNum – domain number of the main domain (the domain number is the index in Mesh::domains_)

  • insideDomNums – domain numbers of the obstacles to find by the levelset method (one or more)

  • outside – if true, elements of interface between main domain and inner domains (obstacles) are considered in the inner domain, in the main domain otherwise.

Vector<real_t> domainTranslation(const Point&, Parameters &pa = defaultParameters)

default translation for domain map

complex_t dot(const complex_t &x, const complex_t &y)
complex_t dot(const complex_t &x, const real_t &y)
real_t dot(const Point&, const Point&)

returns the scalar product between 2 points

complex_t dot(const real_t &x, const complex_t &y)
real_t dot(const real_t &x, const real_t &y)

for template compilation reasons, fake definition of dot and crossproduct in 1D

template<typename K>
PolynomialT<K> dot(const std::vector<PolynomialT<K>> &p, const std::vector<K> &v)
template<typename K>
PolynomialT<K> dot(const std::vector<PolynomialT<K>> &p, const std::vector<PolynomialT<K>> &q)
complex_t dot(const Vector<complex_t> &u, const Vector<real_t> &v)

Specialization of dot (complex_t real_t)

complex_t dot(const Vector<complex_t> &vecFirst, const Vector<complex_t> &vecSecond)
template<typename K>
K dot(const Vector<K> &u, const Vector<K> &v)

inner product for real and complex

complex_t dot(const Vector<real_t> &u, const Vector<complex_t> &v)
complex_t dotC(const Vector<complex_t> &vecFirst, const Vector<real_t> &vecSecond)
template<typename K1, typename K2>
complex_t dotC(const Vector<K1> &vecFirst, const Vector<K2> &vecSecond)

Hermitian Inner product.

complex_t dotC(const Vector<real_t> &vecFirst, const Vector<real_t> &vecSecond)

Specialization of dotC (real_t real_t) and (complex_t real_t)

template<typename T, typename K>
T dotProduct(const std::vector<std::pair<number_t, T>> &u, const std::map<number_t, K> &v)
complex_t dotRC(const TermVector &tv1, const TermVector &tv2)

inner product when one TermVector is complex

template<typename K1, typename K2>
complex_t dotRC(const Vector<K1> &vecFirst, const Vector<K2> &vecSecond)

Inner product with COMPLEX result (not hermitian product)

complex_t dotRC(const Vector<real_t> &vecFirst, const Vector<real_t> &vecSecond)

Specialization of dotRC (real_t real_t)

complex_t dotRC(const VectorEntry&, const VectorEntry&)

same as inner product of two vectorentry’s

OperatorOnUnknown &dt(const Unknown &un)
std::vector<DofComponent> dualDofComponents(const std::vector<DofComponent> &cdofs)

create dual cdofs list from cdofs list

inline TestFunctions dualOf(const PCollection<Unknown> &us, const Strings &names = Strings())

to build a list of dual xlifepp::TestFunction of a list of xlifepp::Unknown

template<typename K>
PolynomialT<K> dx(const MonomialT<K> &m)
template<typename K>
PolynomialBasisT<K> dx(const PolynomialBasisT<K> &ps)
template<typename K>
PolynomialsBasisT<K> dx(const PolynomialsBasisT<K> &ps)
template<typename K>
PolynomialT<K> dx(const PolynomialT<K> &p)
template<typename K>
std::vector<PolynomialT<K>> dx(const std::vector<PolynomialT<K>> &ps)
OperatorOnUnknown &dx(const Unknown &un)
OperatorOnUnknown &dxx(const Unknown &un)
OperatorOnUnknown &dxy(const Unknown &un)
OperatorOnUnknown &dxz(const Unknown &un)
template<typename K>
PolynomialT<K> dy(const MonomialT<K> &m)
template<typename K>
PolynomialBasisT<K> dy(const PolynomialBasisT<K> &ps)
template<typename K>
PolynomialsBasisT<K> dy(const PolynomialsBasisT<K> &ps)
template<typename K>
PolynomialT<K> dy(const PolynomialT<K> &p)
template<typename K>
std::vector<PolynomialT<K>> dy(const std::vector<PolynomialT<K>> &ps)
OperatorOnUnknown &dy(const Unknown &un)
OperatorOnUnknown &dyy(const Unknown &un)
OperatorOnUnknown &dyz(const Unknown &un)
template<typename K>
PolynomialT<K> dz(const MonomialT<K> &m)
template<typename K>
PolynomialBasisT<K> dz(const PolynomialBasisT<K> &ps)
template<typename K>
PolynomialsBasisT<K> dz(const PolynomialsBasisT<K> &ps)
template<typename K>
PolynomialT<K> dz(const PolynomialT<K> &p)
template<typename K>
std::vector<PolynomialT<K>> dz(const std::vector<PolynomialT<K>> &ps)
OperatorOnUnknown &dz(const Unknown &un)
OperatorOnUnknown &dzz(const Unknown &un)
void e1Test(std::ostream&)

For tests.

complex_t e1z(const complex_t &z)

return E1(z)

template<typename Polygon>
std::vector<size_t> earcut(const Polygon &poly)
template<typename P>
std::vector<std::vector<size_t>> earcutTriangulation(const std::vector<P> &vertices)
template<class ST_>
number_t *edgeNumbering()

Termination of the construction of a mesh object of 2D elements by transferring data from a subdivision::xxxMesh object into XLiFE++ objects.

template<>
number_t *edgeNumbering<subdivision::Quadrangle>()
template<>
number_t *edgeNumbering<subdivision::Triangle>()
template<typename ST>
number_t eigenDavidsonSolve(const LargeMatrix<ST> *pA, const LargeMatrix<ST> *pB, std::vector<std::pair<complex_t, Vector<complex_t>>> &res, number_t nev, real_t tol, string_t which, bool isInverted, FactorizationType fac, bool isShift)

Resolve an eigen problem with block davidson method.

Parameters:
  • pA[in] Pointer to large matrix A of the eigen problem A*X = lambda*B*X. It MUSTN’T be nullptr

  • pB[in] Pointer to large matrix B of the eigen problem A*X = lambda*B*X. If it’s nullptr. Eigen problem is standard: A*X=lambda*X

  • res[inout] result

  • nev[in] The number of eigen values and eigenSolver searched for

  • tol[in] Tolerance

  • which[in] Specification of which eigen values are returned. Largest-LM, Smallest-SM,

  • isInverted[in] true if inverted matrix

  • fac[in] factorization type

  • isShift[in] true if eigen problem with shift or not

EigenElements eigenInternGen(TermMatrix *pA, TermMatrix *ptB, number_t nev, string_t which, real_t tol, EigenComputationalMode eigCompMode, complex_t sigma, bool isShift, string_t nam, EigenSortKind esortk = _incr_module)

Internal eigen solver.

EigenElements eigenInternSolve(TermMatrix *A, TermMatrix *B, const std::vector<Parameter> &ps)

Main entry point for intern eigenvalue solver.

template<typename ST>
number_t eigenKrylovSchurSolve(const LargeMatrix<ST> *pA, const LargeMatrix<ST> *pB, std::vector<std::pair<complex_t, Vector<complex_t>>> &res, number_t nev, real_t tol, string_t which, bool isInverted, FactorizationType fac, bool isShift)

Resolve an eigen problem with block Krylov-Schur method.

Parameters:
  • pA[in] Pointer to large matrix A of the eigen problem A*X = lambda*B*X. It MUSTN’T be nullptr

  • pB[in] Pointer to large matrix B of the eigen problem A*X = lambda*B*X. If it’s nullptr. Eigen problem is standard: A*X=lambda*X

  • res[inout] result

  • nev[in] The number of eigen values and eigenSolver searched for

  • tol[in] Tolerance

  • which[in] Specification of which eigen values are returned. Largest-LM, Smallest-SM,

  • isInverted[in] true if inverted matrix

  • fac[in] factorization type

  • isShift[in] true if eigen problem with shift or not

EigenElements eigenSolve(TermMatrix *A, TermMatrix *B, std::vector<Parameter> ps)

Main entry point for non specific eigenvalue solver.

template<>
void eigs(const complex_t *A, number_t m, complex_t *Xs, complex_t *ls)
template<>
void eigs(const complex_t *A, number_t m, complex_t *Xs, complex_t *ls)
template<typename T>
void eigs(const Matrix<T> &A, const Matrix<T> &B, Vector<complex_t> &ls, Matrix<complex_t> &Xs)

computation of generalized eigen values A*X=lambda*B*X

eigen vectors are stored by row in Xs matrix !

currently works only for REAL matrices

template<typename T>
void eigs(const Matrix<T> &A, const Matrix<T> &B, Vector<complex_t> &ls, Vector<Vector<complex_t>> &Xs)
template<typename T>
void eigs(const Matrix<T> &A, Vector<complex_t> &ls, Matrix<complex_t> &Xs)

computation of eigen values A*X=lambda*X

eigen vectors are stored by row in Xs matrix !

template<typename T>
void eigs(const Matrix<T> &A, Vector<complex_t> &ls, Vector<Vector<complex_t>> &Xs)
template<>
void eigs(const real_t *A, const real_t *B, number_t m, complex_t *Xs, complex_t *ls)
template<>
void eigs(const real_t *A, const real_t *B, number_t m, complex_t *Xs, complex_t *ls)
template<>
void eigs(const real_t *A, number_t m, complex_t *Xs, complex_t *ls)
template<>
void eigs(const real_t *A, number_t m, complex_t *Xs, complex_t *ls)
template<typename T>
void eigs(const T *A, number_t m, complex_t *Xs, complex_t *ls)

general template eigenvector computation using Eigen, assuming A, U are pointers to first value of DENSE ROW matrix A, B: pointers to dense row squared matrix m: matrix size Xs: pointer to a dense row matrix, storing eigen vectors ls: pointer to a vector, storing eigen values

template<typename Ta, typename Tb>
void eigs(const Ta *A, const Tb *B, number_t m, complex_t *Xs, complex_t *lambda)
complex_t eInz(const complex_t &z)

return \(E1(z) + gamma + log(z) = \sum_{n>0} (-z)^n / n n!\)

real_t elapsedTime()

returns elapsed time interval since last runtime ‘call’ according to unit defined in Time::deltaTime

returns elapsed time interval in sec.

since last runtime ‘call’

real_t elapsedTime(const string_t &comment, CoutStream &out)
real_t elapsedTime(const string_t &comment, PrintStream &out)
real_t elapsedTime(const string_t &comment, std::ostream &out = std::cout)

returns elapsed time interval in sec.

since last runtime ‘call’ and prints it with comment

OperatorOnUnknown &epsilon(const Unknown &un)
OperatorOnUnknown &epsilonG(const Unknown &un, const complex_t &id, const complex_t &ax, const complex_t &ay, const complex_t &az)
OperatorOnUnknown &epsilonR(const Unknown &un)
std::vector<real_t> eqtOfPlane(const Point &S1, const Point &S2, const Point &S3)

returns coefficients (a,b,c,d) of the equation of the plane (ax+by+cz+d=0) defined by the 3 non aligned given points S1, S2, and S3

returns equation of the plane defined by the 3 non aligned given points

complex_t erf(complex_t z)
template<typename T>
void error(const string_t &msgIds, const T &v, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2>
void error(const string_t &msgIds, const T1 &v1, const T2 &v2, Messages *msgSrc = theMessages_p)
void error(const string_t &msgIds, MsgData &msgData, Messages *msgSrc)

shortcut of msg for error type messages

throw error messages

template<typename T>
Vector<T> euler(T &(*f)(real_t, const T &y, T &fty), real_t a, real_t b, real_t dt, const T &y0)
template<typename K>
std::vector<K> eval(const std::vector<PolynomialT<K>> &p, const K &x1, const K &x2 = K(1), const K &x3 = K(1))
template<>
inline void evalContractedProduct(const Matrix<real_t> &mat, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalContractedProduct(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)

Contracted product.

template<>
inline void evalCrossProduct(const Vector<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res, bool right)
template<typename T, typename R>
void evalCrossProduct(const Vector<T> &vec, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res, bool right)

Cross product.

inline complex_t evalFun(SymbolicOperation op, const complex_t &z, const complex_t &p = 0.)
inline real_t evalFun(SymbolicOperation op, const real_t &x, const real_t &p = 0.)
template<>
inline void evalInnerProduct(const Vector<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
void evalInnerProduct(const Vector<T> &vec, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)

Inner product.

template<>
inline void evalMatrixMatrixProduct(const Matrix<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalMatrixMatrixProduct(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
template<>
inline void evalMatrixMatrixProduct2(const Matrix<real_t> &mat, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalMatrixMatrixProduct2(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
template<>
inline void evalMatrixVectorProduct(const Matrix<real_t> &mat, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalMatrixVectorProduct(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)

Matrix product.

template<>
inline void evalMatrixVectorProduct(const Vector<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalMatrixVectorProduct(const Vector<T> &vec, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)

Matrix product using vector representation of matrix.

inline complex_t evalOp(SymbolicOperation op, const complex_t &x, const complex_t &y)
inline real_t evalOp(SymbolicOperation op, const real_t &x, const real_t &y)
template<>
inline void evalScalarProduct(const Matrix<real_t> &mat, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalScalarProduct(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
template<>
inline void evalScalarProduct(const real_t &val, const Vector<complex_t> &v, Vector<real_t> &res)
template<typename T, typename R>
inline void evalScalarProduct(const T &val, const Vector<R> &v, Vector<T> &res)

Product by a scalar.

template<>
inline void evalScalarProduct(const Vector<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalScalarProduct(const Vector<T> &vec, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
template<>
inline void evalVectorMatrixProduct(const Matrix<real_t> &mat, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalVectorMatrixProduct(const Matrix<T> &mat, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
template<>
inline void evalVectorMatrixProduct(const Vector<real_t> &vec, const Vector<complex_t> &v, dimen_t &d, dimen_t &n, number_t m, Vector<real_t> &res)
template<typename T, typename R>
inline void evalVectorMatrixProduct(const Vector<T> &vec, const Vector<R> &v, dimen_t &d, dimen_t &n, number_t m, Vector<T> &res)
inline SuTermVector exp(const SuTermVector &s)
inline SymbolicFunction &exp(const SymbolicFunction &f)
inline TermVector exp(const TermVector &s)
GeoNode expand(const GeoNode &gn)

create the expansion of a GeoNode (new object)

create the expansion of a GeoNode

complex_t expzE1z(const complex_t&)

return exp(z)*E1(z)

complex_t ext_Fock_s(real_t x, Parameters &pars)
complex_t ext_Fock_s_app(real_t x, Parameters &pars)
void extendStorage(MatrixEntry *mat, std::vector<DofComponent> &cdofsr, std::vector<DofComponent> &cdofsc, const Constraints *cu, const Constraints *cv, bool keepSymmetry, bool doRow, bool doCol, bool doDiag)

extend storage of matrix when constraints are not local and have column/row combination, assuming scalar matrix entries ! mat: pointer to the matrix to be reduced cdofsr: row dof components cdofsc: col dof components cu: pointer to the constraints on the unknown u (col) cv: pointer to the constraints on test function v (row) keepSymmetry: flag to indicate to force symmetry of the extended storage (default not keeping symmetry) doRow, doCol, doDiag: flags to indicates which extensions are processed (default all)

extend matrix storage when constraints are not local and have column/row combination

template<typename I1, typename I2>
void extendVector(const std::vector<number_t> &renum, I1 it1, I2 it2)

template extension method

TermVector extension(const Function &f, const Function &g, const GeomDomain &dom, const Unknown &u)
TermVector extension(const Function &f, const Function &g, const GeomDomain &dom, const Unknown &u, const Function &h)
Value extension(const Function &f, const Function &g, const Point &P)
Value extension(const Function &f, const Function &g, const Point &P, const Function &h)
TermVector extension(const TermVector &f, const Function &g, const GeomDomain &dom, const Unknown &u)
TermVector extension(const TermVector &f, const Function &g, const GeomDomain &dom, const Unknown &u, const Function &h)
Value extension(const TermVector &f, const Function &g, const Point &P)
Value extension(const TermVector &f, const Function &g, const Point &P, const Function &h)
template<typename K>
Vector<K> extractComponents(const Vector<Vector<K>> &vov, number_t i)
template<typename K>
void extractComponents(const Vector<Vector<K>> &vov, Vector<K> &v, number_t i)

extract i-th components (i>0) of a Vector<Vector<K> > and store extract values in Vector<K> (index i>0 is not checked!)

inline Geometry extrude(const Geometry &g, const Transformation &t, const char *domName, const char *sidenames)

definition of a geometry by extrusion of another geometry, with name and side name

inline Geometry extrude(const Geometry &g, const Transformation &t, const char *domName, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with name and side names

Geometry extrude(const Geometry &g, const Transformation &t, const std::vector<Parameter> &ps)

main routine for the definition of a geometry by extrusion of another geometry, with a list if parameters

main external routine for the definition of a geometry by extrusion of another geometry, with a list if parameters

inline Geometry extrude(const Geometry &g, const Transformation &t, number_t layers, const char *domName, const char *sidenames)

definition of a geometry by extrusion of another geometry, with name and side name

inline Geometry extrude(const Geometry &g, const Transformation &t, number_t layers, const char *domName, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with name and side names

inline Geometry extrude(const Geometry &g, const Transformation &t, number_t layers, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with side names

inline Geometry extrude(const Geometry &g, const Transformation &t, number_t layers, string_t domName, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with name and side names

inline Geometry extrude(const Geometry &g, const Transformation &t, number_t layers, string_t domName, string_t sidenames)

definition of a geometry by extrusion of another geometry, with name and side name

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p)

Definition of a geometry by extrusion of another geometry, with 1 Parameter.

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p1, Parameter p2)

Definition of a geometry by extrusion of another geometry, with 2 Parameter.

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p1, Parameter p2, Parameter p3)

Definition of a geometry by extrusion of another geometry, with 3 Parameter.

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p1, Parameter p2, Parameter p3, Parameter p4)

Definition of a geometry by extrusion of another geometry, with 4 Parameter.

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p1, Parameter p2, Parameter p3, Parameter p4, Parameter p5)

Definition of a geometry by extrusion of another geometry, with 5 Parameter.

Geometry extrude(const Geometry &g, const Transformation &t, Parameter p1, Parameter p2, Parameter p3, Parameter p4, Parameter p5, Parameter p6)

Definition of a geometry by extrusion of another geometry, with 6 Parameter.

inline Geometry extrude(const Geometry &g, const Transformation &t, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with side names

inline Geometry extrude(const Geometry &g, const Transformation &t, string_t domName, std::vector<string_t> sidenames = std::vector<string_t>())

definition of a geometry by extrusion of another geometry, with name and side names

inline Geometry extrude(const Geometry &g, const Transformation &t, string_t domName, string_t sidenames)

definition of a geometry by extrusion of another geometry, with name and side name

inline Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const Parameter &p)

extrude a mesh using a list of transformations

inline Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const Parameter &p1, const Parameter &p2)
inline Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const Parameter &p1, const Parameter &p2, const Parameter &p3)
inline Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
inline Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
Mesh extrude(const Mesh &sectionMesh, const std::vector<Transformation*> &trs, const std::vector<Parameter> &ps)

external routine to apply an extrusion on a Mesh using a list of transformation

inline Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const Parameter &p)

extrude a mesh using a transformation

inline Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const Parameter &p1, const Parameter &p2)
inline Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const Parameter &p1, const Parameter &p2, const Parameter &p3)
inline Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
inline Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
Mesh extrude(const Mesh &sectionMesh, const Transformation &tr, const std::vector<Parameter> &ps)

external routine to apply an extrusion on a Mesh using an elementary transformation

inline Mesh extrude(const Mesh &sectionMesh, par_fun f, const Parameter &p)

extrude a mesh using a parametrization function

inline Mesh extrude(const Mesh &sectionMesh, par_fun f, const Parameter &p1, const Parameter &p2)
inline Mesh extrude(const Mesh &sectionMesh, par_fun f, const Parameter &p1, const Parameter &p2, const Parameter &p3)
inline Mesh extrude(const Mesh &sectionMesh, par_fun f, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
inline Mesh extrude(const Mesh &sectionMesh, par_fun f, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
Mesh extrude(const Mesh &sectionMesh, par_fun f, const std::vector<Parameter> &ps)

external routine to apply an extrusion on a Mesh using a parametrisation function

template<typename K>
void eyeMatrix(MatrixEigenDense<K> &mat)

Reverse all elements of a matrix.

template<class ST_>
number_t *faceNumbering()

Termination of the construction of a mesh object of 3D elements by transferring data from a subdivision::xxxMesh object into XLiFE++ objects.

template<>
number_t *faceNumbering<subdivision::Hexahedron>()
template<>
number_t *faceNumbering<subdivision::Tetrahedron>()
VectorEntry factLeftSolve(MatrixEntry&, const VectorEntry&)

solve transposed linear system after factorization method

TermVectors factLeftSolve(TermMatrix &A, const std::vector<TermVector> &Bs)

solve left linear system Xs*A=b (~ At*Xs=B) with multiple right hand sides when matrix is already factorized B may be a TermVectors

TermVector factLeftSolve(TermMatrix &A, const TermVector &B)

solve left linear system X*A=b (~ At*X=B) when matrix is already factorized

TermMatrix factLeftSolve(TermMatrix &A, TermMatrix &B)

solve left linear system with TermMatrix as right hand side when matrix is already factorized return a TermMatrix in column dense storage

void factorize(MatrixEntry &A, FactorizationType ft, bool withPermutation)

factorize matrix as LU or LDLt or LDL*, not preserving A

factorize matrix as LU or LDLt or LDL*

void factorize(MatrixEntry &A, MatrixEntry &Af, FactorizationType ft, bool withPermutation)

factorize matrix as LU or LDLt or LDL* along matrix property if ft=_noFactorisation, type of factorization is searched if matrix is symmetric ldlt factorisation is used if matrix is self-adjoint ldlstar factorisation is used note that factorisation may be failed because there is no pivoting strategy (except for definite symmetric matrix!) if matrix is skew-adjoint ldlstar factorisation may be worked if the diagonal is non zero if matrix is skew-symmetric (diagonal is zero!) ldlt failed in any case ! For the moment LU factorisation is used in case of a skew-adjoint or a skew-symmetric matrix in future, for specific algorithm for skew symmetric or skew adjoint matrices see following papers: Bunch J.R.

factorize matrix as LU or LDLt or LDL*

Stable Algorithms for Solving Symmetric and Skew-Symmetric Systems, Bull. Austral. Math. Soc., vol 26, 107-119, 1982 Lau T., Numerical Solution of Skew-Symmetric Linear Systems, Master Thesis, University of British Columbia, 2007

If umfPack is available, it is used when ft is not specified if withPermution = true, LU with row permutation will be used to deal with dense matrices

void factorize(SuTermMatrix&, FactorizationType ft = _noFactorization, bool withPermutation = true)

factorize matrix as LU or LDLt or LDL*

void factorize(SuTermMatrix&, SuTermMatrix&, FactorizationType ft = _noFactorization, bool withPermutation = true)

factorize matrix as LU or LDLt or LDL*

void factorize(TermMatrix &A, FactorizationType ft, bool withPermutation)

factorize matrix as LU or LDLt or LDL*, not preserving A

void factorize(TermMatrix &A, TermMatrix &Af, FactorizationType ft, bool withPermutation)

factorize matrix as LU or LDLt or LDL* along matrix property move to global scalar representation in any case

if ft=_noFactorisation, type of factorization is searched if matrix is symmetric ldlt factorisation is used if matrix is self-adjoint ldlstar factorisation is used note that factorisation may be failed because there is no pivoting strategy (except for definite symmetric matrix!) if matrix is skew-adjoint ldlstar factorisation may be worked if the diagonal is non zero if matrix is skew-symmetric (diagonal is zero!) ldlt failed in any case ! For the moment LU factorisation is used in case of a skew-adjoint or a skew-symmetric matrix in future, for specific algorithm for skew symmetric or skew adjoint matrices see following papers: Bunch J.R. Stable Algorithms for Solving Symmetric and Skew-Symmetric Systems, Bull. Austral. Math. Soc., vol 26, 107-119, 1982 Lau T., Numerical Solution of Skew-Symmetric Linear Systems, Master Thesis, University of British Columbia, 2007

If umfPack is available, it is used when ft is not specified if withPermution = true, LU with row permutation will be used to deal with dense matrices

VectorEntry factSolve(MatrixEntry&, const VectorEntry&)

solve linear system after factorization method

SuTermVector factSolve(SuTermMatrix&, const SuTermVector&)

solve AX=B when A is factorized

SuTermVectors factSolve(SuTermMatrix &A, const std::vector<SuTermVector> &Bs)

solve linear system with multiple right hand sides when matrix is already factorized Bs may be a SuTermVectors

solve AXs=Bs when A is factorized

SuTermMatrix factSolve(SuTermMatrix &A, SuTermMatrix &B)

solve linear system with right hand side matrix when matrix is already factorized in other words create the matrix C = inv(A) * B, C is stored in a dense format Works on scalar representation !

create inv(A)*B when A is factorized

TermVectors factSolve(TermMatrix &A, const std::vector<TermVector> &Bs)

solve linear system with multiple right hand sides when matrix is already factorized B may be a TermVectors

TermVector factSolve(TermMatrix &A, const TermVector &B)
TermMatrix factSolve(TermMatrix &A, TermMatrix &B)

solve linear system with TermMatrix as right hand side when matrix is already factorized return a TermMatrix in column dense storage

std::vector<complex_t> ferrari(real_t a, real_t b, real_t c, real_t d, real_t e)

computes roots of degree 4 polynomial (Ferrari method)

template<typename T>
std::vector<complex_t> fft(const std::vector<T> &f)
template<typename T>
std::vector<complex_t> &fft(const std::vector<T> &f, std::vector<complex_t> &g)
template<typename IterA, typename IterB>
void fft(IterA ita, IterB itb, number_t log2n)

perform the discrete Fourier transform of the discrete vector a of length n=2^log2n the result is the vector b of length 2^log2n bk = sum_j=0,n-1 aj*exp(-2*i*pi*j*k/n) ita: iterator at the beginning of a itb: iterator at the beginning of b log2n: log_2(n)

template<typename IterA, typename IterB>
void ffta(IterA ita, IterB itb, number_t log2n, real_t q)

perform the discrete Fourier transform of the discrete vector a of length n=2^log2n the result is the vector b of length 2^log2n bk = sum_j=0,n-1 aj*exp(2*i*q*j*k/n) ita: iterator at the beginning of a itb: iterator at the beginning of b log2n: log_2(n) q: a parameter = -pi for direct fft and = pi for inverse fft

string_t fileExtension(const string_t &f)

return file name extension using last point as delimiter return root file name and file name extension using last point as delimiter

inline string_t fileNameFromComponents(const string_t &rootname, const string_t &extension)
string_t fileNameFromComponents(const string_t &rootname, const string_t &suffix, const string_t &extension)

build filename from rootname with an additionnal suffix, and extension: rootname_suffix.extension

std::pair<string_t, string_t> fileRootExtension(const string_t &f, const std::vector<string_t> &authorizedExtensions)
string_t fileWithoutExtension(const string_t &f)

return file name without extension using last point as delimiter

inline complex_t filon_f(real_t t, Parameters &pa = defaultParameters)

function used in Filon: 1/(w2’(r*(t+s))-qw2(r*(t+s))) where s is a shift and r a complex rotation

void finalize()

finalize execution of XLiFE++

Quadrature *findBestQuadrature(ShapeType, number_t, bool = false)

“ersatz” of constructor (find or create a new quadrature rule)

int_t findBorder(const std::pair<ShapeType, std::vector<const Point*>> &border, const std::vector<std::pair<ShapeType, std::vector<const Point*>>> &borders)

find if a curve/surf is in a list of curves/surfs

DifferentialOperator *findDifferentialOperator(DiffOpType)

contructor-like, returns newly created or existing object

GeomRefElement *findGeomRefElement(ShapeType shape)

GeomRefElementFind definition of a Geom Reference Element by shape number use existing Geom Reference Element object if one already exists otherwise create a new one, in both cases returns pointer to the object.

definition of a Geom Reference Element by shape type use existing Geom Reference Element if one exists, otherwise create a new one, in both cases returns pointer to the object

short int findId(std::vector<CrackData>::const_iterator it_b, std::vector<CrackData>::const_iterator it_e, number_t id)

finds a crack data in a list

short int findId(std::vector<PhysicalData>::const_iterator it_b, std::vector<PhysicalData>::const_iterator it_e, number_t id)

finds a physical data in a list

Interpolation *findInterpolation(FEType typ, FESubType sub, number_t num, SobolevType spa)

return Interpolation defined by its characteristics use existing Interpolation object if one already exists otherwise create a new one, in both cases returns pointer to the object

main “constructor” by finding first if already exists

Interpolation *findInterpolation(InterpolationType interpType, number_t dim)

main “constructor” by finding first if already exists

const Function *findMap(const GeomDomain&, const GeomDomain&)

find map between 2 geomdomains

MatrixStorage *findMatrixStorage(const string_t &id, StorageType st, AccessType at)

find matrix storage in vector theMatrixStorages of class MatrixStorage

MatrixStorage *findMatrixStorage(const string_t &id, StorageType st, AccessType at, StorageBuildType sb, bool scalar, number_t nbr, number_t nbc)
Projector &findProjector(Space &V, dimen_t nbcV, Space &W, dimen_t nbcW, ProjectorType pt = _L2Projector)
Quadrature *findQuadrature(ShapeType, QuadRule, number_t, bool = false)

“ersatz” of constructor (find or create a new quadrature rule)

RefElement *findRefElement(ShapeType shape, const Interpolation *interp_p)

definition of a Reference Element by shape number and interpolation use existing Reference Element object if one already exists otherwise create a new one, in both cases returns pointer to the object

RefElementFind definition of a Reference Element by shape number and interpolation use existing Reference Element object if one already exists otherwise create a new one, in both cases returns pointer to the object.

int_t findString(const string_t, const std::vector<string_t>&)

returns position of string in vector<string>

short int findString(std::vector<PhysicalData>::const_iterator it_b, std::vector<PhysicalData>::const_iterator it_e, string_t name)

finds a physical data in a list

Unknown *findUnknown(const string_t&)

find Unknown in list of Unknown

complex_t fockCurvatureTransition_D(real_t x)
complex_t fockCurvatureTransition_N(real_t x)
Point force3D(const Point &p)

extends a copy of a point to a 3D point

returns a 3-components copy of a point

string_t format(const string_t &s, number_t l, Alignment = _centerAlignment)

format string at size s with alignment option

bool foundParent(const vector<number_t> &nums, const SIDELTMAP &parentEl, ITPARENTS &itpar)
template<typename T>
OperatorOnUnknown &fromUnknownVal(const Unknown &un, const T &val, AlgebraicOperator aop)
template<typename T>
OperatorOnUnknown &fromValUnknown(const Unknown &un, const T &val, AlgebraicOperator aop)
complex_t fun_EC_SC(const Point &P, Parameters &pars)
real_t fun_EC_SR(const Point &P, Parameters &pars)
Vector<complex_t> fun_EC_VC(const Point &P, Parameters &pars)
Vector<real_t> fun_EC_VR(const Point &P, Parameters &pars)
inline complex_t fun_productC(const complex_t &x, const complex_t &y)
inline real_t fun_productR(const real_t &x, const real_t &y)
complex_t gammaFunction(const complex_t&)

return \(\int_0^t dt t^{x-1} \exp(-t)\) for x > 0

real_t gammaFunction(int_t n)

Function \(Gamma(z) = \int_0^{\infty} t^{z-1} exp(-t) dt for Re(z) > 0\).

  • Gamma(1-z) = Pi / ( sin(Pi z) Gamma(z) )

  • Gamma(z+1) = z Gamma(z)

  • Gamma(n+1) = n! for integer n > 0 return Gamma(n) = (n-1)!

real_t gammaFunction(real_t)

return \(\int_0^t dt t^{x-1} \exp(-t)\) for x > 0

void gammaTest(std::ostream &out)
void gaussJacobi20Output(number_t nmax, std::ostream &out)

Output of Gauss-Jacobi (2,0) rule as displayed in function GaussJacobi20Rule.

“tabulated output” of Gauss-Jacobi (2,0) rules up to a given number of points

void gaussJacobi20Rule(number_t n, std::vector<real_t> &points, std::vector<real_t> &weights)

Compute Gauss-Jacobi n-point formula on [-1, 1].

returns Gauss-Jacobi (2,0) rule with tabulated

  • Points xj are roots of Jacobi Polynomial Pn(2,0) of ordre n (namely orthogonal polynomials of weight (1-x)^2

  • Weights are - (2n+4)*Gamma(n+3)*Gamma(n+1)*4/((n+3)*Gamma(n+3)*(n+1)!*Pn(2,0)’(xi)*P(n+1)(2,0)(xi))

Note: the (n+1)/2 first positive points in ascending order only are returned.

void gaussJacobiOutput(number_t nmax, real_t a, real_t b, std::ostream &out)

Output of Gauss-Jacobi rule as displayed in function GaussJacobi20Rule.

“tabulated output” of Gauss-Jacobi rules up to a given number of points

void gaussJacobiRule(number_t n, real_t a, real_t b, std::vector<real_t> &points, std::vector<real_t> &weights)

Compute Gauss-Jacobi n-point formula on [-1, 1].

returns Gauss-Jacobi rule with tabulated

  • Points xj are roots of Jacobi Polynomial Pn(a,b) of ordre n (namely orthogonal polynomials of weight (1-x)^a*(1+x)^b)

  • Weights are - (2n+a+b+2)*Gamma(n+a+1)*Gamma(n+b+1)*2^(a+b)/((n+a+b+1)*Gamma(n+a+b+1)*(n+1)!*Pn(a,b)’(xi)*P(n+1)(a,b)(xi))

Note: the (n+1)/2 first positive points in ascending order only are returned.

void gaussLegendreOutput(number_t nmax, std::ostream &out)

Output of Gauss-Legendre rule as displayed in function GaussLegendreRule.

“tabulated output” of Gauss-Lobatto rules up to a given number of points

void gaussLegendreRule(number_t n, std::vector<real_t> &points, std::vector<real_t> &weights)

returns quadrature points and weights for Gauss-Legendre formula for a given number of points n ; n-point Gauss-Legendre formula is exact for polynomials of degree up to {2n-1} on [-1,1].

returns Gauss-Legendre rule with computed or tabulated

Points and weights are given below for n up to 16

Note: the (n+1)/2 positive points in ascending order only are returned.

void gaussLegendreRuleComputed(number_t n, std::vector<real_t> &points, std::vector<real_t> &weights)

Compute Gauss-Legendre n-point formula on [-1, 1].

returns Gauss-Legendre rule for any number of points

  • Points xj are roots of Legendre Polynomial pn of ordre n

  • Weights are 2/( (1-xj^2) (P’_n(xj)^2) )

Note: the (n+1)/2 first positive points in ascending order only are returned.

void gaussLobattoOutput(number_t nmax, std::ostream &out)

Output of Gauss-Lobatto rule as displayed in function GaussLobattoRule.

“tabulated output” of Gauss-Lobatto rules up to a given number of points

void gaussLobattoPoints(number_t n, std::vector<real_t> &points)

returns quadrature nodes for Gauss-Lobatto rule for a given number of points.

returns Gauss-Lobatto points for any number of points

Note: the (n+1)/2 points non-negative points in ascending order are returned only with possible point 0 included and including end point 1

void gaussLobattoRule(number_t n, std::vector<real_t> &points, std::vector<real_t> &weights)

returns quadrature points & weights for Gauss-Lobatto rule for a given number of points.

returns Gauss-Lobatto rule with computed or tabulated

n-point Gauss-Lobatto formula is exact for P_{2n-3}(0,1)

Note: only points and weights corresponding to the (n+1)/2 points non-negative points, with possible point 0 included and including end point 1, are returned

The following programs shows table of values (with 20 significant digits) up to n=16 which have been computed by function GaussLobattoRuleComputed using type long double.

void gaussLobattoRuleComputed(number_t n, std::vector<real_t> &points, std::vector<real_t> &weights)

compute Gauss-Lobatto n-point formula on [-1, 1] end points included

returns Gauss-Lobatto rule for any number of points

  • Points xj are roots of (1-x^2)*P’_{n-1} with P’_{n-1} derivative of Legendre Polynomial of ordre n-1

  • Weights are 2./(n*(n-1)) for end points -1 and +1 2./(n*(n-1)*{P_{n-1}(xj)}^2) for other xj

Note: the (n-1)/2 first positive points in ascending order only are returned that is excluding end point 1 and corresponding weight.

template<typename K_>
bool gaussMultipleSolver(std::vector<K_> &mat, std::vector<K_> &rhs, number_t nbrhs, real_t &minPivot, number_t &row)

Template multiple Gaussian elimination solver with partial pivoting strategy for a square linear system with dense row major access matrix the number of right hand sides is given by nbrhs Note: when giving Id matrix as rhs, it returns the inverse of mat in rhs.

template<typename T>
void gaussSolve(LargeMatrix<T> &mat, std::vector<std::vector<T>> &rhss)
template<typename T>
void gaussSolve(LargeMatrix<T> &mat, std::vector<T> &rhs)
void gaussSolve(MatrixEntry&, VectorEntry&, VectorEntry&)

Gauss solver (only in scalar representation)

SuTermVector gaussSolve(SuTermMatrix&, const SuTermVector&, bool keepA = false)

solve AX=B using Gauss reduction solve AX=B using umfpack if available

TermVectors gaussSolve(TermMatrix &A, const std::vector<TermVector> &Bs, bool keepA)
TermVector gaussSolve(TermMatrix &A, const TermVector &B, bool keepA)
template<typename K_>
bool gaussSolver(std::vector<K_> &mat, std::vector<K_> &rhs, real_t &minPivot, number_t &row)

Template Gaussian elimination solver with partial pivoting strategy for a square linear system with dense row major access matrix.

void gegenbauerPolynomials(real_t lambda, real_t, std::vector<real_t>&)

Gegenbauer ultraspherical polynomials on [-1, 1], with parameter lambda up to order n P_0 = 1, P_1 = 2*lambda*x n*P_n(x) = 2*(n+lambda-1)*x*P_{n-1}(x) - (n+2*lambda-2)*P_{n-2}(x) , n > 1.

string_t genDomName(number_t ndom)
string_t genDomName(number_t ndom, const map<number_t, string_t> &domNameMap)
string_t genSDomName(number_t ndom, number_t nsdom)
string_t genSDomName(number_t ndom, number_t nsdom, const map<number_t, string_t> &domNameMap)
inline const GeomElement *geomElementFromParameters(Parameters &pars)
const GeomDomain *geomUnionOf(std::vector<const GeomDomain*> &doms, const GeomDomain *largeDom)

construct or identify the geometrical union of domains.

construct or identify the geometrical symbolic union of domains

Geometrical union is a real union which performs element or side element inclusion in other elements or side elements it uses the element id number to test inclusion of a list of elements in an other list of elements for side element it uses the parent element id number. !!! Side of side element is not handled for the moment

largeDom is a large domain containing all domains given in doms

GeomDomains may be a meshDomain or a compositeDomain of union type (domains intersection are not managed) when a domain contains all others, the function returns it when the union gives an existing domain, the function returns it else the function return a new compositeDomain (union)

Note

do not confuse geometrical union with union of domains which is a semantic union (no geometrical analysis is performed) Geometrical union is an internal tool, end users do not have to use it

ValueType get_value_type(const string_t&)

get the type of the parameter value by name

inline Vector<real_t> &getB()
inline Vector<real_t> &getB(number_t t)
inline number_t getBasisIndex()
inline number_t getBasisIndex(number_t t)
inline Vector<real_t> &getBx()
inline Vector<real_t> &getBx(number_t t)
inline Vector<real_t> &getBy()
inline Vector<real_t> &getBy(number_t t)
Strings getComponentBordersToGeo(const Geometry &g)

returns the borders numbers of a canonical geometry in a geo file

writing the borders numbers of a canonicl geometry in a geo file

inline number_t getDerivative()
inline number_t getDerivative(number_t t)
inline Dof &getDof()
inline Dof &getDof(number_t t)
inline GeomDomain &getDomain()
inline GeomDomain &getDomainx()
inline GeomDomain &getDomainy()
inline GeomElement &getElement()
inline GeomElement &getElement(number_t t)
inline GeomElement *getElementP()
inline GeomElement *getElementP(number_t t)
inline FeDof &getFeDof()
inline FeDof &getFeDof(number_t t)
template<class T>
inline DefaultSPStorage<T>::PointerType getImpl(const DefaultSPStorage<T> &sp)
template<class T>
inline const DefaultSPStorage<T>::StoredType &getImplConstRef(DefaultSPStorage<T> &sp)
template<class T>
inline const DefaultSPStorage<T>::StoredType &getImplRef(const DefaultSPStorage<T> &sp)
template<class T>
inline DefaultSPStorage<T>::StoredType &getImplRef(DefaultSPStorage<T> &sp)
inline Vector<real_t> &getN()
inline Vector<real_t> &getN(number_t t)
inline const Vector<real_t> &getNormalVectorFrom(const Parameters &pa)
inline Vector<real_t> &getNx()
inline Vector<real_t> &getNx(number_t t)
inline const Vector<real_t> &getNxVectorFrom(const Parameters &pa)
inline Vector<real_t> &getNy()
inline Vector<real_t> &getNy(number_t t)
inline const Vector<real_t> &getNyVectorFrom(const Parameters &pa)
template<typename T>
inline const RefCounted<T>::CountType &getRefCounted(const RefCounted<T> &ref)
template<typename T>
inline RefCounted<T>::CountType &getRefCounted(RefCounted<T> &ref)
template<typename T>
bool getRefCountedAlloc(RefCounted<T> &ref)
RefElement *getRefElt(number_t elmType, const GMSHMAP &gmMap, number_t *nb_pts, number_t *elmDim, bool *isSimplex)
inline Vector<real_t> &getT()
inline Vector<real_t> &getT(number_t t)
inline Vector<real_t> &getTx()
inline Vector<real_t> &getTx(number_t t)
inline Vector<real_t> &getTy()
inline Vector<real_t> &getTy(number_t t)
inline Vector<real_t> &getVector(UnitaryVector un)
template<typename K>
std::vector<PolynomialT<K>> grad(const MonomialT<K> &m, dimen_t d = 3)
template<typename K>
PolynomialsBasisT<K> grad(const PolynomialBasisT<K> &ps)
template<typename K>
std::vector<PolynomialT<K>> grad(const PolynomialT<K> &p, dimen_t d = 3)
OperatorOnUnknown &grad(const Unknown &un)
OperatorOnKernel &grad_x(const Kernel&)

grad_x(k)

OperatorOnKernel &grad_x(OperatorOnKernel&)

grad_x(opk)

OperatorOnKernel &grad_y(const Kernel&)

grad_y(k)

OperatorOnKernel &grad_y(OperatorOnKernel&)

grad_y(opk)

OperatorOnUnknown &gradG(const Unknown &un, const complex_t &ax, const complex_t &ay, const complex_t &az, const complex_t &at)
OperatorOnUnknown &gradS(const Unknown &un)
void gradxgradyover4pir(const Point&, const Point&, Vector<Vector<real_t>>&)

\(grad_xgrad_y/(4\pi r)\)

void gradxover4pir(const Point&, const Point&, Vector<real_t>&)

\(grad_x/(4\pi r)\)

inline complex_t hankelH1(const complex_t &z, real_t N)

Hankel function of the first kind and order N: H1_N(z) = J_N(z) + i Y_N(z) (complex case)

template<>
inline complex_t hankelH1(real_t x, real_t N)

Hankel function of the first kind and real order N: H1_N(x) = J_N(x) + i Y_N(x)

template<class T_>
complex_t hankelH1(real_t x, T_ N)
inline complex_t hankelH10(const complex_t &z)

Hankel function of the first kind and order 0 : H1_0(z) = J_0(z) + i Y_0(z) (complex case)

complex_t hankelH10(real_t x)

Hankel function of the first kind and order 0 : H1_0(x) = J_0(x) + i Y_0(x)

std::vector<complex_t> hankelH10N(real_t x, number_t N)

Hankel functions of the first kind and order 0 … N: H1_k(x) = J_k(x) + i Y_k(x)

inline complex_t hankelH11(const complex_t &z)

Hankel function of the first kind and order 1 : H1_1(z) = J_1(z) + i Y_1(z) (complex case)

complex_t hankelH11(real_t x)

Hankel function of the first kind and order 1 : H1_1(x) = J_1(x) + i Y_1(x)

inline complex_t hankelH2(const complex_t &z, real_t N)

Hankel function of the second kind and order N: H2_N(z) = J_N(z) - i Y_N(z) (complex case)

template<>
inline complex_t hankelH2(real_t x, real_t N)

Hankel function of the second kind and real order N: H2_N(x) = J_N(x) - i Y_N(x)

template<class T_>
complex_t hankelH2(real_t x, T_ N)
inline complex_t hankelH20(const complex_t &z)

Hankel function of the second kind and order 0 : H2_0(z) = J_0(z) + i Y_0(z) (complex case)

inline complex_t hankelH20(real_t x)

Hankel function of the second kind and order 0 : H2_0(x) = J_0(x) - i Y_0(x)

std::vector<complex_t> hankelH20N(real_t x, number_t N)

Hankel functions of the second kind and order 0 … N: H2_k(x) = J_k(x) - i Y_k(x)

inline complex_t hankelH21(const complex_t &z)

Hankel function of the second kind and order 1 : H2_1(z) = J_1(z) - i Y_1(z) (complex case)

inline complex_t hankelH21(real_t x)

Hankel function of the second kind and order 1 : H2_1(x) = J_1(x) - i Y_1(x)

bool hasAnalyticGeodesic(const Geometry &geo)
template<typename T>
bool hasCommonElts(const ClusterNode<T> &cn1, const ClusterNode<T> &cn2)
bool hasGeometricGeodesic(const Geometry &geo)
complex_t Helmholtz2d(const Point &x, const Point &y, Parameters &pa = defaultParameters)

value

Vector<complex_t> Helmholtz2dGradx(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradx

Vector<complex_t> Helmholtz2dGradxReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

reg gradx

Vector<complex_t> Helmholtz2dGradxSing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

sing gradx

Matrix<complex_t> Helmholtz2dGradxy(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradxy

Matrix<complex_t> Helmholtz2dGradxyReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

reg gradxy

Matrix<complex_t> Helmholtz2dGradxySing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

sing gradxy

Vector<complex_t> Helmholtz2dGrady(const Point &x, const Point &y, Parameters &pa = defaultParameters)

grady

Vector<complex_t> Helmholtz2dGradyReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

reg grady

Vector<complex_t> Helmholtz2dGradySing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

sing grady

complex_t Helmholtz2dHalfPlane(const Point &x, const Point &y, Parameters &pa = defaultParameters)

Helmholtz kernel in a half-plane with either Dirichlet or Neumann boundary condition half plane P is defined by AY.n >0 where A(a1,a2) is a point of a line L, t = (t1,t2) the tangent vector and n=(-t2,t1) kernel is built from source image Ys = 2A - Y +2*(AY.t)t/|t|^2.

 Hd(X,Y) = H(X,Y) - H(X,Ys)   satisfy Hd(X,Y) =0 for Y in L (say Dirichlet condition)
 Hd(X,Y) = H(X,Y) + H(X,Ys)   satisfy grad(Hd(X,Y)).n =0 for Y in L (say Neumann condition)
Note that dy1(Ys1) = -1+2*t1^2/|t|^2 dy2(Ys1) = 2*t1*t2/|t|^2 dy1(Ys2) = 2*t1^2/|t|^2 dy2(Ys2) = -1 + 2*t2^2/|t|^2

This kernel manage the following parameters bc: boundary condition type on line L (_Dirichlet (default),_Neumann) k: wave number a,b: origin of the line (default (0,0)) t1,t2 : tangent vector of the line (default (1,0))

Vector<complex_t> Helmholtz2dHalfPlaneGradx(const Point &x, const Point &y, Parameters &pa)
Matrix<complex_t> Helmholtz2dHalfPlaneGradxy(const Point &x, const Point &y, Parameters &pa)
Vector<complex_t> Helmholtz2dHalfPlaneGrady(const Point &x, const Point &y, Parameters &pa)
Kernel Helmholtz2dHalfPlaneKernel(Parameters& = defaultParameters)

construct a Helmholtz2dHalfPlane kernel

Kernel Helmholtz2dHalfPlaneKernel(real_t k, const std::vector<real_t> &t = Point(1., 0.), const Point &A = Point(0., 0.), BoundaryCondionType bct = _Dirichlet)

construct a Helmholtz2dHalfPlane kernel from k, point, vector, bc

Kernel Helmholtz2dHalfPlaneKernel(real_t k, real_t t1 = 1., real_t t2 = 0., real_t a = 0., real_t b = 0., BoundaryCondionType bct = _Dirichlet)

construct a Helmholtz2dHalfPlane kernel from from k, point, vector, bc

complex_t Helmholtz2dHalfPlaneNxdotGradx(const Point &x, const Point &y, Parameters &pa)
complex_t Helmholtz2dHalfPlaneNydotGrady(const Point &x, const Point &y, Parameters &pa)
Kernel Helmholtz2dKernel(const real_t &k)

construct a Helmholtz2d kernel from real k

Kernel Helmholtz2dKernel(Parameters& = defaultParameters)

construct a Helmholtz2d kernel

Kernel Helmholtz2dKernelReg(Parameters& = defaultParameters)

construct a Helmholtz2d kernel, regular part

Kernel Helmholtz2dKernelSing(Parameters& = defaultParameters)

construct a Helmholtz2d kernel, singular part

complex_t Helmholtz2dNxdotGradx(const Point &x, const Point &y, Parameters &pa = defaultParameters)

nx.gradx

complex_t Helmholtz2dNydotGrady(const Point &x, const Point &y, Parameters &pa = defaultParameters)

ny.grady

complex_t Helmholtz2dReg(const Point &x, const Point &y, Parameters &pa)

Regular part of Helmholtz2d function i/4 H^{(1)}_0(k*r) - log(k*r)/(2*pi)

reg value

complex_t Helmholtz2dSing(const Point &x, const Point &y, Parameters &pa)

Singular part of Helmholtz2d function - log(r)/(2*pi)

sing value

complex_t Helmholtz2dStrip(const Point &x, const Point &y, Parameters &pa)
complex_t Helmholtz2dStripDir(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Vector<complex_t> Helmholtz2dStripGradx(const Point &x, const Point &y, Parameters &pa)
Vector<complex_t> Helmholtz2dStripGradxDir(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Vector<complex_t> Helmholtz2dStripGradxNeu(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Matrix<complex_t> Helmholtz2dStripGradxy(const Point &x, const Point &y, Parameters &pa)
Matrix<complex_t> Helmholtz2dStripGradxyDir(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Matrix<complex_t> Helmholtz2dStripGradxyNeu(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Vector<complex_t> Helmholtz2dStripGrady(const Point &x, const Point &y, Parameters &pa)
Vector<complex_t> Helmholtz2dStripGradyDir(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Vector<complex_t> Helmholtz2dStripGradyNeu(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
Kernel Helmholtz2dStripKernel(BoundaryCondionType bct, real_t k, real_t h = 1., number_t n = 1000, real_t l = -1., real_t e = 1.E-6)

construct a Helmholtz2dStrip kernel from k, h, n, …

Kernel Helmholtz2dStripKernel(Parameters& = defaultParameters)

construct a Helmholtz2d kernel

complex_t Helmholtz2dStripNeu(const Point &x, const Point &y, real_t k, real_t h, real_t l, number_t N, real_t eps)
complex_t Helmholtz2dStripNxdotGradx(const Point &x, const Point &y, Parameters &pa)
complex_t Helmholtz2dStripNydotGrady(const Point &x, const Point &y, Parameters &pa)
complex_t Helmholtz3d(const Point &x, const Point &y, Parameters &pa = defaultParameters)

value

Vector<complex_t> Helmholtz3dGradx(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradx

Vector<complex_t> Helmholtz3dGradxReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradx

Vector<complex_t> Helmholtz3dGradxSing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradx

Matrix<complex_t> Helmholtz3dGradxy(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradxy

Matrix<complex_t> Helmholtz3dGradxyReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradxy

Matrix<complex_t> Helmholtz3dGradxySing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

gradxy

Vector<complex_t> Helmholtz3dGrady(const Point &x, const Point &y, Parameters &pa = defaultParameters)

grady

Vector<complex_t> Helmholtz3dGradyReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

grady

Vector<complex_t> Helmholtz3dGradySing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

grady

Kernel Helmholtz3dKernel(const complex_t &k)

construct a Helmholtz3d kernel from complex k

Kernel Helmholtz3dKernel(const real_t &k)

construct a Helmholtz3d kernel from real k

Kernel Helmholtz3dKernel(Parameters& = defaultParameters)

construct a Helmholtz3d kernel from parameters

Kernel Helmholtz3dKernelReg(Parameters& = defaultParameters)

construct a Helmholtz3d kernel from parameters

Kernel Helmholtz3dKernelSing(Parameters& = defaultParameters)

construct a Helmholtz3d kernel from parameters

complex_t Helmholtz3dNxdotGradx(const Point &x, const Point &y, Parameters &pa = defaultParameters)

nx.gradx

complex_t Helmholtz3dNydotGrady(const Point &x, const Point &y, Parameters &pa = defaultParameters)

ny.grady

complex_t Helmholtz3dNydotGradyReg(const Point &x, const Point &y, Parameters &pa)
complex_t Helmholtz3dReg(const Point &x, const Point &y, Parameters &pa = defaultParameters)

value

complex_t Helmholtz3dSing(const Point &x, const Point &y, Parameters &pa = defaultParameters)

value

template<class T>
T HelmholtzSingDLP0(T k, const Element *elt, const Point &pos)
template<class T>
void HelmholtzSingDLP1(T k, const Element *elt, const Point &pos, Vector<T> &res)
template<typename T1_iterator, typename T2_iterator>
complex_t hermitianInnerProductTpl(T1_iterator b1, T1_iterator e1, T2_iterator b2)

hermitian product

template<typename T, typename K>
T hermitianProduct(const std::vector<std::pair<number_t, T>> &u, const std::map<number_t, K> &v)
complex_t hermitianProduct(const SuTermVector&, const SuTermVector&)

hermitian product

complex_t hermitianProduct(const TermVector &tv1, const TermVector &tv2)

hermitian product

template<typename K1, typename K2>
complex_t hermitianProduct(const Vector<K1> &vecFirst, const Vector<K2> &vecSecond)
complex_t hermitianProduct(const VectorEntry&, const VectorEntry&)

hermitian product of two vectorentry’s

Quadrature *hexahedronQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit hexahedron

template<class Geom>
Geom homothetize(const Geom &g, const Parameter &p1)

apply a homothety on a Geom (1 key) (template external)

template<class Geom>
Geom homothetize(const Geom &g, const Parameter &p1, const Parameter &p2)

apply a homothety on a Geom (2 keys) (template external)

template<class Geom>
Geom homothetize(const Geom &g, const Point &c = Point(0., 0., 0.), real_t factor = 0.)

apply a homothety on a Geom (template external)

template<class Geom>
Geom homothetize(const Geom &g, real_t factor)

apply a homothety on a Geom (template external)

inline Geometry homothetize(const Geometry &g, const Parameter &p1)

apply a homothety on a Geometry (1 key) (template external)

inline Geometry homothetize(const Geometry &g, const Parameter &p1, const Parameter &p2)

apply a homothety on a Geometry (2 keys) (template external)

inline Geometry homothetize(const Geometry &g, const Point &c = Point(0., 0., 0.), real_t factor = 0.)

apply a homothety on a Geometry (template external)

inline Geometry homothetize(const Geometry &g, real_t factor)

apply a homothety on a Geometry (template external)

Mesh homothetize(const Mesh &m, const Parameter &p1)

apply a homothety on a Mesh (1 key)

apply a homothety on a Mesh (1 key) (external)

Mesh homothetize(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a homothety on a Mesh (2 keys)

apply a homothety on a Mesh (2 keys) (external)

Mesh homothetize(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a homothety on a Mesh (3 keys)

apply a homothety on a Mesh (3 keys) (external)

Mesh homothetize(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)

apply a homothety on a Mesh (4 keys)

apply a homothety on a Mesh (4 keys) (external)

Mesh homothetize(const Mesh &m, const Point &c, real_t factor = 1.)

apply a homothety on a Mesh (external)

Mesh homothetize(const Mesh &m, real_t factor)

apply a homothety on a Mesh (external)

inline Point homothetize(const Point &g, const Parameter &p1)

apply a homothety on a Point (1 key) (template external)

inline Point homothetize(const Point &g, const Parameter &p1, const Parameter &p2)

apply a homothety on a Point (2 keys) (template external)

inline Point homothetize(const Point &g, const Point &c = Point(0., 0., 0.), real_t factor = 0.)

apply a homothety on a Point (template external)

inline Point homothetize(const Point &g, real_t factor)

apply a homothety on a Point (template external)

template<typename scalar1, typename T1_iterator, typename scalar2>
scalar2 hornerAlgorithmTpl(scalar1 x, T1_iterator b, T1_iterator e, scalar2 p0)

if p0 == 0 this is Horner algorithm: a[n] + x * (a[n-1] + x * (a[n-2] +…+ x * (a[0])…)) else compute a[n] + x * (a[n-1] + x * (a[n-2] +…+ x * (a[0] + x * p0)…))

OperatorOnFunction &id(const Function&)

id(k)

OperatorOnKernel &id(const Kernel&)

id(k)

OperatorOnUnknown &id(const Unknown&)

“differential” operators applied to unknown

OperatorOnFunction &id(OperatorOnFunction&)

id(opf)

OperatorOnKernel &id(OperatorOnKernel&)

id(opk)

template<typename T>
LargeMatrix<T> identityMatrix(const LargeMatrix<T> &mat)
void iFactorize(MatrixEntry&, MatrixEntry&, FactorizationType ft = _noFactorization)

factorize matrix as iLU (later or iLDLt or iLDL*)

void iFactorize(MatrixEntry &A, FactorizationType ift)

incomplete factorize matrix as ILU (or iLDLt or iLDL*), not preserving A

factorize matrix as iLU (later or iLDLt or iLDL*)

void iFactorize(TermMatrix &A, FactorizationType ft)
void iFactorize(TermMatrix &A, TermMatrix &Af, FactorizationType ft)
template<typename T>
std::vector<complex_t> ifft(const std::vector<T> &f)
template<typename T>
std::vector<complex_t> &ifft(const std::vector<T> &f, std::vector<complex_t> &g)
template<typename IterA, typename IterB>
void ifft(IterA ita, IterB itb, number_t log2n)

perform the inverse discrete Fourier transform of the discrete vector a of length n=2^log2n the result is the vector b of length 2^log2n bk = (1/n) sum_j=0,n-1 aj*exp(2*i*pi*j*k/n) ita: iterator at the beginning of a itb: iterator at the beginning of b log2n: log_2(n)

template<typename S>
void ildlstarFactorize(LargeMatrix<S> &mat)
template<typename S>
void ildltFactorize(LargeMatrix<S> &mat)
void ildltFactorize(TermMatrix &A, TermMatrix &Af)
template<typename S>
void illstarFactorize(LargeMatrix<S> &mat)
template<typename S>
void illtFactorize(LargeMatrix<S> &mat)
void illtluFactorize(TermMatrix &A, TermMatrix &Af)
template<typename S>
void iluFactorize(LargeMatrix<S> &mat)
void iluFactorize(TermMatrix &A, TermMatrix &Af)
inline SymbolicFunction &imag(const SymbolicFunction &f)
TermMatrix imag(const TermMatrix &tm)

return imag part as a real TermMatrix

TermVector imag(const TermVector &tv)

extracts imag part

Vector<real_t> imag(const Vector<complex_t> &a)

imaginary part of a complex vector

Vector<real_t> imag(const Vector<real_t> &a)

real part of a complex vector

imaginary part of a real vector

Vector<Vector<real_t>> imag(const Vector<Vector<complex_t>> &a)

abs of a vector of complex vectors

imaginary part of a vector of complex vectors

Vector<Vector<real_t>> imag(const Vector<Vector<real_t>> &a)

abs of a vector of real vectors

imaginary part of a vector of real vectors

inline real_t imagPart(const complex_t&)
Matrix<real_t> imagPart(const Matrix<complex_t> &cB)

imaginary part of a complex matrix

imag part of a complex matrix

Matrix<real_t> imagPart(const Matrix<real_t> &cB)

imag part of a real matrix

inline real_t imagPart(const real_t&)
inline SuTermVector imagPart(const SuTermVector &s)
template<typename T1_iterator, typename R_iterator>
void imagTpl(T1_iterator b1, T1_iterator e1, R_iterator Rb)

returns imaginary part of vector entries: R[i] = imag(T1[i])

void incompleteFunction(const string_t &s = "")

message sent when function not fully defined

template<typename T>
void info(const string_t &msgIds, const T &v, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2>
void info(const string_t &msgIds, const T1 &v1, const T2 &v2, Messages *msgSrc = theMessages_p)
void info(const string_t &msgIds, MsgData &msgData, Messages *msgSrc)

shortcut of msg for info type messages

throw info messages

void init()

initializes execution of XLiFE++

void init(const Parameter &p1)
void init(const Parameter &p1, const Parameter &p2)
void init(const Parameter &p1, const Parameter &p2, const Parameter &p3)
void init(const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
void init(const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
void init(const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
void init(const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
void init(const std::vector<Parameter> &ps, int argc, char **argv)
void init(int argc, char **argv)
void init(int argc, char **argv, const Parameter &p1)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
void init(int argc, char **argv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
void initBuild(Language lang, number_t verboseLevel, int_t nbThreads, bool trackingMode, bool pushpop, bool traceMemory, bool isLogged, const std::vector<string_t> &syskeys, const std::vector<string_t> &authorizedExtensions)

initialize execution of XLiFE++

void initCylinderSidePartGeodesic(Parameters &params)
void initGmshMap(GMSHMAP &gmMap)
void initHelmholtz2dHalfPlaneKernel(Kernel&, Parameters&)

initialize kernel data

void initHelmholtz2dKernel(Kernel&, Parameters&)

initialize kernel data

void initHelmholtz2dStripKernel(Kernel&, Parameters&)

initialize kernel data

void initHelmholtz3dKernel(Kernel&, Parameters&)

initialize kernel data

void initMaxwell3dKernel(Kernel&, Parameters&)

initialize kernel data

void initRandomGenerators(int)

initialize random generators from a seed

complex_t innerProduct(const SuTermVector&, const SuTermVector&)

inner product

complex_t innerProduct(const TermVector &tv1, const TermVector &tv2)

inner product

complex_t innerProduct(const VectorEntry&, const VectorEntry&)

inner product of two vectorentry’s

int_t integer(const Parameter&)

cast to int

template<typename K>
PolynomialT<K> integral(VariableName vn, const MonomialT<K> &m)
template<typename K>
PolynomialT<K> integral(VariableName vn, const PolynomialT<K> &p)
template<typename K>
std::vector<PolynomialT<K>> integral(VariableName vn, const std::vector<PolynomialT<K>> &ps)
TermMatrix integralRepresentation(const GeomDomain&, const LinearForm&, string_t nam = "IR")

integral representation, no unknown

template<typename T>
Vector<T> &integralRepresentation(const GeomDomain &dom, const LinearForm &lf, const TermVector &U, Vector<T> &val, std::vector<Point> &xs)

points are given from a GeomDomain, return values and points in input arguments list (pts)

template<typename T>
Vector<T> &integralRepresentation(const GeomDomain &dom, const std::pair<LinearForm, const TermVector*> lftv, Vector<T> &val, std::vector<Point> &pts)
TermMatrix integralRepresentation(const std::vector<Point>&, const LinearForm&, string_t nam = "IR")

integral representation, no unknown, no domain

template<typename T>
Vector<T> &integralRepresentation(const std::vector<Point> &xs, const LinearForm &lf, const TermVector &U, Vector<T> &val, const std::vector<Vector<real_t>> &ns = std::vector<Vector<real_t>>())

compute integral representation on a set of points: intg_gamma op(K)(xi,y) aop op(u) dy op(K) : operator on a Kernel K op(u) : operator on a TermVector u (defined on gamma) aop: algebraic operator

syntax examples: Vector<real_t> val; integralRepresentation(Points, intg(gamma,G * u), U, val); //U values of unknown integralRepresentation(Points, intg(gamma,(grad_y(G)|_ny) * u, U, GaussLegendre,3), val); integralRepresentation(Points, intg(gamma,(grad_x(G)|_nx) * u, U, GaussLegendre,3), val);

be cautious, returned values may be of type Vector<real_t>, Vector<complex_t> and has to be consistent with computation

template<typename T>
Vector<Vector<T>> &integralRepresentation(const std::vector<Point> &xs, const LinearForm &lf, const TermVector &U, Vector<Vector<T>> &val, const std::vector<Vector<real_t>> &ns = std::vector<Vector<real_t>>())

compute integral representation on a set of points returning a vector of vector

template<typename T>
Vector<T> &integralRepresentation(const std::vector<Point> &xs, const std::pair<LinearForm, const TermVector*> lftv, Vector<T> &val, const std::vector<Vector<real_t>> &ns = std::vector<Vector<real_t>>())
TermVector integralRepresentation(const Unknown&, const GeomDomain&, const LinearForm&, const TermVector&, const string_t &nam = "IR")

integralRepresentation, points are given from a GeomDomain, return a TermVector related to unknown u

TermMatrix integralRepresentation(const Unknown&, const GeomDomain&, const LinearForm&, string_t nam = "IR")

integral representation

inline TermVector integralRepresentation(const Unknown &u, const GeomDomain &dom, std::pair<LinearForm, const TermVector*> lftv, const string_t &nam = "IR")
real_t integrandLapDLP0(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip)
real_t integrandLapDLP1const(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip)
void integrandLapDLP1lin(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip, Vector<real_t> &res)
real_t integrandLapSLP0(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip, real_t alpha = 1.)

Explicit primitives

real_t integrandLapSLP1const(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip, real_t alpha = 1.)
void integrandLapSLP1lin(const Point &Sm, const Point &Sp, real_t h, real_t d, const Point &Ip, Vector<real_t> &res, real_t alpha = 1.)
GeomDomain &internalSides(GeomDomain &dom)

access to domain defined from all internal sides of elements of domain dom, create it if not defined

TermVector interpolate(const Unknown&, const GeomDomain&, const TermVector&, const string_t &na = "")

interpolation of a TermVector on a domain, specifying unknown

void interpolatedNormals(Space &sp, std::vector<Vector<real_t>> &ns)

compute interpolated normals on Lagrange Dofs of space sp solve the projection problem Mk*nk = M0*n0 where Mk is the mass matrix associated to sp interpolation M0 is the “hybrid” mass matrix between sp interpolation and P0 interpolation the normals are returned as a vector of Vector

compute interpolated normals on Lagrange Dofs of space sp

NOTE: this method is well adapted for planar element (same normal every where in element) in case of curved geometric element, the method may be improved by using Gauss Lobatto interpolation of higher degree

Interpolation &interpolation(FEType typ, FESubType sub, number_t num, SobolevType spa)

main “constructor” by finding first if already exists

TermVector interpolent(const Unknown &u, const GeomDomain &dom, const Function &f, const Function &gradf, const Function &grad2f)

evaluate dofs on a function: dof_i(f) for any dofs related to unknown u and domain

bool intersect(const GeomElement &E1, const GeomElement &E2, real_t tol)
Point intersectionHalfLineEllipse(const Point &M, const std::vector<real_t> &d, const Point &C, const Point &A, const Point &B, bool &hasUniqueIntersection, real_t tmin, real_t tmax, real_t tol)

intersection half line (M,D) with ellipse (C,A,B, tmin, tmax) C center, A first apogee, B second apogee, sector [tmin,tmax], tmin,tmax in [0,2pi] P(t)= C + CA*cos(t) + CB*sin(t) t in (tmin,tmax) P1=P(tmin), P2=P(tmax) return void Point if no intersection or on boundary assume 3D points, A!=B, D!=0 and DxAB!=0 (non paralell)

intersection half line (M,d) with ellipse (C,A,B,tmin,tmax)

Point intersectionHalfLinePolygon(const Point &M, const std::vector<real_t> &d, const std::vector<Point> &vs, bool &hasUniqueIntersection, real_t tol)

intersection half line (M,D) with polygon given by its vertices

intersection half line (M,d) with polygon vs=(v1,v2,…vn)

Point intersectionHalfLineSegment(const Point &M, const std::vector<real_t> &d, const Point &A, const Point &B, bool &hasUniqueIntersection, real_t tol)

intersection of half line [M,d) with segment [AB] return void Point if no intersection or non unique point assume 3D points, A!=B, d!=0

intersection half line (M,d) with segment [AB]

std::pair<Point, Point> intersectionOfPlanes(const Point &S1, const Point &S2, const Point &S3, const Point &T1, const Point &T2, const Point &T3)

straight line intersection I of 2 planes (S1,S2,S3) and (T1,T2,T3) returns a pair of points defining the intersection

straight line intersection of 2 planes defined respectively by 3 non aligned points

Point intersectionOfPlanesWithOneSharedPoint(const Point &S1, const Point &S2, const Point &S3, const Point &T2, const Point &T3)

straight line intersection of 2 planes (S1,S2,S3) and (S1,T2,T3) S1 is on the intersection, so the remaining calculations are shorter returns a point defining the intersection with S1

straight line intersection of 2 planes defined respectively by 3 non aligned points with one vertex in common

bool intersectionOfSegments(const Point &A, const Point &B, const Point &C, const Point &D, Point &I, real_t tol)

unique intersection of segments [AB] and [CD], in 2D-3D all points have the same dimension, return true if intersection exists and is unique, else false (CDAB non coplanar or CD//AB) I= (1-alpha)*C + alpha*D = (1-gamma)*A + gamma*B and nCD: normal to CD in CDAB plane gamma = AC.nCD / PQ.nCD alpha = (AP+gamma*AB.CD)/CD.CD alpha and gamma must belong to [0,1] with a tolerance t, say [-t, 1+t]

Point intersectionOfStraightLines(const Point &S1, const Point &S2, const Point &T1, const Point &T2, bool &hasIntersect)

intersection point I of straight lines (S1S2) and (T1T2) if (S1S2) // (T1T2), I is of size 0 and hasIntersect is set to false else hasIntersect is set to true

intersection of straight lines

bool intersectionSegmentQuadrangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, const Point &D, Point &I, Point &J, real_t tol)
bool intersectionSegmentTriangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, Point &I, Point &J, real_t tol)

strict intersection of [P,Q] and triangle [A,B,C] all points must have the same dimension (not checked) return true if some intersection points exist else false in 3D non coplanar case: return one or no point in 3D coplanar or 2D cases: return one or two or no point in other words, if intersection is a segment [I,J] (I!=J) it returns false ans I,J are not updated

std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv)

User single intg routines involving Kernel and TermVector (with up to 5 keys)

std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const IntegrationMethod &im)

Deprecated:

use key-value system for optional arguments (_quad, _order, _method, …)

std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const IntegrationMethods &ims)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const Parameter &p1)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const Parameter &p1, const Parameter &p2)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const Parameter &p1, const Parameter &p2, const Parameter &p3)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, const std::vector<Parameter> &ps)

main routine for single integrals involving Kernel and TermVector

std::pair<LinearForm, const TermVector*> intg(const GeomDomain &dom, const KernelOperatorOnTermVector &koptv, QuadRule qr, number_t qro)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus)

Basic single intg routines with kernels for users (with up to 10 keys)

LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &dom, const KernelOperatorOnUnknowns &kopus, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu)

Advanced (linear combinations) single intg routines for users (with up to 10 keys)

LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, ComputationType ct, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, ComputationType ct, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, ComputationType ct, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &lcopu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknown &Lcopu, QuadRule qr, number_t qo, bool isogeo)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus)

Advanced (linear combinations) single intg routines for users (with up to 10 keys)

BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, bool isogeo, QuadRule qr, number_t qo = 0, SymType st = _undefSymmetry)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, QuadRule qr, number_t qo, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &dom, const LcOperatorOnUnknowns &lcopus, SymType st)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu)

Basic single intg routines for users (with up to 10 keys)

BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, bool isogeo, QuadRule qr, number_t qo = 0, SymType st = _undefSymmetry)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, bool isogeo, SymType st = _undefSymmetry)

construct a simple intg bilinear form

BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)

Deprecated:

use key-value system for optional arguments (_quad, _order, _method, _symmetry, _isogeo, …)

BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, SymType st = _undefSymmetry)

construct a simple intg bilinear form

LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, ComputationType ct, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, ComputationType ct, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, ComputationType ct, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, const std::vector<Parameter> &ps)

main routine for single integrals

LinearForm intg(const GeomDomain &dom, const OperatorOnUnknown &opu, QuadRule qr, number_t qo, bool isogeo)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus)

Basic single intg routines for users (with up to 10 keys)

BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, bool isogeo, QuadRule qr, number_t qo = 0, SymType st = _undefSymmetry)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, const std::vector<Parameter> &ps)

main routine for single integrals

BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, QuadRule qr, number_t qo, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &dom, const OperatorOnUnknowns &opus, SymType st)
LinearForm intg(const GeomDomain &dom, const Unknown &u)
LinearForm intg(const GeomDomain &dom, const Unknown &u, bool isogeo)

Deprecated:

use key-value system for optional arguments (_quad, _order, _method, _symmetry, _isogeo, …)

LinearForm intg(const GeomDomain &dom, const Unknown &u, ComputationType ct, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const Unknown &u, ComputationType ct, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const Unknown &u, ComputationType ct, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const IntegrationMethod &im, bool isogeo)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const IntegrationMethods &ims, bool isogeo)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &dom, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &dom, const Unknown &u, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv)

User single intg routines involving Kernel and TermVector (with up to 5 keys)

LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const IntegrationMethod &im)

construct a simple intg linear form from KernelOperatorOnTermVector

Deprecated:

use key-value system for optional arguments (_quad, _order, _method, …)

LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const Parameter &p1)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, const std::vector<Parameter> &ps)

main routine for double integrals involving Kernel and TermVector

LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnTermVectorAndUnknown &koptvv, QuadRule qr, number_t qo)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus)

Basic double intg routines with kernels for users.

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, const std::vector<Parameter> &ps)

main routine to double integrals

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const KernelOperatorOnUnknowns &kopus, SymType st)

construct a double intg bilinear form from kernel operators combination

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus)

Advanced (linear combinations) double intg routines with kernels for users.

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, const std::vector<Parameter> &ps)

main routine for advanced (linear combinations) intg routines with kernels

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const LcKernelOperatorOnUnknowns &lckopus, SymType st)

construct a double intg bilinear form from kernel operators combination and integration methods

LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu)

Basic double intg routines for users (with up to 10 keys)

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, SymType st)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const IntegrationMethod &im, bool isogeo = false)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknown &opu, const std::vector<Parameter> &ps)

main routine for double integrals

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus)

Basic double intg routines without kernels, for users.

BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, bool isogeo, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const IntegrationMethod &im, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const IntegrationMethod &im, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const IntegrationMethods &ims, bool isogeo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const IntegrationMethods &ims, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, QuadRule qr, number_t qo, SymType st)
BilinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const OperatorOnUnknowns &opus, SymType st)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const IntegrationMethod &im, bool isogeo = false)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9)
LinearForm intg(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7, const Parameter &p8, const Parameter &p9, const Parameter &p10)
LinearForm intg(const GeomDomain &domx, const GeomDomain &domy, const OperatorOnUnknown &opu, QuadRule qr, number_t qo, bool isogeo)
LinearForm intg(const GeomDomain &domx, const GeomDomain &domy, const Unknown &u, QuadRule qr, number_t qo, bool isogeo)
void intgBFBuildParam(const Parameter &p, real_t &bound, bool &isogeom, IntegrationMethod *&meth, IntegrationMethods &meths, QuadRule &qr1, number_t &qo1, QuadRule &qr2, number_t &qo2, SymType &st, const GeomDomain *&extdomu, const GeomDomain *&extdomv)

get values of keys used in intg routines

void intgBFParamCompatibility(const ParameterKey &key, std::set<ParameterKey> &usedParams)

check compatibility between keys used in intg routines

void intgLfBuildParam(const Parameter &p, real_t &bound, bool &isogeom, IntegrationMethod *&meth, IntegrationMethods &meths, QuadRule &qr, number_t &qo, SymType &st, ComputationType &ct, const GeomDomain *&extdom)

get values of keys used in intg routines

void intgLfParamCompatibility(const ParameterKey &key, std::set<ParameterKey> &usedParams)

check compatibility between keys used in intg routines

inline dimen_t intToDim(int_t i, const string_t &loc = "?")
inline number_t intToNum(int_t i, const string_t &loc = "?")
SymbolicTermMatrix &inv(const TermMatrix &M)
SymbolicTermMatrix &inv(SymbolicTermMatrix &S)
void invalidFunction(const string_t &s = "")

message sent when function not valid

Vector<real_t> invCylinderSidePartGeodesic(const Point &pt, Parameters &params, DiffOpType d)
template<typename K>
Matrix<K> inverse(const Matrix<K> &m)
TermMatrix inverse(TermMatrix &A)
inline Vector<real_t> invParametrization_BezierSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_BSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_C2Spline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_CatmullRomSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_CircArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_EllArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Ellipse(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_EllipsoidSidePart(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Nurbs(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Parallelogram(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_ParametrizedArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Piecewise(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Quadrangle(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Segment(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_SplineArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_SplineSurface(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

inline Vector<real_t> invParametrization_Triangle(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call (Duffy)

inline Vector<real_t> invParametrization_TrunkSidePart(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern invParametrization call

vector<pair<ShapeType, vector<number_t>>> ioElementsBySplitting(const Space *sp, map<number_t, number_t> renumbering)

construct list of node numbers for each element after splitting space elements return the list of pair of shape O1 element and node number

pair<vector<Point>, map<number_t, number_t>> ioPoints(const Space *sp)

extract coordinates of output order 1 split mesh from dofs return as a pair, the list of O1 nodes and the renumbering map dofid -> i (rank of O1 node)

inline bool is32bits()
inline bool is64bits()
bool isComment(const string_t &line)

check if the current line is not a comment

bool isequal(const SymbolicFunction&, const SymbolicFunction&)

check equality of two symbolic functions

bool isNameAvailable(const string_t &keyname)

check if a name is not a system key name

bool isPathExist(const string_t &path)

check if path exists

inline bool isPointInQuadrangle(const Point &P, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol = theEpsilon)

test if a point P is inside a quadrangle ABCD

bool isPointInSegment(const Point &P, const Point &A, const Point &B, real_t tol)

test if P belongs to [A,B], works in 2D-3D, assuming same point dimensions

test if a point P is inside a segment [AB]

bool isPointInTriangle(const Point &P, const Point &A, const Point &B, const Point &C, real_t tol = theEpsilon)

test if a point P is inside a triangle ABC

inline bool isSegmentInQuadrangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol = theEpsilon)

test if a segment [PQ] is inside a quadrangle ABCD

inline bool isSegmentInSegment(const Point &P, const Point &Q, const Point &A, const Point &B, real_t tol = theEpsilon)

test if a segment [PQ] is inside a segment [AB]

inline bool isSegmentInTriangle(const Point &P, const Point &Q, const Point &A, const Point &B, const Point &C, real_t tol = theEpsilon)

test if a segment [PQ] is inside a triangle ABC

bool isTranslatedPoints(const std::vector<Point> &pts1, const std::vector<Point> &pts2, Point &T)

check if points pts1 are related by a translation to points pts2 if true update the translation vector T translation vector candidate is built from first construction point (may be not sufficient) any point of pts1 must be related by T to a point of pts2

check if points pts1 are related by a translation to points pts2 (T is the translation vector)

inline bool isTriangleInQuadrangle(const Point &P, const Point &Q, const Point &R, const Point &A, const Point &B, const Point &C, const Point &D, real_t tol = theEpsilon)

test if a triangle PQR is inside a quadrangle ABCD

inline bool isTriangleInTriangle(const Point &P, const Point &Q, const Point &R, const Point &A, const Point &B, const Point &C, real_t tol = theEpsilon)

test if a triangle PQR is inside a triangle ABC

TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2, const Parameter &p3)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2, const Parameter &p3)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, const std::vector<Parameter> &ps)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6)
TermVector iterativeSolve(TermMatrix &A, TermVector &B, Preconditioner &P, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5, const Parameter &p6, const Parameter &p7)
TermVector iterativeSolveGen(IterativeSolverType isType, TermMatrix &A, TermVector &B, const TermVector &X0, Preconditioner &P, real_t tol, number_t iterMax, const real_t omega, const number_t krylovDim, const number_t verboseLevel, const string_t &nam)
inline complex_t j_s(const complex_t &z, real_t x, const complex_t &q)
Parameters:

q – exp(-ixz) /(w2’(z)-qw2(z))

void jacobiPolynomials(real_t a, real_t b, real_t, std::vector<real_t>&)

Jacobi polynomials on [-1, 1] up to order n P_0 = 1, P_1 = (2*(a+1)+a+b+2)*(x-1) / 2 P_{n+1}*{ 2*(n+1)(n+a+b+1)(2*n+a+b) } = { (2*n+1+a+b)(a^2-b^2) + (2*n+a+b)(2*n+1+a+b)(2*n+2+a+b)*x } * P_{n} -{ 2*(n+a)*(n+b)(2*n+2+a+b) } * P_{n-1} , n > 0.

void jacobiPolynomials01(real_t a, real_t b, real_t, std::vector<real_t>&)

Jacobi polynomials on [0, 1] up to order n.

inline string_t join(const Strings &ss, const string_t &delim)

join utility

OperatorOnUnknown &jump(const Unknown &un)
OperatorOnUnknown &jump(OperatorOnUnknown &opu)
template<typename K>
MatrixEigenDense<K> kroneckerProduct(MatrixEigenDense<K> &mat1, MatrixEigenDense<K> &mat2)
template<typename T>
T laguerre(T (*f)(real_t), real_t t0, real_t a, number_t nq, std::vector<real_t> &quadpoints, std::vector<real_t> &quadweights)
template<typename T>
T laguerre(T (*f)(real_t, Parameters&), Parameters &pars, real_t t0, real_t a, number_t nq, std::vector<real_t> &quadpoints, std::vector<real_t> &quadweights)
void LaguerreTable(number_t n, std::vector<real_t> &quadpoints, std::vector<real_t> &quadweights)
OperatorOnUnknown &lap(const Unknown &un)
OperatorOnUnknown &lapG(const Unknown &un, const complex_t &axx, const complex_t &ayy, const complex_t &azz)
real_t Laplace2d(const Point &x, const Point &y, Parameters &pars)

value

Vector<real_t> Laplace2dGradx(const Point &x, const Point &y, Parameters &pars)

gradx

Matrix<real_t> Laplace2dGradxy(const Point &x, const Point &y, Parameters &pa)

grad_x grad_y

Vector<real_t> Laplace2dGrady(const Point &x, const Point &y, Parameters &pars)

grady

Kernel Laplace2dKernel(Parameters &pars = defaultParameters)

construct a Laplace2d kernel

real_t Laplace2dNxdotGradx(const Point &x, const Point &y, Parameters &pars)

nx dot grad_x

real_t Laplace2dNydotGrady(const Point &x, const Point &y, Parameters &pars)

ny dot grad_y

real_t Laplace3d(const Point &x, const Point &y, Parameters &pars)

value

Vector<real_t> Laplace3dGradx(const Point &x, const Point &y, Parameters &pars)

gradx

Vector<real_t> Laplace3dGrady(const Point &x, const Point &y, Parameters &pars)

grady

Kernel Laplace3dKernel(Parameters &pars = defaultParameters)

construct a Laplace3d kernel

real_t Laplace3dNxdotGradx(const Point &x, const Point &y, Parameters &pars)

nx dot grad_x

real_t Laplace3dNydotGrady(const Point &x, const Point &y, Parameters &pars)

ny dot grad_y

real_t LaplaceDLP0(const Element *elt, const Point &pos)
void LaplaceDLP1(const Element *elt, const Point &pos, Vector<real_t> &res)
real_t LaplaceSLP0(const Element *elt, const Point &pos)
void LaplaceSLP1(const Element *elt, const Point &pos, Vector<real_t> &res)

Computation functions

template<typename S>
void ldlstarFactorize(LargeMatrix<S> &mat)
void ldlstarFactorize(TermMatrix &A, TermMatrix &Af)
TermVectors ldlstarLeftSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector ldlstarLeftSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
TermVectors ldlstarSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector ldlstarSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
template<typename S>
void ldltFactorize(LargeMatrix<S> &mat)
void ldltFactorize(TermMatrix &A, TermMatrix &Af)

factorization of a TermMatrix A in Af when the TermMatrix is stored as a compressed sparse matrix, it is restored as a skyline matrix when the TermMatrix is a multiple unknown matrix, the matrix is rewritten in a “single” unknown matrix stored as a skyline matrix or a dense matrix if all blocks are dense

TermVectors ldltLeftSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector ldltLeftSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
TermVectors ldltSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector ldltSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
void legendreFunctions(real_t, std::vector<std::vector<real_t>> &Pml)

compute all Legendre functions up to order n for any real x: P^m_l(x) where n = Pml.size()-1 and l = 0,.., n and m = 0,..,n P^m_l(x) = (-1)^{m} * (1-x^2)^{m/2} d^m/dx^m[ P_l(x) ] where P_l is Legendre polynomial of degree l

void legendreFunctionsDerivative(real_t, const std::vector<std::vector<real_t>>&, std::vector<std::vector<real_t>>&)

compute all Legendre functions derivatives up to order n for any real x: P’^m_l(x) from given Legendre functions up to order n for any real x: P^m_l(x) where n = Pml.size()-1 and l = 0,.., n and m = 0,..,n

void legendreFunctionsDerivativeTest(real_t x, number_t n, std::ostream &out)
void LegendreFunctionsDerivativeTest(real_t, number_t, std::ostream&)

output function for test of Legendre Functions derivatives

void legendreFunctionsTest(real_t x, number_t n, std::ostream&)

output function for test of Legendre Functions

void legendrePolynomials(real_t, std::vector<real_t>&)

Legendre polynomials on [-1, 1] up to order n P_0(x) = 1, P_1(x) = x, n*P_n(x) = (2*n-1) x P_{n-1}(x) - (n-1) P_{n-2}(x) , n > 1.

void legendrePolynomialsDerivative(real_t, std::vector<real_t>&)

derivatives of Legendre polynomials on [-1, 1] up to order n P’0(x) = 0, P’_1(x) = 1 (1-x^2) P’_n(x) = - n x P_n(x) + n P{n-1}(x) , n > 1

template<typename T>
Vector<T> lineSpace(const T &a, const T &b, number_t n)

generates n points xi = a+i*dx with x = (b-a)/(n-1).

template<typename T>
std::vector<T> linSpace(const T &a, const T &b, number_t n)

return vector xi=a+i(b_a)/(n-1) i=0,n-1

void loadMeditElements(std::istream &data, number_t spaceDim, ShapeType type, number_t dim, number_t nbVertices, std::vector<MELT> &melts, std::map<number_t, std::set<number_t>> &doms, std::map<ShapeType, ELTDEF> &elMap)
Geometry *locate(const Point &x, Point &dx, const std::map<number_t, Geometry*> &components, Geometry *last)
void locateError(bool warn, const string_t&, const GeomDomain&, const Point&, real_t d)

error management for locate tool

inline void locateToleranceFactor(real_t f)
inline SuTermVector log(const SuTermVector &s)
inline SymbolicFunction &log(const SymbolicFunction &f)
inline TermVector log(const TermVector &s)
template<typename K>
Vector<K> log(const Vector<K> &v)

log(v)

inline SuTermVector log10(const SuTermVector &s)
inline SymbolicFunction &log10(const SymbolicFunction &f)
inline TermVector log10(const TermVector &s)
complex_t logGamma(const complex_t&)

Paul Godfrey’s Lanczos implementation of the Gamma function.

real_t logGamma(real_t)

return Log(Gamma(x))

complex_t logGamma1(const complex_t&)

return Log(Gamma(z))

complex_t LogGamma1(const complex_t &z)
string_t logo(const dimen_t num)

logo returns random XLiFE++ logo (among 10!) as a multi-line string

logo returns ‘random’ XLiFE++ logo (among 5!) as a multi-line string

bool lookfor(const string_t BeginSection, FILE *data)
bool lookfor(const string_t BeginSection, ifstream &data)
string_t lowercase(const string_t &s)

convert “AbCdefg” to “abcdefg”

returns string_t converted to lowercase

template<typename T>
Matrix<T> &lu(Matrix<T> &A)
template<typename T>
void lu(Matrix<T> &A, Matrix<T> &L, Matrix<T> &U)
template<typename T>
void lu(Matrix<T> &A, Matrix<T> &L, Matrix<T> &U, std::vector<dimen_t> &P)
template<typename T>
Matrix<T> &lu(Matrix<T> &A, Matrix<T> &LU)

LU factorization with no permutation, L lower triangular matrix with diagonal 1 stored in strict lower part of LU U upper triangular part stored in upper part of LU matrix LU may be the same as A.

template<typename T>
Matrix<T> &lu(Matrix<T> &A, Matrix<T> &LU, std::vector<dimen_t> &P)

LU factorization with real row permutation, PA = LU where P is a permutation matrix represented by a permutation vector p L lower triangular matrix with diagonal 1 stored in strict lower part of LU U upper triangular part stored in upper part of LU be care with operation on LU, permutation may have been applied for instance solving Ax=b should be done as LUx=Pb matrix LU may be the same as A.

template<typename T>
Matrix<T> &lu(Matrix<T> &A, std::vector<dimen_t> &P)
template<typename S>
void luFactorize(LargeMatrix<S> &mat, bool withPermutation = true)
void luFactorize(TermMatrix &A, TermMatrix &Af, bool withPermutation)
TermVectors luLeftSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector luLeftSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
TermVectors luSolve(TermMatrix &A, const std::vector<TermVector> &Bs, TermMatrix &Af)
TermVector luSolve(TermMatrix &A, const TermVector &B, TermMatrix &Af)
std::vector<Parameter> makeParList(int nbpar, ...)
complex_t mal_integrand(real_t t, Parameters &pars)

integrand at (t,z), extern call

inline void mapShapeValues(RefElement &refElt, MeshElement &melt, GeomMapData &mapdata, bool mapsh, FEMapType femt, bool rotsh, number_t ord, bool changeSign, const Vector<real_t> *sign, dimen_t dimfun, dimen_t &dimfunp, const ShapeValues &sh, ShapeValues &shmap)
TermVector mapTo(const TermVector &v, const GeomDomain &dom, const Unknown &u, bool useNearest, bool errorOnOutDom, Function *fmap, real_t tol)
inline number_t materialIdFromParameters(Parameters &pars)
template<typename A_it, typename B_it, typename R_it>
void matmat(A_it it_ma, const dimen_t nbk, B_it it_mb, const dimen_t nbr, const dimen_t nbc, R_it it_mr)
template<typename K, typename V1_it, typename V2_it>
V2_it matvec(const Matrix<K> &m, const V1_it it_v1b, const V2_it it_v2b)
template<typename K, typename ITV, typename ITR>
void matvec(const SparseMatrix<K> &m, const ITV itv, const ITR itr)
template<typename M_it, typename V1_it, typename V2_it>
void matvec(M_it it_mb, const V1_it it_v1b, const V1_it it_v1e, V2_it it_v2b, V2_it it_v2e)
inline complex_t maxAbsVal(const complex_t&)
inline complex_t maxAbsVal(const real_t&)
template<typename K>
complex_t maxAbsVal(const Vector<K> &u)

return the value (in complex) of component being the largest one in absolute value

void maxDegreeRule(int degree, const string_t &name, ShapeType sh, int maxdeg)

warning message

template<typename T_iterator>
T_iterator maxElementTpl(T_iterator b, T_iterator e)

returns iterator to first occurrence of maximum absolute magnitude in stl container

int_t maxSeparator(const Point &p, const Point &q, int &c, real_t &s)

separation function used by KdTree

template<typename T, typename U>
T maxTpl(const T &a, const U &b)

returns maximum of 2 values

template<typename T, typename U, typename V>
T maxTpl(const T &a, const U &b, const V &c)

returns maximum of 3 values

Matrix<complex_t> Maxwell3d(const Point &x, const Point &y, Parameters &pa)

kernel computation: IG_t(k_s; x, y)=G(k_s; x, y)*I_3 + 1/k_s^2 * Hess(G(k_s; x, y)-G(k_p; x, y))

value

Matrix<complex_t> Maxwell3dCurlx(const Point &x, const Point &y, Parameters &pa)

kernel computation: Curlx(IG_t)

curlx

Matrix<complex_t> Maxwell3dCurlxy(const Point &x, const Point &y, Parameters &pa)

kernel computation: CurlxCurly(IG_t)

curlx.curly

Matrix<complex_t> Maxwell3dCurly(const Point &x, const Point &y, Parameters &pa)

kernel computation: Curly(IG_t)

curly

Vector<complex_t> Maxwell3dDivx(const Point &x, const Point &y, Parameters &pa)

kernel computation: Divx(IG_t)

divx

complex_t Maxwell3dDivxy(const Point &x, const Point &y, Parameters &pa)

kernel computation: DivxDivy(IG_t)

divx.divy

Vector<complex_t> Maxwell3dDivy(const Point &x, const Point &y, Parameters &pa)

kernel computation: Divy(IG_t)

divy

Kernel Maxwell3dKernel(const complex_t &k, const real_t &t = 0)

construct a Maxwell3d kernel from complex k

Kernel Maxwell3dKernel(const real_t &k, const real_t &t = 0)

construct a Maxwell3d kernel from real k

Kernel Maxwell3dKernel(Parameters& = defaultParameters)

construct a Maxwell3d kernel from parameters

OperatorOnUnknown &mean(const Unknown &un)
OperatorOnUnknown &mean(OperatorOnUnknown &opu)
inline real_t measure(const GeomDomain &g)

measure (length, surface or volume) of Domain

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 20 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 19 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 18 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 17 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 16 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 15 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 14 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 13 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 12 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 11 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 10 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 9 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 8 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 7 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 6 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 5 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 4 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, const GeomDomain&, S_ name)

merge 3 geometrical domains (true union of elements)

template<typename S_>
GeomDomain &merge(const GeomDomain&, const GeomDomain&, S_ name)

merge 2 geometrical domains (true union of elements)

template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, const GeomDomain &d19, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, const GeomDomain &d19, const GeomDomain &d20, const char *name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, const GeomDomain &d19, const GeomDomain &d20, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, const GeomDomain &d19, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, const GeomDomain &d18, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, const GeomDomain &d17, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, const GeomDomain &d16, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, const GeomDomain &d15, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, const GeomDomain &d14, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, const GeomDomain &d13, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, const GeomDomain &d12, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, const GeomDomain &d11, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, const GeomDomain &d10, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, const GeomDomain &d9, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, const GeomDomain &d8, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, const GeomDomain &d7, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, const GeomDomain &d6, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, const GeomDomain &d5, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, const GeomDomain &d4, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, const GeomDomain &d3, string_t name)
template GeomDomain & merge (const GeomDomain &d1, const GeomDomain &d2, string_t name)
inline Mesh merge(const Mesh &m1, const Mesh &m2, bool mergeSharedBoundary = true, const string_t &name = "#Omega")
inline Mesh merge(const Mesh &m1, const Mesh &m2, const Mesh &m3, bool mergeSharedBoundary = true, const string_t &name = "#Omega")
inline Mesh merge(const Mesh &m1, const Mesh &m2, const Mesh &m3, const Mesh &m4, bool mergeSharedBoundary = true, const string_t &name = "#Omega")
inline Mesh merge(const Mesh &m1, const Mesh &m2, const Mesh &m3, const Mesh &m4, const Mesh &m5, bool mergeSharedBoundary = true, const string_t &name = "#Omega")
template GeomDomain & merge (const std::vector< const GeomDomain * > &doms, const char *name)
template<typename S_>
GeomDomain &merge(const std::vector<const GeomDomain*> &doms, S_ name)

merge some geometrical domains (true union of elements) GeomDomains must be MeshDomain of same dimension

merge some geometrical domains (true union of elements)

template GeomDomain & merge (const std::vector< const GeomDomain * > &doms, string_t name)
Mesh merge(const std::vector<const Mesh*> &ms, bool mergeSharedBoundary = true, const string_t &name = "#Omega")

merge meshes of same dimension

template GeomDomain & merge (const std::vector< GeomDomain * > &doms, const char *name)

create the domain made of union of elements (same dimension)

template<typename S_>
GeomDomain &merge(const std::vector<GeomDomain*> &doms, S_ name)

merge some geometrical domains (true union of elements) GeomDomains must be MeshDomain of same dimension

merge some geometrical domains (true union of elements), non const version

template GeomDomain & merge (const std::vector< GeomDomain * > &doms, string_t name)
TermVector merge(const TermVector&, const TermVector&)

merge two termvectors, preserving values of first one when common dofs

std::map<const Unknown*, Constraints*> mergeConstraints(std::vector<Constraints*> &constraints)

merge constraints systems (if more than one conditions) it takes as input a vector of Constraints (each corresponding to an essential condition) and produces a map of Constraints indexed by unknown with two cases:

merge constraints

Case of uncoupled unknowns (u1/v1, u2/v2 referred to same unknown u/v), u and v are not coupled by constraints u1 u2 v1 v2 —————–&#8212; u1 u2 v1 v2 c1 |cu1 0 0 0 | | f1 ——-&#8212; ——&#8212; c2 | 0 cu2 0 0 | = | f2 ==> Cu = |cu1 0 | = fu= | f1 Cv = |cv1 cv2| = fv= | f3 c3 | 0 cv1 cv2 | | f3 | 0 cu2 | | f2 ——&#8212;

The merging process involving u1, u2 referring to same unknown u produces

Constraints object where common dofs are merged One Constraints object for each unknown is created and returned

Case of coupled unknowns (u1/v1, u2/v2 referred to same unknown u/v), u and v are coupled at least by one constraint u1 u2 v1 v2 —————-&#8212; u v c1 |cu1 0 0 0 | = | f1 ——&#8212; c2 | 0 cu2 cv1 cv2 | | f2 ==> |Cu Cv | = f

A global

Constraints matrix is created and returned (indexed by 0)

NOTE: when merging some Constraints in a new one the old ones are deleted by this function

Space *mergeSubspaces(Space *&sp1, Space *&sp2, bool newSubspaces)

merge subspaces given by a list of Space pointer the union is allowed only for subspaces of same root space this function may return the root space, one of the subspaces or a new subspace if newSubspaces is true, new subspaces with union as parent are created and return as space pointers

merge two subspaces

Space *mergeSubspaces(std::vector<Space*> &sps, bool newSubspaces = false)

merge a list of subspaces

SuTermMatrix *mergeSuTermMatrix(const std::list<SuTermMatrix*>&)

merge SuTerMatrix’s referring to the same vector unknown

SuTermVector *mergeSuTermVector(const std::list<SuTermVector*>&)

merge blocks with components of the same unknown

template<typename T>
string_t message(const string_t &msgIds, const T &v, Messages *msgSrc = theMessages_p)

templated message functions (shortcuts avoiding the use of MsgData object)

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2>
string_t message(const string_t &msgIds, const T1 &v1, const T2 &v2, Messages *msgSrc = theMessages_p)
string_t message(const string_t &msgIds, MsgData &msgData, Messages *msgSrc)

main function to throw an error/warning/info message where

build formated message

exemple: to throw the internal error with an int msgId and a string s paramaters data << s; msg(“msg_undef”, data, errInternal,_error);

NOTE that MsgData structure is cleared after call. data and errInternal,_error have default values theMessageData and theMessages_p

Parameters:
  • msgIds – the string id of a message in this collection

  • msgData – a data object containing the message parameters

  • msgSrc – pointer to an error message formats collection

template<typename T_iterator>
T_iterator minElementTpl(T_iterator b, T_iterator e)

returns iterator to first occurrence of minimum absolute magnitude in stl container

template<typename T, typename U>
T minTpl(const T &a, const U &b)

returns minimum of 2 values

template<typename T, typename U, typename V>
T minTpl(const T &a, const U &b, const V &c)

returns minimum of 3 values

real_t mixedProduct(const Point&, const Point&, const Point&)

returns the mixed product (AxB).C

void msg(const string_t &msgIds, MsgData &msgData, Messages *msgSrc, MsgType &msgType)

throw messages

void msg(const string_t &msgIds, MsgData &msgData, Messages *msgSrc, MsgType msgType = _info)

general message handler

void msgInit(const string_t &msgPath, std::ofstream &out)

initialization procedure for messages handling

initialization of engine for messages handling

void mshExport(const GeomDomain &dom, const std::vector<Point> &coords, const splitvec_t &elementsInfo, std::ostream &out)

export a split mesh of a domain to msh format

number_t mshType(ShapeType sht, number_t order)

returns the id msh number of a shape, according to the finite elements order

void mtlbExport(const GeomDomain &dom, const std::vector<Point> &coords, const splitvec_t &elementsInfo, std::ostream &out)

export a split mesh of a domain to Matlab - Octave format

void mtlbExport(const GeomDomain &dom, const vector<Point> &coords, const vector<pair<ShapeType, vector<number_t>>> &elementsInfo, std::ostream &out)
template<typename T, typename V, typename R>
void multFactMatrixVector(const LargeMatrix<T> &mat, const std::vector<V> &vec, std::vector<R> &res)

product with factorized matrix no permutation: L*U*X or L*D*Lt*X or (L*D*L*)*X row permutation (PA=LU) : inv(P)*L*U*X or inv(P)*L*D*Lt*X or inv(P)*(L*D*L*)*X col permutation (AQ=LU) : L*U*inv(Q)*X or L*D*Lt*inv(Q)*X or (L*D*L*)*inv(Q)*X row and col permutation (PAQ=LU) : inv(P)*L*U*inv(Q)*X or inv(P)*L*D*Lt*inv(Q)*X or inv(P)*(L*D*L*)*inv(Q)*X called by multMatrixVector functions

template<typename S1, typename S2>
void multInverMatrixVector(const LargeMatrix<S1> &mat, std::vector<S2> &vec, std::vector<typename Conditional<NumTraits<S1>::IsComplex, S1, S2>::type> &res, FactorizationType fac)
template<typename K1, typename K2>
void multMatMat(const MatrixEigenDense<K1> &mat1, const MatrixEigenDense<K2> &mat2, MatrixEigenDense<typename Conditional<NumTraits<K1>::IsComplex, K1, K2>::type> &res)
template<typename T>
ApproximateMatrix<T> &multMatrix(ApproximateMatrix<T> &A, ApproximateMatrix<T> &B, ApproximateMatrix<T> &AB)

ApproximateMatrix * ApproximateMatrix -> ApproximateMatrix.

template<typename T>
ApproximateMatrix<T> &multMatrix(ApproximateMatrix<T> &A, LargeMatrix<T> &L, ApproximateMatrix<T> &AL)

ApproximateMatrix * LargeMatrix -> ApproximateMatrix.

template<typename T>
ApproximateMatrix<T> &multMatrix(LargeMatrix<T> &L, ApproximateMatrix<T> &A, ApproximateMatrix<T> &LA)

LargeMatrix * ApproximateMatrix -> ApproximateMatrix.

template<typename T>
LowRankMatrix<T> &multMatrix(LargeMatrix<T> &L, LowRankMatrix<T> &A, LowRankMatrix<T> &AL)

product of a LargeMatrix and a LowRankMatrix

template<typename T>
LowRankMatrix<T> &multMatrix(LowRankMatrix<T> &A, LargeMatrix<T> &L, LowRankMatrix<T> &AL)

product of a LowRankMatrix and a LargeMatrix

template<typename T>
LowRankMatrix<T> &multMatrix(LowRankMatrix<T> &A, LowRankMatrix<T> &B, LowRankMatrix<T> &AB)

product of two LowRankMatrix’s

template<typename SA, typename SB, typename SR>
void multMatrixMatrix(const LargeMatrix<SA> &mA, const LargeMatrix<SB> &mB, LargeMatrix<SR> &mR)

extern template product matrix*matrix the storage of the resulting matrix is ALWAYS dense there is no chance to get a sparse matrix except in case of product with a diagonal matrix where the storage is unchanged

template<typename SA, typename SB, typename SR>
void multMatrixMatrix(const LargeMatrix<SA> &mA, const std::vector<SB> &mB, LargeMatrix<SR> &mR)
template<typename SA, typename SB, typename SR>
void multMatrixMatrix(const std::vector<SA> &mA, const LargeMatrix<SB> &mB, LargeMatrix<SR> &mR)
LargeMatrix<complex_t> multMatrixScalar(const LargeMatrix<complex_t> &mat, const real_t v)

Multiple a complex Matrix with real scalar The result matrix will point to the same storage.

Parameters:
  • mat – complex matrix

  • v – real scalar

Returns:

result matrix which share the same storage.

LargeMatrix<complex_t> multMatrixScalar(const LargeMatrix<real_t> &mat, const complex_t v)

Multiple a real Matrix with complex scalar The result matrix will point to the same storage.

Parameters:
  • mat – real matrix

  • v – complex scalar

Returns:

complex matrix which share the same storage.

template<typename T>
LargeMatrix<T> multMatrixScalar(const LargeMatrix<T> &mat, const T v)

Multiple a largeMatrix with a scalar The result matrix will point to the same storage.

Parameters:
  • mat – matrix

  • v – scalar

Returns:

result matrix which shares the same storage.

template<typename T, typename I>
Vector<T> multMatrixVector(const HMatrix<T, I> &h, const Vector<T> &x)

hmatrix vector product

void multMatrixVector(const LargeMatrix<complex_t> &mat, const std::vector<real_t> &vec, std::vector<complex_t> &res)
void multMatrixVector(const LargeMatrix<Matrix<complex_t>> &mat, const std::vector<Vector<real_t>> &vec, std::vector<Vector<complex_t>> &res)
void multMatrixVector(const LargeMatrix<Matrix<real_t>> &mat, const std::vector<Vector<complex_t>> &vec, std::vector<Vector<complex_t>> &res)
template<typename T>
void multMatrixVector(const LargeMatrix<Matrix<T>> &mat, const std::vector<Vector<T>> &vec, std::vector<Vector<T>> &res)

templated mat<Matrix<T> > * vec<Vector<T> >

void multMatrixVector(const LargeMatrix<real_t> &mat, const std::vector<complex_t> &vec, std::vector<complex_t> &res)
template<typename T>
void multMatrixVector(const LargeMatrix<T> &mat, const std::vector<T> &vec, std::vector<T> &res)

templated mat<T> * vec<T>

template<typename T, typename V, typename R>
void multMatrixVector(const LargeMatrix<T> &mat, V *vp, R *rp)

templated mat<T> * vec<V> (pointer form)

template<typename K>
void multMatrixVector(const Matrix<K> &m, const Vector<K> &v, Vector<K> &mv)
void multMatrixVector(const MatrixEntry&, const VectorEntry&, VectorEntry&)

matrix * vector

TermVector multMatrixVector(const SymbolicTermMatrix &S, const TermVector &X)
TermVector &multMatrixVector(const TermMatrix&, const TermVector&, TermVector&)

product TermMatrix * TermVector

template<typename Scalar, typename ScalarTypeX, typename MatrixType>
void multMatVecLargeMatrixAdapter(const LargeMatrixAdapter<MatrixType, Scalar> &m, const MultiVec<ScalarTypeX> &x, MultiVec<typename Conditional<NumTraits<Scalar>::IsComplex, Scalar, ScalarTypeX>::type> &y)
template<typename T>
void multScalarThenAssign(TermVector &tv, const T &t)

operation U*=t

p*=t

template<typename K, typename KK>
void multScalarThenAssign(Vector<K> &v, const KK &x)
void multScalarThenAssign(Vector<real_t> &v, const complex_t &c)
template<typename T, typename V, typename R>
void multVectorFactMatrix(const LargeMatrix<T> &mat, const std::vector<V> &vec, std::vector<R> &res)

product with factorized matrix A=LU, or A=LDLt or A =LDL* no permutation: X*L*U = (Ut*Lt*Xt)t row permutation (PA=LU) : X*inv(P)*L*U = Ut*Lt*inv(P)t*Xt = Ut*Lt*P*Xt col permutation (AQ=LU) : X*L*U*inv(Q) = inv(Q)t*Ut*Lt*Xt = Q*Ut*Lt*Xt row and col permutation (PAQ=LU) : X*inv(P)*L*U*inv(Q) = inv(Q)t*Ut*Lt*inv(P)t*Xt = Q*Ut*Lt*P*Xt called by multMatrixVector

void multVectorMatrix(const LargeMatrix<complex_t> &mat, const std::vector<real_t> &vec, std::vector<complex_t> &res)
void multVectorMatrix(const LargeMatrix<Matrix<complex_t>> &mat, const std::vector<Vector<real_t>> &vec, std::vector<Vector<complex_t>> &res)
void multVectorMatrix(const LargeMatrix<Matrix<real_t>> &mat, const std::vector<Vector<complex_t>> &vec, std::vector<Vector<complex_t>> &res)
template<typename T>
void multVectorMatrix(const LargeMatrix<Matrix<T>> &mat, const std::vector<Vector<T>> &vec, std::vector<Vector<T>> &res)
void multVectorMatrix(const LargeMatrix<real_t> &mat, const std::vector<complex_t> &vec, std::vector<complex_t> &res)
template<typename T>
void multVectorMatrix(const LargeMatrix<T> &mat, const std::vector<T> &vec, std::vector<T> &res)
template<typename T, typename V, typename R>
void multVectorMatrix(const LargeMatrix<T> &mat, V *vp, R *rp)

templated vec<V> * mat<T> (pointer form)

void multVectorMatrix(const MatrixEntry&, const VectorEntry&, VectorEntry&)

vector * matrix

void multVectorMatrix(const std::vector<complex_t> &vec, const LargeMatrix<real_t> &mat, std::vector<complex_t> &res)
void multVectorMatrix(const std::vector<real_t> &vec, const LargeMatrix<complex_t> &mat, std::vector<complex_t> &res)
template<typename T>
void multVectorMatrix(const std::vector<T> &vec, const LargeMatrix<T> &mat, std::vector<T> &res)
void multVectorMatrix(const std::vector<Vector<complex_t>> &vec, const LargeMatrix<Matrix<real_t>> &mat, std::vector<Vector<complex_t>> &res)
void multVectorMatrix(const std::vector<Vector<real_t>> &vec, const LargeMatrix<Matrix<complex_t>> &mat, std::vector<Vector<complex_t>> &res)
template<typename T>
void multVectorMatrix(const std::vector<Vector<T>> &vec, const LargeMatrix<Matrix<T>> &mat, std::vector<Vector<T>> &res)
TermVector &multVectorMatrix(const TermMatrix&, const TermVector&, TermVector&)

product TermVector * TermMatrix

TermVector &multVectorMatrix(const TermVector&, const TermMatrix&, TermVector&)

product TermVector * TermMatrix

TermVector multVectorMatrix(const TermVector &X, const SymbolicTermMatrix &S)
template<typename K>
void multVectorMatrix(const Vector<K> &v, const Matrix<K> &m, Vector<K> &mv)
void multVectorMatrix(const VectorEntry&, const MatrixEntry&, VectorEntry&)

vector * matrix

template<typename T, typename V, typename R>
void multVectorMatrix(V *vp, const LargeMatrix<T> &mat, R *rp)

templated vec<V> * mat<T> (pointer form)

OperatorOnUnknown &nabla(const Unknown &un)
OperatorOnKernel &nabla_x(const Kernel&)

grad_x(k)

OperatorOnKernel &nabla_x(OperatorOnKernel&)

grad_x(opk)

OperatorOnKernel &nabla_y(const Kernel&)

grad_y(k)

OperatorOnKernel &nabla_y(OperatorOnKernel&)

grad_y(opk)

OperatorOnUnknown &nablaG(const Unknown &un, const complex_t &ax, const complex_t &ay, const complex_t &az, const complex_t &at)
OperatorOnUnknown &nablaS(const Unknown &un)
int nbPar(const ITPARENTS &itpar)
number_t nbSubDomainsIfScalar(const std::vector<string_t> &sn, number_t nbSubDomains)
number_t nbSubDomainsIfScalar(string_t sn, number_t nbSubDomains)
OperatorOnFunction &ncross(const Function&)

n^f

OperatorOnUnknown &ncross(const Unknown &un)
OperatorOnFunction &ncross(OperatorOnFunction&)

n^opf

OperatorOnKernel &ncross_x(const Kernel&)

nx^k

OperatorOnKernel &ncross_x(OperatorOnKernel&)

nx^opk

OperatorOnKernel &ncross_y(const Kernel&)

ny^k

OperatorOnKernel &ncross_y(OperatorOnKernel&)

ny^opk

OperatorOnUnknown &ncrosscurl(const Unknown &un)
OperatorOnKernel &ncrosscurl_x(const Kernel&)

nx^curl_x(k)

OperatorOnKernel &ncrosscurl_x(OperatorOnKernel&)

nx^curl_x(opk)

OperatorOnKernel &ncrosscurl_y(const Kernel&)

ny^curl_y(k)

OperatorOnKernel &ncrosscurl_y(OperatorOnKernel&)

ny^curl_y(opk)

OperatorOnUnknown &ncrossgrad(const Unknown &un)
OperatorOnFunction &ncrossncross(const Function&)

n^(n^f)

OperatorOnUnknown &ncrossncross(const Unknown &un)
OperatorOnFunction &ncrossncross(OperatorOnFunction&)

n^(n^opf)

OperatorOnKernel &ncrossncross_x(const Kernel&)

nx^nx^k

OperatorOnKernel &ncrossncross_x(OperatorOnKernel&)

nx^nx^opk

OperatorOnKernel &ncrossncross_y(const Kernel&)

ny^ny^k

OperatorOnKernel &ncrossncross_y(OperatorOnKernel&)

ny^ny^opk

OperatorOnUnknown &ncrossndot(const Unknown&)
OperatorOnFunction &ncrossndot(Function&)

(n^n)|f

OperatorOnFunction &ncrossndot(OperatorOnFunction&)

(n^n)|opf

OperatorOnFunction &ncrossntimes(const Function &f)
OperatorOnUnknown &ncrossntimes(const Unknown &un)
OperatorOnFunction &ncrossntimes(Function&)

(n^n)*f

OperatorOnFunction &ncrossntimes(OperatorOnFunction&)

(n^n)*opf

OperatorOnUnknown &ncrossrot(const Unknown &un)
OperatorOnKernel &ncrossrot_x(const Kernel&)

nx^curl_x(k)

OperatorOnKernel &ncrossrot_x(OperatorOnKernel&)

nx^curl_x(opk)

OperatorOnKernel &ncrossrot_y(const Kernel&)

ny^curl_y(k)

OperatorOnKernel &ncrossrot_y(OperatorOnKernel&)

ny^curl_y(opk)

OperatorOnUnknown &ndiv(const Unknown &un)
OperatorOnKernel &ndiv_x(const Kernel&)

nx*div_x(k)

OperatorOnKernel &ndiv_x(OperatorOnKernel&)

nx*div_x(opk)

OperatorOnKernel &ndiv_y(const Kernel&)

ny*div_y(k)

OperatorOnKernel &ndiv_y(OperatorOnKernel&)

ny*div_y(opk)

OperatorOnFunction &ndot(const Function&)

n|f

OperatorOnUnknown &ndot(const Unknown &un)
OperatorOnFunction &ndot(OperatorOnFunction&)

n|opf

OperatorOnKernel &ndot_x(const Kernel&)

nx|k

OperatorOnKernel &ndot_x(OperatorOnKernel&)

nx|opk

OperatorOnKernel &ndot_y(const Kernel&)

ny|k

OperatorOnKernel &ndot_y(OperatorOnKernel&)

ny|opk

OperatorOnUnknown &ndotgrad(const Unknown &un)
OperatorOnKernel &ndotgrad_x(const Kernel&)

nx|grad_x(k)

OperatorOnKernel &ndotgrad_x(OperatorOnKernel&)

nx|grad_x(opk)

OperatorOnKernel &ndotgrad_y(const Kernel&)

ny|grad_y(k)

OperatorOnKernel &ndotgrad_y(OperatorOnKernel&)

ny|grad_y(opk)

template LargeMatrix< complex_t > * newSkyline (const LargeMatrix< complex_t > *mat_p)
template LargeMatrix< real_t > * newSkyline (const LargeMatrix< real_t > *mat_p)
template<class M_>
M_ *newSkyline(const M_ *mat_p)

This function allocates a new matrix, equal to the input matrix but with a skyline storage.

Create a new matrix (especially a LargeMatrix) with a skyline storage.

The new matrix can then be factorized using one of the internal factorization algorithms available in XLiFE++, such as LDLt, LDL* or LU.

template<typename T>
real_t newton(T (*f)(const T&), T (*fp)(const T&), T &x0, number_t niter = 100, real_t tol = theTolerance)
number_t nodesDim(const Geometry &g)
void noEvenDegreeRule(int degree, const string_t &name, ShapeType sh)

warning message

std::pair<number_t, number_t> nonSeparatingEdge(const std::vector<Point> &p)

determines one edge of the polygon defined by its list of vertices that do not separate the polygon

determines an edge of a polygon so that the whole polygon is on the same side

inline real_t norm(const complex_t &v)
inline real_t norm(const real_t &v)

norm of scalars

template<typename T>
real_t norm(const std::vector<T> &v)

norm of vector

real_t norm(const TermVector &tv, number_t l = 2)

vector norm

real_t norm(const VectorEntry&, number_t l = 2)

norm of Vector entry (default l2)

real_t norm1(const SuTermVector&)

l1 vector SuTermVector norm

real_t norm1(const TermVector &vt)

l1 TermVector norm

template<typename T>
real_t norm1(const Vector<T> &v)
real_t norm1(const VectorEntry&)

l1 vector VectorEntry norm

inline real_t norm2(const complex_t&)
template<typename T>
inline real_t norm2(const LargeMatrix<T> &A)
real_t norm2(const Matrix<complex_t> &m)
real_t norm2(const Matrix<Matrix<complex_t>> &m)
real_t norm2(const Matrix<Matrix<real_t>> &m)
real_t norm2(const Matrix<real_t> &m)

specialization of norm2

real_t norm2(const Point&)

returns the square distance between 2 points

inline real_t norm2(const real_t&)
real_t norm2(const SuTermVector&)

l2 vector SuTermVector norm (quadratic norm)

inline real_t norm2(const TermMatrix &A)
real_t norm2(const TermVector &vt)

l2 TermVector norm (quadratic norm)

template<typename T>
real_t norm2(const Vector<T> &v)

norm of Vector, extern forms

real_t norm2(const VectorEntry&)

l2 vector VectorEntry (quadratic norm)

inline Vector<real_t> normal_Piecewise(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

real_t normalBoxMuller(real_t mu = 0., real_t sigma = 1.)

normal distribution (mu,sigma) using Box Muller method (using rand())

void normalDistribution(complex_t *mat, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (0,1) (using <random> if C11)

void normalDistribution(complex_t *mat, real_t mu, real_t sigma, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (mu,sigma) (using <random> if C11)

template<typename T>
std::vector<T> normalDistribution(number_t n, number_t m, real_t mu = 0., real_t sigma = 1.)
template<typename T>
std::vector<T> normalDistribution(number_t n, real_t mu = 0., real_t sigma = 1.)
void normalDistribution(real_t *mat, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (0,1) (using <random> if C11)

void normalDistribution(real_t *mat, real_t mu, real_t sigma, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (mu,sigma) (using <random> if C11)

real_t normalDistribution(real_t mu = 0., real_t sigma = 1., GaussianGenerator gg = _MarsagliaGenerator)

return a sample from normal distribution (mu,sigma) (using <random> if C11)

template<typename T>
void normalDistribution(std::vector<T> &mat, number_t n, number_t m, real_t mu = 0., real_t sigma = 1.)
template<typename T>
void normalDistribution(std::vector<T> &v, real_t mu = 0., real_t sigma = 1.)
void normalDistributionC(complex_t *mat, GaussianGenerator gg, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (0,1) (using rand())

void normalDistributionC(complex_t *mat, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (0,1) (using rand())

void normalDistributionC(complex_t *mat, real_t mu, real_t sigma, GaussianGenerator gg, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (mu,sigma) (using rand())

void normalDistributionC(complex_t *mat, real_t mu, real_t sigma, number_t n = 1, number_t m = 1)

compute a complex Gaussian matrix normal distribution (mu,sigma) (using rand())

void normalDistributionC(real_t *mat, GaussianGenerator gg, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (0,1) (using rand())

void normalDistributionC(real_t *mat, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (0,1) (using rand())

void normalDistributionC(real_t *mat, real_t mu, real_t sigma, GaussianGenerator gg, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (mu,sigma) (using rand())

void normalDistributionC(real_t *mat, real_t mu, real_t sigma, number_t n = 1, number_t m = 1)

compute a Gaussian matrix normal distribution (mu,sigma) (using rand())

real_t normalDistributionC(real_t mu = 0., real_t sigma = 1., GaussianGenerator gg = _MarsagliaGenerator)

return a sample from normal distribution (mu,sigma) (using rand())

template<typename T>
MatrixEigenDense<T> normalizeEigenVectors(const MatrixEigenDense<T> &eigVecs)
double normalMarsaglia(real_t mu = 0., real_t sigma = 1.)

normal distribution (mu,sigma) using Marsaglia method (using rand())

TermVector normalsOn(GeomDomain &dom, const Unknown &u)

compute normals of a side domain using interpolation given by an unknown

inline Vector<real_t> &normalVectorFromParameters(const Parameters &pa)

extract normal vector from Parameters

inline real_t norminfty(const complex_t &z)
template<typename T>
inline real_t norminfty(const LargeMatrix<T> &A)
real_t norminfty(const Matrix<complex_t> &m)
real_t norminfty(const Matrix<Matrix<complex_t>> &m)
real_t norminfty(const Matrix<Matrix<real_t>> &m)
real_t norminfty(const Matrix<real_t> &m)

specialization of infinite norm

inline real_t norminfty(const real_t &r)
real_t norminfty(const SuTermVector&)

l_infinite SuTermVector norm (sup norm)

inline real_t norminfty(const TermMatrix &A)
real_t norminfty(const TermVector &vt)

l_infinite TermVector norm (sup norm)

template<typename T>
real_t norminfty(const Vector<T> &v)
real_t norminfty(const VectorEntry&)

l_infinite VectorEntry (sup norm)

OperatorOnFunction &ntimes(const Function&)

n*f

OperatorOnFunction &ntimes(OperatorOnFunction&)

n*opf

OperatorOnKernel &ntimes_x(const Kernel&)

nx*k

OperatorOnKernel &ntimes_x(OperatorOnKernel &opk)

nx*opk

OperatorOnKernel &ntimes_y(const Kernel&)

ny*k

OperatorOnKernel &ntimes_y(OperatorOnKernel &opk)

ny*opk

OperatorOnUnknown &ntimesndot(const Unknown &un)
template<class ST_>
const vector<number_t> numberingConversion(const number_t order)

The following function returns a vector giving the correspondence between the two numberings of the points of the Lagrange mesh of order k over the reference element (triangle or quadrangle).

The following function returns a vector giving the correspondence between the two numberings of the points of the Lagrange mesh of order k over the reference element (tetrahedron or hexahedron).

Provided V is the returned vector, if i denotes the rank of a point in XLiFE++, then the corresponding point is V[i] in class subdivision::TriangleMesh or subdivision::QuadrangleMesh, referred to as xxxMesh in the following.

Provided V is the returned vector, if i denotes the rank of a point in XLiFE++ then the corresponding point is V[i] in class subdivision::TetrahedronMesh or subdivision::HexahedronMesh, referred to as xxxMesh in the following.

number_t numberOfCols(const complex_t &v)
template<typename T>
number_t numberOfCols(const Matrix<T> &m)
number_t numberOfCols(const real_t &v)
number_t numberOfRows(const complex_t &v)
template<typename T>
number_t numberOfRows(const Matrix<T> &m)
number_t numberOfRows(const real_t &v)
number_t numberOfThreads(int n)

manage the number of threads in OpenMP if n==0 set to the maximum of number of threads if n >0 set the number of threads to n if n==-1 return the number of threads (default) if omp is not available, always return 1

if omp is available, set or get the number of threads (default)

inline int_t numToDim(number_t n, string_t loc = "?")
inline int_t numToInt(number_t n, string_t loc = "?")
OperatorOnUnknown &nx(const Unknown &un)
OperatorOnKernel &nxcrossny_cross(const Kernel&)

(nx^ny)^k

OperatorOnKernel &nxcrossny_cross(OperatorOnKernel&)

(nx^ny)^opk

Parameters:

opk – (nx.ny).opk

OperatorOnKernel &nxcrossny_dot(const Kernel&)

(nx^ny).k

OperatorOnKernel &nxcrossny_dot(OperatorOnKernel&)

(nx^ny).opk

Parameters:

opk – (nx.ny).opk

OperatorOnKernel &nxdotny_times(const Kernel&)

(nx.ny)*k

OperatorOnKernel &nxdotny_times(OperatorOnKernel&)

(nx.ny)*opk

Parameters:

opk – (nx.ny)*opk

OperatorOnKernel &nycrossnx_cross(const Kernel&)

(ny^ny)^k

OperatorOnKernel &nycrossnx_cross(OperatorOnKernel&)

(ny^nx)^opk

Parameters:

opk – (nx.ny).opk

OperatorOnKernel &nycrossnx_dot(const Kernel&)

(ny^nx).k

OperatorOnKernel &nycrossnx_dot(OperatorOnKernel&)

(ny^nx).opk

Parameters:

opk – (nx.ny).opk

template<typename T>
std::pair<Vector<real_t>, Vector<T>> ode45(T &(*f)(real_t, const T &y, T &fty), real_t a, real_t b, real_t dt, const T &y0, number_t nbt, real_t mins, real_t maxs, real_t prec = 1.E-6)
template<typename T>
std::pair<Vector<real_t>, Vector<T>> ode45(T &(*f)(real_t, const T &y, T &fty), real_t a, real_t b, real_t dt, const T &y0, real_t prec = 1.E-6)
EssentialCondition on(GeomDomain&, const EssentialCondition&)

set domain to a Essential condition

string_t oneOfSideNames(const std::vector<string_t> &sn, int i)
string_t oneOfSideNames(const string_t &sn, int i)
string_t oneOfSideNamesIfVector(const std::vector<string_t> &sn, int i)
string_t oneOfSideNamesIfVector(const string_t &sn, int i)
inline void openCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6, Geometry &g7, string_t domNameToOpen)

user shortcut to crack 7 geometries

inline void openCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, Geometry &g6, string_t domNameToOpen)

user shortcut to crack 6 geometries

inline void openCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, Geometry &g5, string_t domNameToOpen)

user shortcut to crack 5 geometries

inline void openCrack(Geometry &g1, Geometry &g2, Geometry &g3, Geometry &g4, string_t domNameToOpen)

user shortcut to crack 4 geometries

inline void openCrack(Geometry &g1, Geometry &g2, Geometry &g3, string_t domNameToOpen)

user shortcut to crack 3 geometries

inline void openCrack(Geometry &g1, Geometry &g2, string_t domNameToOpen)

user shortcut to crack 2 geometries

inline void openCrack(Geometry &g1, string_t domNameToOpen)

user shortcut to crack one geometry

inline SymbolicFunction &operator!(const SymbolicFunction &f)
inline SymbolicFunction &operator!=(const complex_t &c, const SymbolicFunction &f)
inline bool operator!=(const DifferentialOperator &d1, const DifferentialOperator &d2)
bool operator!=(const DofComponent&, const DofComponent&)

diffference

bool operator!=(const DomUnkDop&, const DomUnkDop&)

difference

bool operator!=(const Function&, const Function&)

compare functions (same fun and params pointers)

template<typename K>
bool operator!=(const Matrix<K> &a, const Matrix<K> &b)

matrix comparison (element by element)

template<typename K>
bool operator!=(const MonomialT<K> &m1, const MonomialT<K> &m2)
bool operator!=(const Operand&, const Operand&)

compare Operands

bool operator!=(const OperatorOnFunction&, const OperatorOnFunction&)

different operator on function

bool operator!=(const OperatorOnKernel&, const OperatorOnKernel&)

different operator on kernel

bool operator!=(const OperatorOnUnknown&, const OperatorOnUnknown&)

compare OperatorOnUnknown (same unknowns, same diff operators, same functions …)

bool operator!=(const Point&, const Point&)

not equality of two points

inline SymbolicFunction &operator!=(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline bool operator!=(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, SmartPointerNullType rhs)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator!=(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
template<typename K>
bool operator!=(const SparseMatrix<K> &a, const SparseMatrix<K> &b)

matrix comparison (element by element)

inline SymbolicFunction &operator!=(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator!=(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator!=(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<class K>
bool operator!=(const Triplet<K> &t1, const Triplet<K> &t2)
bool operator!=(const Value&, const Value&)

compare values

template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline bool operator!=(SmartPointerNullType lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator!=(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator!=(VarComparison, const T &a)
OperatorOnUnknown &operator%(const complex_t&, const Unknown&)

cu

OperatorOnUnknown &operator%(const complex_t &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator%(const Function&, const Unknown&)

Fu.

OperatorOnUnknown &operator%(const Function&, OperatorOnUnknown&)

contracted product syntax FOp(u)

KernelOperatorOnUnknowns operator%(const Kernel&, const OperatorOnUnknown&)

ker % opv

KernelOperatorOnUnknowns operator%(const Kernel&, const Unknown&)

ker % v

KernelOperatorOnTermVector operator%(const Kernel &ker, const TermVector &tv)

ker % tv

KernelOperatorOnTermVectorAndUnknown operator%(const KernelOperatorOnTermVector &koptv, const OperatorOnUnknown &opv)
KernelOperatorOnTermVectorAndUnknown operator%(const KernelOperatorOnTermVector &koptv, const Unknown &v)
KernelOperatorOnTermVectorAndUnknown operator%(const KernelOperatorOnTermVectorAndUnknown&, const OperatorOnUnknown&)
KernelOperatorOnUnknowns operator%(const KernelOperatorOnUnknowns&, const OperatorOnUnknown&)

opker % opv

KernelOperatorOnUnknowns operator%(const KernelOperatorOnUnknowns&, const Unknown&)

opker % v

LcOperatorOnUnknowns operator%(const LcOperatorOnUnknown &lcopu, const LcOperatorOnUnknown &lcopv)
LcOperatorOnUnknowns operator%(const LcOperatorOnUnknown &lcopu, const OperatorOnUnknown &opv)
LcOperatorOnUnknowns operator%(const LcOperatorOnUnknown &lcopu, const Unknown &v)
template<typename T>
OperatorOnUnknown &operator%(const Matrix<T> &val, const Unknown &un)

Matrixu.

template<typename T>
OperatorOnUnknown &operator%(const Matrix<T> &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator%(const OperatorOnFunction&, const Unknown&)

op(F)u

OperatorOnUnknown &operator%(const OperatorOnFunction&, OperatorOnUnknown&)

contracted product syntax op(F)FOp(u)

KernelOperatorOnUnknowns operator%(const OperatorOnKernel&, const OperatorOnUnknown&)

opker % opv

KernelOperatorOnTermVector operator%(const OperatorOnKernel &opk, const TermVector &tv)

opker % tv

KernelOperatorOnUnknowns operator%(const OperatorOnUnknown&, const Kernel&)

opu % ker

KernelOperatorOnTermVectorAndUnknown operator%(const OperatorOnUnknown&, const KernelOperatorOnTermVectorAndUnknown&)
KernelOperatorOnUnknowns operator%(const OperatorOnUnknown&, const KernelOperatorOnUnknowns&)

opu % opker

KernelOperatorOnUnknowns operator%(const OperatorOnUnknown&, const OperatorOnKernel&)

opu % opker

LcOperatorOnUnknowns operator%(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lcopv)
KernelOperatorOnTermVectorAndUnknown operator%(const OperatorOnUnknown &opv, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator%(const real_t&, const Unknown&)

ru

OperatorOnUnknown &operator%(const real_t &val, OperatorOnUnknown &opu)
KernelOperatorOnTermVector operator%(const TermVector &tv, const Kernel &ker)

tv % ker

KernelOperatorOnTermVector operator%(const TermVector &tv, const OperatorOnKernel &opker)

tv % opker

OperatorOnUnknown &operator%(const TermVector &tv, const TestFunction &un)

tvu

OperatorOnUnknown &operator%(const TermVector &tv, const Unknown &un)

tvu

OperatorOnUnknown &operator%(const TermVector &tv, OperatorOnUnknown &opu)

tvopu

OperatorOnUnknown &operator%(const TestFunction &un, const TermVector &tv)

utv

OperatorOnUnknown &operator%(const Unknown&, const complex_t&)

uc

OperatorOnUnknown &operator%(const Unknown&, const Function&)

uF

KernelOperatorOnUnknowns operator%(const Unknown&, const Kernel&)

u % ker

KernelOperatorOnUnknowns operator%(const Unknown&, const KernelOperatorOnUnknowns&)

u % opker

OperatorOnUnknown &operator%(const Unknown&, const OperatorOnFunction&)

uop(F)

OperatorOnUnknown &operator%(const Unknown&, const real_t&)

ur

OperatorOnUnknown &operator%(const Unknown&, const Value&)

uval

LcOperatorOnUnknowns operator%(const Unknown &u, const LcOperatorOnUnknown &lcopv)
template<typename T>
OperatorOnUnknown &operator%(const Unknown &un, const Matrix<T> &val)

uMatrix

OperatorOnUnknown &operator%(const Unknown &un, const TermVector &tv)

utv

template<typename T>
OperatorOnUnknown &operator%(const Unknown &un, const Vector<T> &val)

uVector

template<typename T> KernelOperatorOnUnknowns operator% (const Unknown &un, T(fun)(const Point &, const Point &, Parameters &))

u % function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator% (const Unknown &un, T(fun)(const Point &, Parameters &))

u % function(Point,Parameters)

template<typename T> KernelOperatorOnUnknowns operator% (const Unknown &un, T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))

u % function(Vector<Point>,Parameters)

template<typename T> OperatorOnUnknown & operator% (const Unknown &un, T(fun)(const Vector< Point > &, Parameters &))

u % function(Vector<Point>,Parameters)

KernelOperatorOnTermVectorAndUnknown operator%(const Unknown &v, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator%(const Value&, const Unknown&)

valu

OperatorOnUnknown &operator%(const Value&, OperatorOnUnknown&)

contracted product syntax VOp(u)

template<typename T>
OperatorOnUnknown &operator%(const Vector<T> &val, const Unknown &un)

Vectoru.

template<typename T>
OperatorOnUnknown &operator%(const Vector<T> &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator%(OperatorOnUnknown&, const Function&)

contracted product syntax Op(u)F

OperatorOnUnknown &operator%(OperatorOnUnknown&, const OperatorOnFunction&)

contracted product syntax Op(u)op(F)

OperatorOnUnknown &operator%(OperatorOnUnknown&, const Value&)

contracted product syntax Op(u)V

OperatorOnUnknowns operator%(OperatorOnUnknown&, OperatorOnUnknown&)

opu % opv

OperatorOnUnknowns operator%(OperatorOnUnknown&, Unknown&)

opu % v

OperatorOnUnknown &operator%(OperatorOnUnknown &opu, const complex_t &val)
template<typename T>
OperatorOnUnknown &operator%(OperatorOnUnknown &opu, const Matrix<T> &val)
OperatorOnUnknown &operator%(OperatorOnUnknown &opu, const real_t &val)
OperatorOnUnknown &operator%(OperatorOnUnknown &opu, const TermVector &tv)

oputv

template<typename T>
OperatorOnUnknown &operator%(OperatorOnUnknown &opu, const Vector<T> &val)
template<typename T> OperatorOnUnknown & operator% (OperatorOnUnknown &opu, T(fun)(const Point &, Parameters &))

opu % function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator% (OperatorOnUnknown &opu, T(fun)(const Vector< Point > &, Parameters &))

opu % function(Vector<Point>,Parameters)

template<typename T> KernelOperatorOnUnknowns operator% (T(fun)(const Point &, const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) % u

template<typename T> OperatorOnUnknown & operator% (T(fun)(const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) % u

template<typename T> OperatorOnUnknown & operator% (T(fun)(const Point &, Parameters &), OperatorOnUnknown &opu)

function(Point,Parameters) % opu

template<typename T> KernelOperatorOnUnknowns operator% (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) % u

template<typename T> OperatorOnUnknown & operator% (T(fun)(const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) % u

template<typename T> OperatorOnUnknown & operator% (T(fun)(const Vector< Point > &, Parameters &), OperatorOnUnknown &opu)

function(Vector<Point>,Parameters) % opu

OperatorOnUnknowns operator%(Unknown&, OperatorOnUnknown&)

u % opv

OperatorOnUnknowns operator%(Unknown&, Unknown&)

u % v

EssentialConditions operator&(const EssentialCondition&, const EssentialCondition&)

bcs = ec & ec

EssentialConditions operator&(const EssentialCondition&, const EssentialConditions&)

bcs = ec & ecs

EssentialConditions operator&(const EssentialConditions&, const EssentialCondition&)

bcs = ecs & ec

EssentialConditions operator&(const EssentialConditions&, const EssentialConditions&)

bcs = ecs & ecs

template<typename T>
ComparisonFunction<T> operator&&(const ComparisonFunction<T> &cof1, const ComparisonFunction<T> &cof2)
inline SymbolicFunction &operator&&(const SymbolicFunction &f1, const SymbolicFunction &f2)
BasicBilinearForm &operator*(const BasicBilinearForm&, const BasicBilinearForm&)

compose two basic bilinear forms

BilinearForm operator*(const BilinearForm&, const BilinearForm&)

compose two bilinear forms, have to be basic linear forms

BilinearForm operator*(const BilinearForm&, const complex_t&)

product(right) by a complex scalar

BilinearForm operator*(const BilinearForm&, const int&)

product(right) by an integer scalar

BilinearForm operator*(const BilinearForm&, const int_t&)

product(right) by an integer scalar

BilinearForm operator*(const BilinearForm&, const number_t&)

product(right) by an integer scalar

BilinearForm operator*(const BilinearForm&, const real_t&)

product(right) by a real scalar

BilinearForm operator*(const complex_t&, const BilinearForm&)

product(left) by a complex scalar

LinearForm operator*(const complex_t&, const LinearForm&)

product(left) by a scalar

SuBilinearForm operator*(const complex_t&, const SuBilinearForm&)

multiply(left) by a scalar

OperatorOnUnknown &operator*(const complex_t&, const Unknown&)

c*u

Vector<Vector<complex_t>> operator*(const complex_t&, const Vector<Vector<complex_t>>&)

multiply complex scalar by complex vector “x * A”

LcKernelOperatorOnUnknowns operator*(const complex_t &a, const LcKernelOperatorOnUnknowns &lc)
LcOperatorOnUnknown operator*(const complex_t &a, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknowns operator*(const complex_t &a, const LcOperatorOnUnknowns &lc)
SuLinearForm operator*(const complex_t &c, const SuLinearForm &sulf)

product(left) by a scalar

inline SymbolicFunction &operator*(const complex_t &c, const SymbolicFunction &f)
SymbolicTermMatrix &operator*(const complex_t &c, SymbolicTermMatrix &S)
Parameter operator*(const complex_t &v, const Parameter &p)

product complex and parameter

OperatorOnFunction &operator*(const complex_t &v, UnitaryVector n)

v*n same as f_v*n

OperatorOnUnknown &operator*(const complex_t &val, OperatorOnUnknown &opu)
Matrix<complex_t> operator*(const complex_t &x, const Matrix<real_t> &rA)

multiply real matrix by a complex value

complex x * real matrix A

Vector<complex_t> operator*(const complex_t &x, const Vector<real_t> &rA)

multiply real vector by complex scalar

multiply real vector by complex scalar “x * A”

complex_t operator*(const complex_t &z, const int i)
complex_t operator*(const complex_t &z, const int_t i)
complex_t operator*(const complex_t &z, const number_t n)
LargeMatrix<complex_t> operator*(const complex_t v, const LargeMatrix<real_t> &mat)
OperatorOnFunction &operator*(const Extension &e, const Function &f)

extension of Function

OperatorOnKernel &operator*(const Extension &e, const Kernel &k)

extension of Kernel

OperatorOnFunction &operator*(const Extension &e, OperatorOnFunction &opf)

extension of OperatorOnFunction

OperatorOnKernel &operator*(const Extension &e, OperatorOnKernel &opk)

extension of OperatorOnKernel

OperatorOnUnknown &operator*(const Function&, const Unknown&)

F*u.

OperatorOnUnknown &operator*(const Function&, OperatorOnUnknown&)

product syntax F*Op(u)

OperatorOnFunction &operator*(const Function&, UnitaryVector)

f*n same as timesn(f)/timesncrossn(f)

template<typename T, typename I>
Vector<T> operator*(const HMatrix<T, I> &h, const Vector<T> &x)

Hmatrix * Vector.

BilinearForm operator*(const int&, const BilinearForm&)

product(left) by an integer scalar

LinearForm operator*(const int&, const LinearForm&)

product(left) by a scalar

complex_t operator*(const int i, const complex_t &z)
Parameter operator*(const int v, const Parameter &p)

product int and parameter

BilinearForm operator*(const int_t&, const BilinearForm&)

product(left) by an integer scalar

LinearForm operator*(const int_t&, const LinearForm&)

product(left) by a scalar

complex_t operator*(const int_t i, const complex_t &z)
Parameter operator*(const int_t v, const Parameter &p)

product int_t and parameter

template<typename K>
PolynomialT<K> operator*(const K &k, const MonomialT<K> &m)
template<typename K>
PolynomialT<K> operator*(const K &k, const PolynomialT<K> &p)
template<typename K>
Vector<K> operator*(const K &x, const Vector<K> &a)

multiply vector by a scalar “x * A”

template<typename K>
Vector<Matrix<K>> operator*(const K &x, const Vector<Matrix<K>> &a)

scalar x * vector of matrix

KernelOperatorOnUnknowns operator*(const Kernel&, const OperatorOnUnknown&)

ker * opv

KernelOperatorOnUnknowns operator*(const Kernel&, const Unknown&)

ker * v

OperatorOnKernel &operator*(const Kernel&, UnitaryVector)

ker*n same as ntimes(ker)

KernelOperatorOnTermVector operator*(const Kernel &ker, const TermVector &tv)

ker * tv

KernelOperatorOnTermVectorAndUnknown operator*(const KernelOperatorOnTermVector &koptv, const OperatorOnUnknown &opv)
KernelOperatorOnTermVectorAndUnknown operator*(const KernelOperatorOnTermVector &koptv, const Unknown &v)
KernelOperatorOnTermVectorAndUnknown operator*(const KernelOperatorOnTermVectorAndUnknown&, const OperatorOnUnknown&)
KernelOperatorOnUnknowns operator*(const KernelOperatorOnUnknowns&, const OperatorOnUnknown&)

opker * opv

KernelOperatorOnUnknowns operator*(const KernelOperatorOnUnknowns&, const Unknown&)

opker * v

template<typename K, typename KK>
VectorEigenDense<K> operator*(const KK &k, const VectorEigenDense<K> &vec)
template<typename K, typename KK>
Matrix<K> operator*(const KK &x, const Matrix<K> &a)

scalar x * matrix A

template<typename K, typename KK>
SparseMatrix<K> operator*(const KK &x, const SparseMatrix<K> &a)

scalar x * matrix A

LargeMatrix<complex_t> operator*(const LargeMatrix<complex_t> &mA, const LargeMatrix<real_t> &mB)
LargeMatrix<complex_t> operator*(const LargeMatrix<complex_t> &mat, const real_t v)
std::vector<complex_t> operator*(const LargeMatrix<complex_t> &mat, const std::vector<real_t> &vec)
LargeMatrix<Matrix<complex_t>> operator*(const LargeMatrix<Matrix<complex_t>> &mA, const LargeMatrix<Matrix<real_t>> &mB)
std::vector<Vector<complex_t>> operator*(const LargeMatrix<Matrix<complex_t>> &mat, const std::vector<Vector<real_t>> &vec)
LargeMatrix<Matrix<complex_t>> operator*(const LargeMatrix<Matrix<real_t>> &mA, const LargeMatrix<Matrix<complex_t>> &mB)
std::vector<Vector<complex_t>> operator*(const LargeMatrix<Matrix<real_t>> &mat, const std::vector<Vector<complex_t>> &vec)
template<typename T>
std::vector<Vector<T>> operator*(const LargeMatrix<Matrix<T>> &mat, const std::vector<Vector<T>> &vec)
LargeMatrix<complex_t> operator*(const LargeMatrix<real_t> &mA, const LargeMatrix<complex_t> &mB)
LargeMatrix<complex_t> operator*(const LargeMatrix<real_t> &mat, const complex_t v)
std::vector<complex_t> operator*(const LargeMatrix<real_t> &mat, const std::vector<complex_t> &vec)
template<typename T>
LargeMatrix<T> operator*(const LargeMatrix<T> &mA, const LargeMatrix<T> &mB)
template<typename T>
std::vector<T> operator*(const LargeMatrix<T> &mat, const std::vector<T> &vec)
template<typename T>
LargeMatrix<T> operator*(const LargeMatrix<T> &mat, const T v)

Multiple a largeMatrix with a scalar.

LcKernelOperatorOnUnknowns operator*(const LcKernelOperatorOnUnknowns &lc, const complex_t &a)
LcKernelOperatorOnUnknowns operator*(const LcKernelOperatorOnUnknowns &lc, const real_t &a)
LcOperatorOnUnknown operator*(const LcOperatorOnUnknown &lc, const complex_t &a)
LcOperatorOnUnknown operator*(const LcOperatorOnUnknown &lc, const real_t &a)
LcOperatorOnUnknowns operator*(const LcOperatorOnUnknown &lcopu, const LcOperatorOnUnknown &lcopv)
LcOperatorOnUnknowns operator*(const LcOperatorOnUnknown &lcopu, const OperatorOnUnknown &opv)
LcOperatorOnUnknowns operator*(const LcOperatorOnUnknown &lcopu, const Unknown &v)
LcOperatorOnUnknowns operator*(const LcOperatorOnUnknowns &lc, const complex_t &a)
LcOperatorOnUnknowns operator*(const LcOperatorOnUnknowns &lc, const real_t &a)
TermVector operator*(const LcTerm<TermMatrix>&, const TermVector&)

LcTerm * TermVector.

template<typename TT, typename T>
LcTerm<TT> operator*(const LcTerm<TT> &lc, const T &v)
LinearForm operator*(const LinearForm&, const complex_t&)

product(right) by a scalar

LinearForm operator*(const LinearForm&, const int&)

product(right) by a scalar

LinearForm operator*(const LinearForm&, const int_t&)

product(right) by a scalar

LinearForm operator*(const LinearForm&, const number_t&)

product(right) by a scalar

LinearForm operator*(const LinearForm&, const real_t&)

product(right) by a scalar

template<typename T>
LowRankMatrix<T> operator*(const LowRankMatrix<T> &L1, const T &s)
template<typename T>
std::vector<T> operator*(const LowRankMatrix<T> &lrm, const std::vector<T> &x)
Matrix<complex_t> operator*(const Matrix<complex_t> &cA, const Matrix<real_t> &rB)

multiply complex matrix by a real matrix

complex matrix A x real matrix B

Vector<complex_t> operator*(const Matrix<complex_t> &cA, const Vector<real_t> &rV)

complex matrix * real vector

complex matrix x real vector

OperatorOnFunction &operator*(const Matrix<complex_t> &v, UnitaryVector n)

v*n same as f_v*n

template<typename K>
Matrix<K> operator*(const Matrix<K> &a, const K &x)

matrix A * scalar x

template<typename K>
Matrix<K> operator*(const Matrix<K> &a, const Matrix<K> &b)

matrix A * matrix B

template<typename K, typename V>
Vector<K> operator*(const Matrix<K> &m, const Vector<V> &v)

matrix x vector (template)

template<typename K>
PolynomialsBasisT<K> operator*(const Matrix<K> &mat, const PolynomialsBasisT<K> &ps)
template<typename K>
std::vector<PolynomialT<K>> operator*(const Matrix<K> &mat, const std::vector<PolynomialT<K>> &ps)

matrix * [p1,p2, …]

Matrix<complex_t> operator*(const Matrix<real_t> &rA, const complex_t &x)

multiply real matrix by a complex value

real matrix A * complex x

Matrix<complex_t> operator*(const Matrix<real_t> &rA, const Matrix<complex_t> &cB)

multiply real matrix by a complex matrix

real matrix A x complex matrix B

Vector<complex_t> operator*(const Matrix<real_t> &rA, const Vector<complex_t> &cV)

real matrix * complex vector

real matrix x complex vector

OperatorOnFunction &operator*(const Matrix<real_t> &v, UnitaryVector n)

v*n same as f_v*n

template<typename T>
OperatorOnUnknown &operator*(const Matrix<T> &val, const Unknown &un)

Matrix*u.

template<typename T>
OperatorOnUnknown &operator*(const Matrix<T> &val, OperatorOnUnknown &opu)
MatrixEntry operator*(const MatrixEntry&, const MatrixEntry&)

product of MatrixEntry

VectorEntry operator*(const MatrixEntry &mat, const VectorEntry &vec)

matrix * vector (consistent structure)

matrix * vector

template<typename K>
PolynomialT<K> operator*(const MonomialT<K> &m, const K &k)
template<typename K>
PolynomialT<K> operator*(const MonomialT<K> &m, const PolynomialT<K> &p)
template<typename K>
MonomialT<K> operator*(const MonomialT<K> &m1, const MonomialT<K> &m2)
BilinearForm operator*(const number_t&, const BilinearForm&)

product(left) by an integer scalar

LinearForm operator*(const number_t&, const LinearForm&)

product(left) by a scalar

complex_t operator*(const number_t n, const complex_t &z)
Parameter operator*(const number_t v, const Parameter &p)

product number_t and parameter

OperatorOnUnknown &operator*(const OperatorOnFunction&, const Unknown&)

op(F)*u

OperatorOnUnknown &operator*(const OperatorOnFunction&, OperatorOnUnknown&)

product syntax op(F)*Op(u)

KernelOperatorOnUnknowns operator*(const OperatorOnKernel&, const OperatorOnUnknown&)

opker * opv

KernelOperatorOnTermVector operator*(const OperatorOnKernel &opk, const TermVector &tv)

opker * tv

KernelOperatorOnUnknowns operator*(const OperatorOnUnknown&, const Kernel&)

opu * ker

KernelOperatorOnTermVectorAndUnknown operator*(const OperatorOnUnknown&, const KernelOperatorOnTermVectorAndUnknown&)
KernelOperatorOnUnknowns operator*(const OperatorOnUnknown&, const KernelOperatorOnUnknowns&)

opu * opker

KernelOperatorOnUnknowns operator*(const OperatorOnUnknown&, const OperatorOnKernel&)

opu * opker

LcOperatorOnUnknowns operator*(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lcopv)
KernelOperatorOnTermVectorAndUnknown operator*(const OperatorOnUnknown &opv, const KernelOperatorOnTermVector &koptv)
Parameter operator*(const Parameter &p, const complex_t &v)

product parameter and complex

Parameter operator*(const Parameter &p, const int v)

product parameter and int

Parameter operator*(const Parameter &p, const int_t v)

product parameter and int_t

Parameter operator*(const Parameter &p, const number_t v)

product parameter and number_t

Parameter operator*(const Parameter &p, const real_t v)

product parameter and real

Parameter operator*(const Parameter &p1, const Parameter &p2)

product of 2 parameters

Point operator*(const Point&, const real_t)

scale a point

template<typename K>
PolynomialBasisT<K> operator*(const PolynomialBasisT<K> &p, const PolynomialBasisT<K> &q)
template<typename K>
PolynomialsBasisT<K> operator*(const PolynomialBasisT<K> &pb, const std::vector<MonomialT<K>> &vp)
template<typename K>
PolynomialT<K> operator*(const PolynomialT<K> &p, const K &k)
template<typename K>
PolynomialT<K> operator*(const PolynomialT<K> &p, const MonomialT<K> &m)
template<typename K>
PolynomialT<K> operator*(const PolynomialT<K> &p1, const PolynomialT<K> &p2)
TermVector operator*(const Projector &P, const TermVector &X)

projection of a TermVector using *

BilinearForm operator*(const real_t&, const BilinearForm&)

product(left) by a real scalar

LinearForm operator*(const real_t&, const LinearForm&)

product(left) by a scalar

OperatorOnUnknown &operator*(const real_t&, const Unknown&)

r*u

LcKernelOperatorOnUnknowns operator*(const real_t &a, const LcKernelOperatorOnUnknowns &lc)
LcOperatorOnUnknown operator*(const real_t &a, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknowns operator*(const real_t &a, const LcOperatorOnUnknowns &lc)
inline SymbolicFunction &operator*(const real_t &r, const SymbolicFunction &f)
OperatorOnFunction &operator*(const real_t &v, UnitaryVector n)

v*n same as f_v*n

OperatorOnUnknown &operator*(const real_t &val, OperatorOnUnknown &opu)
Vector<complex_t> operator*(const real_t &x, const Vector<complex_t> &cA)

multiply real vector by complex scalar

inline Vector<Matrix<complex_t>> operator*(const real_t &x, const Vector<Matrix<complex_t>> &a)

scalar x * vector of matrix

template<typename T>
inline Vector<Vector<T>> operator*(const real_t &x, const Vector<Vector<T>> &A)

multiply vector of vector<T> by a real “x * A”

LargeMatrix<complex_t> operator*(const real_t v, const LargeMatrix<complex_t> &mat)
Parameter operator*(const real_t v, const Parameter &p)

product real and parameter

Point operator*(const real_t, const Point&)

scale a point

template<typename K, typename KK>
SparseMatrix<K> operator*(const SparseMatrix<K> &a, const KK &x)

matrix A * scalar x

template<typename K, typename V>
Vector<K> operator*(const SparseMatrix<K> &m, const std::vector<V> &v)

matrix x vector (template)

std::vector<complex_t> operator*(const std::vector<complex_t> &vec, const LargeMatrix<real_t> &mat)
std::vector<complex_t> operator*(const std::vector<real_t> &vec, const LargeMatrix<complex_t> &mat)
template<typename T>
std::vector<T> operator*(const std::vector<T> &vec, const LargeMatrix<T> &mat)
template<typename T>
std::vector<T> operator*(const std::vector<T> &x, const LowRankMatrix<T> &lrm)
template<typename K, typename V>
Vector<K> operator*(const std::vector<V> &v, const SparseMatrix<K> &m)

vector x matrix (template)

std::vector<Vector<complex_t>> operator*(const std::vector<Vector<complex_t>> &vec, const LargeMatrix<Matrix<real_t>> &mat)
std::vector<Vector<complex_t>> operator*(const std::vector<Vector<real_t>> &vec, const LargeMatrix<Matrix<complex_t>> &mat)
template<typename T>
std::vector<Vector<T>> operator*(const std::vector<Vector<T>> &vec, const LargeMatrix<Matrix<T>> &mat)
SuBilinearForm operator*(const SuBilinearForm&, const complex_t&)

multiply(right) by a scalar

SuLinearForm operator*(const SuLinearForm &sulf, const complex_t &c)

product(right) by a scalar

SuTermMatrix operator*(const SuTermMatrix&, const SuTermMatrix&)

product SuTermMatrix * SuTermMatrix

SuTermVector operator*(const SuTermMatrix &sutM, const SuTermVector &sutV)

Product of a SuTermMatrix M and a SuTermVector V, the result is a SuTermVector R the columns dof indices of M, say (j1,j2, …jn), may be different from the dof indices of V say (k1,k2, … kp).

product SuTermMatrix * SuTermVector

The dof indices of result vector will be always the lines dof indices of the matrix, say (i1,i2, …im). It means that the product M_i,j * V_j is performed only for j=k.

  • when {k1,k2, … kp}={j1,j2, …jn} the product is performed using largematrix product

  • when {k1,k2, … kp} differs from {j1,j2, …jn}, the vector V is extended and reduced to {j1,j2, …jn} and the product is performed using largematrix product

inline SuTermVector operator*(const SuTermVector &s1, const SuTermVector &s2)
SuTermVector operator*(const SuTermVector &sutV, const SuTermMatrix &sutM)

Product of a SuTermVector V and a SuTermMatrix M, the result is a SuTermVector R the lines dof indices of M, say (i1,i2, …in), may be different from the dof indices of V say (k1,k2, … kp).

product SuTermVector * SuTermMatrix

The dof indices of result vector will be always the columns dof indices of the matrix, say (j1,j2, …jm). It means that the product V_i * M_i,j is performed only for i=k.

  • when {k1,k2, … kp}={i1,i2, …in} the product is performed using largematrix product

  • when {k1,k2, … kp} differs from {i1,i2, …in}, the vector V is extended and reduced to {i1,i2, …in} and the product is performed using largematrix product

exists only for particular storage type

inline SymbolicFunction &operator*(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator*(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator*(const SymbolicFunction &f1, const SymbolicFunction &f2)
TermVector operator*(const SymbolicTermMatrix &S, const TermVector &X)
template<typename T>
LowRankMatrix<T> operator*(const T &s, const LowRankMatrix<T> &L1)
template<typename T>
LcTerm<TermMatrix> operator*(const T &t, const TermMatrix &tv)

product of TermMatrix by a real or a complex (template T)

template<typename T>
LcTerm<TermVector> operator*(const T &t, const TermVector &tv)
template<typename TT, typename T>
LcTerm<TT> operator*(const T &v, const LcTerm<TT> &lc)
template<typename T>
LargeMatrix<T> operator*(const T v, const LargeMatrix<T> &mat)

Multiple a largeMatrix with a scalar.

TermMatrix operator*(const TermMatrix&, const TermMatrix&)

product of TermMatrix

TermVector operator*(const TermMatrix&, const TermVector&)

product TermMatrix * TermVector

product of a TermMatrix A and a TermVector X There are 2 cases:

  • TermMatrix has a global representation, say scalar_entries_p !=nullptr or entries_p!=nullptr in that case the product is realized as a standard matrix/vector product Note that TermVector X has to have a global representation consistent with column numbering of TermMatrix if it not the case, global representation of X is computed

  • TermMatrix has a local representation, say scalar_entries_p =0 and entries_p=0 Assume that A has (v1,v2, …, vm) has row unknowns and (u1,u2, …, un) has column unknowns and X has (p1,p2, …, pq) unknowns where pi may belongs to {u1,u2, …, un} but it is not mandatory the result will be always a (v1,v2, …, vm)-TermVector. Only product of matrix block (vi,uj) with vector block pk=uj will be performed For instance: the product of a (u,v)-Termatrix M with a p-TermVector X is a zero v-TermVector: |Mvu 0vp| * [0u Xp]t = [0v] the product of a [(u,p),(v,q)]-Termatrix M with a p-TermVector X is a (v,q)-TermVector: |Mvu Mvp| |0u| |Mvp*Xp| | | | | = | | |Mqu Mqp| |Xp| |Mqp*Xp| Note that the zero blocks are never created; they are not indexed in the map TermVector::suTerms_ ! The real products are made with SuTermMatrix and SuTermVector

SymbolicTermMatrix &operator*(const TermMatrix &M, SymbolicTermMatrix &S)
template<typename T>
TermMatrix operator*(const TermMatrix &tM, const T &t)

product of TermMatrix by a real or a complex (template T)

template<typename T>
LcTerm<TermMatrix> operator*(const TermMatrix &tv, const T &t)

product of TermMatrix by a real or a complex (template T)

TermVector operator*(const TermVector&, const TermMatrix&)

product TermVector * TermMatrix

inline TermVector operator*(const TermVector &s1, const TermVector &s2)
KernelOperatorOnTermVector operator*(const TermVector &tv, const Kernel &ker)

tv * ker

KernelOperatorOnTermVector operator*(const TermVector &tv, const OperatorOnKernel &opker)

tv * opker

template<typename T>
LcTerm<TermVector> operator*(const TermVector &tv, const T &t)

product and division by a real or a complex (template T)

OperatorOnUnknown &operator*(const TermVector &tv, const TestFunction &un)

tv*u

OperatorOnUnknown &operator*(const TermVector &tv, const Unknown &un)

tv*u

OperatorOnUnknown &operator*(const TermVector &tv, OperatorOnUnknown &opu)

tv*opu

TermVector operator*(const TermVector &X, const SymbolicTermMatrix &S)
OperatorOnUnknown &operator*(const TestFunction &un, const TermVector &tv)

u*tv

Transformation operator*(const Transformation &t1, const Transformation &t2)

composition of transformations (general case)

OperatorOnUnknown &operator*(const Unknown&, const complex_t&)

u*r

OperatorOnUnknown &operator*(const Unknown&, const Function&)

u*F

KernelOperatorOnUnknowns operator*(const Unknown&, const Kernel&)

u * ker

KernelOperatorOnUnknowns operator*(const Unknown&, const KernelOperatorOnUnknowns&)

u * opker

OperatorOnUnknown &operator*(const Unknown&, const OperatorOnFunction&)

u*op(F)

OperatorOnUnknown &operator*(const Unknown&, const real_t&)

u*r

OperatorOnUnknown &operator*(const Unknown&, const Value&)

u*val

OperatorOnUnknown &operator*(const Unknown&, UnitaryVector)

u*n same as nx(u)

LcOperatorOnUnknowns operator*(const Unknown &u, const LcOperatorOnUnknown &lcopv)
template<typename T>
OperatorOnUnknown &operator*(const Unknown &un, const Matrix<T> &val)

u*Matrix

OperatorOnUnknown &operator*(const Unknown &un, const TermVector &tv)

u*tv

template<typename T>
OperatorOnUnknown &operator*(const Unknown &un, const Vector<T> &val)

u*Vector

template<typename T> KernelOperatorOnUnknowns operator* (const Unknown &un, T(fun)(const Point &, const Point &, Parameters &))

u * function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator* (const Unknown &un, T(fun)(const Point &, Parameters &))

u * function(Point,Parameters)

template<typename T> KernelOperatorOnUnknowns operator* (const Unknown &un, T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))

u * function(Vector<Point>,Parameters)

template<typename T> OperatorOnUnknown & operator* (const Unknown &un, T(fun)(const Vector< Point > &, Parameters &))

u * function(Vector<Point>,Parameters)

KernelOperatorOnTermVectorAndUnknown operator*(const Unknown &v, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator*(const Value&, const Unknown&)

val*u

OperatorOnUnknown &operator*(const Value&, OperatorOnUnknown&)

product syntax V*Op(u)

Vector<complex_t> operator*(const Vector<complex_t> &cA, const real_t &x)

multiply complex vector by real scalar

multiply complex vector by real scalar “A * x”

Vector<complex_t> operator*(const Vector<complex_t> &cV, const Matrix<real_t> &rA)

complex vector * real matrix

complex vector x real matrix

template<typename K>
Vector<K> operator*(const Vector<K> &a, const K &x)

multiply vector by a scalar “A * x”

template<typename K>
Vector<K> operator*(const Vector<K> &a, const Vector<K> &b)

forbidden product of vector

Vector<complex_t> operator*(const Vector<real_t> &rA, const complex_t &x)

multiply real vector by complex scalar

multiply real vector by complex scalar “A * x”

Vector<complex_t> operator*(const Vector<real_t> &rV, const Matrix<complex_t> &cA)

real vector * complex matrix

real vector x complex matrix

template<typename T>
OperatorOnUnknown &operator*(const Vector<T> &val, const Unknown &un)

Vector*u.

template<typename T>
OperatorOnUnknown &operator*(const Vector<T> &val, OperatorOnUnknown &opu)
template<typename K, typename V>
Vector<K> operator*(const Vector<V> &v, const Matrix<K> &m)

vector x matrix (template)

Vector<Vector<complex_t>> operator*(const Vector<Vector<complex_t>>&, const complex_t&)

multiply complex vector by complex scalar “A * x”

template<typename T>
Vector<Vector<T>> operator*(const Vector<Vector<T>> &A, const real_t &x)

multiply vector of vector<T> by a real “A * x”

template<typename K, typename KK>
VectorEigenDense<K> operator*(const VectorEigenDense<K> &vec, const KK &k)
VectorEntry operator*(const VectorEntry &vec, const MatrixEntry &mat)

vector * matrix (consistent structure)

vector * matrix

SymbolicTermMatrix &operator*(LcTerm<TermMatrix> &LC, SymbolicTermMatrix &S)
OperatorOnFunction &operator*(OperatorOnFunction&, UnitaryVector)

opf*n

OperatorOnKernel &operator*(OperatorOnKernel&, UnitaryVector)

opker*n

OperatorOnUnknown &operator*(OperatorOnUnknown&, const Function&)

product syntax Op(u)*F

OperatorOnUnknown &operator*(OperatorOnUnknown&, const OperatorOnFunction&)

product syntax Op(u)*op(F)

OperatorOnUnknown &operator*(OperatorOnUnknown&, const Value&)

product syntax Op(u)*V

OperatorOnUnknowns operator*(OperatorOnUnknown&, OperatorOnUnknown&)

opu * opv

OperatorOnUnknown &operator*(OperatorOnUnknown&, UnitaryVector)

div*n same as ndiv(u)

OperatorOnUnknowns operator*(OperatorOnUnknown&, Unknown&)

opu * v

OperatorOnUnknown &operator*(OperatorOnUnknown &opu, const complex_t &val)
template<typename T>
OperatorOnUnknown &operator*(OperatorOnUnknown &opu, const Matrix<T> &val)
OperatorOnUnknown &operator*(OperatorOnUnknown &opu, const real_t &val)
OperatorOnUnknown &operator*(OperatorOnUnknown &opu, const TermVector &tv)

opu*tv

template<typename T>
OperatorOnUnknown &operator*(OperatorOnUnknown &opu, const Vector<T> &val)
template<typename T> OperatorOnUnknown & operator* (OperatorOnUnknown &opu, T(fun)(const Point &, Parameters &))

opu * function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator* (OperatorOnUnknown &opu, T(fun)(const Vector< Point > &, Parameters &))

opu * function(Vector<Point>,Parameters)

inline real_t operator*(real_t a, const AngleUnit &u)
SymbolicTermMatrix &operator*(SymbolicTermMatrix &S, const complex_t &c)
SymbolicTermMatrix &operator*(SymbolicTermMatrix &S, const TermMatrix &M)
SymbolicTermMatrix &operator*(SymbolicTermMatrix &S, LcTerm<TermMatrix> &LC)
SymbolicTermMatrix &operator*(SymbolicTermMatrix &S1, SymbolicTermMatrix &S2)
template<typename T> KernelOperatorOnUnknowns operator* (T(fun)(const Point &, const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) * u

template<typename T> OperatorOnUnknown & operator* (T(fun)(const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) * u

template<typename T> OperatorOnUnknown & operator* (T(fun)(const Point &, Parameters &), OperatorOnUnknown &opu)

function(Point,Parameters) * opu

template<typename T> KernelOperatorOnUnknowns operator* (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) * u

template<typename T> OperatorOnUnknown & operator* (T(fun)(const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) * u

template<typename T> OperatorOnUnknown & operator* (T(fun)(const Vector< Point > &, Parameters &), OperatorOnUnknown &opu)

function(Vector<Point>,Parameters) * opu

OperatorOnFunction &operator*(UnitaryVector n, const complex_t &v)

v*n same as f_v*n

n*v same as n*f_v

OperatorOnFunction &operator*(UnitaryVector n, const Matrix<complex_t> &v)

v*n same as f_v*n

n*v same as n*f_v

OperatorOnFunction &operator*(UnitaryVector n, const Matrix<real_t> &v)

v*n same as f_v*n

n*v same as n*f_v

OperatorOnFunction &operator*(UnitaryVector n, const real_t &v)

v*n same as f_v*n

n*v same as n*f_v

OperatorOnFunction &operator*(UnitaryVector, const Function&)

n*f same as ntimes(f)/ncrossntimes(f)

OperatorOnKernel &operator*(UnitaryVector, const Kernel&)

n*ker same as ntimes(ker)

OperatorOnUnknown &operator*(UnitaryVector, const Unknown&)

n*u same as nx(u)

OperatorOnFunction &operator*(UnitaryVector, OperatorOnFunction&)

n*opf

OperatorOnKernel &operator*(UnitaryVector, OperatorOnKernel&)

n*opker

OperatorOnUnknown &operator*(UnitaryVector, OperatorOnUnknown&)

n*div same as ndiv(u)

OperatorOnUnknowns operator*(Unknown&, OperatorOnUnknown&)

u * opv

OperatorOnUnknowns operator*(Unknown&, Unknown&)

u * v

const BilinearForm &operator+(const BilinearForm&)

same bilinear form

BilinearForm operator+(const BilinearForm&, const BilinearForm&)

sum of bilinear forms

Parameter operator+(const char *v, const Parameter &p)

add char* and parameter

inline SymbolicFunction &operator+(const complex_t &c, const SymbolicFunction &f)
Parameter operator+(const complex_t &v, const Parameter &p)

add complex and parameter

Matrix<complex_t> operator+(const complex_t &x, const Matrix<real_t> &rA)

add a complex scalar to a real matrix

complex x + real matrix A

Vector<complex_t> operator+(const complex_t &x, const Vector<real_t> &rA)

add a scalar to vector

add complex scalar to real vector

complex_t operator+(const complex_t &z, const int i)
complex_t operator+(const complex_t &z, const int_t i)
complex_t operator+(const complex_t &z, const number_t n)
GeomDomain &operator+(const GeomDomain &dom1, const GeomDomain &dom2)

create the domain made of union of elements (same dimension)

Geometry operator+(const Geometry &g1, const Geometry &g2)

union of g1 and g2 (general case)

complex_t operator+(const int i, const complex_t &z)
Parameter operator+(const int v, const Parameter &p)

add int and parameter

complex_t operator+(const int_t i, const complex_t &z)
Parameter operator+(const int_t v, const Parameter &p)

add int_t and parameter

template<typename K>
Vector<K> operator+(const K &x, const Vector<K> &a)

add a scalar to a vect or “x+A”

LcKernelOperatorOnUnknowns operator+(const KernelOperatorOnUnknowns &opkuv, const LcKernelOperatorOnUnknowns &lc)
LcKernelOperatorOnUnknowns operator+(const KernelOperatorOnUnknowns &opkuv1, const KernelOperatorOnUnknowns &opkuv2)
template<typename K, typename KK>
Matrix<K> operator+(const KK &x, const Matrix<K> &a)

scalar x + matrix A

template<typename K, typename KK>
SparseMatrix<K> operator+(const KK &x, const SparseMatrix<K> &a)

scalar x + matrix A

LargeMatrix<complex_t> operator+(const LargeMatrix<complex_t> &matA, const LargeMatrix<real_t> &matB)
LargeMatrix<complex_t> operator+(const LargeMatrix<real_t> &matA, const LargeMatrix<complex_t> &matB)
template<typename T>
LargeMatrix<T> operator+(const LargeMatrix<T> &matA, const LargeMatrix<T> &matB)
LcKernelOperatorOnUnknowns operator+(const LcKernelOperatorOnUnknowns&)

algebraic operations

LcKernelOperatorOnUnknowns operator+(const LcKernelOperatorOnUnknowns &lc, const KernelOperatorOnUnknowns &opkuv)
LcKernelOperatorOnUnknowns operator+(const LcKernelOperatorOnUnknowns &lc1, const LcKernelOperatorOnUnknowns &lc2)
LcOperatorOnUnknown operator+(const LcOperatorOnUnknown&)

algebraic operations

LcOperatorOnUnknown operator+(const LcOperatorOnUnknown &lc, const OperatorOnUnknown &opu)
LcOperatorOnUnknown operator+(const LcOperatorOnUnknown &lc, const Unknown &u)
LcOperatorOnUnknown operator+(const LcOperatorOnUnknown &lc1, const LcOperatorOnUnknown &lc2)
LcOperatorOnUnknowns operator+(const LcOperatorOnUnknowns &lc)
LcOperatorOnUnknowns operator+(const LcOperatorOnUnknowns &lc, const OperatorOnUnknowns &opus)
LcOperatorOnUnknowns operator+(const LcOperatorOnUnknowns &lc1, const LcOperatorOnUnknowns &lc2)
LcTerm<TermMatrix> operator+(const LcTerm<TermMatrix>&, const TermMatrix&)

addition of a TermMatrix to a LcTerm

LcTerm<TermVector> operator+(const LcTerm<TermVector> &lctv, const TermVector &tv)
template<typename TT>
LcTerm<TT> operator+(const LcTerm<TT> &cl)
template<typename TT>
LcTerm<TT> operator+(const LcTerm<TT> &cl1, const LcTerm<TT> &cl2)
LinearForm operator+(const LinearForm&, const LinearForm&)

sum of linear forms

template<typename T>
LowRankMatrix<T> operator+(const LowRankMatrix<T> &L1)
template<typename T>
LowRankMatrix<T> operator+(const LowRankMatrix<T> &L1, const LowRankMatrix<T> &L2)
Matrix<complex_t> operator+(const Matrix<complex_t> &cA, const Matrix<real_t> &rB)

add a real matrix and a complex matrix

complex matrix A + real matrix B

template<typename K, typename KK>
Matrix<K> operator+(const Matrix<K> &a, const KK &x)

matrix A + scalar x

template<typename K>
Matrix<K> operator+(const Matrix<K> &a, const Matrix<K> &b)

sum of two matrices

template<typename K>
Matrix<K> operator+(const Matrix<K> &m)

unary operator+

Matrix<complex_t> operator+(const Matrix<real_t> &rA, const complex_t &x)

add a complex scalar to a real matrix

real matrix A + complex x

Matrix<complex_t> operator+(const Matrix<real_t> &rA, const Matrix<complex_t> &cB)

add a complex matrix and a real matrix

real matrix A + complex matrix B

complex_t operator+(const number_t n, const complex_t &z)
Parameter operator+(const number_t v, const Parameter &p)

add number_t and parameter

LcOperatorOnUnknown operator+(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknown operator+(const OperatorOnUnknown &opu, const OperatorOnUnknown &opv)
LcOperatorOnUnknown operator+(const OperatorOnUnknown &opu, const Unknown &v)
LcOperatorOnUnknowns operator+(const OperatorOnUnknowns&, const OperatorOnUnknowns&)

algebraic operations

LcOperatorOnUnknowns operator+(const OperatorOnUnknowns &opus, const LcOperatorOnUnknowns &lc)
Parameter operator+(const Parameter &p, const char *v)

add parameter and char*

Parameter operator+(const Parameter &p, const complex_t &v)

add parameter and complex

Parameter operator+(const Parameter &p, const int v)

add parameter and int

Parameter operator+(const Parameter &p, const int_t v)

add parameter and int_t

Parameter operator+(const Parameter &p, const number_t v)

add parameter and number_t

Parameter operator+(const Parameter &p, const real_t v)

add parameter and real

Parameter operator+(const Parameter &p, const string_t &v)

add parameter and string

Parameter operator+(const Parameter &p1, const Parameter &p2)

add 2 parameters

Point operator+(const Point&)

same point (completeness)

Point operator+(const Point&, const Point&)

sum of two points

Point operator+(const Point&, const real_t)

sum of two points

template<typename K>
PolynomialT<K> operator+(const PolynomialT<K> &p1, const PolynomialT<K> &p2)
inline SymbolicFunction &operator+(const real_t &r, const SymbolicFunction &f)
Vector<complex_t> operator+(const real_t &x, const Vector<complex_t> &cA)

add a scalar to vector

add real scalar to complex vector

Parameter operator+(const real_t v, const Parameter &p)

add real and parameter

Point operator+(const real_t, const Point&)

sum of two points

template<typename K, typename KK>
SparseMatrix<K> operator+(const SparseMatrix<K> &a, const KK &x)

matrix A + scalar x

template<typename K, typename KK>
SparseMatrix<K> operator+(const SparseMatrix<K> &a, const SparseMatrix<KK> &b)

sum of two matrices

template<typename K>
SparseMatrix<K> operator+(const SparseMatrix<K> &m)

unary operator+

Parameter operator+(const string_t &v, const Parameter &p)

add string and parameter

SuBilinearForm operator+(const SuBilinearForm&, const SuBilinearForm&)

sum of bilinear forms

SuLinearForm operator+(const SuLinearForm &sulf1, const SuLinearForm &sulf2)

sum of linear forms

inline SuTermVector operator+(const SuTermVector &s)
inline SuTermVector operator+(const SuTermVector &s1, const SuTermVector &s2)

binary and unary operators applied to SuTermVector’s, assuming they have the same size

inline SymbolicFunction &operator+(const SymbolicFunction &f)
inline SymbolicFunction &operator+(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator+(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator+(const SymbolicFunction &f1, const SymbolicFunction &f2)
const TermMatrix &operator+(const TermMatrix&)

unary operator+

LcTerm<TermMatrix> operator+(const TermMatrix&, const LcTerm<TermMatrix>&)

addition of a TermMatrix to a LcTerm

LcTerm<TermMatrix> operator+(const TermMatrix&, const TermMatrix&)

addition of TermMatrix

SymbolicTermMatrix &operator+(const TermMatrix &M, SymbolicTermMatrix &S)
const TermVector &operator+(const TermVector &tv)

multiple algebraic operations on TermVector produce a LcTerm object (linear combination of terms) the computation is done by constructor from LcTerm or assign operation of a LcTerm

addition of TermVector

LcTerm<TermVector> operator+(const TermVector &tv, const LcTerm<TermVector> &lctv)
LcTerm<TermVector> operator+(const TermVector &tv1, const TermVector &tv2)
LcOperatorOnUnknown operator+(const Unknown &u, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknown operator+(const Unknown &u, const OperatorOnUnknown &opv)
LcOperatorOnUnknown operator+(const Unknown &u, const Unknown &v)
Vector<complex_t> operator+(const Vector<complex_t> &cA, const real_t &x)

add a scalar to vector

add real scalar to complex vector

Vector<complex_t> operator+(const Vector<complex_t> &cA, const Vector<real_t> &rB)

vector addition

vector addition “ complex A + real B”

template<typename K>
Vector<K> operator+(const Vector<K> &a)

unary + (return same vector)

template<typename K>
Vector<K> operator+(const Vector<K> &a, const K &x)

add a scalar to a vector “A+x”

template<typename K>
Vector<K> operator+(const Vector<K> &a, const Vector<K> &b)

add two vectors

Vector<complex_t> operator+(const Vector<real_t> &rA, const complex_t &x)

add a scalar to vector

add complex scalar to real vector

Vector<complex_t> operator+(const Vector<real_t> &rA, const Vector<complex_t> &cB)

vector addition

vector addition “ real A + complex B”

SymbolicTermMatrix &operator+(LcTerm<TermMatrix> &LC, SymbolicTermMatrix &S)
SymbolicTermMatrix &operator+(SymbolicTermMatrix &S, const TermMatrix &M)
SymbolicTermMatrix &operator+(SymbolicTermMatrix &S, LcTerm<TermMatrix> &LC)
SymbolicTermMatrix &operator+(SymbolicTermMatrix &S1, SymbolicTermMatrix &S2)
BilinearForm operator-(const BilinearForm&)

opposite of a bilinear form

BilinearForm operator-(const BilinearForm&, const BilinearForm&)

difference of bilinear forms

inline SymbolicFunction &operator-(const complex_t &c, const SymbolicFunction &f)
Parameter operator-(const complex_t &v, const Parameter &p)

difference complex and parameter

Matrix<complex_t> operator-(const complex_t &x, const Matrix<real_t> &rA)

complex value - real matrix

complex x - real matrix A

Vector<complex_t> operator-(const complex_t &x, const Vector<real_t> &rA)

subtract real vector from complex scalar

subtract “complex x - A”

complex_t operator-(const complex_t &z, const int i)
complex_t operator-(const complex_t &z, const int_t i)
complex_t operator-(const complex_t &z, const number_t n)
GeomDomain &operator-(const GeomDomain &dom1, const GeomDomain &dom2)

internal tool used by MeshDomain::ficticiousDomain

create the domain made of dom1 elements that are not in dom2

Geometry operator-(const Geometry &g1, const Geometry &g2)

g2 hole of g1 (general case)

complex_t operator-(const int i, const complex_t &z)
Parameter operator-(const int v, const Parameter &p)

difference int and parameter

complex_t operator-(const int_t i, const complex_t &z)
Parameter operator-(const int_t v, const Parameter &p)

difference int_t and parameter

template<typename K>
Vector<K> operator-(const K &x, const Vector<K> &a)

subtract vector from scalar “x-A”

LcKernelOperatorOnUnknowns operator-(const KernelOperatorOnUnknowns &opkuv, const LcKernelOperatorOnUnknowns &lc)
LcKernelOperatorOnUnknowns operator-(const KernelOperatorOnUnknowns &opkuv1, const KernelOperatorOnUnknowns &opkuv2)
template<typename K, typename KK>
Matrix<K> operator-(const KK &x, const Matrix<K> &a)

scalar x - matrix A

template<typename K, typename KK>
SparseMatrix<K> operator-(const KK &x, const SparseMatrix<K> &a)

scalar x - matrix A

LargeMatrix<complex_t> operator-(const LargeMatrix<complex_t> &matA, const LargeMatrix<real_t> &matB)
LargeMatrix<complex_t> operator-(const LargeMatrix<real_t> &matA, const LargeMatrix<complex_t> &matB)
template<typename T>
LargeMatrix<T> operator-(const LargeMatrix<T> &matA, const LargeMatrix<T> &matB)
LcKernelOperatorOnUnknowns operator-(const LcKernelOperatorOnUnknowns &lc)
LcKernelOperatorOnUnknowns operator-(const LcKernelOperatorOnUnknowns &lc, const KernelOperatorOnUnknowns &opkuv)
LcKernelOperatorOnUnknowns operator-(const LcKernelOperatorOnUnknowns &lc1, const LcKernelOperatorOnUnknowns &lc2)
LcOperatorOnUnknown operator-(const LcOperatorOnUnknown &lc)
LcOperatorOnUnknown operator-(const LcOperatorOnUnknown &lc, const OperatorOnUnknown &opu)
LcOperatorOnUnknown operator-(const LcOperatorOnUnknown &lc, const Unknown &u)
LcOperatorOnUnknown operator-(const LcOperatorOnUnknown &lc1, const LcOperatorOnUnknown &lc2)
LcOperatorOnUnknowns operator-(const LcOperatorOnUnknowns &lc)
LcOperatorOnUnknowns operator-(const LcOperatorOnUnknowns &lc, const OperatorOnUnknowns &opus)
LcOperatorOnUnknowns operator-(const LcOperatorOnUnknowns &lc1, const LcOperatorOnUnknowns &lc2)
LcTerm<TermMatrix> operator-(const LcTerm<TermMatrix>&, const TermMatrix&)

substraction of a TermMatrix of a LcTerm

LcTerm<TermVector> operator-(const LcTerm<TermVector> &lctv, const TermVector &tv)
template<typename TT>
LcTerm<TT> operator-(const LcTerm<TT> &cl)
template<typename TT>
LcTerm<TT> operator-(const LcTerm<TT> &cl1, const LcTerm<TT> &cl2)
LinearForm operator-(const LinearForm&)

opposite of a linear form

LinearForm operator-(const LinearForm&, const LinearForm&)

difference of linear forms

template<typename T>
LowRankMatrix<T> operator-(const LowRankMatrix<T> &L1)
template<typename T>
LowRankMatrix<T> operator-(const LowRankMatrix<T> &L1, const LowRankMatrix<T> &L2)
Matrix<complex_t> operator-(const Matrix<complex_t> &cA, const Matrix<real_t> &rB)

real matrix - complex matrix

complex matrix A - real matrix B

template<typename K, typename KK>
Matrix<K> operator-(const Matrix<K> &a, const KK &x)

matrix A - scalar x

template<typename K>
Matrix<K> operator-(const Matrix<K> &a, const Matrix<K> &b)

matrix A - matrix B

template<typename K>
Matrix<K> operator-(const Matrix<K> &m)

unary operator- (negation operator)

Matrix<complex_t> operator-(const Matrix<real_t> &rA, const complex_t &x)

real matrix - complex value

real matrix A - complex x

Matrix<complex_t> operator-(const Matrix<real_t> &rA, const Matrix<complex_t> &cB)

complex matrix - real matrix

real matrix A - complex matrix B

complex_t operator-(const number_t n, const complex_t &z)
Parameter operator-(const number_t v, const Parameter &p)

difference number_t and parameter

LcOperatorOnUnknown operator-(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknown operator-(const OperatorOnUnknown &opu, const OperatorOnUnknown &opv)
LcOperatorOnUnknown operator-(const OperatorOnUnknown &opu, const Unknown &v)
LcOperatorOnUnknowns operator-(const OperatorOnUnknowns &opus, const LcOperatorOnUnknowns &lc)
LcOperatorOnUnknowns operator-(const OperatorOnUnknowns &opus1, const OperatorOnUnknowns &opus2)
Parameter operator-(const Parameter &p)
Parameter operator-(const Parameter &p, const complex_t &v)

difference parameter and complex

Parameter operator-(const Parameter &p, const int v)

difference parameter and int

Parameter operator-(const Parameter &p, const int_t v)

difference parameter and int_t

Parameter operator-(const Parameter &p, const number_t v)

difference parameter and number_t

Parameter operator-(const Parameter &p, const real_t v)

difference parameter and real

Parameter operator-(const Parameter &p1, const Parameter &p2)

difference of 2 parameters

Point operator-(const Point&)

opposite point

Point operator-(const Point&, const Point&)

difference of two points

Point operator-(const Point&, const real_t)

difference of two points

template<typename K>
PolynomialT<K> operator-(const PolynomialT<K> &m)
template<typename K>
PolynomialT<K> operator-(const PolynomialT<K> &p1, const PolynomialT<K> &p2)
inline SymbolicFunction &operator-(const real_t &r, const SymbolicFunction &f)
Vector<complex_t> operator-(const real_t &x, const Vector<complex_t> &cA)

substract complex vector from real scalar

subtract real scalar to complex vector

Parameter operator-(const real_t v, const Parameter &p)

difference real and parameter

Point operator-(const real_t, const Point&)

difference of two points

template<typename K, typename KK>
SparseMatrix<K> operator-(const SparseMatrix<K> &a, const KK &x)

matrix A - scalar x

template<typename K, typename KK>
SparseMatrix<K> operator-(const SparseMatrix<K> &a, const SparseMatrix<KK> &b)

matrix A - matrix B

template<typename K>
SparseMatrix<K> operator-(const SparseMatrix<K> &m)

unary operator- (negation operator)

SuBilinearForm operator-(const SuBilinearForm&)

opposite of bilinear form

SuBilinearForm operator-(const SuBilinearForm&, const SuBilinearForm&)

difference of bilinear forms

SuLinearForm operator-(const SuLinearForm &sulf)

opposite of linear form

SuLinearForm operator-(const SuLinearForm &sulf1, const SuLinearForm &sulf2)

difference of linear forms

inline SuTermVector operator-(const SuTermVector &s)
inline SuTermVector operator-(const SuTermVector &s1, const SuTermVector &s2)
inline SymbolicFunction &operator-(const SymbolicFunction &f)
inline SymbolicFunction &operator-(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator-(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator-(const SymbolicFunction &f1, const SymbolicFunction &f2)
LcTerm<TermMatrix> operator-(const TermMatrix&)

unary operator- (returns a LcTerm)

LcTerm<TermMatrix> operator-(const TermMatrix&, const LcTerm<TermMatrix>&)

substraction of a LcTerm from a TermMatrix

LcTerm<TermMatrix> operator-(const TermMatrix&, const TermMatrix&)

substraction of TermMatrix of a TermMatrix

SymbolicTermMatrix &operator-(const TermMatrix &M, SymbolicTermMatrix &S)
LcTerm<TermVector> operator-(const TermVector &tv)

substraction of TermVector

LcTerm<TermVector> operator-(const TermVector &tv, const LcTerm<TermVector> &lctv)
LcTerm<TermVector> operator-(const TermVector &tv1, const TermVector &tv2)
LcOperatorOnUnknown operator-(const Unknown &u, const LcOperatorOnUnknown &lc)
LcOperatorOnUnknown operator-(const Unknown &u, const OperatorOnUnknown &opv)
LcOperatorOnUnknown operator-(const Unknown &u, const Unknown &v)
Value operator-(const Value &v)
Vector<complex_t> operator-(const Vector<complex_t> &cA, const real_t &x)

substract real scalar from complex vector

subtract real scalar to complex vector

Vector<complex_t> operator-(const Vector<complex_t> &cA, const Vector<real_t> &rB)

vector subtraction A - B

vector subtraction “complex A - real B”

template<typename K>
Vector<K> operator-(const Vector<K> &a)

unary - (return opposite vector)

template<typename K>
Vector<K> operator-(const Vector<K> &a, const K &x)

subtract vector from scalar “A-x”

template<typename K>
Vector<K> operator-(const Vector<K> &a, const Vector<K> &b)

vector subtraction “A-B”

Vector<complex_t> operator-(const Vector<real_t> &rA, const complex_t &x)

subtract scalar from vector A - x

subtract scalar to vector “ A - complex x”

Vector<complex_t> operator-(const Vector<real_t> &rA, const Vector<complex_t> &cB)

vector subtraction A - B

vector subtraction “real A - complex B”

SymbolicTermMatrix &operator-(LcTerm<TermMatrix> &LC, SymbolicTermMatrix &S)
SymbolicTermMatrix &operator-(SymbolicTermMatrix &S, const TermMatrix &M)
SymbolicTermMatrix &operator-(SymbolicTermMatrix &S, LcTerm<TermMatrix> &LC)
SymbolicTermMatrix &operator-(SymbolicTermMatrix &S1, SymbolicTermMatrix &S2)
BilinearForm operator/(const BilinearForm&, const complex_t&)

division by a complex scalar

BilinearForm operator/(const BilinearForm&, const int&)

division by an integer scalar

BilinearForm operator/(const BilinearForm&, const int_t&)

division by an integer scalar

BilinearForm operator/(const BilinearForm&, const number_t&)

division by an integer scalar

BilinearForm operator/(const BilinearForm&, const real_t&)

division by a real scalar

inline SymbolicFunction &operator/(const complex_t &c, const SymbolicFunction &f)
Parameter operator/(const complex_t &v, const Parameter &p)

division complex and parameter

complex_t operator/(const complex_t &z, const int i)
complex_t operator/(const complex_t &z, const int_t i)
complex_t operator/(const complex_t &z, const number_t n)
Parameter operator/(const int v, const Parameter &p)

division int and parameter

Parameter operator/(const int_t v, const Parameter &p)

division int_t and parameter

LcKernelOperatorOnUnknowns operator/(const LcKernelOperatorOnUnknowns &lc, const complex_t &a)
LcKernelOperatorOnUnknowns operator/(const LcKernelOperatorOnUnknowns &lc, const real_t &a)
LcOperatorOnUnknown operator/(const LcOperatorOnUnknown &lc, const complex_t &a)
LcOperatorOnUnknown operator/(const LcOperatorOnUnknown &lc, const real_t &a)
LcOperatorOnUnknowns operator/(const LcOperatorOnUnknowns &lc, const complex_t &a)
LcOperatorOnUnknowns operator/(const LcOperatorOnUnknowns &lc, const real_t &a)
template<typename TT, typename T>
LcTerm<TT> operator/(const LcTerm<TT> &lc, const T &v)
LinearForm operator/(const LinearForm&, const complex_t&)

division by a scalar

LinearForm operator/(const LinearForm&, const int&)

division by a scalar

LinearForm operator/(const LinearForm&, const int_t&)

division by a scalar

LinearForm operator/(const LinearForm&, const number_t&)

division by a scalar

LinearForm operator/(const LinearForm&, const real_t&)

division by a scalar

template<typename T>
LowRankMatrix<T> operator/(const LowRankMatrix<T> &L1, const T &s)
template<typename K, typename KK>
Matrix<K> operator/(const Matrix<K> &a, const KK &x)

matrix A / scalar x

Matrix<complex_t> operator/(const Matrix<real_t> &rA, const complex_t &x)

divide real matrix by a complex value

real matrix A / complex x

template<typename K>
PolynomialT<K> operator/(const MonomialT<K> &m, const K &k)
Parameter operator/(const number_t v, const Parameter &p)

division number_t and parameter

Parameter operator/(const Parameter &p, const complex_t &v)

division parameter and complex

Parameter operator/(const Parameter &p, const int v)

division parameter and int_t

Parameter operator/(const Parameter &p, const int_t v)

division parameter and int

Parameter operator/(const Parameter &p, const number_t v)

division parameter and number_t

Parameter operator/(const Parameter &p, const real_t v)

division parameter and real

Parameter operator/(const Parameter &p1, const Parameter &p2)

division of 2 parameters

Point operator/(const Point&, const real_t)

scale a point

template<typename K>
PolynomialT<K> operator/(const PolynomialT<K> &p, const K &k)
inline SymbolicFunction &operator/(const real_t &r, const SymbolicFunction &f)
Parameter operator/(const real_t v, const Parameter &p)

division real and parameter

template<typename K, typename KK>
SparseMatrix<K> operator/(const SparseMatrix<K> &a, const KK &x)

matrix A / scalar x

SuBilinearForm operator/(const SuBilinearForm&, const complex_t&)

divide by a scalar

SuLinearForm operator/(const SuLinearForm &sulf, const complex_t &c)

division by a scalar

inline SuTermVector operator/(const SuTermVector &s1, const SuTermVector &s2)
inline SymbolicFunction &operator/(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator/(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator/(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<typename T>
LcTerm<TermMatrix> operator/(const TermMatrix &tv, const T &t)

division of TermMatrix by a real or a complex (template T)

inline TermVector operator/(const TermVector &s1, const TermVector &s2)
template<typename T>
LcTerm<TermVector> operator/(const TermVector &tv, const T &t)
Vector<complex_t> operator/(const Vector<complex_t> &cA, const real_t &x)

divide complex vector by real scalar

divide complex vector by real scalar “A / x”

template<typename K>
Vector<K> operator/(const Vector<K> &a, const K &x)

divide vector by a scalar “ A / x”

Vector<complex_t> operator/(const Vector<real_t> &rA, const complex_t &x)

divide real vector by complex scalar

divide real vector by complex scalar “A / x”

Vector<Vector<complex_t>> operator/(const Vector<Vector<complex_t>>&, const complex_t&)

divide complex vector by complex scalar “A / x”

template<typename T>
Vector<Vector<T>> operator/(const Vector<Vector<T>> &A, const real_t &x)

multiply vector of vector<T> by a real “A * x”

template<typename T>
inline VectorEntry operator/(const VectorEntry &v, const T &a)

operation V/=a

SymbolicTermMatrix &operator/(SymbolicTermMatrix &S, const complex_t &c)
inline SymbolicFunction &operator<(const complex_t &c, const SymbolicFunction &f)
bool operator<(const Dof&, const Dof&)

order between dofs

bool operator<(const DofComponent&, const DofComponent&)

less than

inline bool operator<(const DofKey &k1, const DofKey &k2)
bool operator<(const DomUnkDop&, const DomUnkDop&)

less than

bool operator<(const GeomElement&, const GeomElement&)

operator < to sort elements

template<typename K>
bool operator<(const MonomialT<K> &m1, const MonomialT<K> &m2)
bool operator<(const Point&, const Point&)

leather than between two points

inline SymbolicFunction &operator<(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator<(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
inline SymbolicFunction &operator<(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator<(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator<(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<class K>
bool operator<(const Triplet<K> &t1, const Triplet<K> &t2)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator<(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator<(VarComparison, const T &a)
template<typename T>
Collection<T> &operator<<(Collection<T> &ns, const T &n)

insertion utility

template<typename T>
PCollection<T> &operator<<(PCollection<T> &ts, const T &t)

insertion operator

std::ostream &operator<<(std::ostream&, const BilinearForm&)

output BilinearForm

std::ostream &operator<<(std::ostream&, const CompositeDomain&)

print operator

std::ostream &operator<<(std::ostream&, const Constraints&)

print operator

std::ostream &operator<<(std::ostream&, const CrackData&)

print operator

std::ostream &operator<<(std::ostream&, const DifferentialOperator&)

print utility

std::ostream &operator<<(std::ostream&, const Dof&)

print operator

std::ostream &operator<<(std::ostream&, const DofComponent&)

print operator

std::ostream &operator<<(std::ostream&, const DomainInfo&)

print operator

std::ostream &operator<<(std::ostream&, const EigenElements&)

print operator

std::ostream &operator<<(std::ostream&, const Element&)

print operator

std::ostream &operator<<(std::ostream&, const EssentialCondition&)

print operator

std::ostream &operator<<(std::ostream&, const EssentialConditions&)

print operator

std::ostream &operator<<(std::ostream&, const FeSubSpace&)

print operator

std::ostream &operator<<(std::ostream&, const Function&)

print operator

std::ostream &operator<<(std::ostream&, const GeomDomain&)

print geomdomain

std::ostream &operator<<(std::ostream&, const GeomElement&)

outputs geomelement characteristics

std::ostream &operator<<(std::ostream&, const Geometry&)

output Geometry

std::ostream &operator<<(std::ostream&, const GeomMapData&)

print operator

std::ostream &operator<<(std::ostream&, const IntegrationMethod&)

output IntegrationMethod on stream

std::ostream &operator<<(std::ostream&, const Interpolation&)

print operator

std::ostream &operator<<(std::ostream&, const Kernel&)

print operator

std::ostream &operator<<(std::ostream&, const KernelOperatorOnUnknowns&)

outputs OperatorOnUnknown attributes

std::ostream &operator<<(std::ostream&, const LcKernelOperatorOnUnknowns&)

print operator

std::ostream &operator<<(std::ostream&, const LcOperatorOnUnknown&)

print operator

std::ostream &operator<<(std::ostream&, const LcOperatorOnUnknowns&)

print operator

std::ostream &operator<<(std::ostream&, const LinearForm&)

output LinearForm

std::ostream &operator<<(std::ostream&, const MatrixEntry&)

print on ostream

std::ostream &operator<<(std::ostream&, const MatrixStorage&)

print operator

std::ostream &operator<<(std::ostream&, const Mesh&)

print operator

std::ostream &operator<<(std::ostream&, const MeshDomain&)

print operator

std::ostream &operator<<(std::ostream&, const MeshElement&)

prints characteristics and point numbers

std::ostream &operator<<(std::ostream&, const Operand&)

outputs Operand attributes

std::ostream &operator<<(std::ostream&, const OperatorOnUnknown&)

outputs OperatorOnUnknown attributes

std::ostream &operator<<(std::ostream&, const OperatorOnUnknowns&)

outputs OperatorOnUnknown attributes

std::ostream &operator<<(std::ostream&, const Parameter&)

output operator

std::ostream &operator<<(std::ostream&, const Parameters&)

flux insertion (write)

std::ostream &operator<<(std::ostream&, const PhysicalData&)

print operator

std::ostream &operator<<(std::ostream&, const Point&)

ostream insert

std::ostream &operator<<(std::ostream&, const PointsDomain&)

print operator

std::ostream &operator<<(std::ostream&, const Projector&)

output on stream

std::ostream &operator<<(std::ostream&, const Quadrature&)

print operator

std::ostream &operator<<(std::ostream&, const QuadratureIM&)

output on stream

std::ostream &operator<<(std::ostream&, const QuadratureRule&)

print operator

std::ostream &operator<<(std::ostream&, const RefElement&)

output operator

std::ostream &operator<<(std::ostream&, const SetOfConstraints&)

print operator

std::ostream &operator<<(std::ostream&, const SpectralBasis&)

print operator

std::ostream &operator<<(std::ostream&, const SuBilinearForm&)

output SuBilinearForm

std::ostream &operator<<(std::ostream&, const SubSpace&)

print operator

std::ostream &operator<<(std::ostream&, const Term&)

print operator

std::ostream &operator<<(std::ostream&, const Unknown&)

print an unknown

std::ostream &operator<<(std::ostream&, const Value&)

outputs Value in a output stream

std::ostream &operator<<(std::ostream&, const VectorEntry&)

output VectorEntry on stream

std::ostream &operator<<(std::ostream &os, const BoundingBox &bb)

output BoundingBox

inline std::ostream &operator<<(std::ostream &os, const Geodesic &g)
std::ostream &operator<<(std::ostream &os, const GeomRefElement &obj)

prints GeomRefElement object to ostream

print operator

std::ostream &operator<<(std::ostream &os, const GeoNumPair &gp)

outputs GeoNumPair characteristics

template<typename X, typename J>
std::ostream &operator<<(std::ostream &os, const HMatrix<X, J> &hm)
template<typename X, typename J>
std::ostream &operator<<(std::ostream &os, const HMatrixNode<X, J> &hm)
template<class S>
std::ostream &operator<<(std::ostream &os, const KdNode<S> &node)

print operator

template<class S>
std::ostream &operator<<(std::ostream &os, const KdTree<S> &kd)

print operator

template<typename T>
std::ostream &operator<<(std::ostream &os, const LargeMatrix<T> &mat)

output stream operator

std::ostream &operator<<(std::ostream &os, const Matrix<complex_t> &m)

complex matrix flux insertion (write)

flux insertion (write)

std::ostream &operator<<(std::ostream &os, const Matrix<real_t> &m)

real matrix flux insertion (write)

flux insertion (write)

std::ostream &operator<<(std::ostream &os, const MatrixEigenDense<complex_t> &m)

complex matrix flux insertion (write)

flux insertion (write)

std::ostream &operator<<(std::ostream &os, const MatrixEigenDense<real_t> &m)

real matrix flux insertion (write)

flux insertion (write)

std::ostream &operator<<(std::ostream &os, const MinimalBox &mb)

output MinimalBox

template<class S>
std::ostream &operator<<(std::ostream &os, const Node<S> &node)

print operator

std::ostream &operator<<(std::ostream &os, const OperatorOnFunction &opf)
std::ostream &operator<<(std::ostream &os, const OperatorOnKernel &opk)
inline std::ostream &operator<<(std::ostream &os, const ParameterKey &pk)
std::ostream &operator<<(std::ostream &os, const RealPair &rp)

output pair of reals

std::ostream &operator<<(std::ostream &os, const RefDof &obj)

print Reference D.o.F data

print operator

std::ostream &operator<<(std::ostream &os, const ShapeValues &obj)

print shape functions and derivatives to output file stream

print operator

inline std::ostream &operator<<(std::ostream &os, const SpaceMap &sm)
std::ostream &operator<<(std::ostream &os, const std::set<ParameterKey> &pks)
template<typename U>
std::ostream &operator<<(std::ostream &os, const std::vector<U> &v)
std::ostream &operator<<(std::ostream &os, const SuLinearForm &sulf)

output SuLinearForm

std::ostream &operator<<(std::ostream &os, const SuTermVectors &tvs)
template<typename T>
std::ostream &operator<<(std::ostream &os, const Tabular<T> &t)

general vector flux insertion (write)

std::ostream &operator<<(std::ostream &os, const TermVectors &tvs)
std::ostream &operator<<(std::ostream &os, const Transformation &t)

return the scale factor (=1.

output Transformation

if no homothety)

template<typename K>
std::ostream &operator<<(std::ostream &os, const Vector<K> &v)

general vector flux insertion (write)

std::ostream &operator<<(std::ostream &out, const AccessType &at)
std::ostream &operator<<(std::ostream &out, const AdjacentStatus &as)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const AlgebraicOperator &ao)

print operator for enum associated to a dictionary

template<typename T>
std::ostream &operator<<(std::ostream &out, const ApproximateMatrix<T> &am)
std::ostream &operator<<(std::ostream &out, const BCsub &bcs)
inline std::ostream &operator<<(std::ostream &out, const BezierSpline &sp)
inline std::ostream &operator<<(std::ostream &out, const BSpline &sp)
inline std::ostream &operator<<(std::ostream &out, const C2Spline &sp)
inline std::ostream &operator<<(std::ostream &out, const CatmullRomSpline &sp)
std::ostream &operator<<(std::ostream &out, const ClusteringMethod &cm)

print operator for enum associated to a dictionary

template<typename T>
std::ostream &operator<<(std::ostream &out, const ClusterNode<T> &cn)
template<typename T>
std::ostream &operator<<(std::ostream &out, const ClusterTree<T> &ct)
template<typename T>
std::ostream &operator<<(std::ostream &out, const Collection<T> &ns)

print utility

std::ostream &operator<<(std::ostream &out, const ComputationType &ct)
std::ostream &operator<<(std::ostream &out, const ContinuityOrder &co)
std::ostream &operator<<(std::ostream &out, const DiffOpType &dot)
inline std::ostream &operator<<(std::ostream &out, const DofKey &dk)
std::ostream &operator<<(std::ostream &out, const DofLocalization &dl)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const DofType &dt)
std::ostream &operator<<(std::ostream &out, const DomainType &dt)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const EcType &et)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const EigenSolverType &est)
std::ostream &operator<<(std::ostream &out, const FactorizationType &ft)
std::ostream &operator<<(std::ostream &out, const FEMapType &femt)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const FESubType &fest)
std::ostream &operator<<(std::ostream &out, const FEType &fet)
std::ostream &operator<<(std::ostream &out, const FuncFormType &fft)
std::ostream &operator<<(std::ostream &out, const FunctType &ft)
std::ostream &operator<<(std::ostream &out, const HMApproximationMethod &hmam)
template<typename T>
std::ostream &operator<<(std::ostream &out, const HMatrixEntry<T> &hme)
std::ostream &operator<<(std::ostream &out, const IEcomputationParameters &iep)
std::ostream &operator<<(std::ostream &out, const IntegrationMethodType &imt)
std::ostream &operator<<(std::ostream &out, const InterpolationType &it)
std::ostream &operator<<(std::ostream &out, const IOFormat &iof)
std::ostream &operator<<(std::ostream &out, const IterativeSolverType &ist)
std::ostream &operator<<(std::ostream &out, const Language &l)
template<typename TT>
std::ostream &operator<<(std::ostream &out, const LcTerm<TT> &lc)

print operator

std::ostream &operator<<(std::ostream &out, const LinearFormType &lft)
inline std::ostream &operator<<(std::ostream &out, const Malyuzhinets &mal)
std::ostream &operator<<(std::ostream &out, const MemoryUnit &mu)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const MsgType &mt)

print operator for enum associated to a dictionary

inline std::ostream &operator<<(std::ostream &out, const Nurbs &sp)
std::ostream &operator<<(std::ostream &out, const OCShapeType &ocst)
std::ostream &operator<<(std::ostream &out, const OrientationType &ot)
inline std::ostream &operator<<(std::ostream &out, const Parametrization &par)
template<typename T>
std::ostream &operator<<(std::ostream &out, const PCollection<T> &ts)

print utility

template<typename T>
std::ostream &operator<<(std::ostream &out, const PCollectionItem<T> &item)

output PCollectionItem on stream

std::ostream &operator<<(std::ostream &out, const ProjectionType &pt)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const ProjectorType &pt)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const QuadRule &qr)
std::ostream &operator<<(std::ostream &out, const ReductionMethodType &rmt)
std::ostream &operator<<(std::ostream &out, const SetOperationType &sot)

print operator for enum associated to a dictionary

std::ostream &operator<<(std::ostream &out, const ShapesType &sh)
std::ostream &operator<<(std::ostream &out, const ShapeType &sh)
std::ostream &operator<<(std::ostream &out, const SobolevType &st)
std::ostream &operator<<(std::ostream &out, const Space &sp)

output space characteristics

std::ostream &operator<<(std::ostream &out, const SpaceType &st)
std::ostream &operator<<(std::ostream &out, const SpecialMatrix &sm)

print operator for enum associated to a dictionary

inline std::ostream &operator<<(std::ostream &out, const Spline &sp)
std::ostream &operator<<(std::ostream &out, const SplineBC &sbc)
std::ostream &operator<<(std::ostream &out, const SplineParametrization &sp)
std::ostream &operator<<(std::ostream &out, const SplineSubtype &sst)
std::ostream &operator<<(std::ostream &out, const SplineType &st)
template<typename T>
std::ostream &operator<<(std::ostream &out, const std::list<T> &l)

print a list

template<typename K, typename T>
std::ostream &operator<<(std::ostream &out, const std::map<K, T> &m)

print a map

template<typename K, typename T>
std::ostream &operator<<(std::ostream &out, const std::multimap<K, T> &m)

print a multimap

template<typename U, typename V>
std::ostream &operator<<(std::ostream &out, const std::pair<U, std::vector<V>> &p)

print a pair with value being a std::vector

template<typename U, typename V>
std::ostream &operator<<(std::ostream &out, const std::pair<U, V> &p)

print a pair

template<typename T>
std::ostream &operator<<(std::ostream &out, const std::set<T> &s)

print a set

std::ostream &operator<<(std::ostream &out, const StorageBuildType &sbt)
std::ostream &operator<<(std::ostream &out, const StorageType &st)
std::ostream &operator<<(std::ostream &out, const StrucType &st)
std::ostream &operator<<(std::ostream &out, const SupportType &st)
inline std::ostream &operator<<(std::ostream &out, const SymbolicFunction &fn)
std::ostream &operator<<(std::ostream &out, const SymType &st)
std::ostream &operator<<(std::ostream &out, const TermType &tt)
std::ostream &operator<<(std::ostream &out, const TermVector &t)
inline std::ostream &operator<<(std::ostream &out, const Timer &T)
std::ostream &operator<<(std::ostream &out, const TransformType &tt)
template<class K>
std::ostream &operator<<(std::ostream &out, const Triplet<K> &t)
std::ostream &operator<<(std::ostream &out, const UnitaryVector &uv)
std::ostream &operator<<(std::ostream &out, const UnknownType &ut)
std::ostream &operator<<(std::ostream &out, const ValueType &vt)
Trace &operator<<(Trace&, const string_t &s)

print operator

inline SymbolicFunction &operator<=(const complex_t &c, const SymbolicFunction &f)
bool operator<=(const DomUnkDop&, const DomUnkDop&)

less than or equal

bool operator<=(const Point&, const Point&)

leather than or equal (deduced from <)

inline SymbolicFunction &operator<=(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator<=(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
inline SymbolicFunction &operator<=(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator<=(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator<=(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator<=(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator<=(VarComparison, const T &a)
inline SymbolicFunction &operator==(const complex_t &c, const SymbolicFunction &f)
inline bool operator==(const DifferentialOperator &d1, const DifferentialOperator &d2)
bool operator==(const Dof&, const Dof&)

equality between dofs

bool operator==(const DofComponent&, const DofComponent&)

equality

bool operator==(const DomUnkDop&, const DomUnkDop&)

equality

bool operator==(const Function&, const Function&)

compare functions (same fun and params pointers)

bool operator==(const GeomElement&, const GeomElement&)

overload operator == to sort elements

template<typename K>
bool operator==(const Matrix<K> &a, const Matrix<K> &b)

matrix comparison (element by element)

template<typename K>
bool operator==(const MonomialT<K> &m1, const MonomialT<K> &m2)
bool operator==(const Operand&, const Operand&)

compare Operands

bool operator==(const OperatorOnFunction&, const OperatorOnFunction&)

same operator on function

bool operator==(const OperatorOnKernel&, const OperatorOnKernel&)

same operator on kernel

bool operator==(const OperatorOnUnknown&, const OperatorOnUnknown&)

compare OperatorOnUnknown (same unknowns, same diff operators, same functions …)

bool operator==(const Point&, const Point&)

equality of two points

inline SymbolicFunction &operator==(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline bool operator==(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, SmartPointerNullType rhs)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator==(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
template<typename K>
bool operator==(const SparseMatrix<K> &a, const SparseMatrix<K> &b)

matrix comparison (element by element)

inline SymbolicFunction &operator==(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator==(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator==(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<class K>
bool operator==(const Triplet<K> &t1, const Triplet<K> &t2)
bool operator==(const Value&, const Value&)

compare values

template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline bool operator==(SmartPointerNullType lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator==(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator==(VarComparison, const T &a)
inline SymbolicFunction &operator>(const complex_t &c, const SymbolicFunction &f)
bool operator>(const DomUnkDop&, const DomUnkDop&)

greater than

template<typename K>
bool operator>(const MonomialT<K> &m1, const MonomialT<K> &m2)
bool operator>(const Point&, const Point&)

greater between two points (deduced from <)

inline SymbolicFunction &operator>(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator>(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
inline SymbolicFunction &operator>(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator>(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator>(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<class K>
bool operator>(const Triplet<K> &t1, const Triplet<K> &t2)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator>(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator>(VarComparison, const T &a)
inline SymbolicFunction &operator>=(const complex_t &c, const SymbolicFunction &f)
bool operator>=(const DomUnkDop&, const DomUnkDop&)

greater than or equal

bool operator>=(const Point&, const Point&)

greater between or equal (deduced from <)

inline SymbolicFunction &operator>=(const real_t &r, const SymbolicFunction &f)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator>=(const SmartPtr<T, OP, CP, KP, SP, CNP> &lhs, U *rhs)
inline SymbolicFunction &operator>=(const SymbolicFunction &f, const complex_t &c)
inline SymbolicFunction &operator>=(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator>=(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP, typename U>
inline bool operator>=(U *lhs, const SmartPtr<T, OP, CP, KP, SP, CNP> &rhs)
template<typename T>
inline ComparisonFunction<T> operator>=(VarComparison, const T &a)
std::istream &operator>>(std::istream&, Parameter&)

insertion operator

OperatorOnUnknown &operator^(const complex_t&, const Unknown&)

c^u

OperatorOnUnknown &operator^(const complex_t &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator^(const Function&, const Unknown&)

F^u.

OperatorOnUnknown &operator^(const Function&, OperatorOnUnknown&)

cross product syntax F^Op(u)

KernelOperatorOnUnknowns operator^(const Kernel&, const OperatorOnUnknown&)

ker ^ opv

KernelOperatorOnUnknowns operator^(const Kernel&, const Unknown&)

ker ^ v

KernelOperatorOnTermVector operator^(const Kernel &ker, const TermVector &tv)

ker ^ tv

KernelOperatorOnTermVectorAndUnknown operator^(const KernelOperatorOnTermVector &koptv, const OperatorOnUnknown &opv)
KernelOperatorOnTermVectorAndUnknown operator^(const KernelOperatorOnTermVector &koptv, const Unknown &v)
KernelOperatorOnTermVectorAndUnknown operator^(const KernelOperatorOnTermVectorAndUnknown&, const OperatorOnUnknown&)
KernelOperatorOnUnknowns operator^(const KernelOperatorOnUnknowns&, const OperatorOnUnknown&)

opker ^ opv

KernelOperatorOnUnknowns operator^(const KernelOperatorOnUnknowns&, const Unknown&)

opker ^ v

LcOperatorOnUnknowns operator^(const LcOperatorOnUnknown &lcopu, const LcOperatorOnUnknown &lcopv)
LcOperatorOnUnknowns operator^(const LcOperatorOnUnknown &lcopu, const OperatorOnUnknown &opv)
LcOperatorOnUnknowns operator^(const LcOperatorOnUnknown &lcopu, const Unknown &v)
template<typename T>
OperatorOnUnknown &operator^(const Matrix<T> &val, const Unknown &un)

Matrix^u.

template<typename T>
OperatorOnUnknown &operator^(const Matrix<T> &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator^(const OperatorOnFunction&, const Unknown&)

op(F)^u

OperatorOnUnknown &operator^(const OperatorOnFunction&, OperatorOnUnknown&)

cross product syntax op(F)^Op(u)

KernelOperatorOnUnknowns operator^(const OperatorOnKernel&, const OperatorOnUnknown&)

opker ^ opv

KernelOperatorOnTermVector operator^(const OperatorOnKernel &opk, const TermVector &tv)

opker ^ tv

KernelOperatorOnUnknowns operator^(const OperatorOnUnknown&, const Kernel&)

opu ^ ker

KernelOperatorOnTermVectorAndUnknown operator^(const OperatorOnUnknown&, const KernelOperatorOnTermVectorAndUnknown&)
KernelOperatorOnUnknowns operator^(const OperatorOnUnknown&, const KernelOperatorOnUnknowns&)

opu ^ opker

KernelOperatorOnUnknowns operator^(const OperatorOnUnknown&, const OperatorOnKernel&)

opu ^ opker

LcOperatorOnUnknowns operator^(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lcopv)
KernelOperatorOnTermVectorAndUnknown operator^(const OperatorOnUnknown &opv, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator^(const real_t&, const Unknown&)

r^u

inline SymbolicFunction &operator^(const real_t &r, const SymbolicFunction &f)
OperatorOnUnknown &operator^(const real_t &val, OperatorOnUnknown &opu)
template<typename T>
std::vector<T> operator^(const std::vector<T> &v1, const std::vector<T> &v2)
inline SuTermVector operator^(const SuTermVector &s, const real_t &p)
inline SymbolicFunction &operator^(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &operator^(const SymbolicFunction &f1, const SymbolicFunction &f2)
inline TermVector operator^(const TermVector &s, const real_t &p)
KernelOperatorOnTermVector operator^(const TermVector &tv, const Kernel &ker)

tv ^ ker

KernelOperatorOnTermVector operator^(const TermVector &tv, const OperatorOnKernel &opker)

tv ^ opker

OperatorOnUnknown &operator^(const TermVector &tv, const TestFunction &un)

tv^u

OperatorOnUnknown &operator^(const TermVector &tv, const Unknown &un)

tv^u

OperatorOnUnknown &operator^(const TermVector &tv, OperatorOnUnknown &opu)

tv^opu

OperatorOnUnknown &operator^(const TestFunction &un, const TermVector &tv)

u^tv

inline UnitaryVector operator^(const UnitaryVector &n1, const UnitaryVector &n2)

cross product of unitary vector (_nx^_ny) -> _nxcrossny

OperatorOnUnknown &operator^(const Unknown&, const complex_t&)

u^c

OperatorOnUnknown &operator^(const Unknown&, const Function&)

u^F

KernelOperatorOnUnknowns operator^(const Unknown&, const Kernel&)

u ^ ker

KernelOperatorOnUnknowns operator^(const Unknown&, const KernelOperatorOnUnknowns&)

u ^ opker

OperatorOnUnknown &operator^(const Unknown&, const OperatorOnFunction&)

u^op(F)

OperatorOnUnknown &operator^(const Unknown&, const real_t&)

u^r

OperatorOnUnknown &operator^(const Unknown&, const Value&)

u^val

OperatorOnUnknown &operator^(const Unknown&, UnitaryVector)

u^n same as -ncross(u)

LcOperatorOnUnknowns operator^(const Unknown &u, const LcOperatorOnUnknown &lcopv)
template<typename T>
OperatorOnUnknown &operator^(const Unknown &un, const Matrix<T> &val)

u^Matrix

OperatorOnUnknown &operator^(const Unknown &un, const TermVector &tv)

u^tv

template<typename T>
OperatorOnUnknown &operator^(const Unknown &un, const Vector<T> &val)

u^Vector

template<typename T> KernelOperatorOnUnknowns operator^ (const Unknown &un, T(fun)(const Point &, const Point &, Parameters &))

u ^ function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator^ (const Unknown &un, T(fun)(const Point &, Parameters &))

u ^ function(Point,Parameters)

template<typename T> KernelOperatorOnUnknowns operator^ (const Unknown &un, T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))

u ^ function(Vector<Point>,Parameters)

template<typename T> OperatorOnUnknown & operator^ (const Unknown &un, T(fun)(const Vector< Point > &, Parameters &))

u ^ function(Vector<Point>,Parameters)

KernelOperatorOnTermVectorAndUnknown operator^(const Unknown &v, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator^(const Value&, const Unknown&)

val^u

OperatorOnUnknown &operator^(const Value&, OperatorOnUnknown&)

cross product syntax V^Op(u)

template<typename T>
OperatorOnUnknown &operator^(const Vector<T> &val, const Unknown &un)

Vector^u.

template<typename T>
OperatorOnUnknown &operator^(const Vector<T> &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator^(OperatorOnUnknown&, const Function&)

cross product syntax Op(u)^F

OperatorOnUnknown &operator^(OperatorOnUnknown&, const OperatorOnFunction&)

cross product syntax Op(u)^op(F)

OperatorOnUnknown &operator^(OperatorOnUnknown&, const Value&)

cross product syntax Op(u)^V

OperatorOnUnknowns operator^(OperatorOnUnknown&, OperatorOnUnknown&)

opu ^ opv

OperatorOnUnknown &operator^(OperatorOnUnknown&, UnitaryVector)

-n^(n^u) or -n^curl(u) same as -ncrossncross(u) or -ncrosscurl(u)

OperatorOnUnknowns operator^(OperatorOnUnknown&, Unknown&)

opu ^ v

OperatorOnUnknown &operator^(OperatorOnUnknown &opu, const complex_t &val)
template<typename T>
OperatorOnUnknown &operator^(OperatorOnUnknown &opu, const Matrix<T> &val)
OperatorOnUnknown &operator^(OperatorOnUnknown &opu, const real_t &val)
OperatorOnUnknown &operator^(OperatorOnUnknown &opu, const TermVector &tv)

opu^v

template<typename T>
OperatorOnUnknown &operator^(OperatorOnUnknown &opu, const Vector<T> &val)
template<typename T> OperatorOnUnknown & operator^ (OperatorOnUnknown &opu, T(fun)(const Point &, Parameters &))

opu ^ function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator^ (OperatorOnUnknown &opu, T(fun)(const Vector< Point > &, Parameters &))

opu ^ function(Vector<Point>,Parameters)

template<typename T> KernelOperatorOnUnknowns operator^ (T(fun)(const Point &, const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) ^ u

template<typename T> OperatorOnUnknown & operator^ (T(fun)(const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) ^ u

template<typename T> OperatorOnUnknown & operator^ (T(fun)(const Point &, Parameters &), OperatorOnUnknown &opu)

function(Point,Parameters) ^ opu

template<typename T> KernelOperatorOnUnknowns operator^ (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) ^ u

template<typename T> OperatorOnUnknown & operator^ (T(fun)(const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) ^ u

template<typename T> OperatorOnUnknown & operator^ (T(fun)(const Vector< Point > &, Parameters &), OperatorOnUnknown &opu)

function(Vector<Point>,Parameters) ^ opu

OperatorOnFunction &operator^(UnitaryVector, const Function&)

n^f same as ncross(f)

OperatorOnKernel &operator^(UnitaryVector, const Kernel&)

n^ker same as ncross(ker)

OperatorOnUnknown &operator^(UnitaryVector, const Unknown&)

n^u same as ncross(u)

OperatorOnFunction &operator^(UnitaryVector, OperatorOnFunction&)

n^opf

OperatorOnKernel &operator^(UnitaryVector, OperatorOnKernel&)

n^opker

OperatorOnUnknown &operator^(UnitaryVector, OperatorOnUnknown&)

n^(n^u) or n^curl(u) same as ncrossncross(u) or ncrosscurl(u)

OperatorOnUnknowns operator^(Unknown&, OperatorOnUnknown&)

u ^ opv

OperatorOnUnknowns operator^(Unknown&, Unknown&)

u ^ v

OperatorOnUnknown &operator|(const complex_t&, const Unknown&)

c|u

OperatorOnUnknown &operator|(const complex_t &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator|(const Function&, const Unknown&)

F|u.

OperatorOnUnknown &operator|(const Function&, OperatorOnUnknown&)

innerproduct syntax F|Op(u)

OperatorOnFunction &operator|(const Function&, UnitaryVector)

f|n same as ndot(f)

KernelOperatorOnUnknowns operator|(const Kernel&, const OperatorOnUnknown&)

ker | opv

KernelOperatorOnUnknowns operator|(const Kernel&, const Unknown&)

ker | v

OperatorOnKernel &operator|(const Kernel&, UnitaryVector)

ker|n same as ndot(ker)

KernelOperatorOnTermVector operator|(const Kernel &ker, const TermVector &tv)

ker | tv

KernelOperatorOnTermVectorAndUnknown operator|(const KernelOperatorOnTermVector &koptv, const OperatorOnUnknown &opv)
KernelOperatorOnTermVectorAndUnknown operator|(const KernelOperatorOnTermVector &koptv, const Unknown &v)
KernelOperatorOnTermVectorAndUnknown operator|(const KernelOperatorOnTermVectorAndUnknown&, const OperatorOnUnknown&)
KernelOperatorOnUnknowns operator|(const KernelOperatorOnUnknowns&, const OperatorOnUnknown&)

opker | opv

KernelOperatorOnUnknowns operator|(const KernelOperatorOnUnknowns&, const Unknown&)

opker | v

LcOperatorOnUnknowns operator|(const LcOperatorOnUnknown &lcopu, const LcOperatorOnUnknown &lcopv)
LcOperatorOnUnknowns operator|(const LcOperatorOnUnknown &lcopu, const OperatorOnUnknown &opv)
LcOperatorOnUnknowns operator|(const LcOperatorOnUnknown &lcopu, const Unknown &v)
template<typename T>
OperatorOnUnknown &operator|(const Matrix<T> &val, const Unknown &un)

Matrix|u.

template<typename T>
OperatorOnUnknown &operator|(const Matrix<T> &val, OperatorOnUnknown &opu)
OperatorOnUnknown &operator|(const OperatorOnFunction&, const Unknown&)

op(F)|u

OperatorOnUnknown &operator|(const OperatorOnFunction&, OperatorOnUnknown&)

innerproduct syntax op(F)|Op(u)

KernelOperatorOnUnknowns operator|(const OperatorOnKernel&, const OperatorOnUnknown&)

opker | opv

KernelOperatorOnTermVector operator|(const OperatorOnKernel &opk, const TermVector &tv)

opker | tv

KernelOperatorOnUnknowns operator|(const OperatorOnUnknown&, const Kernel&)

opu | ker

KernelOperatorOnTermVectorAndUnknown operator|(const OperatorOnUnknown&, const KernelOperatorOnTermVectorAndUnknown&)
KernelOperatorOnUnknowns operator|(const OperatorOnUnknown&, const KernelOperatorOnUnknowns&)

opu | opker

KernelOperatorOnUnknowns operator|(const OperatorOnUnknown&, const OperatorOnKernel&)

opu | opker

LcOperatorOnUnknowns operator|(const OperatorOnUnknown &opu, const LcOperatorOnUnknown &lcopv)
KernelOperatorOnTermVectorAndUnknown operator|(const OperatorOnUnknown &opv, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator|(const real_t&, const Unknown&)

r|u

OperatorOnUnknown &operator|(const real_t &val, OperatorOnUnknown &opu)
TermVector operator|(const TermVector&, const GeomDomain&)

restrict TermVector to a GeomDomain

KernelOperatorOnTermVector operator|(const TermVector &tv, const Kernel &ker)

tv | ker

KernelOperatorOnTermVector operator|(const TermVector &tv, const OperatorOnKernel &opker)

tv | opker

OperatorOnUnknown &operator|(const TermVector &tv, const TestFunction &un)

tv|u

OperatorOnUnknown &operator|(const TermVector &tv, const Unknown &un)

tv|u

OperatorOnUnknown &operator|(const TermVector &tv, OperatorOnUnknown &opu)

tv|opu

complex_t operator|(const TermVector &tv1, const TermVector &tv2)

main operator for inner or hermitian products

OperatorOnUnknown &operator|(const TestFunction &un, const TermVector &tv)

u|tv

inline UnitaryVector operator|(const UnitaryVector &n1, const UnitaryVector &n2)

inner product of unitary vector (_nx|_ny) -> _nxdotny

OperatorOnUnknown &operator|(const Unknown&, const complex_t&)

u|c

OperatorOnUnknown &operator|(const Unknown&, const Function&)

u|F

KernelOperatorOnUnknowns operator|(const Unknown&, const Kernel&)

u | ker

KernelOperatorOnUnknowns operator|(const Unknown&, const KernelOperatorOnUnknowns&)

u | opker

OperatorOnUnknown &operator|(const Unknown&, const OperatorOnFunction&)

u|op(F)

OperatorOnUnknown &operator|(const Unknown&, const real_t&)

u|r

OperatorOnUnknown &operator|(const Unknown&, const Value&)

u|val

OperatorOnUnknown &operator|(const Unknown&, UnitaryVector)

u|n same as ndot(u)

LcOperatorOnUnknowns operator|(const Unknown &u, const LcOperatorOnUnknown &lcopv)
OperatorOnUnknown &operator|(const Unknown &un, const GeomDomain &dom)
template<typename T>
OperatorOnUnknown &operator|(const Unknown &un, const Matrix<T> &val)

u|Matrix

OperatorOnUnknown &operator|(const Unknown &un, const TermVector &tv)

u|tv

template<typename T>
OperatorOnUnknown &operator|(const Unknown &un, const Vector<T> &val)

u|Vector

template<typename T> KernelOperatorOnUnknowns operator| (const Unknown &un, T(fun)(const Point &, const Point &, Parameters &))

u | function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator| (const Unknown &un, T(fun)(const Point &, Parameters &))

u | function(Point,Parameters)

template<typename T> KernelOperatorOnUnknowns operator| (const Unknown &un, T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))

u | function(Vector<Point>,Parameters)

template<typename T> OperatorOnUnknown & operator| (const Unknown &un, T(fun)(const Vector< Point > &, Parameters &))

u | function(Vector<Point>,Parameters)

KernelOperatorOnTermVectorAndUnknown operator|(const Unknown &v, const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown &operator|(const Value&, const Unknown&)

val|u

OperatorOnUnknown &operator|(const Value&, OperatorOnUnknown&)

innerproduct syntax V|Op(u)

OperatorOnFunction &operator|(const Vector<complex_t> &v, UnitaryVector n)

v|n same as f_v|n

OperatorOnFunction &operator|(const Vector<real_t> &v, UnitaryVector n)

v|n same as f_v|n

template<typename T>
OperatorOnUnknown &operator|(const Vector<T> &val, const Unknown &un)

Vector|u.

template<typename T>
OperatorOnUnknown &operator|(const Vector<T> &val, OperatorOnUnknown &opu)
OperatorOnFunction &operator|(OperatorOnFunction&, UnitaryVector)

opf|n

OperatorOnKernel &operator|(OperatorOnKernel&, UnitaryVector)

opker|n

OperatorOnUnknown &operator|(OperatorOnUnknown&, const Function&)

innerproduct syntax Op(u)|F

OperatorOnUnknown &operator|(OperatorOnUnknown&, const OperatorOnFunction&)

innerproduct syntax Op(u)|op(F)

OperatorOnUnknown &operator|(OperatorOnUnknown&, const Value&)

innerproduct syntax Op(u)|V

OperatorOnUnknowns operator|(OperatorOnUnknown&, OperatorOnUnknown&)

opu | opv

OperatorOnUnknown &operator|(OperatorOnUnknown&, UnitaryVector)

grad(u)|n same as ndotgrad(u)

OperatorOnUnknowns operator|(OperatorOnUnknown&, Unknown&)

opu | v

OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const complex_t &val)
OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const GeomDomain &dom)
template<typename T>
OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const Matrix<T> &val)
OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const real_t &val)
OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const TermVector &tv)

opu|tv

template<typename T>
OperatorOnUnknown &operator|(OperatorOnUnknown &opu, const Vector<T> &val)
template<typename T> OperatorOnUnknown & operator| (OperatorOnUnknown &opu, T(fun)(const Point &, Parameters &))

opu | function(Point,Parameters)

template<typename T> OperatorOnUnknown & operator| (OperatorOnUnknown &opu, T(fun)(const Vector< Point > &, Parameters &))

opu | function(Vector<Point>,Parameters)

inline Space &operator|(Space &sp, const GeomDomain &dom)
Parameters:

dom – return sub-space or trace space on domain of a space, created if not exist

template<typename T> KernelOperatorOnUnknowns operator| (T(fun)(const Point &, const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) | u

template<typename T> OperatorOnUnknown & operator| (T(fun)(const Point &, Parameters &), const Unknown &un)

function(Point,Parameters) | u

template<typename T> OperatorOnUnknown & operator| (T(fun)(const Point &, Parameters &), OperatorOnUnknown &opu)

function(Point,Parameters) | opu

template<typename T> KernelOperatorOnUnknowns operator| (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) | u

template<typename T> OperatorOnUnknown & operator| (T(fun)(const Vector< Point > &, Parameters &), const Unknown &un)

function(Vector<Point>,Parameters) | u

template<typename T> OperatorOnUnknown & operator| (T(fun)(const Vector< Point > &, Parameters &), OperatorOnUnknown &opu)

function(Vector<Point>,Parameters) | opu

OperatorOnFunction &operator|(UnitaryVector n, const Vector<complex_t> &v)

n|v same as n|f_v

OperatorOnFunction &operator|(UnitaryVector n, const Vector<real_t> &v)

n|v same as n|f_v

OperatorOnFunction &operator|(UnitaryVector, const Function&)

n|f same as ndot(f)

OperatorOnKernel &operator|(UnitaryVector, const Kernel&)

n|ker same as ndot(ker)

OperatorOnUnknown &operator|(UnitaryVector, const Unknown&)

n|u same as ndot(u)

OperatorOnFunction &operator|(UnitaryVector, OperatorOnFunction&)

n|opf

OperatorOnKernel &operator|(UnitaryVector, OperatorOnKernel&)

n|opker

OperatorOnUnknown &operator|(UnitaryVector, OperatorOnUnknown&)

n|grad(u) same as ndotgrad(u)

OperatorOnUnknowns operator|(Unknown&, OperatorOnUnknown&)

u | opv

OperatorOnUnknowns operator|(Unknown&, Unknown&)

u | v

template<typename T>
ComparisonFunction<T> operator||(const ComparisonFunction<T> &cof1, const ComparisonFunction<T> &cof2)
inline SymbolicFunction &operator||(const SymbolicFunction &f1, const SymbolicFunction &f2)
CircArc operator~(const CircArc &c)

parametrization c+(a-c)cos(t)+(b-c)sin(t) t=(1-x)*thetamin + x*thetamax with x=pt[0] in [0,1]

copy a CircArc and reverse its orientation

EllArc operator~(const EllArc &e)

parametrization c+(a-c)cos(s)+(b-c)sin(s) with s = thetamin+ t*(thetamax-thetamin), t in [0,1]

copy a EllArc and reverse its orientation

inline Geometry &operator~(const Geometry &g)
ParametrizedArc operator~(const ParametrizedArc &s)

copy a ParametrizedArc and reverse its orientation

Segment operator~(const Segment &s)

copy a Segment and reverse its orientation

SplineArc operator~(const SplineArc &s)

copy a SplineArc and reverse its orientation

inline SymbolicTermMatrix &operator~(const TermMatrix &M)
string_t opName(SymbolicOperation o)
inline Point orthogonalPoint(const Point &P)
inline Point orthogonalPoint3D(const Point &P)
std::vector<std::vector<real_t>> outwardNormalsOfTriangle(const Point &T1, const Point &T2, const Point &T3)

computation of outward normals to the triangle whose vertices are T1, T2 and T3 normals[0] : outward normal of [T2T3] normals[1] : outward normal of [T1T3] normals[2] : outward normal of [T1T2]

outward normals to a triangle with given vertices

void over4pir(const Point&, const Point&, real_t&)

\(1/(4\pi r)\)

inline Vector<real_t> parametrization_BezierSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_BSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_C2Spline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_CatmullRomSpline(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_CircArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_EllArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Ellipse(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_EllipsoidSidePart(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Nurbs(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Parallelogram(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_ParametrizedArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Piecewise(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Quadrangle(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Segment(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_SplineArc(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_SplineSurface(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline Vector<real_t> parametrization_Triangle(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call (Duffy)

inline Vector<real_t> parametrization_TrunkSidePart(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline void parfun_error(const string_t &com, DiffOpType d)
inline void parmap_error(const string_t &com, number_t d)
void parseEigenPars(const std::vector<Parameter> ps, const number_t nevmax, std::set<ParameterKey> &usedParams, EigPars &ep)

Parser of user parameters for eigen solvers (internal tool) Returns the list of parameter keys specified by the user (usedParams) and the parameter values to be used (ep).

Nota: the solver parameter is skipped.

template<typename T>
std::vector<T> &permute(std::vector<T> &v, std::vector<T> &vp, const std::vector<number_t> &p)

permutation of a vector v: vector to be permuted vp: permuted vector p: permutation (index starts from 0) permutation is driven by the permutation vector p that may be smaller than the vector v (but not larger!): vp[i]= v[p[i]] i=0, p.size()

template<typename T>
std::vector<T> &permuteInv(std::vector<T> &v, std::vector<T> &vp, const std::vector<number_t> &p)

inverse permutation of a vector v: vector to be permuted vp: permuted vector p: permutation (index starts from 0) permutation is driven by the permutation vector p that may be smaller than the vector v (but not larger!): vp[p[i]]= v[i] i=0, p.size()

SymbolicFunction phi_(_phi)
string_t physicalDomain(const std::vector<string_t> &sidenames, const string_t &sid, std::vector<PhysicalData> &pids)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

create geo Physical domain string from sidenames and type of side domain sd = “P” or “L” or “E” or “S”

string_t physicalDomain(const std::vector<string_t> &sidenames, const Strings &sids, std::vector<PhysicalData> &pids)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

create geo Physical domain string from sidenames and type of side domain sd = “P” or “L” or “E” or “S”

string_t physicalDomain(const string_t &domName, const string_t &sid, dimen_t dim, std::vector<PhysicalData> &pids)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

create geo Physical domain string from domain name, surface id, and dimension

string_t physicalDomain(const string_t &domName, const Strings &sids, dimen_t dim, std::vector<PhysicalData> &pids)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

create geo Physical domain string from domain name, surface ids, and dimension

string_t physicalDomainForExtrusion(const Geometry &g, const std::vector<string_t> &sidenames, const std::vector<std::pair<number_t, number_t>> &nbSidesPerComponent, const string_t &sd, const std::map<string_t, Strings> &inputs, std::vector<PhysicalData> &pids, real_t angle)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S” for extrusion geometries

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

string_t physicalDomains(const std::vector<PhysicalData> &pids)

create geo Physical domain string from sidenames and the type of side domain sd = “P” or “L” or “E” or “S”

static const real_t pi_over4 (pi_/4.)

around pi

void pictureCrack(const std::set<GeomElement*> &elts1, const std::set<GeomElement*> &elts2, const string_t &fn)
Vector<real_t> planeNormal(const Point &p, bool fromParameters, Parameters &pars)

function returning the plane normal stored in Parameters pars

inline Geometry planeSurfaceFrom(const Geometry &c, string_t domName = "")

definition of a geometry 2D from an union of boundaries 1D

void plot(const TermVector &tv, IOFormat iof)

plot a TermVector using external call of appropriate viewer

plotting a TermVector

inline Vector<real_t> point_to_xyz(const Point &p, Parameters &pa = defaultParameters)
real_t pointDistance(const Point&, const Point&)

returns distance between two points

const void *pointer(const Parameter&)

cast to const void *

bool pointInElement(const Point &P, const GeomElement &E, real_t tol)
bool pointInPolygon(const Point &p, const Geometry &g)
bool pointInPolyhedron(const Point &p, const Geometry &g)
int pointOrientation2D(const Point &A, const Point &B, const Point &C, real_t tol)

determines if points A, B and C are colinear (returns 0) or a clockwise triangle (returns 1) or a counter-clockwise triangle (returns 2). A, B and C are supposed to be 2D points (not checked)

determines if points A, B and C are colinear, a clockwise triangle or a counter-clockwise triangle

Quadrature *pointQuadrature(QuadRule rule, number_t deg)
template<class Geom>
Geom pointReflect(const Geom &g, const Parameter &p1)

apply a point reflection on a Geom (1 key) (template external)

template<class Geom>
Geom pointReflect(const Geom &g, const Point &c = Point(0., 0., 0.))

apply a point reflection on a Geom (template external)

inline Geometry pointReflect(const Geometry &g, const Parameter &p1)

apply a point reflection on a Geometry (1 key) (template external)

inline Geometry pointReflect(const Geometry &g, const Point &c = Point(0., 0., 0.))

apply a point reflection on a Geometry (template external)

Mesh pointReflect(const Mesh &m, const Parameter &p1)

apply a point reflection on a Mesh (1 key)

apply a point reflection on a Mesh (1 keys) (external)

Mesh pointReflect(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a point reflection on a Mesh (2 keys)

apply a point reflection on a Mesh (2 keys) (external)

Mesh pointReflect(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a point reflection on a Mesh (3 keys)

apply a point reflection on a Mesh (3 keys) (external)

Mesh pointReflect(const Mesh &m, const Point &c)

apply a point reflection on a Mesh (external)

inline Point pointReflect(const Point &g, const Parameter &p1)

apply a point reflection on a Point (1 key) (template external)

inline Point pointReflect(const Point &g, const Point &c = Point(0., 0., 0.))

apply a point reflection on a Point (template external)

inline SuTermVector pow(const SuTermVector &s, const real_t &p)
inline SymbolicFunction &pow(const SymbolicFunction &f, const double &p)
inline TermVector pow(const TermVector &s, const real_t &p)
inline SymbolicFunction &power(const real_t &r, const SymbolicFunction &f)
inline SymbolicFunction &power(const SymbolicFunction &f, const real_t &r)
inline SymbolicFunction &power(const SymbolicFunction &f1, const SymbolicFunction &f2)
template<typename K>
Vector<K> power(const Vector<K> &v, real_t n)

log(v)

inline void preComputationFE(Space *subsp, const MeshDomain *dom, std::set<Quadrature*> &quads, dimen_t nbc, bool der1, bool der2, bool invertJacobian, bool nor, bool mapquad, bool useAux, bool isogeo)
void preComputationIE(const GeomDomain &dom, const Space *subsp, std::set<Quadrature*> &quads, dimen_t nbc, bool useAux, bool der1, bool der2, bool nor, bool extendedDomain, bool isogeo)

precompute geometry data and shape values on any element for any quadrature involved restricted to one order geometric element, take large place but computation is then faster in case of IE!!!

precompute geometry data and shape values on any element for any quadrature involved

dom: integration domain subsp: subspace providing the list of elements quads: list of quadratures nbc: number of components of the unknown useAux: use relt->qshvs_aux to store shapevalues (occurs when relt->qshvs_ is already used) der1: compute shape first derivatives if true der2: compute shape second derivatives if true nor: compute normal if true extendedDomain: true when dealing with an extended domain isogeo : if true, use domain parametrization in geometric computation

void preComputationIE_old(const Space *subsp, std::set<Quadrature*> &quads, dimen_t nbc, bool der1, bool der2, bool nor)

precompute geometry data and shape values on any element for any quadrature involved restricted to one order geometric element, take large place but computation is then faster in case of IE!!!

subsp: subspace providing the list of elements quads: list of quadratures nbc: number of components of the unknown der1: compute shape first derivatives if true der2: compute shape second derivatives if true nor: compute normal if true

TermVector prepareLinearSystem(TermMatrix&, TermVector&, MatrixEntry*&, VectorEntry*&, StorageType, AccessType, bool)

prepare linear system AX=B (internal tool)

void print(const Parameter &p)
void print(const Parameters&)

extern print to default ostream

void printAllInMemory(PrintStream &os, size_t vb)
void printAllInMemory(std::ostream &os, size_t vb)
void printCoo(std::ostream &os, const complex_t &v, number_t i, number_t j, real_t tol)
template<typename T>
void printCoo(std::ostream &os, const Matrix<T> &v, number_t i, number_t j, real_t tol = theTolerance)
void printCoo(std::ostream &os, const real_t &v, number_t i, number_t j, real_t tol)
void printDense(std::ostream&, const complex_t&, number_t)

print complex scalar in dense format

void printDense(std::ostream&, const real_t&, number_t)

print real scalar in dense format

template<typename T>
void printDense(std::ostream &os, const Matrix<T> &v, number_t k)

print row of Matrix in dense format

void printListDiffOp(CoutStream&)

print the list of differential operators (check utility)

void printListDiffOp(std::ostream&)

print the list of differential operators (check utility)

inline void printMatrixStorages(PrintStream &os)
void printMatrixStorages(std::ostream&)

print list of MatrixStorage’s

template<typename Iterator>
void printRowWise(std::ostream &os, const string_t &title, number_t perRow, number_t width, Iterator it1, Iterator it2)

prints container of integer type on opened ostream with a constant number of entries per row; requires “operator<<” this is a stl-like utility: iterators are either stl::iterators or C-pointers

template<typename Iterator>
void printRowWise(std::ostream &os, const string_t &title, number_t perRow, number_t width, number_t prec, Iterator it1, Iterator it2)

prints container of real or complex type on opened ostream with a constant number of entries per row; requires “operator<<” this is a stl-like utility: iterators are either stl::iterators or C-pointers

template<typename K>
void printVector(std::ostream &os, const string_t &s, const std::vector<K> &v)
RefElement *prismLagrangeStd(const Interpolation *interp_p)

prismLagrangeStd construction of a prismatic Lagrange Reference Element by interpolation number

Extern class related functions and declarations.

Quadrature *prismQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit prism

bool prismValid(const std::set<std::pair<number_t, Point>, SortPointsByXAndY> &face1, const std::set<std::pair<number_t, Point>, SortPointsByXAndY> &face2)

determines if a prism defined by its triangular faces is valid or not faces must coincide first point of each face has coordinates xmin and ymin

TermVector projection(const TermVector &X, Space &W, const Unknown &u, ProjectorType pt, KeepStatus keep)
TermVector projection(const TermVector &X, Space &W, dimen_t nbcW, const Unknown &u, ProjectorType pt, KeepStatus keep)
TermVector projection(const TermVector &X, Space &W, dimen_t nbcW, ProjectorType pt, KeepStatus keep)
TermVector projection(const TermVector &X, Space &W, ProjectorType pt, KeepStatus keep)
Point projectionOfPointOnPlane(const Point &M, const Point &P1, const Point &P2, const Point &P3, real_t &h, bool only3D)

orthogonal projection of point M on plane defined by 3 non aligned given points (P1, P2, and P3) returns the projected point P and the distance h between M and the plane

orthogonal projection of a point on a plane

std::pair<Point, Point> projectionOfSegmentOnPlane(const Point &S1, const Point &S2, const Point &P1, const Point &P2, const Point &P3, real_t &h)

orthogonal projection of segment defined by the points T1 and T2 on the parallel plane defined by the 3 non aligned given points S1, S2, and S3 returns the projected points and the distance h between the segment and the plane

orthogonal projection of a segment on a parallel plane

std::vector<Point> projectionOfTriangleOnPlane(const Point &T1, const Point &T2, const Point &T3, const Point &P1, const Point &P2, const Point &P3, real_t &h)

orthogonal projection of triangle defined by the points T1, T2 and T3 on the parallel plane defined by the 3 non aligned given points P1, P2, and P3 returns the projected points and the distance h between the triangle and the plane

orthogonal projection of a triangle on a parallel plane

Point projectionOnQuadrangle(const Point &M, const Point &Q1, const Point &Q2, const Point &Q3, const Point &Q4, real_t &h)

projection (minimal distance) of point M on quadrangle given by vertices Q1, Q2, Q3, Q4 (assuming Q1, Q2, Q3, Q4 are coplanar) returns the projected point P and the distance h=MP (2D-3D)

projection (minimal distance) of point M on quadrangle given points Q1, Q2, Q3 and Q4 (assuming Q1, Q2, Q3 and Q4 are coplanar)

Point projectionOnSegment(const Point &M, const Point &A, const Point &B, real_t &h)

projection (minimal distance) of a point M on segment [AB] returns the projected point P and the distance h=MP

projection (minimal distance) of a point M on the segment defined points A, B

Point projectionOnStraightLine(const Point &M, const Point &A, const Point &B, real_t &h, bool only3D)

orthogonal projection of a point M on a straight line defined by 2 points (A and B) returns the projected point P and the distance h=MP

orthogonal projection of a point on a straight line

Point projectionOnTetrahedron(const Point &M, const Point &T1, const Point &T2, const Point &T3, const Point &T4, real_t &h)

projection (minimal distance) of point M on tetrahedron given vertices T1, T2, T3 and T4 returns the projected point P and the distance h=MP (3D)

projection (minimal distance) of point M on tetrahedron given points T1, T2, T3 and T4

Point projectionOnTriangle(const Point &M, const Point &T1, const Point &T2, const Point &T3, real_t &h)

projection (minimal distance) of point M on triangle given vertices T1, T2, and T3 returns the projected point P and the distance h=MP (2D-3D)

projection (minimal distance) of point M on triangle given vertices T1, T2, and T3

RefElement *pyramidLagrangeStd(const Interpolation *interp_p)

pyramidLagrangeStd construction of a pyramidatic Lagrange Reference Element by interpolation number

Extern class related functions and declarations.

Quadrature *pyramidQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit pyramid

template<>
void qr(const complex_t*, number_t, number_t, complex_t*, complex_t*)
template<>
void qr(const complex_t *A, number_t m, number_t n, complex_t *Q, complex_t *R)
template<typename T, typename K>
void QR(const LargeMatrix<T> &mat, LargeMatrix<T> *&matR, bool computeQ, LargeMatrix<T> *&matQ, std::vector<K> *rhs, bool &withColPermutation, std::vector<number_t> *&numcol_p, number_t &stop, real_t epsStop = 100 * theEpsilon)

QR factorization of rectangular matrix pxn using Housolder method generic algorithm using a column algorithm with dynamic storage creation of matrix results.

mat: matrix to factorize matR: upper triangular matrix p x n stored as ColCsStorage (pointer) matQ: unitary matrix of size p x p stored as RowCsStorage (pointer) computeQ: if true the matrix Q is computed else not rhs: right hand side vector pointer (modified), if 0 no rhs withColPermutation: if true, column may be permuted (more stable factorization). if false and algorithm fails, withColPermutation is forced to true and algorithm is rerun numcol_p: renumbering of columns if they have been permuted (pointer) stop: iteration number when the algorithm stops: stop = nbr when algorithm exits normally

Note 1 : to avoid unsightly rounding effect in reduction, values < 10*theEspsilon (~10^-15) are rounded to 0 Note 2 : when there are constraint redanduncies, it may occur some average effects. For instance, two Dirichlet conditions at the same point (in Lagrange interpolation) with different right hand side produce a Dirichlet condition with a mean of right hand sides It may be inconvenient !

template<typename T>
void qr(const Matrix<T> &A, Matrix<T> &Q, Matrix<T> &R)

QR factorization.

void QR(const MatrixEntry &mat, MatrixEntry &matR, bool computeQ, MatrixEntry &matQ, VectorEntry *rhs, bool &withColPermutation, std::vector<number_t> *&numcol, number_t &stop, real_t epsStop)

QR factorization of rectangular matrix pxn with p<=n using Housolder method generic algorithm using a column algorithm with dynamic storage creation of matrix results mat: matrix to factorize matR: upper triangular matrix p x n stored as ColCsStorage matQ: unitary matrix of size p x p stored as RowCsStorage computeQ: if true the matrix Q is computed else not rhs: right hand side vector pointer (if 0 not reduction for rhs) withColPermutation: if true, column may be permuted (more stable factorization), may be forced by algorithm numcol_p: renumbering of columns if they have been permuted (pointer) stop: iteration number when the algorithm stops: stop = nbr when algorithm exits normally.

QR factorisation.

template<>
void qr(const real_t*, number_t, number_t, real_t*, real_t*)

general template QR using Eigen, assuming A, Q, R are pointers to first value of dense row matrix A: pointer to dense row matrix m,n: number of rows and cols of A Q, R: pointer to QR factors as dense row matrices, has to be allocated before

template<>
void qr(const real_t *A, number_t m, number_t n, real_t *Q, real_t *R)

general template QR using Eigen, assuming A, Q, R are pointers to first value of dense row matrix A: pointer to dense row matrix m,n: number of rows and cols of A Q, R: pointer to QR factors as dense row matrices, has to be allocated before

template<typename T>
void qr(const T *A, number_t m, number_t n, T *Q, T *R)

general template QR using Eigen, assuming A, Q, R are pointers to first value of dense row matrix A: pointer to dense row matrix m,n: number of rows and cols of A Q, R: pointer to QR factors as dense row matrices, has to be allocated before

template<typename T, typename K>
void QRSolve(const LargeMatrix<T> &mat, LargeMatrix<T> *mat2, std::vector<K> *rhs)
template<typename T, typename K>
void QRSolve(const LargeMatrix<T> &mat, std::vector<std::vector<std::pair<number_t, K>>> &rhss)

solve upper triangular system pxp with diag = Id with a list of right hand sides each right hand side is a vector of pairs (row index, value) using a column algorithm with dynamic storage update p | 1 x … x | | 0 1 … x | at = | … | | 0 0 1 x | | 0 0 1 |

mat: upper triangular matrix rhss: list of right hand sides

rhss is overwritten !

void QRSolve(const MatrixEntry &mat, MatrixEntry *matR, VectorEntry *rhs)

solve an pxp upper triangular system mat: pxp upper triangular matrix with its diagonal coeffs = 1, matR: rectangular matrix p x m, understood as a list of right hand side vectors of size p (if 0 no computation for matR) rhs: a unique right hand side vector pointer (if 0 no computation for rhs)

QR solver (only in scalar representation)

At the end, rhs contains the vector x solution of mat * x = rhs and matR contains the vectors x1, x2, …xm solutions of mat * xj = matRj Note: at the end, matR is stored using a cs column storage

Quadrature *quadrangleQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit square

std::vector<complex_t> quadratic(complex_t a, complex_t b, complex_t c)

computes roots of degree 2 complex polynomial

std::vector<complex_t> quadratic(real_t a, real_t b, real_t c)

computes roots of degree 2 real polynomial

template<typename T>
LowRankMatrix<T> &r3svd(const LargeMatrix<T> &lm, LowRankMatrix<T> &lrm, real_t eps = theTolerance, number_t t = 0, number_t p = 0, number_t q = 0, number_t maxit = 0)

r3svd of a LargeMatrix

R3SVD compression method of a LargeMatrix to a LowRankMatrix Lr T: type of the result lm: LargeMatrix to be compressed eps: energy threshold t: number of sampling p: number of over sampling q: power number (q=0 gives the standard r3svd) maxit: maximum of iterations if t = 0, the parameters t, p, q, maxit are determined by function regarding the matrix dimensions lrm: output LowRankMatrix.

template<typename M, typename T>
void r3svd(M &A, real_t eps, number_t &rk, std::vector<T> &U, std::vector<T> &D, std::vector<T> &V, number_t t = 0, number_t p = 0, number_t q = 0, number_t maxit = 0)

improved Random SVD compression method of a matrix of class M from https://arxiv.org/ftp/arxiv/papers/1605/1605.08134.pdf T: type of the result A: matrix of class M, requires the member functions: M::numberOfRows(), M::numberOfCols(), M::squaredNorm() M::multMatrixRow(T* M, T* R, number_t p) i.e M*matRow M::multLeftMatrixRow(T* M, T* R, number_t p) i.e matRow*M eps: energy threshold rk: rank of r3svd on output U, V: vectors storing dense row matrices S: vector storing S t: number of sampling p: number of over sampling q: power number (q=0 gives the standard r3svd) maxit: maximum of iterations if t = 0, the parameters t, p, q, maxit are determined by function regarding the matrix dimensions

template<typename T>
void r3svd(Matrix<T> &A, Matrix<T> &U, Vector<T> &D, Matrix<T> &V, real_t eps = theTolerance, number_t t = 0, number_t ts = 0, number_t q = 0, number_t maxit = 0)

Improved random SVD with precision truncation T: type of the matrix (real or complex) A: Matrix to be be factorized eps: energy threshold U,D,V: SVD factors A~U*D*V’ (output) t, ts: number of sampling and oversampling q: power number (q=0 gives the standard r3svd) maxit: maximum of restart if t = 0, the parameters t, p, q and maxit are determined by function regarding the matrix dimensions.

template<typename T>
void r3svd(T *A, number_t m, number_t n, real_t eps, number_t &rk, T *U, T *D, T *V, number_t t = 0, number_t p = 0, number_t q = 0, number_t maxit = 0)

improved Random SVD compression method of a row dense matrix given by pointer from https://arxiv.org/ftp/arxiv/papers/1605/1605.08134.pdf

T: type of the result A: pointer to the first element of the dense matrix to be compressed, stored as row major access (dense row) m, n: number of rows and cols of matrix to be compressed eps: energy threshold rk: rank of r3svd on output U, V: pointer to dense row matrices, has to be allocated before D: pointer to S vector, has to be allocated before t: number of sampling p: number of over sampling q: power number (q=0 gives the standard r3svd) maxit: maximum of iterations if t = 0, the parameters t, p, q, maxit are determined by function regarding the matrix dimensions

note: may be used when A is a pointer to a m x n col dense matrix, by permuting arguments when calling: r3svd(A,n,m,eps,V,D,U, t, p ,q, maxit) produces the R3SVD of A = U*D*V’ where U, V are pointers to row dense matrices!

SymbolicFunction r_(_r)
AngleUnit rad_ (_rad, defaultAngleUnit, 0.)
template<typename T, typename N>
void ranks(const std::map<T, N> &M, const std::vector<T> &V, std::vector<N> &R)

return in R the ranks of V components in U vector, not assuming that U and V are sorted, N index starts from 1 except if V[k] is not found in map then R[k]=0 faster than previous ranks function but requires a map

template<typename T, typename N>
void ranks(const std::vector<T> &U, const std::vector<T> &V, std::vector<N> &R)

return in R ranks of V components in U vector, not assuming that U and V are sorted index starts from 1 expansive if U and V are large

template<typename itT, typename itN>
void ranks(itT itu_b, itT itu_e, itT itv_b, itT itv_e, itN itr_b)

return in R ranks of V components in U container, not assuming that U and V are sorted (index starts from 1) expansive if U and V are large itu_b, itu_e: begin and end iterator for container U itv_b, itv_e: begin and end iterator for container V itr_b: begin iterator for container R (R has to be sized to V size before)

itN must support conversion from Number

template<class T_>
void readEntities(T_ &data, size_t numEnt, Mn_Sn &phystag)
template<class T_>
void readfmt2(T_ &data, const string_t &filename, const vector<CrackData> &crackData, number_t &nb_geom_Pts, vector<real_t> &PointCoords, vector<number_t> &nodeNum, bool &planeDomain, bool &curveDomain, number_t &nb_elts, vector<GELT> &gelts, ELTDEFMAP &elMap, dimen_t &elementDimx, const GMSHMAP &gmMap, set<number_t> &domSet, map<number_t, set<number_t>> &crackedDomSet, map<number_t, number_t> &it_inCrackData, map<number_t, string_t> &domNameMap, bool &isMadeOfSimplices_)
template<class T_>
void readfmt4(T_ &data, const string_t &filename, const vector<CrackData> &crackData, number_t &nb_geom_Pts, vector<real_t> &PointCoords, vector<number_t> &nodeNum, bool &planeDomain, bool &curveDomain, number_t &nb_elts, vector<GELT> &gelts, ELTDEFMAP &elMap, dimen_t &elementDimx, const GMSHMAP &gmMap, set<number_t> &domSet, map<number_t, set<number_t>> &crackedDomSet, map<number_t, number_t> &it_inCrackData, map<number_t, string_t> &domNameMap, bool &isMadeOfSimplices_)
inline void readInt(FILE *data, number_t &Val)
inline void readInt(std::ifstream &data, number_t &Val)
void readItem(std::istream&, complex_t&, bool isreal = false)

read complex item from istream

void readItem(std::istream&, real_t&, bool isreal = true)

read real item from istream

template<class T_>
void readPartitionedEntities(T_ &data, size_t numEnt, Mn_Pnn &parentDT, Mn_Sn &partparttag, Mn_Sn &partphystag)
template<class T_>
void readPhysNames(T_ &data, map<number_t, string_t> &domNameMap)
string_t readPlyElement(PlyElement &e, std::istream &data)

read element and its properties

inline void readRea(FILE *data, real_t &Val)
inline void readRea(std::ifstream &data, real_t &Val)
inline bool readStr(FILE *data, string_t &Val)
inline bool readStr(std::ifstream &data, string_t &Val)
real_t real(const Parameter&)

cast to real_t

inline SymbolicFunction &real(const SymbolicFunction &f)
TermMatrix real(const TermMatrix &tm)

return real part as a real TermMatrix

TermVector real(const TermVector &tv)

extracts real part

Vector<real_t> real(const Vector<complex_t> &a)

real part of a complex vector

Vector<real_t> real(const Vector<real_t> &a)

real part of a real vector

Vector<Vector<real_t>> real(const Vector<Vector<complex_t>> &a)

abs of a vector of complex vectors

real part of a vector of complex vectors

Vector<Vector<real_t>> real(const Vector<Vector<real_t>> &a)

abs of a vector of real vectors

real part of a vector of real vectors

real_t real_const_fun(const Point &P, Parameters &pa)
Matrix<real_t> real_matrix_const_fun(const Point &P, Parameters &pa)
Vector<real_t> real_vector_const_fun(const Point &P, Parameters &pa)
inline real_t realPart(const complex_t&)
Matrix<real_t> realPart(const Matrix<complex_t> &cB)

real part of a complex matrix

Matrix<real_t> realPart(const Matrix<real_t> &cB)

real part of a real matrix

inline real_t realPart(const real_t&)
inline SuTermVector realPart(const SuTermVector &s)

mathematical function applied to SuTermVector

template<typename T1_iterator, typename R_iterator>
void realTpl(T1_iterator b1, T1_iterator e1, R_iterator Rb)

returns real part of vector entries: R[i] = real(T1[i])

void rebuild(GeomDomain &dom, const ComparisonFunction<> &cr)

rebuild one plain domain

rebuild 1 plain domain

void rebuild(GeomDomain &dom, const ComparisonFunction<> &cr, GeomDomain &sdom)

rebuild one plain domain and one side domain

rebuild 1 plain domain and one side domain rebuild 2 plain domains

void rebuild(GeomDomain &dom1, const ComparisonFunction<> &cr1, GeomDomain &dom2, const ComparisonFunction<> &cr2)

rebuild 2 plain domains

void rebuild(GeomDomain &dom1, const ComparisonFunction<> &cr1, GeomDomain &dom2, const ComparisonFunction<> &cr2, GeomDomain &sdom)

rebuild 2 plain domains and one side domain

void rebuild(GeomDomain &dom1, const ComparisonFunction<> &cr1, GeomDomain &dom2, const ComparisonFunction<> &cr2, GeomDomain &sdom1, GeomDomain &sdom2)

rebuild 2 plain domains and two side domains

void rebuild(std::vector<GeomDomain*> &doms, const std::vector<ComparisonFunction<>> &crs, const std::set<GeomDomain*> &sidedoms)

rebuild some plain domains from some values given by a single unknown TermVector and criteria the rebuilding works as follow:

rebuild some plain domains

  • rebuild each of given domains by using ComparisonFunction and element color

  • update side domains related to given domains (boundary or interface)

ComparaisonFunction’s are objects that handles simple boolean expressions involving boolean operator (e.g. _color == 0) For instance to update two domains dom1, dom2 distinguished by values 0 and 1 rebuild(tv, dom1, _color==0, dom2, _color==1);

doms: list of domain to be rebuilt crs: list of comparison criteria sidedoms: set of side domains to be rebuilt, if empty rebuild all side domains found rebuild some plain domains

template<typename T>
T rectangle(const std::vector<T> &f, real_t h)
template<typename T, typename Iterator>
T rectangle(number_t n, real_t h, Iterator itb, T &intg)

uniform rectangle method from a list of n values uniformaly distributed (step h) n: number of values h: step itb: first position in the list of values intg: value of integral: h sum k=1,n v_k

template<typename T>
T rectangle(T (*f)(real_t), real_t a, real_t b, number_t n)

uniform rectangle method on [a,b] interval from a function and a number of subdivisions

template<typename T>
T rectangle(T (*f)(real_t, Parameters&), Parameters &pars, real_t a, real_t b, number_t n)

uniform rectangle method on [a,b] interval from a function with parameters and a number of subdivisions

void reduceMatrix(MatrixEntry *&mat, std::vector<DofComponent> &cdofsr, std::vector<DofComponent> &cdofsc, std::vector<DofComponent> &redcdofsr, std::vector<DofComponent> &redcdofsc, const Constraints *cu, const Constraints *cv)

full reduction of a pseudo-reduced matrix, assuming scalar matrix entries create a new storage from old one by eliminating row en col index related to eliminated dof note: cdofsr and cdofsc are not modified !!!

full reduction of a pseudo-reduced matrix, assuming scalar matrix entries

mat: the matrix to be reduced cdofsr: row dof numbering of mat cdofsc: col dof numbering of mat redcdofsr: row dof numbering of reduced mat redcdofsc: col dof numbering of reduced mat cu, cv: u and v constraint pointers

template<class Geom>
Geom reflect2d(const Geom &g, const Parameter &p1)

apply a reflection 2d on a Geom (1 key) (template external)

template<class Geom>
Geom reflect2d(const Geom &g, const Parameter &p1, const Parameter &p2)

apply a reflection 2d on a Geom (2 keys) (template external)

template<class Geom>
Geom reflect2d(const Geom &g, const Point &c, real_t dx, real_t dy = 0.)

apply a reflection 2d on a Geom (template external)

template<class Geom>
Geom reflect2d(const Geom &g, const Point &c = Point(0., 0.), std::vector<real_t> d = std::vector<real_t>(2, 0.))

apply a reflection 2d on a Geom (template external)

inline Geometry reflect2d(const Geometry &g, const Parameter &p1)

apply a reflection 2d on a Geometry (1 key) (template external)

inline Geometry reflect2d(const Geometry &g, const Parameter &p1, const Parameter &p2)

apply a reflection 2d on a Geometry (2 keys) (template external)

inline Geometry reflect2d(const Geometry &g, const Point &c, real_t dx, real_t dy = 0.)

apply a reflection 2d on a Geometry (template external)

inline Geometry reflect2d(const Geometry &g, const Point &c = Point(0., 0.), std::vector<real_t> d = std::vector<real_t>(2, 0.))

apply a reflection 2d on a Geometry (template external)

Mesh reflect2d(const Mesh &m, const Parameter &p1)

apply a reflection2d on a Mesh (1 key)

apply a reflection 2D on a Mesh (1 key) (external)

Mesh reflect2d(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a reflection2d on a Mesh (2 keys)

apply a reflection 2D on a Mesh (2 keys) (external)

Mesh reflect2d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a reflection2d on a Mesh (3 keys)

apply a reflection 2D on a Mesh (3 keys) (external)

Mesh reflect2d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)

apply a reflection2d on a Mesh (4 keys)

apply a reflection 2D on a Mesh (4 keys) (external)

Mesh reflect2d(const Mesh &m, const Point &c, real_t ux, real_t uy = 0.)

apply a reflection2d on a Mesh (external)

apply a reflection 2D on a Mesh (external)

Mesh reflect2d(const Mesh &m, const Point &c, std::vector<real_t> u = std::vector<real_t>(2, 0.))

apply a reflection2d on a Mesh (external)

apply a reflection 2D on a Mesh (external)

inline Point reflect2d(const Point &g, const Parameter &p1)

apply a reflection 2d on a Point (1 key) (template external)

inline Point reflect2d(const Point &g, const Parameter &p1, const Parameter &p2)

apply a reflection 2d on a Point (2 keys) (template external)

inline Point reflect2d(const Point &g, const Point &c, real_t dx, real_t dy = 0.)

apply a reflection 2d on a Point (template external)

inline Point reflect2d(const Point &g, const Point &c = Point(0., 0.), std::vector<real_t> d = std::vector<real_t>(2, 0.))

apply a reflection 2d on a Point (template external)

template<class Geom>
Geom reflect3d(const Geom &g, const Parameter &p1)

apply a reflection 3d on a Geom (1 key) (template external)

template<class Geom>
Geom reflect3d(const Geom &g, const Parameter &p1, const Parameter &p2)

apply a reflection 3d on a Geom (2 keys) (template external)

template<class Geom>
Geom reflect3d(const Geom &g, const Point &c, real_t nx, real_t ny, real_t nz = 0.)

apply a reflection 3d on a Geom (template external)

template<class Geom>
Geom reflect3d(const Geom &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> n = std::vector<real_t>(3, 0.))

apply a reflection 3d on a Geom (template external)

inline Geometry reflect3d(const Geometry &g, const Parameter &p1)

apply a reflection 3d on a Geometry (1 key) (template external)

inline Geometry reflect3d(const Geometry &g, const Parameter &p1, const Parameter &p2)

apply a reflection 3d on a Geometry (2 keys) (template external)

inline Geometry reflect3d(const Geometry &g, const Point &c, real_t nx, real_t ny, real_t nz = 0.)

apply a reflection 3d on a Geometry (template external)

inline Geometry reflect3d(const Geometry &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> n = std::vector<real_t>(3, 0.))

apply a reflection 3d on a Geometry (template external)

Mesh reflect3d(const Mesh &m, const Parameter &p1)

apply a reflection3d on a Mesh (1 key)

apply a reflection 3D on a Mesh (1 key) (external)

Mesh reflect3d(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a reflection3d on a Mesh (2 keys)

apply a reflection 3D on a Mesh (2 keys) (external)

Mesh reflect3d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a reflection3d on a Mesh (3 keys)

apply a reflection 3D on a Mesh (3 keys) (external)

Mesh reflect3d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)

apply a reflection3d on a Mesh (4 keys)

apply a reflection 3D on a Mesh (4 keys) (external)

Mesh reflect3d(const Mesh &m, const Point &c, real_t ux, real_t uy, real_t uz = 0.)

apply a reflection3d on a Mesh (external)

apply a reflection 3D on a Mesh (external)

Mesh reflect3d(const Mesh &m, const Point &c, std::vector<real_t> u = std::vector<real_t>(3, 0.))

apply a reflection3d on a Mesh (external)

apply a reflection 3D on a Mesh (external)

inline Point reflect3d(const Point &g, const Parameter &p1)

apply a reflection 3d on a Point (1 key) (template external)

inline Point reflect3d(const Point &g, const Parameter &p1, const Parameter &p2)

apply a reflection 3d on a Point (2 keys) (template external)

inline Point reflect3d(const Point &g, const Point &c, real_t nx, real_t ny, real_t nz = 0.)

apply a reflection 3d on a Point (template external)

inline Point reflect3d(const Point &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> n = std::vector<real_t>(3, 0.))

apply a reflection 3d on a Point (template external)

template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline void release(SmartPtr<T, OP, CP, KP, SP, CNP> &sp, typename SP<T>::StoredType &p)
string_t &removeChar(string_t &s, char c)

remove all char c from string s

void removeElts(std::set<GeomElement*> &elts, const std::set<number_t> &vSideCrack)
bool removeEndParenthesis(string_t &s)
void removePlusMinus(string_t &s)
template<typename K>
void removeSmallValue(MatrixEigenDense<K> &mat)
std::vector<number_t> renumber(const Space *sp1, const Space *sp2)

renumber dofs of a space (sp2) along dof numbering of space (sp1) if the spaces are the same nothing is done: the result is of size 0 if the spaces are not the same: rn is the renumbering vector if sp2 is larger than sp1 : exemple sp1 = 8 4 5 1 4 7 6 sp2 = 3 5 7 4 rn = 0 3 6 5 0 means that 3 does not belong to sp1 3 means that 5 is the third element of sp1 … if sp1 is larger than sp2 : exemple sp1 = 4 3 6 8 sp2 = 1 2 3 4 5 6 7 8 9 rn = 0 0 2 1 0 3 0 8 0 0 means that 1,2,5, … does not belong to sp1 2 means that 3 is the second element of sp1 …

renumber dofs of a space along dof numbering of an another space

return sub-space or trace space on domain of a space, created if not exist

std::vector<number_t> renumber(const std::vector<DofComponent> &cdv1, const std::vector<DofComponent> &cdv2)

renumber cdofs vector (cdv2) along cdofs vector (cdv1) assuming cdof of cdv1 are unique if cdv1=cdv2 nothing is done: the result is of size 0 if cdv1!=cdv2 : rn is the renumbering vector ex: cdv1 = cd8 cd4 cd5 cd1 cd4 cd7 cd6 cdv2 = cd3 cd5 cd7 cd4 rn = 0 3 6 5 0 means that cd3 does not belong to cdv1 3 means that cd5 is the third cdofs of cdv1 …

renumbering cdofs utility

string_t &replaceChar(string_t &s, char c1, char c2)

replace all char c1 by char c2 in string s

replace char c1 by char c2 in string s

string_t &replaceString(string_t &s, const string_t &s1, const string_t &s2)

replace all string s1 by string s2 in string s

replace string s1 by string s2 in string s

template<typename T, template<class> class OP, class CP, template<class> class KP, template<class> class SP, template<class> class CNP>
inline void reset(SmartPtr<T, OP, CP, KP, SP, CNP> &sp, typename SP<T>::StoredType p)
void resetThreadData()
template<typename T>
void resize(Matrix<T> &v, dimen_t m, dimen_t n)
template<typename T>
void resize(std::vector<T> &v, dimen_t m, dimen_t n)
template<typename T>
void resize(T &v, dimen_t m, dimen_t n)
void resizeThreadData(number_t)

resize global vectors currentNxs, currentNys, …

string_t rightPath(const string_t &path)

adapt path to OS format (WIN/LINUX like)

template<typename T>
Vector<T> rk4(T &(*f)(real_t, const T &y, T &fty), real_t a, real_t b, real_t dt, const T &y0)
OperatorOnUnknown &rot(const Unknown &un)
OperatorOnKernel &rot_x(const Kernel&)

curl_x(k)

OperatorOnKernel &rot_x(OperatorOnKernel&)

curl_x(opk)

OperatorOnKernel &rot_y(const Kernel&)

curl_y(k)

OperatorOnKernel &rot_y(OperatorOnKernel&)

curl_y(opk)

template<class Geom>
Geom rotate2d(const Geom &g, const Parameter &p1)

apply a rotation 2d on a Geom (1 key) (template external)

template<class Geom>
Geom rotate2d(const Geom &g, const Parameter &p1, const Parameter &p2)

apply a rotation 2d on a Geom (2 keys) (template external)

template<class Geom>
Geom rotate2d(const Geom &g, const Point &c = Point(0., 0.), real_t angle = 0.)

apply a rotation 2d on a Geom (template external)

inline Geometry rotate2d(const Geometry &g, const Parameter &p1)

apply a rotation 2d on a Geometry (1 key) (template external)

inline Geometry rotate2d(const Geometry &g, const Parameter &p1, const Parameter &p2)

apply a rotation 2d on a Geometry (2 keys) (template external)

inline Geometry rotate2d(const Geometry &g, const Point &c = Point(0., 0.), real_t angle = 0.)

apply a rotation 2d on a Geometry (template external)

Mesh rotate2d(const Mesh &m, const Parameter &p1)

apply a rotation on a Mesh (1 key)

apply a rotation 2D on a Mesh (1 key) (external)

Mesh rotate2d(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a rotation on a Mesh (2 keys)

apply a rotation 2D on a Mesh (2 keys) (external)

Mesh rotate2d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a rotation on a Mesh (3 keys)

apply a rotation 2D on a Mesh (3 keys) (external)

Mesh rotate2d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)

apply a rotation on a Mesh (4 keys)

apply a rotation 2D on a Mesh (4 keys) (external)

Mesh rotate2d(const Mesh &m, const Point &c, real_t angle = 0.)

apply a rotation on a Mesh (external)

apply a rotation 2D on a Mesh (external)

inline Point rotate2d(const Point &g, const Parameter &p1)

apply a rotation 2d on a Point (1 key) (template external)

inline Point rotate2d(const Point &g, const Parameter &p1, const Parameter &p2)

apply a rotation 2d on a Point (2 keys) (template external)

inline Point rotate2d(const Point &g, const Point &c = Point(0., 0.), real_t angle = 0.)

apply a rotation 2d on a Point (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Parameter &p1)

apply a rotation 3d on a Geom (1 key) (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Parameter &p1, const Parameter &p2)

apply a rotation 3d on a Geom (2 keys) (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a rotation 3d on a Geom (3 keys) (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Point &c, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Geom (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Point &c, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Geom (template external)

template<class Geom>
Geom rotate3d(const Geom &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> d = std::vector<real_t>(3, 0.), real_t angle = 0.)

apply a rotation 3d on a Geom (template external)

template<class Geom>
Geom rotate3d(const Geom &g, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Geom (template external)

template<class Geom>
Geom rotate3d(const Geom &g, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Geom (template external)

inline Geometry rotate3d(const Geometry &g, const Parameter &p1)

apply a rotation 3d on a Geometry (1 key) (template external)

inline Geometry rotate3d(const Geometry &g, const Parameter &p1, const Parameter &p2)

apply a rotation 3d on a Geometry (2 keys) (template external)

inline Geometry rotate3d(const Geometry &g, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a rotation 3d on a Geometry (3 keys) (template external)

inline Geometry rotate3d(const Geometry &g, const Point &c, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Geometry (template external)

inline Geometry rotate3d(const Geometry &g, const Point &c, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Geometry (template external)

inline Geometry rotate3d(const Geometry &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> d = std::vector<real_t>(3, 0.), real_t angle = 0.)

apply a rotation 3d on a Geometry (template external)

inline Geometry rotate3d(const Geometry &g, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Geometry (template external)

inline Geometry rotate3d(const Geometry &g, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Geometry (template external)

Mesh rotate3d(const Mesh &m, const Parameter &p1)

apply a rotation on a Mesh (1 key)

apply a rotation 3D on a Mesh (4 keys) (external)

Mesh rotate3d(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a rotation on a Mesh (2 keys)

apply a rotation 3D on a Mesh (4 keys) (external)

Mesh rotate3d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a rotation on a Mesh (3 keys)

apply a rotation 3D on a Mesh (4 keys) (external)

Mesh rotate3d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4)

apply a rotation on a Mesh (4 keys)

apply a rotation 3D on a Mesh (4 keys) (external)

Mesh rotate3d(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3, const Parameter &p4, const Parameter &p5)

apply a rotation on a Mesh (5 keys)

apply a rotation 3D on a Mesh (4 keys) (external)

Mesh rotate3d(const Mesh &m, const Point &c, real_t ux, real_t uy, real_t angle)

apply a rotation on a Mesh (external)

apply a rotation 3D on a Mesh (external)

Mesh rotate3d(const Mesh &m, const Point &c, real_t ux, real_t uy, real_t uz, real_t angle)

apply a rotation on a Mesh (external)

apply a rotation 3D on a Mesh (external)

Mesh rotate3d(const Mesh &m, const Point &c, std::vector<real_t> u = std::vector<real_t>(3, 0.), real_t angle = 0.)

apply a rotation on a Mesh (external)

apply a rotation 3D on a Mesh (external)

Mesh rotate3d(const Mesh &m, real_t ux, real_t uy, real_t angle)

apply a rotation on a Mesh (external)

apply a rotation 3D on a Mesh (external)

Mesh rotate3d(const Mesh &m, real_t ux, real_t uy, real_t uz, real_t angle)

apply a rotation on a Mesh (external)

apply a rotation 3D on a Mesh (external)

inline Point rotate3d(const Point &g, const Parameter &p1)

apply a rotation 3d on a Point (1 key) (template external)

inline Point rotate3d(const Point &g, const Parameter &p1, const Parameter &p2)

apply a rotation 3d on a Point (2 keys) (template external)

inline Point rotate3d(const Point &g, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a rotation 3d on a Point (3 keys) (template external)

inline Point rotate3d(const Point &g, const Point &c, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Point (template external)

inline Point rotate3d(const Point &g, const Point &c, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Point (template external)

inline Point rotate3d(const Point &g, const Point &c = Point(0., 0., 0.), std::vector<real_t> d = std::vector<real_t>(3, 0.), real_t angle = 0.)

apply a rotation 3d on a Point (template external)

inline Point rotate3d(const Point &g, real_t dx, real_t dy, real_t angle)

apply a rotation 3d on a Point (template external)

inline Point rotate3d(const Point &g, real_t dx, real_t dy, real_t dz, real_t angle)

apply a rotation 3d on a Point (template external)

OperatorOnUnknown &rotG(const Unknown &un, const complex_t &ax, const complex_t &ay, const complex_t &az, const complex_t &at)
OperatorOnUnknown &rotS(const Unknown &un)
inline complex_t round(const complex_t &z, real_t prec)
inline real_t round(const real_t &x, real_t prec)
template<typename T>
std::list<T> round(const std::list<T> &l, real_t prec)
template<typename K, typename T>
std::map<K, T> round(const std::map<K, T> &m, real_t prec)
template<typename T>
std::vector<T> round(const std::vector<T> &v, real_t prec)
template<typename T>
const T &round(const T &t, real_t prec)
template<typename T>
int_t round(const T &v)

round to nearest integer

template<typename T>
Vector<T> round(const Vector<T> &v, real_t prec)
template<typename Iterator>
void round(Iterator itb, Iterator ite, Iterator rt, real_t prec)
inline complex_t roundToZero(const complex_t &v, real_t asZero = std::sqrt(theEpsilon))
inline real_t roundToZero(const real_t &v, real_t asZero = std::sqrt(theEpsilon))

round to zero for scalars

template<typename T>
std::vector<T> roundToZero(const std::vector<T> &v, real_t asZero = std::sqrt(theEpsilon))

round to zero for vectors

TermMatrix roundToZero(const TermMatrix &tm, real_t aszero = 10 * theEpsilon)

return the 0 rounded TermMatrix)

return the 0 rounded TermMatrix

template<typename T>
Vector<T> roundToZero(const Vector<T> &v, real_t asZero = std::sqrt(theEpsilon))
template<typename T>
LowRankMatrix<T> &rsvd(const LargeMatrix<T> &lm, LowRankMatrix<T> &lrm, number_t r = 0, real_t eps = theTolerance)

rsvd of a LargeMatrix

RSVD compression method of a LargeMatrix to a LowRankMatrix Lr T: type of the result lm: LargeMatrix to be compressed r: prescribed rank of truncature, if 0 not used, the real rank at output eps: prescribed precision, if rk > 0 not used r=0 and eps=0 gives the full svd lrm: LowRankMatrix.

template<typename M, typename T>
void rsvd(M &A, number_t r, std::vector<T> &U, std::vector<T> &D, std::vector<T> &V)

Random SVD compression method of a matrix of class M T: type of the result A: matrix of class M, requires the member functions: M::numberOfRows(), M::numberOfCols() M::multMatrixRow(T* M, T* R, number_t p) i.e M*matRow M::multLeftMatrixRow(T* M, T* R, number_t p) i.e matRow*M r: prescribed rank >0 of truncature U, V: vectors storing dense row matrices S: vector storing S.

template<typename M, typename T>
void rsvd(M &A, real_t eps, number_t &rk, std::vector<T> &U, std::vector<T> &D, std::vector<T> &V)

Random SVD compression method of a matrix of class M from the paper: Stephanie Chaillat, George Biros.

FaIMS: A fast algorithm for the inverse medium problem with multiple frequencies and multiple sources for the scalar Helmholtz equation. Journal of Computational Physics, Elsevier, 2012, 231 (12), pp.4403-4421. T: type of the result A: matrix of class M, requires the member functions: M::numberOfRows(), M::numberOfCols() M::multMatrixRow(T* M, T* R, number_t p) i.e M*matRow M::multLeftMatrixRow(T* M, T* R, number_t p) i.e matRow*M eps: desired precision for the SVD matrix rk: rank of rsvd on output U, V: vectors storing dense row matrices S: vector storing S

template<typename T>
void rsvd(Matrix<T> &A, Matrix<T> &U, Vector<T> &D, Matrix<T> &V, number_t r = 0, real_t eps = theTolerance)

Random SVD with either rank or precision truncation T: type of the matrix (real or complex) A: Matrix to be be factorized U,D,V: SVD factors A~U*D*V’ (output) r: prescribed rank eps: energy threshold if r > 0, the SVD is restricted to the first r singular values else it is restricted to the first singular values smaller than eps.

template<typename T>
void rsvd(T *A, number_t m, number_t n, number_t r, T *U, T *D, T *V)

Random SVD compression method of a row dense matrix given by pointer T: type of the result A: pointer to the first element of the dense matrix to be compressed, stored as row major access (dense row) m, n: number of rows and cols of matrix to be compressed r: prescribed rank >0 of truncature U, V: pointer to dense row matrices, has to be allocated before S: pointer to S vector, has to be allocated before.

note: may be used when A is a pointer to a m x n col dense matrix, by permuting arguments when calling: rsvd(A,n,m,rk,V,D,U) produces the RSVD of A = U*D*V’ where U, V are pointers to row dense matrices!

template<typename T>
void rsvd(T *A, number_t m, number_t n, real_t eps, number_t &rk, T *U, T *D, T *V)

Random SVD compression method of a row dense matrix given by pointer from the paper: Stephanie Chaillat, George Biros.

FaIMS: A fast algorithm for the inverse medium problem with multiple frequencies and multiple sources for the scalar Helmholtz equation. Journal of Computational Physics, Elsevier, 2012, 231 (12), pp.4403-4421. T: type of the result A: pointer to the first element of the dense matrix to be compressed, stored as row major access (dense row) m, n: number of rows and cols of matrix to be compressed eps: desired precision for the SVD matrix rk: rank of rsvd on output U, V: pointer to dense row matrices, has to be allocated before S: pointer to S vector, has to be allocated before

note: may be used when A is a pointer to a m x n col dense matrix, by permuting arguments when calling: rsvd(A,n,m,eps,V,D,U) produces the RSVD of A = U*D*V’ where U, V are pointers to row dense matrices!

inline Geometry ruledSurfaceFrom(const Geometry &c, string_t domName = "")

definition of a geometry 2D from an union of boundaries 1D

bool sameDofs(const SuTermVector&, const SuTermVector&)

tensor cross product => vector SuTermVector in 3D, scalar SuTermVector in 2D

check if 2 SuTermVector have same dofs

bool sameOrientation(std::vector<const Point*> border1, std::vector<const Point*> border2)

determine if 2 lists of points ordered differently have the same orientation It is supposed that every point in each list is also in the other one

determine if 2 geometries (list of vertices) have the same orientation

bool sameStorage(const MatrixStorage &sto1, const MatrixStorage &sto2)

compare two storages, they are same if all the coefficients are travelled in the same way

test if two storages are similar

  • storage pointers are the same

  • storage types are the same, sizes are the same and storage structure are the same

void saveCircArcToGeo(const CircArc &a, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a circle arc in a geo file

void saveComponentExtraDataToGeo(const Geometry &g, number_t nloops, std::ofstream &fout)

writing the surface/volume definition (Plane Surface or Volume command in geo)

void saveComponentToGeo(Geometry &g, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a component of composite geometry in a geo file whatever the dimension

void saveConeToGeo(const Cone &c, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a conical volume in a geo file

writing a cone in a geo file

void saveCylinderToGeo(const Cylinder &c, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a cylindrical volume in a geo file

void saveEllArcToGeo(const EllArc &a, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing an elliptic arc in a geo file

void saveEllipseToGeo(const Ellipse &e, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing an elliptic surface or a disk in a geo file

void saveEllipsoidToGeo(const Ellipsoid &e, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing an ellipsoidal volume or a ball in a geo file

void saveExtByCompositionToGeo(const Geometry &g, const Transformation &t, std::ofstream &fout, const std::map<string_t, Strings> &inputs)

writing an extrusion by a composition of translations and rotations in a geo file

void saveExtByRotation2dToGeo(const Geometry &g, const Rotation2d &r, std::vector<int_t> nnodesPerLine, std::ofstream &fout, const std::map<string_t, Strings> &inputs)

writing an extrusion by Rotation2d in a geo file

void saveExtByRotation3dToGeo(const Geometry &g, const Rotation3d &r, std::vector<int_t> nnodesPerLine, std::ofstream &fout, const std::map<string_t, Strings> &inputs)

writing an extrusion by Rotation3d in a geo file

void saveExtByRotationSideNamesToGeo(const Geometry &g, const std::vector<string_t> &sidenames, const std::vector<std::pair<number_t, number_t>> &nbSidesPerComponent, const real_t angle, std::ofstream &fout, const std::map<string_t, Strings> &inputs, std::vector<PhysicalData> &pids)

writing sidenames of an extrusion by Rotation2d in a geo file

writing sidenames of an extrusion by Rotation2d or Rotation3d in a geo file

void saveExtByTranslationSideNamesToGeo(const Geometry &g, const std::vector<string_t> &sidenames, const std::vector<std::pair<number_t, number_t>> &nbSidesPerComponent, const Translation &t, std::ofstream &fout, const std::map<string_t, Strings> &inputs, std::vector<PhysicalData> &pids)

writing sidenames of an extrusion by Translation in a geo file

void saveExtByTranslationToGeo(const Geometry &g, const Translation &t, std::vector<int_t> nnodesPerLine, std::ofstream &fout, const std::map<string_t, Strings> &inputs)

writing an extrusion by Translation in a geo file

void saveExtrusionComponentToGeo(const Geometry &g, const Transformation &t, std::vector<int_t> nnodesPerLine, std::ofstream &fout, const std::map<string_t, Strings> &inputs)

writing an extrusion in a geo file

std::vector<std::pair<number_t, number_t>> saveExtrusionGeometryToGeo(const Geometry &g, ShapeType sh, real_t angle, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing an extrusion geometry in a geo file whatever the dimension

string_t saveExtrusionInputsAsString(const std::map<string_t, Strings> &inputs)

writing extrusion inputs as string

void saveExtrusionSideNamesToGeo(const Geometry &g, const std::vector<string_t> &sidenames, const std::vector<std::pair<number_t, number_t>> &nbSidesPerComponent, const Transformation &t, std::ofstream &fout, const std::map<string_t, Strings> &inputs, std::vector<PhysicalData> &pids)

writing sidenames of an extrusion in a geo file

void saveHexahedronToGeo(const Hexahedron &h, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a hexahedron in a geo file

void saveParallelepipedToGeo(const Parallelepiped &p, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a parallelepiped, a cuboid or a cube in a geo file

void saveParametrizedArcToGeo(const ParametrizedArc &a, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a parametrized arc in a geo file

void saveParametrizedSurfaceToGeo(const ParametrizedSurface &s, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a parametrized surface (split in triangle or nurbs) in a geo file split the parametrized surface s in s.nbParts elementary surface either quadrangle or triangle or nurbs (s.shapePart)

writing a parametrized surface in a geo file

void savePolygonToGeo(const Polygon &p, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a triangle in a geo file

writing a polygon in a geo file

void savePolyhedronToGeo(const Polyhedron &p, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a polyhedral volume in a geo file

writing a polyhedron in a geo file

void saveQuadrangleToGeo(const Quadrangle &q, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a quadrangle, a rectangle or a square in a geo file

void saveRevConeToGeo(const RevCone &c, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a revolution conical volume in a geo file

writing a revolution cone in a geo file

void saveRevCylinderToGeo(const RevCylinder &c, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a prism in a geo file

writing a revolution cylindrical volume in a geo file

void saveRevTrunkToGeo(const RevTrunk &t, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a prism in a geo file

writing a revolution trunk in a geo file

void saveSegmentToGeo(const Segment &s, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a segment in a geo file

void saveSplineArcToGeo(const SplineArc &a, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a spline arc in a geo file spline in standard gmsh factory corresponds to Catmull-Rom spline spline in occ gmsh factory corresponds to C2 spline

writing a parametrized arc in a geo file

void saveTetrahedronToGeo(const Tetrahedron &t, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a tetrahedron in a geo file

void saveToBrepGeo(Geometry &g, ShapeType sh, number_t order, MeshPattern pattern, StructuredMeshSplitRule splitDirection, const string_t &geofile, const string_t &brepfile)

writing a 2D/3D geometry in a geo file using Open Cascade way and Brep format

inline void saveToFile(const string_t &filename, const EigenElements &evs)
inline void saveToFile(const string_t &filename, const EigenElements &evs, const Parameter &p1)
inline void saveToFile(const string_t &filename, const EigenElements &evs, const Parameter &p1, const Parameter &p2)
inline void saveToFile(const string_t &filename, const EigenElements &evs, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const EigenElements &evs, const std::vector<Parameter> &ps)

save eigenvalues into one file and eigenvectors into separate files

inline void saveToFile(const string_t &filename, const EigenElements &evs, IOFormat iof)
void saveToFile(const string_t &filename, const GeomDomain &dom, IOFormat iof)
inline void saveToFile(const string_t &filename, const Mesh &m)
inline void saveToFile(const string_t &filename, const Mesh &m, const Parameter &p1)
inline void saveToFile(const string_t &filename, const Mesh &m, const Parameter &p1, const Parameter &p2)
inline void saveToFile(const string_t &filename, const Mesh &m, IOFormat iof, bool withDomains = false)
void saveToFile(const string_t &filename, const Space *sp, const list<SuTermVector*> &sutvs, IOFormat iof, string_t dataName, bool aFilePerDomain)

save a list of SuTermVectors on a same Space to files

input/output function

inline void saveToFile(const string_t &filename, const std::list<const TermVector*> &tvs)
inline void saveToFile(const string_t &filename, const std::list<const TermVector*> &tvs, const Parameter &p1)
inline void saveToFile(const string_t &filename, const std::list<const TermVector*> &tvs, const Parameter &p1, const Parameter &p2)
inline void saveToFile(const string_t &filename, const std::list<const TermVector*> &tvs, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const std::list<const TermVector*> &tvs, const std::vector<Parameter> &ps)
inline void saveToFile(const string_t &filename, const SvdElements &evs)
inline void saveToFile(const string_t &filename, const SvdElements &evs, const Parameter &p1)
inline void saveToFile(const string_t &filename, const SvdElements &evs, const Parameter &p1, const Parameter &p2)
inline void saveToFile(const string_t &filename, const SvdElements &evs, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const SvdElements &evs, const std::vector<Parameter> &ps)

save singular values into one file and singular vectors into separate files

inline void saveToFile(const string_t &filename, const SvdElements &evs, IOFormat iof)
inline void saveToFile(const string_t &filename, const TermMatrix &A)

save TermMatrix to file (dense or Matlab format)

inline void saveToFile(const string_t &filename, const TermMatrix &A, const Parameter &p1)

save TermMatrix to file (dense or Matlab format)

inline void saveToFile(const string_t &filename, const TermMatrix &A, const Parameter &p1, const Parameter &p2)

save TermMatrix to file (dense or Matlab format)

inline void saveToFile(const string_t &filename, const TermMatrix &A, StorageType st, bool enc = false)

save TermMatrix to file (dense or Matlab format)

void saveToFile(const string_t &filename, const TermVector &tv)
inline void saveToFile(const string_t &filename, const TermVector &tv, bool aFilePerDomain)
void saveToFile(const string_t &filename, const TermVector &tv, const Parameter &p1)
void saveToFile(const string_t &filename, const TermVector &tv, const Parameter &p1, const Parameter &p2)
void saveToFile(const string_t &filename, const TermVector &tv, const Parameter &p1, const Parameter &p2, const Parameter &p3)
inline void saveToFile(const string_t &filename, const TermVector &tv, IOFormat iof, bool aFilePerDomain = true)
inline void saveToFile(const string_t &filename, const TermVector &tv, string_t dataName, bool aFilePerDomain = true)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2)
inline void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, bool aFilePerDomain)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const Parameter &p1)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const Parameter &p1, const Parameter &p2)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3)
inline void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, bool aFilePerDomain)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const Parameter &p1)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const Parameter &p1, const Parameter &p2)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4)
inline void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, bool aFilePerDomain)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, const Parameter &p1)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, const Parameter &p1, const Parameter &p2)
void saveToFile(const string_t &filename, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, const Parameter &p1, const Parameter &p2, const Parameter &p3)
inline void saveToFile(const string_t &filename, const TermVectors &tvs)
inline void saveToFile(const string_t &filename, const TermVectors &tvs, bool aFilePerDomain)
inline void saveToFile(const string_t &filename, const TermVectors &tvs, const Parameter &p1)
inline void saveToFile(const string_t &filename, const TermVectors &tvs, const Parameter &p1, const Parameter &p2)
inline void saveToFile(const string_t &filename, const TermVectors &tvs, const Parameter &p1, const Parameter &p2, const Parameter &p3)
void saveToFile(const string_t &filename, const TermVectors &tvs, const std::vector<Parameter> &ps)

save TermVectors to files

inline void saveToFile(const string_t &filename, const TermVectors &tvs, IOFormat iof, bool aFilePerDomain = false)
inline void saveToFile(const string_t &filename, const TermVectors &tvs, string_t dataName = "", bool aFilePerDomain = false)
void saveToFile(const string_t &fn, const TermVector &tv, const string_t &dataName, IOFormat format, bool aFilePerDomain)

save 1 TermVector to files with a specific format (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, IOFormat format, bool aFilePerDomain)

save 4 TermVector to files with a specific format (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, const TermVector &tv4, string_t dataName, bool aFilePerDomain)

save 4 TermVectors to files with a specific data name (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, IOFormat format, bool aFilePerDomain)

save 3 TermVector to files with a specific format (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, const TermVector &tv3, string_t dataName, bool aFilePerDomain)

save 3 TermVectors to files with a specific data name (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, IOFormat format, bool aFilePerDomain)

save 2 TermVector to files with a specific format (alias of the version with a list of TermVectors)

void saveToFile(const string_t &fn, const TermVector &tv1, const TermVector &tv2, string_t dataName, bool aFilePerDomain)

save 2 TermVectors to files with a specific data name (alias of the version with a list of TermVectors)

void saveToGeo(Geometry &g, number_t order, const string_t &filename)

writing a 1D geometry in a geo file

void saveToGeo(Geometry &g, ShapeType sh, number_t order, MeshPattern pattern, StructuredMeshSplitRule splitDirection, const string_t &filename, std::set<CrackData> &cracks)

writing a 2D/3D geometry in a geo file

void saveToMsh(ostream &fout, const Space *sp, const list<SuTermVector*> &sutvs, const vector<Point> &coords, const vector<pair<ShapeType, vector<number_t>>> &elementsInfo, const GeomDomain *dom, string_t dataName)

save a list of SuTermVectors on the same Space to msh files

void saveToMsh(std::ostream &fout, const Space*, const std::list<SuTermVector*>&, const std::vector<Point> &coords, const splitvec_t &elementsInfo, const GeomDomain *dom, string_t dataName = "")
void saveToMtlb(ostream &fout, const Space *sp, const list<SuTermVector*> &sutvs, const vector<Point> &coords, const vector<pair<ShapeType, vector<number_t>>> &elementsInfo, const GeomDomain *dom, string_t dataName)

save a list of SuTermVectors on the same Space to Matlab - Octave files

void saveToMtlb(std::ostream &fout, const Space*, const std::list<SuTermVector*>&, const std::vector<Point> &coords, const splitvec_t &elementsInfo, const GeomDomain *dom, string_t dataName = "")
void saveToVtk(ostream &fout, const Space *sp, const list<SuTermVector*> &sutvs, const vector<Point> &coords, const vector<pair<ShapeType, vector<number_t>>> &elementsInfo, const GeomDomain *dom, string_t dataName)

save a list of SuTermVectors on the same Space to vtk files

void saveToVtk(std::ostream &fout, const Space*, const std::list<SuTermVector*>&, const std::vector<Point> &coords, const splitvec_t &elementsInfo, const GeomDomain *dom, string_t dataName = "")
void saveToVtkVtu(ostream &fout, const Space *sp, const list<SuTermVector*> &sutvs, const vector<Point> &coords, const vector<pair<ShapeType, vector<number_t>>> &elementsInfo, const GeomDomain *dom, string_t dataName)

save a list of SuTermVectors on the same Space to vtk xml files for unstructured grid type meshes

void saveToVtkVtu(std::ostream &fout, const Space*, const std::list<SuTermVector*>&, const std::vector<Point> &coords, const splitvec_t &elementsInfo, const GeomDomain *dom, string_t dataName = "")
void saveToXyzVs(ostream &fout, const Space *sp, const list<SuTermVector*> &sutvs, const vector<Point> &coords, string_t dataName, bool writeHeader)

save a list of SuTermVectors v’s on the same Space as raw file x [y [z]] v1 [v2 …] the ouput of coordinates depends of the dimension of mesh nodes when vi is a complex output vi.real vi.imag when vi is a real vector output vi_x vi_y [vi_z] when vi is a complex vector output vi_x.real vi_x.imag vi_y.real vi_y.imag [vi_z.real vi_z.imag]

void saveTriangleToGeo(const Triangle &t, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a triangle in a geo file

void saveTrunkToGeo(const Trunk &t, ShapeType sh, std::ofstream &fout, std::vector<PhysicalData> &pids, bool withLoopsStorage, bool withSideNames)

writing a cylindrical volume in a geo file

writing a trunk in a geo file

template<typename scalar1, typename T1_iterator, typename R_iterator>
void scaledVectorTpl(const scalar1 &s, T1_iterator b1, T1_iterator e1, T1_iterator b2, R_iterator Rb)

Scaled vector R[i] = s * ( T1[i] - T2 [i] )

void scaleVector(const complex_t &k, const Vector<complex_t> &v, Vector<real_t> &r)
void scaleVector(const complex_t &k, const Vector<real_t> &v, Vector<real_t> &r)
template<typename K, typename K1, typename K2>
void scaleVector(const K &k, const Vector<K1> &v, Vector<K2> &r)
void scaleVector(const real_t &k, const Vector<complex_t> &v, Vector<real_t> &r)
complex_t scatteredFieldDiskDirichlet(const Point &p, Parameters &param)

Exact solution to the Helmholtz 2D problem outside a sphere: Field scattered by solid sphere of radius Rad of an incoming field Phi_w= exp^{(i*K*x}).

‘Exact solutions’ to the Helmholtz 2D problem outside a disk

Field scattered by solid disk of radius Rad of an incoming field Phi_w= exp^{(i*k*x}).

with Dirichlet boundary condition on the sphere

complex_t scatteredFieldDiskNeumann(const Point&, Parameters&)
Vector<complex_t> scatteredFieldMaxwellExn(const Point &p, Parameters &param)

Exact solution to the Maxwell 3D problem outside a sphere: Field scattered by solid sphere of radius Rad of an incoming vector field Phi_w= (1,0,0)*exp^{(i*K*z}).

‘Exact solutions’ to the Maxwell 3D problem outside a sphere

Field scattered by solid sphere of radius R of an incoming field Phi_w= exp^{(i*k*z}). with tangential boundary condition Exn = 0 (electric field) on the sphere:

\(\Phi(\rho,\theta \phi) = \sum_{n=1..\infty} i^n * (2n+1) * cos\phi*e_rho*c_rho[n] + cos\phi*e_theta*c_theta[n] + sin\phi*c_phi[n]\)

with

  • [ \(\sin\theta*\cos\phi\) ] [ \(\cos\theta*\cos\phi\) ] [ \(-\sin\phi\) ]

  • e_rho =[ \(\sin\theta*\sin\phi\) ] e_theta =[ \(\cos\theta*\sin\phi\) ] e_phi =[ \(\cos\phi\) ]

  • [ \(\cos\theta\) ] [ \(-\sin\theta\) ] [ 0 ] and

  • \(c_rho[n] = - A_n(K*R) * H_{n}(K*rho)/K*rho ) * Ps_n(\cos\theta)\)

  • c_theta[n] =

  • c–phi[n] =

where

  • A_n(r) = -i^{n-1} (2*n+1) real(hnp(r)) / hnp(r) where hnp(r) = d/dr[H_{n}](r) + H_{n}(r)

  • B_n(r) = -i^{n-1} (2*n+1) real(H_{n}(r)) / H_{n}(r) and

  • H_{n} = h_n^{(1)} = j_n + i*y_n is the spherical hankel function of first kind and order n

  • j_n: spherical bessel function of the first kind and order n

  • y_n: spherical bessel function of the second kind and order n

with electric field boundary condition Exn=0 on the sphere

Some computed values for K=1 X_1 X_2 X_3 Phi_1 Phi_2 Phi_3 1.0 0.0 0.0 | (1.75532926384 , 1.62107824182 ) (0 , 0 ) (-6.02796306309e-18,-1.58122117268e-18) 0.0 1.0 0.0 | (-1 , 4.81409564708e-17) (0 , 0 ) (0 , 0 ) 0.0 0.0 1.0 | (-5.40302305868e-01,-8.41470984808e-01) (0 , 0 ) (0 , 0 ) 1.0 1.0 1.0 | (-1.69184878965e-01, 1.61131192686e-01) (2.06589901137e-01, 2.52914553648e-01) (1.19848010392e-01, 3.28542217311e-01) 1.0 1.0 1.2 | (-1.86022424304e-01, 9.18508880491e-02) (1.49911272089e-01, 2.01342400004e-01) (9.37804387189e-02, 3.03355869671e-01) 1.0 1.0 1.4 | (-1.91775499206e-01, 3.34280295554e-02) (1.07142066815e-01, 1.59632591445e-01) (6.64556013889e-02, 2.71335010720e-01) 1.0 1.0 1.6 | (-1.88260942630e-01,-1.51180741005e-02) (7.54265673653e-02, 1.27220194457e-01) (4.11641109484e-02, 2.38176631400e-01) 1.0 1.0 1.8 | (-1.77261848423e-01,-5.51624601093e-02) (5.20175373132e-02, 1.02356587880e-01) (1.91974583103e-02, 2.06737287161e-01) 1.0 1.0 2.0 | (-1.60341338903e-01,-8.78244555191e-02) (3.47085585869e-02, 8.32071602821e-02) (8.24999561215e-04, 1.78106610047e-01) 1.2 1.4 1.0 | (-1.93790114095e-01, 7.12577504506e-02) (1.44884948487e-01, 2.06529528004e-01) (1.39532076671e-02, 1.97067304047e-01) 1.2 1.4 1.2 | (-1.90729686988e-01, 2.88712762800e-02) (1.12819966807e-01, 1.81439122245e-01) (9.10642428927e-03, 1.94073277948e-01) 1.2 1.4 1.4 | (-1.83137187727e-01,-1.04437244804e-02) (8.50160197427e-02, 1.57350273961e-01) (7.19355647585e-04, 1.84905785693e-01) 1.2 1.4 1.6 | (-1.70990951385e-01,-4.55518271208e-02) (6.17400731503e-02, 1.35416184077e-01) (-9.27523672141e-03, 1.71746716026e-01) 1.2 1.4 1.8 | (-1.54657449587e-01,-7.58575264387e-02) (4.27052811485e-02, 1.16028225273e-01) (-1.95184324637e-02, 1.56344795623e-01) 1.2 1.4 2.0 | (-1.34728108413e-01,-1.01074590219e-01) (2.73910156223e-02, 9.91350581457e-02) (-2.91430511034e-02, 1.39939464554e-01)

complex_t scatteredFieldSphereDirichlet(const Point&, Parameters&)

Field scattered by solid sphere of radius Rad of an incoming field Phi_w= exp^{(i*k*x}).

Exact solution to the Helmholtz 3D problem outside a sphere: Field scattered by solid sphere of radius Rad of an incoming field Phi_w= exp^{(i*K*x}).

with Dirichlet boundary condition on the sphere: Series representation of Bessel spherical functions and Legendre polynomials

\(\Phi(\rho,\phi) = \sum_{n=0}^\infty A\_n(K*Rad) h_n^{(1)}(K*\rho) P_n(cos(\phi))\)

where \(A_n(r) = i^n (2*n+1) { j_n(kR)/ h_n^{(1)}(kR)}\)

with Dirichlet boundary condition on the sphere

complex_t scatteredFieldSphereNeumann(const Point &p, Parameters &param)

Exact solution to the Helmholtz 3D problem outside a sphere: Field scattered by solid sphere of radius Rad of an incoming field Phi_w= exp^{(i*K*x}).

‘Exact solutions’ to the Helmholtz 3D problem outside a sphere

Field scattered by solid sphere of radius Rad of an incoming field Phi_w= exp^{(i*k*x}). with Neumann boundary condition on the sphere: Series representation of Bessel spherical functions and Legendre polynomials

\(\Phi(\rho,\phi) = \sum_{n=0}^\infty A\_n(K*Rad) h_n^{(1)}(K*\rho) P_n(cos(\phi))\)

where \(A_n(r) = - i^n (2*n+1) { d/dr[j_n](r) / d/dr[h_n^{(1)}](r) }\) and

  • h_n^{(1)} = H_{n} = j_n + i*y_n is the spherical hankel function of first kind and order n

  • j_n: spherical bessel function of the first kind and order n

  • y_n: spherical bessel function of the second kind and order n

&#8212; for spherical Bessel functions, see

with Neumann boundary condition on the sphere

TermVector schurSolve(TermMatrix &A, const TermVector &B, const Unknown &row_v, const Unknown &col_u, bool keepA)

Schur Solver, only for 2x2 unknowns TermMatrix:

|A11  A12 ||X1|   |B1|
|         ||  | = |  |
|A21  A22 ||X2|   |B1|
if A11 is invertible: C21 = A21 * inv(A11) * A12 C22 = A22 - C21 D2 = B2 - A21 * inv(A11) * B1 if C22 invertible X2 = inv(C22) * D2 X1 = inv(A11)(B1 - A12 * X2)

A: multiple unknowns TermMatrix B: multiple unknowns TermVector row_v, col_u: unknowns pair defining the diagonal block used as pivot (say A11) keepA: true if TermMatrix has to be preserved (TermVector B is always preserved)

string_t securedPath(const string_t &path)

adapt path to OS format and check if path exists

Quadrature *segmentQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit segment

RefElement *selectRefHexahedron(const Interpolation *int_p)

selectRefHexahedron construction of a Reference Element by interpolation type and interpolation subtype

RefElement *selectRefPrism(const Interpolation *interp_p)

selectRefPrism construction of a prismatic Reference Element by interpolation subtype and number

RefElement *selectRefPyramid(const Interpolation *interp_p)

selectRefPyramid construction of a pyramidatic Reference Element by interpolation subtype and number

RefElement *selectRefQuadrangle(const Interpolation *interp_p)

selectRefQuadrangle construction of a Reference Element by interpolation type and interpolation subtype

RefElement *selectRefSegment(const Interpolation *interp_p)

segment construction of a 1D Reference Element by interpolation type and interpolation subtype

RefElement *selectRefTetrahedron(const Interpolation *interp_p)

tetrahedronConstructor construction of a Reference Element by interpolation type and interpolation subtype

RefElement *selectRefTriangle(const Interpolation *interp_p)

selectReferenceTriangle construction of a Reference Element by interpolation type and interpolation subtype

inline void setB(Vector<real_t> &p)
inline void setB(Vector<real_t> *p, number_t t)
inline void setBasisIndex(number_t i)
inline void setBasisIndex(number_t i, number_t t)
inline void setBx(Vector<real_t> &p)
inline void setBx(Vector<real_t> *p)
inline void setBx(Vector<real_t> *p, number_t t)
inline void setBy(Vector<real_t> &p)
inline void setBy(Vector<real_t> *p)
inline void setBy(Vector<real_t> *p, number_t t)
void setColor(const GeomDomain &dom, const TermVector &tv, ColoringRule cr)

set color of geom elements of domain according to vertex values and a coloring rule dom: the domain to colorize val: a single unknown TermVector containing the values used to colorize cr: the ColoringRule, i.e.

set color of geom elements of domain according to vertex values and a coloring rule

a function of the form: real_t cr(const Geomelement& gelt, const std::vector<real_t>& v) returning the color of the geometric element (see defaultColoringRule function for instance)

void setColor(const GeomDomain &dom, const TermVector &tv, VectorColoringRule vcr)

set color of geom elements of domain according to vertex vector values and a vector coloring rule dom: the domain to colorize val: a single unknown TermVector containing the vector values used to colorize vcr: the vector ColoringRule, i.e.

set color of geom elements of domain according to vertex vector values and a vector coloring rule

a function of the form: real_t vcr(const Geomelement& gelt, const std::vector<Vector<real_t> >& v) returning the color of the geometric element (see defaultColoringRule function for instance)

void setColor(const GeomDomain &dom, real_t r)

set color of geom elements dom: the domain to colorize col: color value

set the color of geom elements

inline void setDefaultCharacteristicLength(real_t h)

set the characteristic length

inline void setDerivative(number_t i)
inline void setDerivative(number_t i, number_t t)
inline void setDof(Dof *p)
inline void setDof(Dof *p, number_t t)
inline void setDomain(GeomDomain *p)
inline void setDomainx(GeomDomain *p)
inline void setDomainy(GeomDomain *p)
inline void setElement(GeomElement *p)
inline void setElement(GeomElement *p, number_t t)
inline void seteol(number_t n = 0)

manage eol variable by adding n spaces after carriage return

void setGlobalVerboseLevel(const number_t)

set a maximum value for all verbose levels setGlobalVerboseLevel(0) sets all levels to zero

inline void setN(Vector<real_t> &p)
inline void setN(Vector<real_t> *p, number_t t)
void setNewHandler()

defines a new trace handler

inline void setNx(Vector<real_t> &p)
inline void setNx(Vector<real_t> *p)
inline void setNx(Vector<real_t> *p, number_t t)
inline void setNy(Vector<real_t> &p)
inline void setNy(Vector<real_t> *p)
inline void setNy(Vector<real_t> *p, number_t t)
void setRanks(std::vector<Unknown*>&, const std::vector<number_t>&)

set ranks of unknowns

void setRanks(Unknown &u1, number_t r1)
void setRanks(Unknown &u1, number_t r1, Unknown &u2, number_t r2)
void setRanks(Unknown &u1, number_t r1, Unknown &u2, number_t r2, Unknown &u3, number_t r3)
void setRanks(Unknown &u1, number_t r1, Unknown &u2, number_t r2, Unknown &u3, number_t r3, Unknown &u4, number_t r4)
template<typename T>
void setRefCountedAlloc(bool isAlloc, RefCounted<T> &ref)
inline void setT(Vector<real_t> &p)
inline void setT(Vector<real_t> *p, number_t t)
inline void setTx(Vector<real_t> &p)
inline void setTx(Vector<real_t> *p)
inline void setTx(Vector<real_t> *p, number_t t)
inline void setTy(Vector<real_t> &p)
inline void setTy(Vector<real_t> *p)
inline void setTy(Vector<real_t> *p, number_t t)
int_t shapeDim(ShapeType sh)

dimension of a shape type (return -1 if not defined)

dimension of a shape type

template<typename T>
void shrink(std::vector<T> &u, number_t s)

resize and shrink a vector to size s

GeomDomain &sides(GeomDomain &dom)

access to domain defined from all sides of elements of domain dom, create it if not defined

inline SymbolicFunction &sign(const SymbolicFunction &f)
template<typename T>
int sign(T val)
inline real_t signe(real_t x)
std::vector<real_t> signedDistancesToTriangleEdges(const Point &M, const Point &T1, const Point &T2, const Point &T3)

signed distances of a point M to the three edges of the triangle whose vertices are T1, T2 and T3

signed distances of a point to the 3 edges of a triangle

void simplexVertexOutput(std::ofstream &os, const int refNum, const int v1, const int v2, const int v3, const int v4)
template<typename T>
T simpson(const std::vector<T> &f, real_t h)
template<typename T, typename Iterator>
T simpson(number_t n, real_t h, Iterator itb, T &intg)

uniform Simpson method from a list of n (odd) values uniformaly distributed (step h) n: number of values h: step itb: first position in the list of values intg: value of integral

template<typename T>
T simpson(T (*f)(real_t), real_t a, real_t b, number_t n)

uniform Simpson method on [a,b] interval from a function and a number of intervals

template<typename T>
T simpson(T (*f)(real_t, Parameters&), Parameters &pars, real_t a, real_t b, number_t n)

uniform Simpson method on [a,b] interval from a function with parameters and a number of intervals

inline SuTermVector sin(const SuTermVector &s)
inline SymbolicFunction &sin(const SymbolicFunction &f)
inline TermVector sin(const TermVector &s)
inline SuTermVector sinh(const SuTermVector &s)
inline SymbolicFunction &sinh(const SymbolicFunction &f)
inline TermVector sinh(const TermVector &s)
template<typename T>
T sinhs(const T &x)

integrand at (t,z), extern call

inline number_t sizeOf(const complex_t &x)
inline number_t sizeOf(const real_t &x)
inline number_t sizeOf(const std::vector<complex_t> &x)
inline number_t sizeOf(const std::vector<real_t> &x)
inline number_t sizeOf(const std::vector<Vector<complex_t>> &x)
inline number_t sizeOf(const std::vector<Vector<real_t>> &x)
std::vector<number_t> skylinePointer(const std::vector<number_t>&, const std::vector<number_t>&)

get the skyline pointers from cs pointers

inline bool smallPivot(complex_t piv)
inline bool smallPivot(real_t piv)
template<typename T>
inline SmartPtr<T> smartPtr(T *p)
template<typename T>
const SmartPtr<typename RemoveConst<T>::type> smartPtrConstCast(const SmartPtr<T> &rhs)
template<typename T>
SmartPtr<typename RemoveConst<T>::type> smartPtrConstCast(SmartPtr<T> &rhs)
template<typename T>
inline SmartPtr<T> smartPtrFromRef(T *p)
inline bool sortxNode(const Earcut::Node *a, const Earcut::Node *b)
inline Spaces spaces(const Domains &doms, const Interpolation &inte, bool opt = true)
inline Spaces spaces(const Domains &doms, const Interpolations &ints, bool opt = true)

build a collection of space according to collections of domains and collection of interpolations

inline Spaces spaces(const GeomDomain &dom, const Interpolations &ints, bool opt = true)
std::vector<real_t> sphericalbesselJ0N(real_t x, number_t N)

spherical Bessel function of the first kind and orders 0..N

void sphericalbesselJ0NTest(std::ostream &out)
std::vector<real_t> sphericalbesselY0N(real_t x, number_t N)

spherical Bessel function of the second kind and orders 0..N

void sphericalHarmonics(const Point &x, std::vector<std::vector<complex_t>> &ylm)

This function computes spherical harmonics Y_{l}^{m} up to order n on the unit sphere; order n is computed by n=ylm.size()-1 and spherical harmonics ylm are computed for l=0,..,n and m=0,..,l.

Spherical harmonics and derivatives

Spherical harmonics Y^{m}_l up to order n (l=0,..,n; m=0,..,l) on the unit sphere We use here the normalized definition, in which harmonics form an orthonormal basis in L^2(unit_sphere). In spherical coordinates

  • \(r = \sqrt{x*^2+y^2+z^2} , \cos\theta = z/r, \tan\phi = y/x\)

  • with \(\theta in [0, Pi], \phi in [0, 2*Pi]\), we have the following formula:

\(Y^{m}_{l} = \sqrt{(2*l+1)/4Pi * (l-m)!/(l+m)!} * P^{m}_{l}(\cos\theta) * \exp(i*m*\phi)\)

where \(P^{m}_{l}\) is the m-th associated Legendre polynomial of order l.

\(Y^{m}_{l}\) satisfies for negative m: \(Y^{m}_{l} = (-1)^{m} Y^{-m}_{l}*\) where (terminal) * denotes the complex conjugate.

For spherical harmonics see

Y_{l}^{m}= \((-1)^{(|m|-m) /2} \sqrt{ (2l+1)/4\pi*(l-|m|)!/(l+|m|)! } P_{l}^{|m|}(\cos(\theta)) e^{im \phi}\)

which yields for m positive

Y_{l}^{m}= \(\sqrt{ (2l+1)/4\pi*(l-m)!/(l+m)! } P_{l}^{m}(\cos(\theta)) e^{im \phi}\)

Argument ylm is a “triangular 2d array” defined as a std::vector of vectors

the 1st std::vector carries the values: Y_{0}^{0} the 2nd one carries the values: Y_{1}^{0} Y_{1}^{1} and for l=2,..,n the l-th std::vector carries the values: Y_{l}^{0} Y_{l}^{1} .. Y_{l}^{l} if the size of std::vector ylm[l] is l+1.

For a given int n, container ylm can be declared (and defined) prior to call to this function by std::vector<std::vector<complex_t> > ylm(n+1); for (int l=0; l<=n; l++) ylm[l]=std::vector<complex_t>(l+1);

void sphericalHarmonicsSurfaceGrad(const Point&, std::vector<std::vector<Vector<complex_t>>>&)

Spherical harmonics surface gradient gradS_Y^{m}_l up to order n (l=0,..,n; m=0,..,l) on the unit sphere.

This function computes spherical harmonics surface gradients gradY_{l}^{m} up to order n on the unit sphere; order n is computed by n=ylm.size()-1 and spherical harmonics ylm are computed for l=0,..,n and m=0,..,l.

  • Case ( \(\sin(\theta) = 0\)) : . gradS_Y_{l}^{1} = \(\sqrt{ (2l+1)/4\pi * (l-1)! / (l+1)! } * e^{i \phi} * . (P_{l}^{'1}(\cos(\theta)) e_\theta - i (\cos(\theta))^{l+1} \cos(\phi) l(l+1)/2 * e_\phi)\) . where \(e_\theta\) and \(e_\phi\) are the unit tangent std::vector on the unit sphere. . gradS_Y_{l}^{m}(x) = 0 if m =/= 1

  • Case ( \(\sin(\theta) /= 0\)) : . gradS_Y_{0}^{0}(x) = 0 . For l > 0 : . gradS_Y_{l}^{m} = \(\sqrt{ (2l+1)/4\pi * (l-m)! / (l+m)! } * e^{im \phi} * . ( P_{l}^{'|m|}(\cos(\theta)) e_\theta + im * P_{l}^{|m|}(\cos(\theta)) e_\phi)\) . where \(e_\theta\) and \(e_\phi\) are the unit tangent std::vector on the unit sphere.

Argument gradylm is a “triangular 2d array of 3d-vectors” defined as a vector of vectors of complex_t-Vectors. the 1st std::vector carries the 3d-vectorial values: gradY_{0}^{0} the 2nd one carries the 3d-vectorial values: gradY_{1}^{0} gradY_{1}^{1} and for l=2,..,n the l-th std::vector carries the 3d-vectorial values: gradY_{l}^{0} gradY_{l}^{1} .. gradY_{l}^{l} where the size of std::vector gradylm[l] is l+1.

For a given int n, container gradylm can be declared (and defined) prior to call to this function by std::vector<std::vector<Vector<complex_t> > > gradylm(n+1); for (int l=0; l<=n; l++) { gradylm[l]=std::vector<Vector<complex_t> >(l+1); for (int m=0; m<=l; m++) gradylm[l][m]=Vector<complex_t>(spaceDim); } where “spaceDim” is previously defined as the dimension space (necessarily 3 here). TELL DANIEL: We may put a test that stops the program if spaceDim is not 3.

void sphericalHarmonicsSurfaceGradTest(const Point&, const number_t, std::ostream&)

output function for test of Spherical harmonics and derivatives

void sphericalHarmonicsTest(const Point&, const number_t, std::ostream&)

output function for test of Spherical harmonics

inline Strings split(const string_t &s, char delim = ' ')

split a string into vector of strings using blank space as default delimiter

std::vector<bfPair> split(std::vector<bfPair> &bfs)
std::vector<std::vector<number_t>> splitHexahedronQ1ToTetrahedraP1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order tetrahedron elements when splitting first order hexahedron

std::vector<std::vector<number_t>> splitHexahedronQ2ToHexahedraQ1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order hexahedron elements when splitting second order hexahedron

std::vector<std::vector<number_t>> splitHexahedronQ2ToTetrahedraP1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order tetrahedron elements when splitting second order hexahedron

std::vector<std::vector<number_t>> splitHexahedronQ3ToHexahedraQ1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order hexahedron elements when splitting third order hexahedron

std::vector<std::vector<number_t>> splitHexahedronQ3ToTetrahedraP1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order tetrahedron elements when splitting third order hexahedron

std::vector<std::vector<number_t>> splitInTriangles(const std::vector<Point> &pts)
bool splitNumbersFind(std::vector<std::vector<number_t>> splitnum, std::vector<number_t> num)

return nodes numbers by removing duplicates

std::vector<std::vector<number_t>> splitNumbersMerge(std::vector<std::vector<number_t>> splitnum1, std::vector<std::vector<number_t>> splitnum2)
std::vector<std::vector<number_t>> splitNumbersUnique(std::vector<std::vector<number_t>> splitnum)

return nodes numbers by removing duplicates

std::vector<std::vector<number_t>> splitTetrahedronP2ToTetrahedraP1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order tetrahedron elements when splitting second order tetrahedron

std::vector<std::vector<number_t>> splitTetrahedronP3ToTetrahedraP1(std::vector<number_t> nodeNumbers)

return nodes numbers of first order tetrahedron elements when splitting third order tetrahedron

inline SuTermVector sqrt(const SuTermVector &s)
inline SymbolicFunction &sqrt(const SymbolicFunction &f)
inline TermVector sqrt(const TermVector &s)
template<typename K>
Vector<K> sqrt(const Vector<K> &v)

sqrt(v)

static const real_t sqrt2_over_pi(std::sqrt(two_over_pi))
inline SuTermVector squared(const SuTermVector &s)
inline SymbolicFunction &squared(const SymbolicFunction &f)
inline TermVector squared(const TermVector &s)
real_t squareDistance(const Point&, const Point&)

returns the square distance between two points

void storeEigenVector(const TermMatrix *A_p, ValueType vt, bool singleUnknown, VectorEntry *eigvec, TermVector &resVec)

Utility function to store data of an eigenvector into a TermVector.

void storeElSides(const GeomElement *el_p, number_t noelt, SIDELTMAP &parentEl)
string_t str(const Parameter&)

cast to string_t

template<typename T>
T stringto(const string_t &s)

returns string converted to T

template<>
inline const void *stringto(const string_t &s)

returns string converted to T

string_t struct2Str(StrucType s)
inline StrucType strucType(const complex_t &x)
inline StrucType strucType(const real_t &x)
template<typename T>
inline StrucType strucType(const std::vector<T> &x)
real_t struveNotH0(real_t x)

Struve function of order 0, H_0(x) returns H_0(x) for any |x|<=8, H_0(x)-Y_0(x) for any |x|>8.

std::pair<real_t, real_t> struveNotH01(real_t x)

returns both H_0(x) and H_1(x) for any |x|<8, returns H_0(x)-Y_0(x) and H_1(x)-Y_1(x) for any |x|>8.

real_t struveNotH1(real_t x)

Struve function of order 1, H_1(x) returns H_1(x) for any |x|<=‡8, H_1(x)-Y_1(x) for any |x|>8.

Space &subSpace(Space &sp, const GeomDomain &dom)

return sub-space or trace space on domain of a space, created if not exist

void substrCanonicalAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrCanonicalAndComposite(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrCanonicalAndLoop(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrCompositeAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrCompositeAndComposite(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrCompositeAndLoop(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrLoopAndCanonical(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrLoopAndComposite(const Geometry &g1, const Geometry &g2, Geometry &g)
void substrLoopAndLoop(const Geometry &g1, const Geometry &g2, Geometry &g)
Geometry surfaceFrom(const Geometry &c, string_t domName, bool isPlaneSurface)

definition of a geometry 2D from its boundary 1D

definition of a geometry 2D from an union of boundaries 1D

Vector<real_t> surfToArcParametrizationu0(const Point &p, Parameters &pars, DiffOpType d)
Vector<real_t> surfToArcParametrizationu1(const Point &p, Parameters &pars, DiffOpType d)
Vector<real_t> surfToArcParametrizationv0(const Point &p, Parameters &pars, DiffOpType d)
Vector<real_t> surfToArcParametrizationv1(const Point &p, Parameters &pars, DiffOpType d)
template<typename T>
LowRankMatrix<T> &svd(const LargeMatrix<T> &lm, LowRankMatrix<T> &lrm, number_t r = 0, real_t eps = theTolerance)

svd of a LargeMatrix

SVD compression method of a LargeMatrix to a LowRankMatrix Lr produce the best matrix approximation Lr of rank r (see Eckart-Young-Mirsky theorem)

T: type of the result lm: LargeMatrix to be compressed r: prescribed rank of truncature, if 0 not used, the real rank at output eps: prescribed precision, if rk > 0 not used r=0 and eps=0 gives the full svd lrm: LowRankMatrix

template<typename T>
void svd(Matrix<T> &A, Matrix<T> &U, Vector<T> &D, Matrix<T> &V, number_t r = 0, real_t eps = 0.)

SVD or truncated SVD with either rank or precision truncation T: type of the matrix (real or complex) A: Matrix to be be factorized U,D,V: SVD factors A=U*D*V’ or A~U*D*V’ (output) r: prescribed rank eps: singularvalue threshold if r > 0, the SVD is restricted to the first r singular values else it is restricted to the first singular values smaller than eps rmk: r=0 and eps=0 gives the full svd.

template<typename T>
void svd(T *A, number_t m, number_t n, T *U, T *D, T *V, number_t &rk, real_t eps = 0.)

general template svd using Eigen, assuming A, U, V are pointers to first value of DENSE ROW matrix A: pointer to dense row matrix m,n: number of rows and cols of A U, V: pointer to dense row matrices, has to be allocated before S: pointer to S vector, has to be allocated before rk: prescribed rank of truncature, if 0 not used, the real rank at output eps: prescribed precision, if rk > 0 not used r=0 and eps=0 gives the full svd

note: may be used when A is a pointer to a m x n col dense matrix, by permuting arguments when calling: svd(A,n,m,V,D,U,rk,eps) produces the SVD of A produces the SVD of A = U*D*V’ where U, V are pointers to row dense matrices!

SvdElements svd(TermMatrix *A, const std::vector<Parameter> &ps)

Main entry point for SVD decomposition using Arpack.

bool symAmd(number_t nbr, number_t nbc, const std::vector<number_t> &colIndices, const std::vector<number_t> &rowPointer, std::vector<number_t> &colPerm)
inline SymbolicTermMatrix &symb(const TermMatrix &M)
Vector<real_t> symbolic_curabc(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization curvilinear abcissa

Vector<real_t> symbolic_curvature(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization curvature

Vector<real_t> symbolic_f(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization f

Vector<real_t> symbolic_invParametrization(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization invParametrization

Vector<real_t> symbolic_length(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization length

Vector<real_t> symbolic_normal(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization normal

Vector<real_t> symbolic_tangent(const Point&, Parameters&, DiffOpType)

to deal with symbolic paramerization tangent

inline SuTermVector tan(const SuTermVector &s)
inline SymbolicFunction &tan(const SymbolicFunction &f)
inline TermVector tan(const TermVector &s)
inline Vector<real_t> tangent_Piecewise(const Point &pt, Parameters &pars, DiffOpType d = _id)

extern parametrization call

inline SuTermVector tanh(const SuTermVector &s)
inline SymbolicFunction &tanh(const SymbolicFunction &f)
inline TermVector tanh(const TermVector &s)
SuTermVector tensorCrossProduct(const SuTermVector &tv1, const SuTermVector &tv2)

tensor cross product => vector SuTermVector in 3D, scalar SuTermVector in 2D

tensor hermitian product => scalar SuTermVector

TermVector tensorCrossProduct(const TermVector &s1, const TermVector &s2)

tensor cross product of single unknown vector TermVector => single unknown vector/scalar TermVector (in 3D/2D)

SuTermVector tensorHermitianProduct(const SuTermVector &tv1, const SuTermVector &tv2)

tensor hermitian product => scalar SuTermVector (conjugate tv2 if it is complex) produce vector of hermitian product of components SuTermVector must have same same dofs and same number of components the SutermVector result has unknown and space of tv1

tensor inner product => scalar SuTermVector (not conjugate)

TermVector tensorHermitianProduct(const TermVector &s1, const TermVector &s2)

tensor hermitian product of single unknown vector TermVector => single unknown scalar TermVector

void tensorHexahedronSideNumbering(number_t *&sh1, number_t *&sh2, number_t &p, const int interpNum, const number_t qq1, const number_t qq2, const number_t qq3, const number_t qq4, const short int sens)

correspondence between segment and quadrangular face numbering

correspondence between segment and hexahedron face local numbering

Examples of local numbering of Lagrange Pk 1D elements

 2----1  2---3---1  2---4---3---1  2---5---4---3---1  2---6---5---4---3---1
   k=1      k=2          k=3              k=4                  k=5

  • point number p has coordinates defined by

  • ( x = coords[s2h[0][p]], y = coords[s2h[1][p]], z = coords[s2h[3][p]] )

  • where coords are coordinates of the associated 1D Lagrange reference element

  • and

  • shape functions are defined by tensor product of shape functions of the 1D reference element

  • w3_p(x,y,z) = w1_{s2h[0][p]}(x) * w1_{s2h[1][p]}(y) * w1_{s2h[2][p]}(z)

  • where w1_k is the k-th shape function of the associated 1D Lagrange reference element

SuTermVector tensorInnerProduct(const SuTermVector &tv1, const SuTermVector &tv2)

tensor inner product => scalar SuTermVector (not conjugate when tv2 is complex) produce vector of inner product of components SuTermVector must have same same dofs and same number of components the SutermVector result has unknown and space of tv1

TermVector tensorInnerProduct(const TermVector &s1, const TermVector &s2)

tensor inner product of single unknown vector TermVector => single unknown scalar TermVector (not conjugate)

template<class ST_>
void tensorNumbering(const int interpNum, number_t **&s2h)
template<class ST_>
void tensorNumbering(const int interpNum, std::vector<number_t> &s2t)
template<>
void tensorNumbering<subdivision::Hexahedron>(const int interpNum, number_t **&s2h)
template<>
void tensorNumbering<subdivision::Quadrangle>(const int interpNum, std::vector<number_t> &s2t)
template<>
void tensorNumbering<subdivision::Tetrahedron>(const int interpNum, number_t **&s2h)
template<>
void tensorNumbering<subdivision::Triangle>(const int interpNum, std::vector<number_t> &s2t)
void tensorNumberingHexahedron(const int interpNum, number_t **&s2h)

tensorNumberingHexahedron: correspondence between segment and hexahedron local numbering

correspondence between segment and hexahedron local numbering such that

void tensorNumberingQuadrangle(const int interpNum, std::vector<number_t> &s2q)

tensorNumberingQuadrangle: correspondence between segment and quadrangle local numbering

correspondence between segment and quadrangle local numbering

point number p has coordinates defined by ( x = coords[s2q[2*p]], y = coords[s2q[2*p+1]] ) where coords are coordinates of the associated 1D Lagrange reference element and shape functions are defined by tensor product of shape functions of the 1D reference element w2_p(x,y) = w1_{s2q[2*p]}(x) * w1_{s2q[2*p+1]}(y) where w1_k is the k-th shape function of the associated 1D Lagrange reference element

void tensorNumberingTetrahedron(const int interpNum, number_t **&s2t)

correspondance between segment and tetrahedron local numbering defined such that

correspondence between segment and hexahedron local numbering such that

  • point number p has coordinates defined by

  • ( x = coords[s2h[0][p]], y = coords[s2h[1][p]], z = coords[s2h[3][p]] ) where coords are coordinates of the associated 1D Lagrange reference element -&#8212; No longer used –&#8212;

void tensorNumberingTriangle(const int interpNum, std::vector<number_t> &s2t)

point number p has coordinates defined by ( x = coords[s2q[2*p]], y = coords[s2q[2*p+1]] ) where coords are coordinates of the associated 1D Lagrange reference element

correspondence between segment and triangle local numbering

Examples of local numbering of Lagrange Pk 1D elements 2&#8212;1 2&#8212;3&#8212;1 2&#8212;4&#8212;3&#8212;1 2&#8212;5&#8212;4&#8212;3&#8212;1 2&#8212;6&#8212;5&#8212;4&#8212;3&#8212;1 2&#8212;7&#8212;6&#8212;5&#8212;4&#8212;3&#8212;1 . k=1 k=2 k=3 k=4 k=5 k=6 Examples of local numbering of Lagrange Pk triangles

2 2 2 2 2 2 | \ | \ | \ | \ | \ | \ 3&#8212;1 5 4 5 7 5 10 5 13 5 16 . k=1 | \ | \ | \ | \ | \ ……. 3&#8212;6&#8212;1 8 10 4 8 14 7 8 17 10 8 20 13 ………. k=2 | \ | | \ \ | | \ \ | | \ \ ……………… 3&#8212;6&#8212;9&#8212;1 11 15&#8212;13 4 11 20 19 7 11 23 25 10 …………………… k=3 | \ | | \ \ | | \ \ …………………………… 3&#8212;6&#8212;9&#8212;12&#8212;1 14 18&#8212;21&#8212;16 4 14 26 28 22 7 …………………………………… k=4 | \ | | \ \ ……………………………………………. 3&#8212;6&#8212;9&#8212;12&#8212;15&#8212;1 17 21&#8212;24&#8212;27&#8212;19 4 ……………………………………………………. k=5 | \ ………………………………………………………………… 3&#8212;6&#8212;9&#8212;12&#8212;15&#8212;18&#8212;1 ………………………………………………………………………….. k=6

template<typename T, typename KU, typename KV>
inline void tensorOpAdd(const AlgebraicOperator &op, const std::vector<KU> &u, number_t nu, const std::vector<KV> &v, number_t nv, Matrix<T> &mat, const T &alpha)

evaluate “tensor” operation between 2 small vectors, and add it to a given a nu x nv matrix mat (stored by rows)

op: algebraic operator involved (either product, inner product, cross product, contracted product) alpha is a coefficient applied to the added “tensor” matrix u (resp. v) is

  • either a list of nu scalar values (resp. nv scalar values)

  • or a list of nbu (resp. nbv) vector values (u_1,u_2,..u_nu) stored as (u_1)1 …(u_1)mu (u_2)1 … (u_2)mu …..(u_nu)1 …(u_nu)mu with mu=u.size()/nu for scalar case (mu=mv=1) all product are equivalent for vector case (mu=mv>1) only inner product is currently available for matrix case (mu=mv>1) only contracted product is currently available

template<typename T, typename iteratorM, typename iteratorK>
inline void tensorOpAdd(const AlgebraicOperator &opu, const AlgebraicOperator &opv, const std::vector<T> &u, number_t nu, const std::vector<T> &v, number_t nv, iteratorM itm, iteratorK itk, number_t mk, number_t nk)

evaluate “tensor” operation between 2 small vectors and “coefficient” ker, and add it to a given a nu x nv matrix mat (stored by rows) u opu ker opv v u (resp.

v) is

  • either a list of nu scalar values (resp. nv scalar values)

  • or a list of nbu (resp. nbv) vector values (u_1,u_2,..u_nu) stored as (u_1)1 …(u_1)mu (u_2)1 … (u_2)mu …..(u_nu)1 …(u_nu)mu with mu=u.size()/nu for scalar case (mu=mv=1) all product are equivalent for vector case (mu=mv>1) only inner product is currently available

itk is an iterator to the kernel part (either a scalar, a vector (mk or nk) or a matrix (mk x nk))

template<typename T1_iterator, typename T2_iterator, typename R_iterator>
void tensorProductTpl(T1_iterator b1, T1_iterator e1, T2_iterator b2, T2_iterator e2, R_iterator Rb)

accumulated tensor product: “R[i,j] = R[i,j] + T1[i] * T2[j]”

void tensorTetrahedronSideNumbering(const int nk, const dimen_t i0, const dimen_t i1, const dimen_t i2, const number_t z1, const number_t xx1, const number_t xx2, number_t **&s2t, number_t &p)
bool tetrahedraIntersect(const Point &A1, const Point &B1, const Point &C1, const Point &D1, const Point &A2, const Point &B2, const Point &C2, const Point &D2)
bool tetrahedraOverlap(const std::vector<Point> &t1, const std::vector<Point> &t2)

implementation of the “Separating Axis Test” for a pair of tetrahedra

determines if 2 tetrahedra overlap

The main idea is that if tetrahedra does not overlap, there exists an axis where their projections does not overlap This axis has one of the following properties:

  • the axis is orthogonal to one face of one of the tetrahedra

  • the axis is orthogonal to an edge on each tetrahedron

overlapping means intersection has a non null measure

The main idea of the method is to test each face of both tetrahedra then test each pair of edges (one per tetrahedron) If one of these elementary tests separates, then false is returned (no overlap), else their is overlapping

RefElement *tetrahedronCrouzeixRaviartStd(const Interpolation *interp_p)

tetrahedronCrouzeixRaviartStd construction of a CrouzeixRaviart Reference Element by interpolation number

RefElement *tetrahedronLagrangeStd(const Interpolation *interp_p)

tetrahedronLagrangeStd construction of a Lagrange standard Reference Element by interpolation number particular formulae up to P3 else general method using monomes basis

RefElement *tetrahedronNedelecEdge(const Interpolation *interp_p)
RefElement *tetrahedronNedelecFace(const Interpolation *interp_p)
Quadrature *tetrahedronQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit tetrahedron

real_t tetrahedronVolume(const Point&, const Point&, const Point&, const Point&)

volume of a tetrahedron

string_t theDate()

returns current date as dd.mmm.yyyy

returns current date as dd.mmm.yyyy e.g.

29.feb.2004

string_t theIsoDate()

returns ISO8601 format of current date (yyyy-mm-dd)

returns ISO8601 format of current date (yyyy-mm-dd), e.g.

2004-02-29

string_t theIsoTime()

returns ISO8601 format of current date (hh-mi-ss)

returns ISO8601 format of current time (hh-mi-ss), e.g.

04-39-51

string_t theLongDate()

returns current date as Month Day, Year (en) or Day Month Year (fr)

string_t theShortDate()

returns current date as mm/dd/yyyy (en) or dd/mm/yyyy (fr)

SymbolicFunction theta_(_theta)
string_t theTime()

returns current time

returns current time e.g.

04h32

static const real_t three_pi_over4 (3 *pi_over4)
void timerInit()

initialization procedure for time handling

initialization of engine for time handling

OperatorOnFunction &timesn(const Function&)

f*n

OperatorOnFunction &timesn(OperatorOnFunction&)

opf*n

OperatorOnFunction &timesncrossn(const Function&)

f*(n^n)

OperatorOnFunction &timesncrossn(OperatorOnFunction&)

opf*(n^n)

std::vector<Point> to2D(const std::vector<Point> &p)
std::vector<Point> to2D(const std::vector<Point> &p, Point &u, Point &v, Point &w)
Point toBarycentric(const Point &M, const Point &S1, const Point &S2, const Point &S3, const Point &S4)

return barycentric coordinates of a point M related to segment (S1,S2), to triangle (S1,S3,S3), to tetrahedron (S1,S2,S3,S4) checking degenerancy of simplex

Point toBarycentricNocheck(const Point &M, const Point &S1, const Point &S2, const Point &S3, const Point &S4)

return barycentric coordinates of a point M related to segment (S1,S2), to triangle (S1,S3,S3), to tetrahedron (S1,S2,S3,S4) works in 2D, 3D, does not require that M belongs to line (S1,S2) or plane (S1,S2,S3) in that case, it gives the barycentric coordinates of the orthogonal projection of M on line or plane if fails (degenerated simplex), return a void Point

inline SuTermVector toComplex(const SuTermVector &s)
TermMatrix toComplex(const TermMatrix &tm)

return the complex representation of the given TermMatrix

inline void toComplex(real_t x, real_t y, complex_t &z)

load table from file

inline void toComplex(real_t x, real_t y, real_t &z)
Geometry toComposite(const Geometry &g)

conversion of a canonical or loop Geometry into a composite geometry with one component

return a composite geometry with only one component: g

  • if g is canonical, the components_ vector contains only g

  • if g is loop, the components_ vector contains every border of g and g itself

  • if g is composite, it does nothing

this function is necessary when initializing composite Geometry before using += and -= operators

Transformation toComposite(const Transformation &t)

conversion of a canonical Transformation into a composite Transformation with one component

return a composite Transformation with only one component: t

  • if t is canonical, the components_ vector contains only t

  • if t is composite, it does nothing

this function is necessary when initializing composite Transformation before using += operator

Point toEllipticCoordinates(const Point &P, const Point &C, const Point &A1, const Point &A2)

returns (r,theta,phi) coordinates of a point related to an ellipsoid (C center, A1,A2,A3 the three apogees) P-C = r(A1-C)) cos(theta) cos(phi) + r(A2-C) sin(theta) cos(phi) + r(A3-C) sin(phi) r >=0 , azymuth theta in ]-pi,pi], elevation phi in [-pi/2,pi/2] NB: if C=(0,0,0), A1=(1,0,0), A2=(0,1,0), A3=(0,0,1) then it gives the usual sperical coordinates r=1 on the boundary of the ellisoid

returns (r,theta) related to the ellipse (C,A1,A2)

Point toEllipticCoordinates(const Point &P, const Point &C, const Point &A1, const Point &A2, const Point &A3)

returns (r,theta,phi) related to the ellipsoid (C,A1,A2,A3)

Point toEllipticCoordinates(const Point &P, real_t r1, real_t r2)

returns (r,theta) coordinates of a point related to an a centered orthogonal ellipse with radius r1,r2 calls general case (not the fastest method)

returns (r,theta) related to the orthogonal ellipse of size (r1,r2)

Point toEllipticCoordinates(const Point &P, real_t r1, real_t r2, real_t r3)

returns (r,theta,phi) coordinates of a point related to an a centered orthogonal ellipsoid with radius r1,r2,r3 calls general case (not the fastest method)

returns (r,theta,phi) related to the orthogonal ellipsoid of size (r1,r2,r3) compute barycentric coordinates related to segment, triangle or tetrahedron

OperatorOnUnknown toOperatorOnUnknown(const KernelOperatorOnTermVector &koptv)
OperatorOnUnknown toOperatorOnUnknown(const KernelOperatorOnUnknowns&)

move partial KernelOperatorOnUnknowns to OperatorOnUnknown

Point toPolar(const Point &P)

returns Point as Point in spherical coordinates (r,theta,phi) r=sqrt(x*x+y*y+z*z) azymuth theta = atan2(y,x) in ]-pi,pi], elevation phi = asin(z/r) in [-pi/2,pi/2] reverse map: x= r cos(theta) cos(phi), y = r sin(theta) cos(phi), z = r sin(phi)

returns Point as Point in polar/cylindrical coordinates

complex_t toRealComplex(const Vector<complex_t>&, const complex_t &c)
real_t toRealComplex(const Vector<real_t> &v, const complex_t &c)

special cast function used by FEComputation’s

complex_t toRealComplex(const Vector<Vector<complex_t>> &v, const complex_t &c)
real_t toRealComplex(const Vector<Vector<real_t>> &v, const complex_t &c)
Point toSpherical(const Point &P)

returns (r,theta) coordinates of a point related to an ellipse (C center, A1,A2, the two apogees) P-C = r(A1-C)) cos(theta) + r(A2-C) sin(theta) r >=0 , azymuth theta in ]-pi,pi] NB: if C=(0,0), A1=(1,0), A2=(0,1) then it gives the usual polar coordinates r=1 on the boundary of the ellipse

returns Point as Point in spherical coordinates

template<typename T>
string_t tostring(const T &t)

returns T converted to string

real_t totalCpuTime()

returns user time (“cputime”) interval since first runtime ‘call’ according to unit defined in Time::deltacpuTime

returns elapsed time interval in sec.

since first runtime ‘call’

real_t totalCpuTime(const string_t &comment, CoutStream &out)
real_t totalCpuTime(const string_t &comment, PrintStream &out)
real_t totalCpuTime(const string_t &comment, std::ostream &out = std::cout)

returns elapsed time interval in sec.

since first runtime ‘call’ and prints it with comment

real_t totalElapsedTime()

returns elapsed time interval since first runtime ‘call’ according to unit defined in Time::deltaTime

returns elapsed time interval in sec.

since first runtime ‘call’

real_t totalElapsedTime(const string_t &comment, CoutStream &out)
real_t totalElapsedTime(const string_t &comment, PrintStream &out)
real_t totalElapsedTime(const string_t &comment, std::ostream &out = std::cout)

returns elapsed time interval in sec.

since first runtime ‘call’ and prints it with comment

Vector<real_t> toVector(const Point &p)

return Point as a Vector<real_t>

return as Vector

returns q-p as VectorVector<real_t>

Vector<real_t> toVector(const Point &p, const Point &q)

return q-p as Vector

void traceInit()

initialization procedure for trace handling

initialization of engine for trace handling

inline complex_t tran(const complex_t&)
template<typename K>
Matrix<K> tran(const Matrix<K> &kB)

transpose matrix

inline const Point &tran(const Point &p)
inline real_t tran(const real_t&)
template<typename K>
SparseMatrix<K> tran(const SparseMatrix<K> &m)

transpose matrix

template<typename T>
inline const std::vector<T> &tran(const std::vector<T> &v)
template<typename T>
inline const Vector<T> &tran(const Vector<T> &v)
OperatorOnFunction &tran(Function&)

transpose f

OperatorOnKernel &tran(Kernel&)

transpose k

OperatorOnFunction &tran(OperatorOnFunction&)

transpose opf

OperatorOnKernel &tran(OperatorOnKernel&)

transpose opk

SymbolicTermMatrix &tran(SymbolicTermMatrix &S)
template<typename T> inline Function & tran (T(fun)(const Point &, const Point &, Parameters &))
template<typename T> inline Function & tran (T(fun)(const Point &, Parameters &))
template<typename T> inline Function & tran (T(fun)(const Vector< Point > &, const Vector< Point > &, Parameters &))
template<typename T> inline Function & tran (T(fun)(const Vector< Point > &, Parameters &))
template<typename T>
Value &trans(const T &v)
Value &trans(Value &v)

set to true or false the temporary transpose flag

template Ball transform (const Ball &g, const Transformation &t)
template CircArc transform (const CircArc &g, const Transformation &t)
template Cone transform (const Cone &g, const Transformation &t)
template Cube transform (const Cube &g, const Transformation &t)
template Cuboid transform (const Cuboid &g, const Transformation &t)
template Curve transform (const Curve &g, const Transformation &t)
template Cylinder transform (const Cylinder &g, const Transformation &t)
template Disk transform (const Disk &g, const Transformation &t)
template EllArc transform (const EllArc &g, const Transformation &t)
template Ellipse transform (const Ellipse &g, const Transformation &t)
template Ellipsoid transform (const Ellipsoid &g, const Transformation &t)
template<class Geom>
Geom transform(const Geom &g, const Transformation &t)

apply a geometrical transformation on a Geom (template external)

Geometry transform(const Geometry &g, const Transformation &t)

apply a geometrical transformation on a Geometry (external)

template Hexahedron transform (const Hexahedron &g, const Transformation &t)
Mesh transform(const Mesh &m, const Transformation &t, const string_t &meshname = "", const string_t &suffix = "")

apply a geometrical transformation on a Mesh (external)

template Parallelepiped transform (const Parallelepiped &g, const Transformation &t)
template Parallelogram transform (const Parallelogram &g, const Transformation &t)
template ParametrizedArc transform (const ParametrizedArc &g, const Transformation &t)
inline Point transform(const Point &p, const Transformation &t)

apply a geometrical transformation on a Point

template Polygon transform (const Polygon &g, const Transformation &t)
template Polyhedron transform (const Polyhedron &g, const Transformation &t)
template Prism transform (const Prism &g, const Transformation &t)
template Pyramid transform (const Pyramid &g, const Transformation &t)
template Quadrangle transform (const Quadrangle &g, const Transformation &t)
template Rectangle transform (const Rectangle &g, const Transformation &t)
template RevCone transform (const RevCone &g, const Transformation &t)
template RevCylinder transform (const RevCylinder &g, const Transformation &t)
template RevTrunk transform (const RevTrunk &g, const Transformation &t)
template Segment transform (const Segment &g, const Transformation &t)
template SetOfElems transform (const SetOfElems &g, const Transformation &t)
template SplineArc transform (const SplineArc &g, const Transformation &t)
template SquareGeo transform (const SquareGeo &g, const Transformation &t)
template Surface transform (const Surface &g, const Transformation &t)
template Tetrahedron transform (const Tetrahedron &g, const Transformation &t)
template Triangle transform (const Triangle &g, const Transformation &t)
template Trunk transform (const Trunk &g, const Transformation &t)
template Volume transform (const Volume &g, const Transformation &t)
template<typename K>
void transformMatrix(MatrixEigenDense<K> &mat)

Reverse all elements of a matrix.

template<typename K>
void transformVectorDense(VectorEigenDense<K> &v)
template<class Geom>
Geom translate(const Geom &g, const Parameter &p1)

apply a translation on a Geom (1 key) (template external)

template<class Geom>
Geom translate(const Geom &g, real_t ux, real_t uy, real_t uz = 0.)

apply a translation on a Geom (3 reals version) (template external)

template<class Geom>
Geom translate(const Geom &g, std::vector<real_t> u = std::vector<real_t>(3, 0.))

apply a translation on a Geom (vector version) (template external)

inline Geometry translate(const Geometry &g, const Parameter &p1)

apply a translation on a Geometry (1 key) (template external)

inline Geometry translate(const Geometry &g, real_t ux, real_t uy, real_t uz = 0.)

apply a translation on a Geometry (3 reals version) (template external)

inline Geometry translate(const Geometry &g, std::vector<real_t> u = std::vector<real_t>(3, 0.))

apply a translation on a Geometry (vector version) (template external)

Mesh translate(const Mesh &m)

apply a translation on a Mesh (vector version) (external)

apply a translation on a Mesh (no vector) (external)

Mesh translate(const Mesh &m, const Parameter &p1)

apply a translation on a Mesh (1 key) (external)

Mesh translate(const Mesh &m, const Parameter &p1, const Parameter &p2)

apply a translation on a Mesh (2 keys) (external)

Mesh translate(const Mesh &m, const Parameter &p1, const Parameter &p2, const Parameter &p3)

apply a translation on a Mesh (3 keys) (external)

Mesh translate(const Mesh &m, real_t ux, real_t uy = 0., real_t uz = 0.)

apply a translation on a Mesh (3 reals version) (external)

Mesh translate(const Mesh &m, std::vector<real_t> u)

apply a translation on a Mesh (vector version) (external)

inline Point translate(const Point &g, const Parameter &p1)

apply a translation on a Point (1 key) (template external)

inline Point translate(const Point &g, real_t ux, real_t uy, real_t uz = 0.)

apply a translation on a Point (3 reals version) (template external)

inline Point translate(const Point &g, std::vector<real_t> u = std::vector<real_t>(3, 0.))

apply a translation on a Point (vector version) (template external)

inline complex_t transpose(const complex_t &c)
template<typename M_it, typename MM_it>
void transpose(const dimen_t nbr, const dimen_t nbc, M_it it_m1b, MM_it it_m2b)
template<typename T>
LargeMatrix<T> transpose(const LargeMatrix<T> &L)
template<typename K>
Matrix<K> transpose(const Matrix<K> &kB)

transpose matrix

template<typename K>
MatrixEigenDense<K> transpose(const MatrixEigenDense<K> &mat)
inline real_t transpose(const real_t &r)
template<typename K>
SparseMatrix<K> transpose(const SparseMatrix<K> &m)
template<typename K>
VectorEigenDense<K> transposeVec(const VectorEigenDense<K> &v)

Transpose a vector.

Parameters:

v[in] source vector

Returns:

transposed vector

template<typename T>
T trapz(const std::vector<T> &f, real_t h)
template<typename T, typename Iterator>
T trapz(number_t n, real_t h, Iterator itb, T &intg)

uniform trapeze method from a list of n values uniformaly distributed (step h) n: number of values h: step itb: first position in the list of values intg: value of integral

template<typename T>
T trapz(T (*f)(real_t), real_t a, real_t b, number_t n)

uniform trapeze method on [a,b] interval from a function and a number of points

template<typename T>
T trapz(T (*f)(real_t, Parameters&), Parameters &pars, real_t a, real_t b, number_t n)

uniform trapeze method on [a,b] interval from a function with parameters and a number of points

std::set<GeomElement*> treeToSet(Node<GeomElement> &tree)
real_t triangleArea(const Point&, const Point&, const Point&)

area of a triangle

RefElement *triangleArgyris(const Interpolation *interp_p)

triangleMorley construction of the Morley Reference Element

RefElement *triangleCrouzeixRaviartStd(const Interpolation *interp_p)

triangleCrouzeixRaviartStd construction of a Crouzeix_Raviart standard Reference Element by interpolation number

std::vector<real_t> triangleEdgesLengths(const Point &T1, const Point &T2, const Point &T3)

lengths of edges of the triangle whose vertices are T1, T2 and T3 first edge is T2T3, second height T1T3 and last height T1T2

lengths of edges of the triangle whose vertices are given

std::vector<real_t> triangleHeightsLengths(const Point &T1, const Point &T2, const Point &T3)

lengths of heights of the triangle whose vertices are T1, T2 and T3 first height is from T1, second height from T2 and last height from T3

lengths of heights of the triangle whose vertices are given

RefElement *triangleHermiteStd(const Interpolation *interp_p)

triangleHermiteStd construction of a Hermite standard Reference Element by interpolation number

RefElement *triangleLagrangeStd(const Interpolation *interp_p)

triangleLagrangeStd construction of a Lagrange standard Reference Element by interpolation number

RefElement *triangleMorley(const Interpolation *interp_p)

triangleMorley construction of the Morley Reference Element

RefElement *triangleNedelec(const Interpolation *interp_p)

triangleNedelec construction of a Nedelec standard Reference Element by interpolation number

Quadrature *triangleQuadrature(QuadRule, number_t)

find or create quadrature rule over the unit triangle

RefElement *triangleRaviartThomasStd(const Interpolation *interp_p)

triangleRaviart_ThomasStd construction of a Raviart_Thomas standard Reference Element by interpolation number

std::vector<std::pair<real_t, dimen_t>> trihedralOrientation(const Point &o, const Point &px, const Point &py, const Point &pz)

computes orientation of a trihedral, namely rotation angles around each axis to come from the standard trihedral to the given one basic idea:

computes orientation of a trihedral

  • first we determine the rotation Rz around z axis so that image (o, px1) of (o, px) is in the plane xOz with positive x coordinate

  • secondly we determine the rotation Ry around y axis so that image (o, px2) of (o, px1) is along x axis with positive coordinate

  • at last we determine the rotation Rx around x axis so that image (o, py1) of (o, py) is along y axis with positive coordinate

  • we store opposite values of found rotation angles when not null in opposite order (rotations does not commute)

angles are in degree and between 0. and 360.

string_t trim(const string_t &s, const char *delim)

convert “ a b c d e f “ to “a b c d e f”

trims leading and trailing white space from string_t

string_t trimLeading(const string_t &s, const char *delim)

convert “ a b c d e f “ to “a b c d e f “

trims leading white space from string_t

string_t trimTrailing(const string_t &s, const char *delim)

convert “ a b c d e f “ to “ a b c d e f”

trims trailing white space from string_t

template<typename T>
Vector<T> trivialNumbering(const T &n1, const T &n2)

create trivial numbering vector n1, n1+1, …,n2

static const real_t two_over_pi (2./pi_)
string_t type2Str(ValueType t)
string_t typeArg2Str(ArgType ta)
string_t typeFun2Str(FunctType tf)
template<typename T>
structPair typeOf(const T &v)
template<typename S>
void umfpackFactorize(LargeMatrix<S> &mat)
void umfpackFactorize(TermMatrix &A, TermMatrix &Af)
void umfpackSolve(MatrixEntry&, std::vector<VectorEntry*>&, std::vector<VectorEntry*>&, real_t&)

umfpack solver with multiple right hand side (only in scalar representation)

void umfpackSolve(MatrixEntry&, VectorEntry&, VectorEntry&, real_t&)

umfpack solver (only in scalar representation)

SuTermVector umfpackSolve(SuTermMatrix&, const SuTermVector&, bool keepA = false)

solve AX=B using umfpack if available

SuTermVector umfpackSolve(SuTermMatrix &A, const SuTermVector &B, real_t &rcond, bool keepA)
TermVectors umfpackSolve(TermMatrix &A, const std::vector<TermVector> &Bs, bool keepA)
TermVectors umfpackSolve(TermMatrix &A, const std::vector<TermVector> &Bs, real_t &rcond, bool keepA)
TermVector umfpackSolve(TermMatrix &A, const TermVector &B, bool keepA)
TermVector umfpackSolve(TermMatrix &A, const TermVector &B, real_t &rcond, bool keepA)
inline Vector<real_t> unCurvatures(const Point &p, bool fromParameters, Parameters &pars)
void uniformDistribution(complex_t *mat, number_t n = 1, number_t m = 1)

compute a matrix with complex coefficient following an uniform distribution on [0,1[ (using <random> if C11)

void uniformDistribution(complex_t *mat, real_t a, real_t b, number_t n = 1, number_t m = 1)

compute a matrix with complex coefficient following an uniform distribution on [a,b[ (using <random> if C11)

template<typename T>
std::vector<T> uniformDistribution(number_t n, number_t m, real_t a = 0., real_t b = 1.)
template<typename T>
std::vector<T> uniformDistribution(number_t n, real_t a = 0., real_t b = 1.)
void uniformDistribution(real_t *mat, number_t n = 1, number_t m = 1)

compute a matrix with real coefficient following an uniform distribution on [0,1[ (using <random> if C11)

void uniformDistribution(real_t *mat, real_t a, real_t b, number_t n = 1, number_t m = 1)

compute a matrix with real coefficient following an uniform distribution on [a,b[ (using <random> if C11)

real_t uniformDistribution(real_t a = 0., real_t b = 1.)

return a sample from an uniform distribution on [a,b[ (using <random> if C11)

template<typename T>
void uniformDistribution(std::vector<T> &mat, number_t n, number_t m, real_t a = 0., real_t b = 1.)
template<typename T>
void uniformDistribution(std::vector<T> &v, real_t a = 0., real_t b = 1.)
void uniformDistributionC(complex_t *mat, number_t n = 1, number_t m = 1)

compute a matrix with complex coefficient following an uniform distribution on [0,1[ (using rand())

void uniformDistributionC(complex_t *mat, real_t a, real_t b, number_t n = 1, number_t m = 1)

compute a matrix with complex coefficient following an uniform distribution on [a,b[ (using rand())

void uniformDistributionC(real_t *mat, number_t n = 1, number_t m = 1)

compute a matrix with real coefficient following an uniform distribution on [0,1[ (using rand())

void uniformDistributionC(real_t *mat, real_t a, real_t b, number_t n = 1, number_t m = 1)

compute a matrix with real coefficient following an uniform distribution on [a,b[ (using rand())

real_t uniformDistributionC(real_t a = 0., real_t b = 1.)

return a sample from an uniform distribution on [a,b[ (using rand())

Space *unionOf(std::vector<Space*> &sps)

union of subspaces the result, returned as space pointer, may be

union of subspaces

  • one subspace of the list if it includes all others

  • the root space if the union gives the whole space

  • a new subspace

string_t unknownEcName(const EssentialCondition&)

to create an unknown name associated to an essential condition

template<typename ITV, typename ITAB, typename T>
void updateAcaPlus(ITV itv, ITAB itAb, ITAB itBb, number_t mn, number_t lmax, number_t ijp, bool row, T &piv, number_t &jip, bool updatePiv, std::vector<number_t> *rowcol = nullptr)
OperatorOnUnknown &updateLeft(OperatorOnUnknown&, const Function&, AlgebraicOperator)

update F*Op(u) operation

OperatorOnUnknown &updateLeft(OperatorOnUnknown&, const OperatorOnFunction&, AlgebraicOperator)

update op(F)*Op(u) operation

OperatorOnUnknown &updateLeft(OperatorOnUnknown&, const Value&, AlgebraicOperator)

update V*Op(u) operation

template<typename T>
OperatorOnUnknown &updateLeft(OperatorOnUnknown &opu, const T &val, AlgebraicOperator o)
void updateRhs(TermMatrix&, TermVector&)

prepare rhs B of linear system AX=B (internal tool)

OperatorOnUnknown &updateRight(OperatorOnUnknown&, const Function&, AlgebraicOperator)

update Op(u)*F operation

OperatorOnUnknown &updateRight(OperatorOnUnknown&, const OperatorOnFunction&, AlgebraicOperator)

update Op(u)*op(F) operation

OperatorOnUnknown &updateRight(OperatorOnUnknown&, const Value&, AlgebraicOperator)

update Op(u)*V operation

template<typename T>
OperatorOnUnknown &updateRight(OperatorOnUnknown &opu, const T &val, AlgebraicOperator o)
MatrixStorage *updateStorage(MatrixStorage &stm, const std::vector<number_t> rows, const std::vector<number_t> cols, StorageType st, AccessType at, bool overwrite)

modify MatrixStorage stm to include dense submatrix given by its row and column indices (rows and cols) the new storage is of type (st,at) rows (resp.

update storage for adding dense submatrix given by its row and column indices

cols) has to be a subset of row indices (resp. column indices) of the stm storage if overwrite=true the current storage is overwritten and returned else a new MatrixStorage is returned, the stm storage being not cleared!

string_t uppercase(const string_t &s)

convert “AbCdefg” to “ABCDEFG”

returns string_t converted to uppercase

void upperDegreeRule(int degree, const string_t &name, ShapeType sh)

warning message

BilinearForm userBilinearForm(const GeomDomain &dom, const Unknown &u, const Unknown &v, BFFunction bffun, ComputationType ct, SymType st, bool reqIJ, bool reqN, const IntegrationMethod &im)
BilinearForm userBilinearForm(const GeomDomain &domv, const GeomDomain &domu, const Unknown &u, const Unknown &v, BFFunction bffun, ComputationType ct, SymType st, bool reqIJ, bool reqN, const IntegrationMethod &im)

print utility

interpret as string for print purpose

inline ValueType valueType(const complex_t &x)
inline ValueType valueType(const real_t &x)
inline ValueType valueType(const std::vector<complex_t> &x)
inline ValueType valueType(const std::vector<real_t> &x)
inline ValueType valueType(const std::vector<Vector<complex_t>> &x)
inline ValueType valueType(const std::vector<Vector<real_t>> &x)
string_t varName(VariableName v)
template<typename K, typename V1_it, typename V2_it>
V2_it vecmat(const Matrix<K> &m, const V1_it it_v1b, const V2_it it_v2b)
template<typename K, typename ITV, typename ITR>
void vecmat(const SparseMatrix<K> &m, const ITV itv, const ITR itr)
template<typename M_it, typename V1_it, typename V2_it>
void vecmat(M_it it_mb, const V1_it it_v1b, const V1_it it_v1e, V2_it it_v2b, V2_it it_v2e)
template void vector2Array (std::vector< complex_t > &vec, complex_t *target)
template<typename K_>
void vector2Array(std::vector<K_> &vec, K_ *target)

Convert vector to an array of K_.

template void vector2Array (std::vector< real_t > &vec, real_t *target)
typedef Vector< real_t > (funVR_t)(const Point &
typedef Vector< real_t > (kerVR_t)(const Point &
number_t verboseLevel(const number_t)

sets a maximized value for argument value

OperatorOnUnknown &voigtToM(const Unknown &un)
Geometry volumeFrom(const Geometry &s, string_t domName)

definition of a geometry 3D from its boundary 2D

definition of a geometry 3D from an union of boundaries 2D

void vtkExport(const GeomDomain &dom, const std::vector<Point> &coords, const splitvec_t &elementsInfo, std::ostream &out)

export a split mesh of a domain to vtk format

void vtuExport(const GeomDomain &dom, const std::vector<Point> &coords, const splitvec_t &elementsInfo, std::ostream &out)

export a split mesh of a domain to vtk format

inline complex_t w1_Ai(const complex_t &z, DiffOpType d = _id)

2*sqrt(pi)exp(i*pi/6)Ai(t*exp(2i*pi/3))

inline complex_t w2_Ai(const complex_t &z, DiffOpType d = _id)

2*sqrt(pi)exp(-i*pi/6)Ai(t*exp(-2i*pi/3))

template<typename T>
void warning(const string_t &msgIds, const T &v, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4, typename T5>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3, typename T4>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2, typename T3>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, const T3 &v3, Messages *msgSrc = theMessages_p)
template<typename T1, typename T2>
void warning(const string_t &msgIds, const T1 &v1, const T2 &v2, Messages *msgSrc = theMessages_p)
void warning(const string_t &msgIds, MsgData &msgData, Messages *msgSrc)

shortcut of msg for warning type messages

throw warning messages

inline complex_t wedge_dir(const complex_t &z, real_t phi, real_t phi0, const complex_t &thetaP, const complex_t &thetaM, const complex_t &coeffP, const complex_t &coeffM, bool istd, const Malyuzhinets &mal)

compute wedge diffraction at (kr,phi) using either Somerfeld paths or Steepest Decent paths Phi: wedge angle , phi0 : incidence angle, tau=pi/2Phi,

        1    /                         cos tau.phi0
u_(kr,phi) = –&#8212; | exp(-ikr.cos z) ————————–&#8212; dz (Dirichlet on both sides) 4i.Phi /path sin tau(phi+z) - sin tau.phi0

1 / cos tau(phi+z) u_(kr,phi) = –&#8212; | exp(-ikr.cos z) ————————–&#8212; dz (Neumann on both sides) 4i.Phi /path sin tau(phi+z) - sin tau.phi0

           1    /                 PsiP(z+phi)PsiM(z+phi)        cos tau.phi_0
u_(kr,phi) = –&#8212; | exp(-ikr.cos z) ——————-&#8212; ————————–&#8212; dz ( Fourier dn(u) - ik.sin thetaP/M u =0 on SigmaP/M) 4i.Phi /path PsiP(phi0)PsiM(phi0) sin tau(phi+z) - sin tau.phi0

with psiP(z)=psi(Phi+z+thetaP-pi/2)psi(Phi+z-thetaP+pi/2) psiM(z)=psi(-Phi+z-thetaM+pi/2)psi(-Phi+z+thetaM-\pi/2)

important notes:

  • To deal with Neuman and Dirichlet condition, use Fourier with tethaP=0 and thetaM = -100i for instance

  • Computation is hazardous for wedge angle Phi < pi/2 (multiple reflexion)

  • Re(thetaMP)<0 (reactive material) induces exponentially growing solutions

  • heavy computation when Malyuzhinets function is involved

There are many ways to compute the wedge diffraction depending on

  • the paths chosen,

  • the Malyuzineths object is passed or not (Fourier mode)

  • the number of kr or phi passed (one or few) Note: if Malyuzhinets object is not passed but required, it will be construct internally at each call (additional cost) if more than point given, point loop is parallelized else quadrature loop is parallelized (if OMP available)

inline complex_t wedge_dndirM(const complex_t &z, real_t Phi, real_t phi0)
inline complex_t wedge_dndirP(const complex_t &z, real_t Phi, real_t phi0)
inline complex_t wedge_fou(const complex_t &z, real_t phi, real_t phi0, const complex_t &thetaP, const complex_t &thetaM, const complex_t &coeffP, const complex_t &coeffM, bool istd, const Malyuzhinets &mal)
inline complex_t wedge_neu(const complex_t &z, real_t phi, real_t phi0, const complex_t &thetaP, const complex_t &thetaM, const complex_t &coeffP, const complex_t &coeffM, bool istd, const Malyuzhinets &mal)
std::vector<complex_t> wedgeCurrentSD(const std::vector<real_t> &krs, real_t Phi, int uplow, real_t phi0, FieldPart fp, real_t krasym, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
std::vector<complex_t> wedgeCurrentSD_par(const std::vector<real_t> &krs, real_t Phi, int uplow, real_t phi0, FieldPart fp, real_t krasym, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
std::vector<complex_t> wedgeCurrentSOM(const std::vector<real_t> &krs, real_t Phi, real_t phi0, FieldPart fp, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
std::vector<complex_t> wedgeDiffractionSD(const std::vector<real_t> &krs, const std::vector<real_t> &phis, real_t Phi, real_t phi0, FieldPart fp, real_t krasym, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
inline complex_t wedgeDiffractionSD(real_t kr, real_t phi, real_t Phi, real_t phi0, FieldPart fp, real_t kra, BcType bcP, BcType bcM = _undefEcType, complex_t thetaP = 0, complex_t thetaM = 0)
std::vector<complex_t> wedgeDiffractionSD_par(const std::vector<real_t> &krs, const std::vector<real_t> &phis, real_t Phi, real_t phi0, FieldPart fp, real_t krasym, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
inline complex_t wedgeDiffractionSD_par(real_t kr, real_t phi, real_t Phi, real_t phi0, FieldPart fp, real_t kra, BcType bcP, BcType bcM = _undefEcType, complex_t thetaP = 0, complex_t thetaM = 0)
std::vector<complex_t> wedgeDiffractionSOM(const std::vector<real_t> &krs, const std::vector<real_t> &phis, real_t Phi, real_t phi0, FieldPart fp, BcType bcP, BcType bcM, complex_t thetaP, complex_t thetaM)
inline complex_t wedgeDiffractionSOM(real_t kr, real_t phi, real_t Phi, real_t phi0, FieldPart fp, BcType bcP, BcType bcM = _undefEcType, complex_t thetaP = 0, complex_t thetaM = 0)
std::vector<complex_t> wedgeDirCurrentSD(const std::vector<real_t> &krs, real_t Phi, real_t phi0, FieldPart fp, int uplow)
std::vector<complex_t> wedgeDirCurrentSOM(const std::vector<real_t> &krs, real_t Phi, real_t phi0, FieldPart fp, BcType bcP, BcType bcM)
string_t &where(const string_t &s)

sets a message to tell where we are in the code (shortcut to when push/pop are not set)

int_t whichSide(const Point &p, const Point &n, const std::vector<Point> &pts)

determines if a plane splits a set of points

string_t words(const bool b)

accessor to words with a boolean

string_t words(const char *key)

accessor to words with a const char* (needed to avoid automatic cast to bool type)

string_t words(const string_t &key)

accessor to words with a string_t

external function to manage localized strings

string_t words(const string_t &key, const int id)

accessor to enumWords

number_t writeLigne(std::ostream &out, const std::string &str, number_t ncar)

Write the string str on the output stream out, limiting the length of all output lines to 80 characters Nota: the length of str is logically assumed to be < 80 characters.

This is not checked since this is always the case when this function is called by the function melExport ; moreover, this would not produce any error: the string str would just be written as is on a new line.

ncar is the number of characters previously written on the current line. If the sum of the length of str and ncar does not exceed 80 characters, then str is written at the end of the current line ; otherwise str is written on a new line, which then become the (new) current line. The function returns the updated number of characters written on the current line.

SymbolicFunction x_1(_x1)
SymbolicFunction x_2(_x2)
SymbolicFunction x_3(_x3)
SymbolicFunction x_4(_x4)
std::complex<double> zairy(const std::complex<double> &z, int id)

Airy function: Ai(z)

std::complex<double> zbesselI(const std::complex<double> &z, double order)

Modified Bessel function of the first kind: I_N(z)

std::complex<double> zbesselJ(const std::complex<double> &z, double order)

Bessel function of the first kind: J_N(z)

std::complex<double> zbesselK(const std::complex<double> &z, double order)

Modified Bessel function of the second kind: K_N(z)

std::complex<double> zbesselY(const std::complex<double> &z, double order)

Bessel function of the second kind: Y_N(z)

inline complex_t zbiry(const complex_t &z, DiffOpType d = _id)

Airy function: Bi(z) or Bi’(z)

std::complex<double> zbiry(const std::complex<double> &z, int id)

Biry function: Bi(z)

inline Vector<real_t> zeroCurvatures(const Point &p, const Point &d, bool fromParameters, Parameters &pars)
inline complex_t zeros(const complex_t &v)
inline real_t zeros(const real_t &v)

zero for scalars

template<typename T>
std::vector<T> zeros(const std::vector<T> &v)

zero for a vector

complex_t zexpzE1z(const complex_t&)

return z*exp(z)*E1(z)

std::complex<double> zhankel(const std::complex<double> &z, int kind, double order)

Hankel functions of the i-th kind: Hi_N(z)

Variables

ArpackProb _ARprob
Parameter _nbIterations
Parameter _residue
const number_t addrWidth
static const real_t ch0[13] = {.182311992692574, -.68661765315081e-1, .388759121580854, -.267648939655143, .794413767405257e-1, -.13647452878064e-1, .155298216531296e-2, -.126637763099949e-3, .779608642052048e-5, -.37611407660050e-6, .1462633271602e-7, -.46873653930e-9, .1260241570e-10}

data for Chebyshev interpolation of Struve functions H_0 and H_1

static const real_t ch0minusy0[13] = {.992837275764239, -.696891281138625e-2, .182051037870371e-3, -.106325825284416e-4, .98198294286525e-6, -.12250645444977e-6, .1894083311800e-7, -.344358225604e-8, .71119101711e-9, -.16288744137e-9, .4065680728e-10, -.1091504796e-10, .312005243e-11}
static const real_t ch1[13] = {.557889144648160, -.111883257265698, -.163379581252009, .322569320724059, -.145816323672442, .329267739937403e-1, -.460372142093572e-2, .443470616331396e-3, -.314209952934117e-4, .171237199380035e-5, -.7416987005204e-7, .261837670705e-8, -.7685839395e-10}
static const real_t ch1minusy1[13] = {1.0075764293865, .750316051248257e-2, -.704393326451905e-4, .266205393382266e-5, -.18841157753405e-6, .1949014958394e-7, -.261261989905e-8, .42362690104e-9, -.7955155531e-10, .1679973006e-10, -.390719821e-11, .98543090e-12, -.26635794e-12}
AngleUnitType defaultAngleUnit = _rad
number_t defaultKrylovDimension = 0
number_t defaultMaxIterations = 0
Parameters defaultParameters

default ParameterList object used as default argument in Function constructor

Parameters *defaultParameters_p = &defaultParameters

default ParameterList object used as default argument in Function constructor

AngleUnit deg_
static const real_t dg_coeff[10] = {-.83333333333333333e-1, .83333333333333333e-2, -.39682539682539683e-2, .41666666666666667e-2, -.75757575757575758e-2, .21092796092796093e-1, -.83333333333333333e-1, .4432598039215686, -.3053954330270122e+1, .125318899521531e+2}
static const real_t eight = real_t(8.)
const number_t entriesPerRow = 10
const number_t entryPrec
const number_t entryWidth
std::string eol = "\n"
const complex_t expipiover3_ = std::exp(i_ * pi_ / 3.)
static const real_t four = real_t(4.)
const number_t fullPrec
static number_t Hex2[] = {1, 2, 3, 0, 5, 6, 7, 4, 14, 19, 18, 10, 8, 9, 12, 13, 17, 15, 16, 11, 23, 24, 25, 22, 21, 20, 26}
static number_t Hex3[] = {1, 2, 3, 0, 5, 6, 7, 4, 20, 31, 28, 13, 9, 11, 16, 18, 27, 22, 25, 14, 21, 30, 29, 12, 8, 10, 17, 19, 26, 23, 24, 15, 45, 46, 47, 44, 50, 51, 48, 49, 53, 54, 55, 52, 43, 40, 41, 42, 39, 36, 37, 38, 35, 32, 33, 34, 57, 58, 59, 56, 61, 62, 63, 60}
static number_t Hex4[] = {1, 2, 3, 0, 5, 6, 7, 4, 26, 43, 38, 16, 10, 13, 20, 23, 37, 29, 34, 17, 27, 42, 39, 15, 9, 12, 21, 24, 36, 30, 33, 18, 28, 41, 40, 14, 8, 11, 22, 25, 35, 31, 32, 19, 72, 73, 74, 71, 76, 77, 78, 75, 79, 82, 83, 80, 81, 86, 87, 84, 85, 88, 90, 91, 92, 89, 94, 95, 96, 93, 97, 65, 62, 63, 64, 69, 66, 67, 68, 70, 56, 53, 54, 55, 60, 57, 58, 59, 61, 47, 44, 45, 46, 51, 48, 49, 50, 52, 99, 100, 101, 98, 103, 104, 105, 102, 112, 117, 116, 108, 106, 107, 110, 111, 115, 113, 114, 109, 121, 122, 123, 120, 119, 118, 124}
number_t HMf2XLf[] = {0, 4, 1, 5, 2, 6, 3}
const complex_t i_ = complex_t(0., 1.)
static number_t Idty[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}
bool isTestMode = false
static const real_t J0_a[2] = {2.4062500000000000000e+0, 5.5195312500000000000e+0}

approximate fractional roots (multiples of 1/256)

static const real_t J0_v[2] = {-1.42444230422723137837e-3, 5.46860286310649596604e-4}

accurate values for approximate roots above

static const real_t J0_z[2] = {2.4048255576957727686e+0, 5.5200781102863106496e+0}

first roots of J_0, J_1, Y_0, Y_1 and approximations

static const real_t J1_a[2] = {3.8320312500000000000e+0, 7.0156250000000000000e+0}
static const real_t J1_v[2] = {-3.2527979248768438556e-4, -3.8330184381246462950e-5}
static const real_t J1_z[2] = {3.8317059702075123156e+0, 7.0155866698156187535e+0}
static const real_t jy0_p0[6] = {8.8961548424210455236e-1, 1.5376201909008354296e+2, 3.4806486443249270347e+3, 2.1170523380864944322e+4, 4.1345386639580765797e+4, 2.2779090197304684302e+4}
static const real_t jy0_p1[6] = {-8.8033303048680751817e-3, -1.2441026745835638459e+0, -2.2300261666214198472e+1, -1.1183429920482737611e+2, -1.8591953644342993800e+2, -8.9226600200800094098e+1}
static const real_t jy0_q0[5] = {1.5711159858080893649e+2, 3.5028735138235608207e+3, 2.1215350561880115730e+4, 4.1370412495510416640e+4, 2.2779090197304684318e+4}
static const real_t jy0_q1[5] = {9.0593769594993125859e+1, 1.4887231232283756582e+3, 7.2642780169211018836e+3, 1.1951131543434613647e+4, 5.7105024128512061905e+3}
static const real_t jy1_p0[6] = {-1.6116166443246101165e+3, -1.0982405543459346727e+5, -1.5235293511811373833e+6, -6.6033732483649391093e+6, -9.9422465050776411957e+6, -4.4357578167941278571e+6}

data for rational approximations of Bessel functions J_1, Y_1 for large arguments

static const real_t jy1_p1[6] = {3.5265133846636032186e+1, 1.7063754290207680021e+3, 1.8494262873223866797e+4, 6.6178836581270835179e+4, 8.5145160675335701966e+4, 3.3220913409857223519e+4}
static const real_t jy1_q0[6] = {-1.4550094401904961825e+3, -1.0726385991103820119e+5, -1.5118095066341608816e+6, -6.5853394797230870728e+6, -9.9341243899345856590e+6, -4.4357578167941278568e+6}
static const real_t jy1_q1[6] = {8.6383677696049909675e+2, 3.7890229745772202641e+4, 4.0029443582266975117e+5, 1.4194606696037208929e+6, 1.8194580422439972989e+6, 7.0871281941028743574e+5}
static const real_t lg_coef[10] = {.8333333333333333e-1, -.2777777777777778e-2, .7936507936507937e-3, -.5952380952380952e-3, .8417508417508418e-3, -.1917526917526918e-02, .6410256410256410e-2, -.2955065359477124e-1, .1796443723688307, -1.39243221690590}
static const real_t lgg_coeff[11] = {1.000000000000000174663, 5716.400188274341379136, -14815.30426768413909044, 14291.49277657478554025, -6348.160217641458813289, 1301.608286058321874105, -108.1767053514369634679, 2.605696505611755827729, -0.7423452510201416151527e-2, 0.5384136432509564062961e-7, -0.4023533141268236372067e-8}
const real_t logOf2_ = std::log(real_t(2.))
const number_t numberWidth
static const real_t one = real_t(1.)
const real_t over2pi_ = overpi_ / 2.
const real_t over3_ = 1. / (real_t(3.))
const real_t over4pi_ = overpi_ / 4.
const real_t over6_ = 1. / (real_t(6.))
const real_t overpi_ = 1. / pi_
SymbolicFunction phi_
const real_t pi_ = 4. * std::atan(real_t(1.))
static number_t Pri2[] = {0, 1, 2, 3, 4, 5, 6, 9, 7, 12, 14, 13, 8, 10, 11, 15, 17, 16}
number_t QMe2XLe[] = {0, 4, 1, 2, 3}
static number_t Qua3[] = {1, 2, 3, 0, 6, 8, 10, 4, 7, 9, 11, 5, 13, 14, 15, 12}
static number_t Qua4[] = {1, 2, 3, 0, 7, 10, 13, 4, 8, 11, 14, 5, 9, 12, 15, 6, 17, 18, 19, 16, 21, 22, 23, 20, 24}
static number_t Qua5[] = {1, 2, 3, 0, 8, 12, 16, 4, 9, 13, 17, 5, 10, 14, 18, 6, 11, 15, 19, 7, 21, 22, 23, 20, 26, 28, 30, 24, 27, 29, 31, 25, 33, 34, 35, 32}
const dimen_t R3Dim = 3
SymbolicFunction r_
AngleUnit rad_
const real_t sqrtOf2_ = std::sqrt(real_t(2.))
const real_t sqrtOf3_ = std::sqrt(real_t(3.))
const real_t sqrtOfpi_ = std::sqrt(pi_)
const number_t testPrec
static number_t Tet1[] = {3, 1, 2, 0}
static number_t Tet2[] = {3, 1, 2, 0, 7, 4, 6, 5, 8, 9}
static number_t Tet3[] = {3, 1, 2, 0, 10, 5, 8, 6, 12, 14, 11, 4, 9, 7, 13, 15, 16, 18, 17, 19}
static number_t Tet4[] = {3, 1, 2, 0, 13, 6, 10, 7, 16, 19, 14, 5, 11, 8, 17, 20, 15, 4, 12, 9, 18, 21, 22, 23, 24, 28, 29, 30, 25, 26, 27, 31, 32, 33, 34}
static number_t Tet5[] = {3, 1, 2, 0, 16, 7, 12, 8, 20, 24, 17, 6, 13, 9, 21, 25, 18, 5, 14, 10, 22, 26, 19, 4, 15, 11, 23, 27, 28, 29, 30, 31, 32, 33, 40, 41, 42, 43, 44, 45, 34, 35, 36, 37, 38, 39, 46, 47, 48, 49, 50, 51, 55, 53, 54, 52}
real_t theBreakdownThreshold = 1.e-30
CoutStream theCout
real_t theDefaultCharacteristicLength = 0.1
real_t theDefaultConvergenceThreshold = std::sqrt(theEpsilon)
Preconditioner theDefaultPreconditioner(_noPrec)
TermMatrix theDefaultTermMatrix
const TermVector theDefaultTermVector
const dimen_t theDimMax = USHRT_MAX
Environment *theEnvironment_p

runtime Environment object

Global Scope Environment object.

const real_t theEpsilon
const real_t theEulerConst = .5772156649015328606065
number_t theGlobalVerboseLevel = UINT_MAX
const int_t theIntMax
const int_t theIntMin
const number_t theLanguage
Timer *theLastTime_p
real_t theLocateToleranceFactor = 0.1
string_t theLogFile = "log.txt"
string_t theLogGmshFile = "log_gmsh.txt"
PrintStream theLogStream
MsgData theMessageData

global data message object

Messages *theMessages

all messages

Messages *theMessages_p

error and msg objects

const number_t theNumberMax
string_t thePrintFile = "print.txt"
PrintStream thePrintStream
unsigned int theRandomSeed
real_t theRatioOfIterations2Rows
const real_t theRealMax
const size_t theSizeMax
Timer *theStartTime_p

start and previous Timer objects

std::stringstream theStringStream
SymbolicFunction theta_
ThreadData theThreadData
const real_t theTolerance = theEpsilonFactor * theEpsilon
number_t theVerboseLevel = 1
std::string theWhereData = ""
const real_t theZeroThreshold = 1.e-30
number_t TMe2XLe[] = {0, 1, 2, 3}
number_t TMf2XLf[] = {0, 1, 2, 3, 4}
Trace *trace_p

runtime Trace object

bool trackingObjects = true
static number_t Tri3[] = {0, 1, 2, 3, 5, 7, 4, 6, 8, 9}
static number_t Tri4[] = {0, 1, 2, 3, 6, 9, 4, 7, 10, 5, 8, 11, 12, 13, 14}
static number_t Tri5[] = {0, 1, 2, 3, 7, 11, 4, 8, 12, 5, 9, 13, 6, 10, 14, 15, 16, 17, 18, 19, 20}
Vector<real_t> voidVector
SymbolicFunction x_1
SymbolicFunction x_2
SymbolicFunction x_3
SymbolicFunction x_4
static const real_t Y0_a[3] = {0.8906250000000000000e+0, 3.9570312500000000000e+0, 7.085937500000000000e+0}
static const real_t Y0_v[3] = {2.9519662791675215849e-3, 6.4716931485786837568e-4, 1.1356030177269762362e-4}
static const real_t Y0_z[3] = {8.9357696627916752158e-1, 3.9576784193148578684e+0, 7.0860510603017726976e+0}
static const real_t Y1_a[2] = {2.1953125000000000000e+0, 5.4296875000000000000e+0}
static const real_t Y1_v[2] = {1.8288260310170351490e-3, -6.4592058648672279948e-6}
static const real_t Y1_z[2] = {2.1971413260310170351e+0, 5.4296810407941351328e+0}
static const real_t zero = real_t(0.)

Specific integerss as real numbers.

class AdjacenceInfo
#include <Element.hpp>

structure to describe how two GeomElement or Element are geometrically related

  • dist: distance of elements (real_t)

  • nxn: cross product of unitary normals (real_t) to measure parallelism

  • status: one of AdjacentStatus (_notAdjacent,_adjacentByElement,_adjacentBySide,_adjacentBySideOfSide, _adjacentByVertex)

  • numbers: pair of numbers when they are adjacent: side numbers or side of side numbers or vertex numbers

Note

works only with underlying first order geometric element

struct AllowConversion
#include <ConversionPolicy.hpp>

Implementation of the ConversionPolicy used by SmartPtr Allows implicit conversion from SmartPtr to the pointee type.

class AnalyticalDomain : public xlifepp::GeomDomain
#include <GeomDomain.hpp>

class to handle domain with analytical description to be developed later

class AnalyticGeodesic : public xlifepp::Geodesic
#include <Geodesic.hpp>

AnalyticGeodesic class handling any geodesic described by a 1D->3D parametrization par_g : Parametrization of the analytic geodesic init_p: function pointer to init function, must be called before using parametrization smin_, smax_ : bounds of parametrization regarding starting point the set() function set the starting point and starting derivative the init_p() function computes parameter bounds and additional data useful for computation the useful data must are transmitted to the parametrization function using its Parameters object.

class AngleUnit
template<class T>
class ApproximateMatrix
#include <ApproximateMatrix.hpp>

base class of all approximate matrix methods

Subclassed by xlifepp::LowRankMatrix< T >

template<class K_>
class ARGenFrame : public xlifepp::ARInterfaceFrame<K_>
template<class TA_, class TB_>
class ARGenToStdReg : public xlifepp::ARStdFrame<TA_>
#include <ARGenToStd.hpp>

Class used to transform a generalized problem into a standard one.

B is supposed to be invertible. Regular mode case. Matrix-vector product provided: y <- inv(B)*A * x

template<class TA_, class TB_>
class ARGenToStdShf : public xlifepp::ARStdFrame<TA_>
#include <ARGenToStd.hpp>

Class used to transform a generalized problem into a standard one.

B is supposed to be invertible. Shift mode case. Matrix-vector product provided: y <- inv(inv(B)*A-sigma*Id)*x sigma has the type of A

class ArgyrisTriangle : public xlifepp::RefTriangle
#include <ArgyrisTriangle.hpp>

(non conforming H2 element) Parent class: RefTriangle

template<class K_, class MA_>
class ARInterface
#include <ARInterface.hpp>
Template Parameters:
  • K_ – type of elements

  • MA_ – type of the matrix

Subclassed by xlifepp::ARInterfaceGen< K_, MA_, MB_ >, xlifepp::ARInterfaceStdReg< K_, MA_ >, xlifepp::ARInterfaceStdShf< K_, MA_ >

class ARInterfaceCSVD : public xlifepp::ARStdFrame<complex_t>
#include <ARInterface.hpp>

The ARInterfaceCSVD class handle complex data.

Given a complex matrix A and a complex vector x, this class defines the products: . (A*) * A * x and A * (A*) * x, for computation near the ends of the spectrum, . ((A*) * A - s * Id) * x and (A * (A*) - s * Id) * x, for computation near a real shift s.

Subclassed by xlifepp::ARInterfaceCSVDmGEnReg, xlifepp::ARInterfaceCSVDmGEnShf, xlifepp::ARInterfaceCSVDmLTnReg, xlifepp::ARInterfaceCSVDmLTnShf

class ARInterfaceCSVDmGEnReg : public xlifepp::ARInterfaceCSVD
class ARInterfaceCSVDmGEnShf : public xlifepp::ARInterfaceCSVD
class ARInterfaceCSVDmLTnReg : public xlifepp::ARInterfaceCSVD
class ARInterfaceCSVDmLTnShf : public xlifepp::ARInterfaceCSVD
template<class K_>
class ARInterfaceFrame

Subclassed by xlifepp::ARGenFrame< K_ >, xlifepp::ARStdFrame< K_ >

template<class K_, class MA_, class MB_>
class ARInterfaceGen : public xlifepp::ARInterface<K_, MA_>
#include <ARInterface.hpp>

Abstract class for generalized eigenvalue problem Matrix-vector product provided: y <- B * x.

Subclassed by xlifepp::ARInterfaceGenReg< K_, MA_, MB_ >, xlifepp::ARInterfaceGenShf< K_, MA_, MB_ >

template<class MAB_>
class ARInterfaceGenBuc : public xlifepp::ARInterfaceGen<real_t, MAB_, MAB_>
#include <ARInterface.hpp>

Class for generalized eigenvalue problem in buckling mode Real symmetric case.

Matrix-vector products provided: y <- inv(A-sigma B)*x and y <- A * x

template<class MAB_>
class ARInterfaceGenCay : public xlifepp::ARInterfaceGen<real_t, MAB_, MAB_>
#include <ARInterface.hpp>

Class for generalized eigenvalue problem in Cayley mode Real symmetric case.

Matrix-vector products provided: y <- inv(A-sigma B)*x, y <- A * x and y <- B * x

template<class MAB_, class MAsB_>
class ARInterfaceGenCsh : public xlifepp::ARInterfaceGen<real_t, MAB_, MAB_>
#include <ARInterface.hpp>

Class for generalized eigenvalue problem in complex shift and invert mode Real non symmetric case with complex shift.

Matrix-vector products provided: y <- Re/Im{inv(A-sigma B)}*x, y <- A * x and y <- B * x

template<class K_, class MA_, class MB_>
class ARInterfaceGenReg : public xlifepp::ARInterfaceGen<K_, MA_, MB_>
#include <ARInterface.hpp>

Class for generalized eigenvalue problem in regular mode except in the real symmetric case Matrix-vector product provided: y <- inv(B)*A * x and y <- B * x.

template<class K_, class MA_, class MB_>
class ARInterfaceGenShf : public xlifepp::ARInterfaceGen<K_, MA_, MB_>
#include <ARInterface.hpp>

Class for generalized eigenvalue problem in shift and invert mode Real symmetric, real non symmetric and complex cases.

Here, A and sigma have the same type. The special case real non symmetric with complex sigma is treated in class ARInterfaceGenCsh. Matrix-vector products provided: y <- inv(A-sigma B)*x and y <- B * x

template<class MAB_>
class ARInterfaceGenSymReg : public xlifepp::ARInterfaceGen<real_t, MAB_, MAB_>
#include <ARInterface.hpp>

Class for real symmetric generalized eigenvalue problem in regular mode Matrix-vector product provided: y <- inv(B)*A * x and y <- B * x.

class ARInterfaceRSVD : public xlifepp::ARStdFrame<real_t>
#include <ARInterface.hpp>

The ARInterfaceRSVD class handle real data.

Given a real matrix A and a real vector x, this class defines the products: . (At) * A * x and A * (At) * x, for computation near the ends of the spectrum, . ((At) * A - s * Id) * x and (A * (At) - s * Id) * x, for computation near a real shift s.

Subclassed by xlifepp::ARInterfaceRSVDmGEnReg, xlifepp::ARInterfaceRSVDmGEnShf, xlifepp::ARInterfaceRSVDmLTnReg, xlifepp::ARInterfaceRSVDmLTnShf

class ARInterfaceRSVDmGEnReg : public xlifepp::ARInterfaceRSVD
class ARInterfaceRSVDmGEnShf : public xlifepp::ARInterfaceRSVD
class ARInterfaceRSVDmLTnReg : public xlifepp::ARInterfaceRSVD
class ARInterfaceRSVDmLTnShf : public xlifepp::ARInterfaceRSVD
template<class K_, class MA_>
class ARInterfaceStdReg : public xlifepp::ARInterface<K_, MA_>
#include <ARInterface.hpp>

Class for standard eigenvalue problem in regular mode Matrix-vector product provided: y <- A * x.

template<class K_, class MA_>
class ARInterfaceStdShf : public xlifepp::ARInterface<K_, MA_>
#include <ARInterface.hpp>

Class for standard eigenvalue problem in shift and invert mode Matrix-vector product provided: y <- inv(A-sigma*Id) * x.

class ArpackProb
template<class K_>
class ARStdFrame : public xlifepp::ARInterfaceFrame<K_>
class Ball : public xlifepp::Ellipsoid
#include <geometries3D.hpp>

definition of an spherical geometry in R^3 (volume)

Ball constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the Ball

  • _v1, _v2, _v6: to define apogees of the Ball

  • _radius: to define radius of the Ball

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nboctants: to define an ellipsoidal sector from octants.

  • _nnodes: to define the number of nodes on the edges of the Ball

  • _hsteps: to define the local mesh steps on build points of the Ball

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class BasicBilinearForm
#include <BilinearForm.hpp>

describes the base class of bilinear form on a space.

It is an abstract class

Subclassed by xlifepp::DoubleIntgBilinearForm, xlifepp::IntgBilinearForm, xlifepp::MatrixBilinearForm, xlifepp::UserBilinearForm

class BasicLinearForm
#include <LinearForm.hpp>

describes the base class of basic linear forms on a space It is an abstract class

Subclassed by xlifepp::BilinearFormAsLinearForm, xlifepp::DoubleIntgLinearForm, xlifepp::IntgLinearForm

template<class ScalarType, class MV, class OP>
class BasicOrthoManager : public xlifepp::MatOrthoManager<ScalarType, MV, OP>
#include <XlifeppBasicOrthoManager.hpp>

An implementation of the MatOrthoManager that performs orthogonalization using (potentially) multiple steps of classical Gram-Schmidt.

template<class ScalarType>
class BasicOutputManager : public xlifepp::OutputManager<ScalarType>
#include <XlifeppBasicOutputManager.hpp>

xlifepp’s basic output manager for sending information of select verbosity levels to the appropriate output stream.

template<class MagnitudeType>
class BasicSort : public xlifepp::SortManager<MagnitudeType>
#include <XlifeppBasicSort.hpp>

An implementation of the xlifepp::SortManager that performs a collection of common sorting techniques.

class BCDof : public xlifepp::FeDofExtension
#include <Dof.hpp>

to store Buffa-Chritiensen global dof informations see xlife++ documention for details

class BCRTElement : public xlifepp::ExtendedElement
#include <BCElement.hpp>

class describing a BC-RT element considered as an element defined on a triangle of the primal mesh in this interpretation, element has inner dofs and outer dofs

class BCRTShapeFunction
#include <BCElement.hpp>

class describing a BC-RT shape function that is a linear combination of RT shape function defined on sub triangle

class BCRTShapeFunctionPart
#include <BCElement.hpp>

class describing a part of BC-RT shape function: sub RT shape function

class BCsub
#include <Dof.hpp>

structure defining a part of BC shape function

class BezierSpline : public xlifepp::Spline
#include <spline.hpp>

BezierSpline class

class BFComputationData
#include <BilinearForm.hpp>

stuff related to bf user computation, loaded by computation algorithm manage information to compute elementary matrix (real or scalar matrices) from elements elt_u, elt_v in case of FEM or BEM computation and from additional elements elt_u2, elt_v2 in case of DG computation produce one matrix in FEM or BEM computation, up to four matrices in DG computation

class BicgSolver : public xlifepp::IterativeSolver
#include <BicgSolver.hpp>

Implement BiConjugate Gradient algorithm.

class BicgStabSolver : public xlifepp::IterativeSolver
#include <BicgStabSolver.hpp>

Implement BiConjugate Gradient Stabilized algorithm.

class BilinearForm
#include <BilinearForm.hpp>

describes a general bilinear form, that is a list of linear combinations of basic bilinear forms.

It is intend to collect linear forms with different unknowns, using a map<uvPair,SuBilinearForm>. It is the enduser’s class

class BilinearFormAsLinearForm : public xlifepp::BasicLinearForm
#include <BilinearFormAsLinearForm.hpp>

describes a linear form based on a Bilinearform a(u,v) where u or v are specified as a TermVector

template<class ScalarType, class MV, class OP>
class BlockDavidson : public xlifepp::EigenSolver<ScalarType, MV, OP>
#include <XlifeppBlockDavidson.hpp>

This class implements a Block Davidson iteration, a preconditioned iteration for solving linear Hermitian eigenproblems.

This method is described in A Comparison of EigenSolvers for Large-scale 3D Modal Analysis Using AMG-Preconditioned Iterative Methods, P. Arbenz, U. L. Hetmaniuk, R. B. Lehoucq, R. S. Tuminaro, Internat. J. for Numer. Methods Engrg., 64, pp. 204-236 (2005)

template<class ScalarType, class MV, class OP>
class BlockDavidsonSolMgr : public xlifepp::SolverManager<ScalarType, MV, OP>
#include <XlifeppBlockDavidsonSolMgr.hpp>

The BlockDavidsonSolMgr provides a powerful solver manager over the BlockDavidson eigensolver.

This solver manager implements a hard-locking mechanism, whereby eigenpairs designated to be locked are moved from the eigensolver and placed in auxilliary storage. The eigensolver is then restarted and continues to iterate, orthogonal to the locked eigenvectors.

The solver manager provides to the solver a StatusTestCombo object constructed as follows:combo = globaltest OR lockingtest OR debugtest where

  • globaltest

    terminates computation when global convergence has been detected.

    It is encapsulated in a

    StatusTestWithOrdering

    object, to ensure that computation is terminated only after the most significant eigenvalues/eigenvectors have met the convergence criteria.

    If not specified via

    setGlobalStatusTest(), globaltest is a StatusTestResNorm object which tests the M-norms of the direct residuals relative to the Ritz values.
  • lockingtest halts BlockDavidson::iterate()

    in order to deflate converged eigenpairs for locking.

    It will query the underlying

    BlockDavidson

    eigensolver to determine when eigenvectors should be locked.

    If not specified via

    setLockingStatusTest(), lockingtest is a StatusTestResNorm object.
  • debugtest allows a user to specify additional monitoring of the iteration, encapsulated in a StatusTest

    object

    If not specified via

    setDebugStatusTest(), debugtest

    is ignored.

    In most cases, it should return

    _failed; if it returns _passed, solve() will throw an XlifeppError exception.

Additionally, the solver manager will terminate solve() after a specified number of restarts.

Much of this behavior is controlled via parameters and options passed to the solver manager. For more information, see BlockDavidsonSolMgr().

Solver application methods

Return the timers for this object.

The timers are ordered as follows:

  • time spent in solve() routine

  • time spent restarting

  • time spent locking converged eigenvectors

template<class ScalarType, class MV>
struct BlockDavidsonState
#include <XlifeppBlockDavidson.hpp>

Structure to contain pointers to BlockDavidson state variables.

This struct is utilized by BlockDavidson::initialize() and BlockDavidson::getState().

template<class ScalarType, class MV, class OP>
class BlockKrylovSchur : public xlifepp::EigenSolver<ScalarType, MV, OP>
#include <XlifeppBlockKrylovSchur.hpp>

This class implements the block Krylov-Schur iteration, for solving linear eigenvalue problems.

This method is a block version of the iteration presented by G.W. Stewart in “A Krylov-Schur Algorithm for Large Eigenproblems”, SIAM J. Matrix Anal. Appl., Vol 23(2001), No. 3, pp. 601-614.

template<class ScalarType, class MV, class OP>
class BlockKrylovSchurSolMgr : public xlifepp::SolverManager<ScalarType, MV, OP>
#include <XlifeppBlockKrylovSchurSolMgr.hpp>

The BlockKrylovSchurSolMgr provides a flexible solver manager over the BlockKrylovSchur eigensolver.

The solver manager provides to the solver a StatusTestCombo object constructed as follows:combo = globaltest _OR debugtest where

  • globaltest

    terminates computation when global convergence has been detected.

    It is encapsulated in a

    StatusTestWithOrdering

    object, to ensure that computation is terminated only after the most significant eigenvalues/eigenvectors have met the convergence criteria.

    If not specified via

    setGlobalStatusTest(), this test is a StatusTestResNorm object which tests the 2-norms of the Ritz residuals relative to the Ritz values.
  • debugtest allows a user to specify additional monitoring of the iteration, encapsulated in a StatusTest

    object

    If not specified via

    setDebugStatusTest(), debugtest

    is ignored.

    In most cases, it should return

    _failed; if it returns _passed, solve() will throw an XlifeppError exception.

Additionally, the solver manager will terminate solve() after a specified number of restarts.

Much of this behavior is controlled via parameters and options passed to the solver manager. For more information, see BlockKrylovSchurSolMgr().

template<class ScalarType, class MulVec>
struct BlockKrylovSchurState
#include <XlifeppBlockKrylovSchur.hpp>

Structure to contain pointers to BlockKrylovSchur state variables.

This struct is utilized by BlockKrylovSchur::initialize() and BlockKrylovSchur::getState().

class BoundingBox
#include <Geometry.hpp>

utility class to describe a bounding box

template<typename T>
class Box
#include <KdTree.hpp>

utility class for printing KdTree

class BSpline : public xlifepp::Spline
#include <spline.hpp>

BSpline class (rational B-Spline)

class BuffaChristiansenRT : public xlifepp::RaviartThomasStdTriangleP1
#include <RaviartThomasTriangle.hpp>

ref element inherits from RT ref element but declare no shapevalues ShapeValues are directly computed from BCDof

class C2Spline : public xlifepp::Spline
#include <spline.hpp>

C2Spline class.

class CatmullRomSpline : public xlifepp::Spline
#include <spline.hpp>

CatmullRomSpline class.

class CgSolver : public xlifepp::IterativeSolver
#include <CgSolver.hpp>

Implement Conjugate Gradient algorithm.

class CgsSolver : public xlifepp::IterativeSolver
#include <CgsSolver.hpp>

Implement Conjugate Gradient Squared algorithm.

class CircArc : public xlifepp::Curve
#include <geometries1D.hpp>

definition of a circular arc geometry in R^3 (curve)

EllArc constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the circle supporting the arc

  • _v1, _v2: to define the bounds of the arc

  • _nnodes: to define the number of nodes on the arc

  • _hsteps: to define the local mesh steps on the bounds of the arc

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

template<typename T>
class ClusterNode
#include <ClusterTree.hpp>

describes a node of a hierarchical cluster of T objects (mean Point for instance) it manages

  • a pointer to the cloud object (objects_)

  • a xyz bounding box of the node, may be not the smallest

  • a xyz real bounding box of the node if required

  • some pointers to move in the tree (parent_, child_, next_)

  • the indices of objects belonging to the box (numbers_), may be deallocated for node that are not leaf (see storeNodeData_)

  • an optional list of dof numbers

  • an optional list of element pointers

Note

a node is never void

template<typename T = FeDof>
class ClusterTree
#include <ClusterTree.hpp>

frontal class of a tree representation (xlifepp::ClusterNode class) of cloud of objects that have a characteristic Point of location Be cautious, it uses a pointer to a vector of T that has to be kept in memory.

Full copy of objects should be safer but it is memory expansive, see later

class ColCsStorage : public xlifepp::CsStorage
#include <ColCsStorage.hpp>

child class of col compressed sparse storage

class ColDenseStorage : public xlifepp::DenseStorage
#include <ColDenseStorage.hpp>

handles dense storage of matrix stored column by column

template<typename T>
class Collection : public std::vector<T>
#include <Collection.hpp>

a simple interface to std::vector<T> add the insertion operator <<, the constructors from enumerating items and access to items using operator ()

class CollinoIM : public xlifepp::DoubleIM
#include <CollinoIM.hpp>

integral over a product of triangles for Maxwell IE using a method developped by F.

Collino compute for Raviart-Thomas basis of order 1 (RT0!) the following integrals I1 = intg_SxT k*G(x,y)[ wi(x).wj(y)-1/k2 div(wi(x)div(wj(y) ] I2 = intg_SxT (grad_y G(x,y) x wj(y)).wi(x)

template<typename T = real_t>
class ComparisonFunction : private std::list<std::pair<ComparisonOperator, real_t>>
struct CompEvCl
template<typename _MatrixType>
class ComplexEigenSolver
#include <ComplexEigenSolver.hpp>

Computes eigenvalues and eigenvectors of general complex matrices.

The eigenvalues and eigenvectors of a matrix \( A \) are scalars \( \lambda \) and vectors \( v \) such that \( Av = \lambda v \). If \( D \) is a diagonal matrix with the eigenvalues on the diagonal, and \( V \) is a matrix with the eigenvectors as its columns, then \( A V = V D \). The matrix \( V \) is almost always invertible, in which case we have \( A = V D V^{-1} \). This is called the eigendecomposition.

The main function in this class is compute(), which computes the eigenvalues and eigenvectors of a given function. The documentation for that function contains an example showing the main features of the class.

See also

class EigenSolver, class SelfAdjointEigenSolver

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the Matrix class template.

template<typename _MatrixType>
class ComplexSchur
#include <ComplexSchur.hpp>

Performs a complex Schur decomposition of a real or complex square matrix.

Given a real or complex square matrix A, this class computes the Schur decomposition: \( A = U T U^*\) where U is a unitary complex matrix, and T is a complex upper triangular matrix. The diagonal of the matrix T corresponds to the eigenvalues of the matrix A.

Call the function compute() to compute the Schur decomposition of a given matrix. Alternatively, you can use the ComplexSchur(const MatrixType&, bool) constructor which computes the Schur decomposition at construction time. Once the decomposition is computed, you can use the matrixU() and matrixT() functions to retrieve the matrices U and V in the decomposition.

See also

class RealSchur, class EigenSolver, class ComplexEigenSolver

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the Schur decomposition; this is expected to be an instantiation of the Matrix class template.

Note

This code is inspired from Jampack

class ComponentOfUnknown : public xlifepp::Unknown
#include <Unknown.hpp>

a class to manage a component of unknown (vector)

class ComponentsOfUnknown : public xlifepp::Unknown
#include <Unknown.hpp>

a class to manage components of unknown (vector) does not allow to manage all the components of an unknown

class CompositeDomain : public xlifepp::GeomDomain
#include <GeomDomain.hpp>

class to handle union or intersection of domains

class CompositeGeodesic : public xlifepp::Geodesic
#include <Geodesic.hpp>

CompositeGeodesic class handling any geodesic described by a collection of Geodesics geodesics_ : list of pointers to Geodesic (each Geodesic may be of any type) Such structure can describe a geodesic by mixing different kind of geodesic, leading to a faster computation if GeometricGeodesic or AnalyticGeodesic are used NOTE: hard copy of Geodesics.

template<number_t CM>
class ComputationAlgorithm
#include <SuTermMatrix.hpp>

templated computation functions ComputationAlgorithm class is a trick to template FE/IE computation algorithm

class ComputingInfo
#include <Term.hpp>

class collecting all information related to state of computation of term

template<bool Condition, typename Then, typename Else>
struct Conditional
class Cone : public xlifepp::Trunk
#include <geometries3D.hpp>

A cone is a volume defined by a section (the basis) and a direction vector The direction vector is not necessarily orthogonal to the basis, but both bases are necessarily parallel A Cone is a Trunk with scale factor equal to 0 !!!

Cone constructors are based on a key-value system. Here are the available keys:

  • _basis: to define the geometrical basis of a Cone (a child object of Surface)

  • _apex: the apex of the Cone

  • _center1: to define the center of the basis when they are elliptical

  • _v1, _v2: to define apogees of the basis when it is elliptical

  • _nnodes: to define the number of nodes on the edges of the Cone

  • _hsteps: to define the local mesh steps on build points of the Cone

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Pyramid

class Constraints
#include <Constraints.hpp>

class handles the matrix representation of xlifepp::EssentialConditions

class CoutStream
#include <PrintStream.hpp>

manages output on console that can be also output on PrintStream files

class CrackData
#include <Mesh.hpp>

store data related to a crack: domain name, domain id and dimension

class CrouzeixRaviartStdTetrahedronP1 : public xlifepp::CrouzeixRaviartTetrahedron
class CrouzeixRaviartStdTriangleP1 : public xlifepp::CrouzeixRaviartTriangle
#include <CrouzeixRaviartTriangle.hpp>

first order Crouzeix-Raviart element of triangle

class CrouzeixRaviartTetrahedron : public xlifepp::RefTetrahedron
#include <CrouzeixRaviartTetrahedron.hpp>

( conforming elements )

Parent class: RefTetrahedron Child classes: CrouzeixRaviartStdTetrahedronP1

Subclassed by xlifepp::CrouzeixRaviartStdTetrahedronP1

class CrouzeixRaviartTriangle : public xlifepp::RefTriangle
#include <CrouzeixRaviartTriangle.hpp>

( non-conforming elements )

Parent class: RefTriangle Child classes: CrouzeixRaviartStdTriangleP1

Subclassed by xlifepp::CrouzeixRaviartStdTriangleP1

class CsStorage : public xlifepp::MatrixStorage
#include <CsStorage.hpp>

abstract base class of all compressed sparse storage classes

child class of row compressed sparse storage

Subclassed by xlifepp::ColCsStorage, xlifepp::DualCsStorage, xlifepp::RowCsStorage, xlifepp::SymCsStorage

class Cube : public xlifepp::Cuboid
#include <geometries3D.hpp>

definition of a cubic geometry in R^3

Cube constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v4, _v5: to define the vertices of the Cube

  • _center: to define the center of the Cube

  • _origin: to define the first vertex of the Cube (same definition as _v1)

  • _length: the length of the Cube

  • _xmin, _xmax, _ymin, _ymax, _zmin, _zmax: to define the Cube v1=(xmin, ymin, zmin), v2=(xmax, ymin, zmin), v4=(xmin, ymax, zmin), v5=(xmin, ymin, zmax)

  • _nnodes: to define the number of nodes on each edge of the Cube

  • _hsteps: to define the local mesh steps on the vertices of the Cube

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class Cuboid : public xlifepp::Parallelepiped
#include <geometries3D.hpp>

definition of a cuboid (=rectangular parallelepiped) geometry in R^3

Cuboid constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v4, _v5: to define the vertices of the Cuboid

  • _center: to define the center of the Cuboid

  • _origin: to define the first vertex of the Cuboid (same definition as _v1)

  • _xlength, _ylength, _zlength: the lengths of the Cuboid

  • _xmin, _xmax, _ymin, _ymax, _zmin, _zmax: to define the Cuboid v1=(xmin, ymin, zmin), v2=(xmax, ymin, zmin), v4=(xmin, ymax, zmin), v5=(xmin, ymin, zmax)

  • _nnodes: to define the number of nodes on each edge of the Rectangle

  • _hsteps: to define the local mesh steps on the vertices of the Rectangle

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Cube

class Curve : public xlifepp::Geometry
#include <geometries1D.hpp>

base class for 1D geometries

Subclassed by xlifepp::CircArc, xlifepp::EllArc, xlifepp::ParametrizedArc, xlifepp::Segment, xlifepp::SplineArc

class Cylinder : public xlifepp::Trunk
#include <geometries3D.hpp>

A cylinder is a volume defined by a section (the basis) and a direction vector The direction vector is not necessarily orthogonal to the basis, but both bases are necessarily parallel A Cylinder is a Trunk with scale factor equal to 1 !!!

Cylinder constructors are based on a key-value system. Here are the available keys:

  • _basis: to define the geometrical basis of a Cylinder (a child object of Surface)

  • _direction: a direction vector of the axis of the Cylinder

  • _center1, _center2: to define centers of bases when they are elliptical

  • _v1, _v2: to define apogees of the basis when it is elliptical

  • _nnodes: to define the number of nodes on the edges of the Cylinder

  • _hsteps: to define the local mesh steps on build points of the Cylinder

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Prism

template<class T>
class DefaultSPStorage
#include <StoragePolicy.hpp>

Implementation of the StoragePolicy used by SmartPtr.

class DenseStorage : public xlifepp::MatrixStorage
#include <DenseStorage.hpp>

abstract base class of all dense storage methods

Subclassed by xlifepp::ColDenseStorage, xlifepp::DualDenseStorage, xlifepp::RowDenseStorage, xlifepp::SymDenseStorage

class DifferentialOperator
#include <DifferentialOperator.hpp>

description of a differential operator

struct DisallowConversion
#include <ConversionPolicy.hpp>

Implementation of the ConversionPolicy used by SmartPtr Does not allow implicit conversion from SmartPtr to the pointee type You can initialize a DisallowConversion with an AllowConversion.

class Disk : public xlifepp::Ellipse
#include <geometries2D.hpp>

definition of a circular geometry in R^3 (surface)

Disk constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the Disk

  • _v1, _v2: to define “apogees” of the Disk

  • _radius: to define semi-axis lengths of the Disk

  • _angle1, _angle2: to define an circular sector from a pair of angles. The angular origin is determined by _v1

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nnodes: to define the number of nodes on the edges of the Disk

  • _hsteps: to define the local mesh steps on build points of the Disk

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class Dof
#include <Dof.hpp>

generalized index in a space

Subclassed by xlifepp::FeDof, xlifepp::SpDof

class DofComponent
#include <Dof.hpp>

class handles a component of dof say (dof number, unknown, component number)

class DofKey
#include <RefDof.hpp>

The DofKey class is useful class to index dofs (see for instance FeSpace::buildFeDofs )

class DomainInfo
#include <GeomDomain.hpp>

to store general information of geometric domain

class DomainMap
#include <DomainMap.hpp>

handles map (declared as Function) between two GeomDomain’s.

Only one map between domains may be defined !!!

class DomUnkDop
#include <EssentialCondition.hpp>

small structure to ordered terms of a EssentialCondition

template<class T>
struct DontPropagateConst
#include <ConstantPolicy.hpp>

Don’t propagate constness of pointed or referred object.

Note

These policy classes are used in SmartPtr to define how const is propagated from the pointee.

class DoubleIM : public xlifepp::IntegrationMethod
#include <IntegrationMethod.hpp>

abstract class for integration method of double integral over ExF

Subclassed by xlifepp::CollinoIM, xlifepp::DuffyIM, xlifepp::HMatrixIM, xlifepp::LenoirSalles2dIM, xlifepp::LenoirSalles3dIM, xlifepp::ProductIM, xlifepp::SauterSchwabIM, xlifepp::SauterSchwabSymIM

class DoubleIntgBilinearForm : public xlifepp::BasicBilinearForm
#include <BilinearForm.hpp>

describes a bilinear form based on a double integral

intg_domain_v intg_domain_u opu(y) aopu opker(x,y) aopv opv(x) dy dx

with opu, opv: operator on u and v aopu, aopv: algebraic operation (*,|,%,^) opker: operator on a kernel function

note: when kernel = 1 the pointer to kernel function in opker is ker_p=0 ! Be cautious with order of domain, first if for v-domain, second for u-domain

Actually, two ways to handle some integration methods: by pointer to an IntegrationMethod object, so only one integration method (old way, should disappear in futur) by an IntegrationMethods object that handles some IntegrationMethod (new way)

class DoubleIntgLinearForm : public xlifepp::BasicLinearForm
#include <LinearForm.hpp>

describes a linear form based on a double integral

class DualCsStorage : public xlifepp::CsStorage
#include <DualCsStorage.hpp>

child class for dual row/col compressed sparse storage

class DualDenseStorage : public xlifepp::DenseStorage
#include <DualDenseStorage.hpp>

handles dense storage of matrix stored row by row for the lower “triangular” part and column by column for the upper “triangular”

class DualSkylineStorage : public xlifepp::SkylineStorage
#include <DualSkylineStorage.hpp>

child class for dual row/col compressed sparse storage

class DuffyIM : public xlifepp::DoubleIM
#include <DuffyIM.hpp>

integral over a product of 2D geometric elements with singularity using

  • for adjacent elements : a method based on Duffy transform

  • for self influence : an hybrid method based on t^p transform may manage different quadrature rules Elements must be segment! Note : does not address the case of separate elements

class Earcut
class EigenElements
#include <EigenTerms.hpp>

end user class containing eigenValues and eigenVectors computed by an eigen solver.

template<class ScalarType, class MV, class OP>
class EigenProblem
#include <XlifeppEigenProblem.hpp>

This provides a basic implementation for defining standard or generalized eigenvalue problems.

template<class ScalarType, class MV, class OP>
class EigenSolver
#include <XlifeppEigenSolverDecl.hpp>

The EigenSolver is a templated virtual base class that defines the basic interface that any eigensolver will support.

This interface is mainly concerned with providing a set of eigensolver status method that can be requested from any eigensolver by an StatusTest object.

Subclassed by xlifepp::BlockDavidson< ScalarType, MV, OP >, xlifepp::BlockKrylovSchur< ScalarType, MV, OP >

template<class ScalarType, class MV>
struct EigenSolverSolution
#include <XlifeppEigenTypes.hpp>

Struct for storing an eigenproblem solution.

struct EigPars

Utility structure to store parameters for eigen solvers.

class Element
#include <Element.hpp>

defines data related to one finite element.

It is mainly defined from its geometric support (GeomElement) and its finite element interpolation defined by a RefElement It carries also its dof numbering relative to

class EllArc : public xlifepp::Curve
#include <geometries1D.hpp>

definition of an elliptic arc geometry in R^3 (curve)

EllArc constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the ellipse supporting the arc

  • _apogee: to define the apogee of the ellipse supporting the arc

  • _v1, _v2: to define the bounds of the arc

  • _nnodes: to define the number of nodes on the arc

  • _hsteps: to define the local mesh steps on the bounds of the arc

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class Ellipse : public xlifepp::Surface
#include <geometries2D.hpp>

definition of an elliptic geometry in R^3 (surface)

Ellipse constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the Ellipse

  • _v1, _v2: to define apogees of the Ellipse

  • _xlength, _ylength: to define axis lengths of the Ellipse

  • _xradius, _yradius: to define semi-axis lengths of the Ellipse

  • _angle1, _angle2: to define an elliptic sector from a pair of angles. The angular origin is determined by _v1

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nnodes: to define the number of nodes on the edges of the Ellipse

  • _hsteps: to define the local mesh steps on build points of the Ellipse

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Disk

class Ellipsoid : public xlifepp::Volume
#include <geometries3D.hpp>

definition of an ellipsoidal geometry in R^3 (volume)

Ellipsoid constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the Ellipsoid

  • _v1, _v2, _v6: to define apogees of the Ellipsoid

  • _xlength, _ylength, _zlength: to define axis lengths of the Ellipsoid

  • _xradius, _yradius, _zradius: to define semi-axis lengths of the Ellipsoid

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nboctants: to define an ellipsoidal sector from octants.

  • _nnodes: to define the number of nodes on the edges of the Ellipsoid

  • _hsteps: to define the local mesh steps on build points of the Ellipsoid

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Ball

class EllipsoidSidePart : public xlifepp::Surface
#include <geometries3D.hpp>

definition of a part of ellipsoid side in R^3 (surface), defined by an ellipsoid and angles theta, phi related to ellisoid axes: theta = (1-u)theta_min + u theta_max, phi = (1-v)phi_min + v phi_max P(u,v) = P0 + (P1-P0) cos(theta) cos(phi) + (P2-P0) sin(theta) cos(phi) + (P6-P0) sin(phi) no construction via key parameter, no geometric transformation available, no mesh (p_,n_,h_ not managed) not a user geometry for the moment !!!

struct ELTDEF
class Environment
#include <Environment.hpp>

Class Environment stores environment (!) variables and methods to build them.

class EssentialCondition
#include <EssentialCondition.hpp>

end user class handling symbolic representation of an essential condition

class EssentialConditions : public std::list<EssentialCondition>
#include <EssentialConditions.hpp>

handling a list of Essential conditions

template<class T>
class EulerT : public xlifepp::OdeSolver<T>
class ExtendedElement
#include <BCElement.hpp>

ExtendedElement class is a virtual class handling elements that are not standard for instance, Buffa-Christiansen elements ExtendElement objects are referenced by Element objects.

Subclassed by xlifepp::BCRTElement

class Extension
class ExtensionData
class ExtrusionData

data required to do an extrusion

template<class M_>
struct FactPtrTrait
struct FalseType
class FEcomputationParameters
class FeDof : public xlifepp::Dof
#include <Dof.hpp>

to store finite element global dof informations

class FeDofExtension
#include <Dof.hpp>

virtual class to store extra informations on FeDof

Subclassed by xlifepp::BCDof

class FeSpace : public xlifepp::Space
#include <FeSpace.hpp>

defines general data of a finite element space.

FeSpace class is not directly exposed to end users

class FeSubSpace : public xlifepp::SubSpace
#include <FeSubSpace.hpp>

inheriting from SubSpace handles additionnal data for elementary Fe type subspace.

Elementary means a subspace based on a single mesh domain (not an union of mesh domains) This structure is useful for Fe computation on sub domains, when the subdomain is not of the same dim as parent domain, Elements are SubElements

template<typename T = complex_t>
class FilonIMT : public xlifepp::SingleIM
#include <FilonIM.hpp>

compute I(x)=intg_0_T f(t)*exp(-ixt)dt using Filon method ~ dt sum_j=1,p Cj(x) sum_n=1,N f(t_n-1)exp(-ixt_n-1) with Cj(x)= intg_0,1 w_j(s) exp(-ixsdt)ds and wj polynomial basis functions order 0 : P0 Lagrange basis w1(s)=1 order 1 : P1 Lagrange basis w1(s)=1-s, w2(s)=s order 2 : P3 Hermite basis w1(s)=(2s+1)(s-1)^2, w2(s)=s(s-1)^2, w3(s)=(3-2s)s^2, w4(s)=(s-1)s^2

main functions are init() : computes f(t_n) and f’(t_n) if order 2 coef(x,j) : computes Cj(x) compute(x) : evaluates I(x) operator (): calls compute(x) print() : outputs some informations

class Fock
class Function
#include <Function.hpp>

The class Function encapsulates in object function a user’s functions.

It is used by internal computing functions

this class is able to deal with any user function of type

r function(const Point&, Parameters&) (function tpe)
r function(const Point&, const Point&, Parameters&) (kernel type)
and their vector forms
Vector<r> function(const Vector<Point>&, Parameters&)
Vector<r> function(const Vector<Point>&, const Vector<Point>&, Parameters&)
with r of type: real_t, complex_t, Vector<real_t>, Vector<complex_t>, Matrix<real_t> or Matrix<complex_t>

This class mainly proposes:

  • two constructors (unamed and named)

  • a fast call to compute function values when function is well identified (see member functions fun_xxx)

  • a general safe call to compute function values (see operator ()); require only output argument compatibility if output argument is not compatible, an error occurs with a message

  • some utilities to return type of function and type of arguments (use rtti functions)

Note: A Parameters is attached to a Function using a pointer. This Parameters is passed to the function by reference therefore, it may be shared by few functions and when it is modified it is for any function sharing it. In a way, this parameters is global

struct GELT

Gmsh element.

template<typename _MatrixType>
class GeneralizedSelfAdjointEigenSolver : public xlifepp::SelfAdjointEigenSolver<_MatrixType>
#include <GeneralizedSelfAdjointEigenSolver.hpp>

Computes eigenvalues and eigenvectors of the generalized selfadjoint eigen problem.

This class solves the generalized eigenvalue problem \( Av = \lambda Bv \). In this case, the matrix \( A \) should be selfadjoint and the matrix \( B \) should be positive definite.

Only the lower triangular part of the input matrix is referenced.

Call the function compute() to compute the eigenvalues and eigenvectors of a given matrix. Alternatively, you can use the GeneralizedSelfAdjointEigenSolver(const MatrixType&, const MatrixType&, int) constructor which computes the eigenvalues and eigenvectors at construction time. Once the eigenvalue and eigenvectors are computed, they can be retrieved with the eigenvalues() and eigenvectors() functions.

The documentation for GeneralizedSelfAdjointEigenSolver(const MatrixType&, const MatrixType&, int) contains an example of the typical use of this class.

See also

class SelfAdjointEigenSolver, class EigenSolver

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the Matrix class template.

class Geodesic
#include <Geodesic.hpp>

Geodesic class handling any geodesic (abstract) Base class geodesic handles.

  • dom_p: pointer to a geometric domain

  • geo_p: pointer to related geometry

  • xs_: vector of successive geodesic points (fill by compute)

  • dxs_: vector of successive geodesic derivatives (fill by compute)

  • curAbcs_: vector of successive geodesic curvilinear abcissa (fill by compute)

  • normals_: vector of successive normal surfaces at geodesics point

curvatures_: vector of curvatures (Gauss, mean and normal curvature)

  • sx_, sdx_: starting point an direction

  • ex_, edx_: ending point an direction

  • length_: geodesic length

  • meshgeod_: pointer to a MeshedGeodesic handling the projection of the geodesic on a mesh

  • field_: to store a field on geodesic (only scalar complex up to now)

  • fieldTypes_: to store field types on geodesic (specific to HF computation)

  • fcur_p, fnor_p: additional pointer to functions giving the principal curvatures and surface normals cannot be deduced from geodesic! 0 if not required automatic assignment if geo_p is assigned and has a parametrization

  • params_: usefull parameters (first Parameter is always this, set by init())

dom_p or geo_p or both may be not allocated, regarding the type of Geodesic:

  • ParametrizedGeodesic: inherited class using parametrization and a RK4 scheme to compute geodesics

  • MeshedGeodesic: inherited class using mesh to compute geodesics

  • GeometricGeodesic: inherited class using a 1D geometry to describe geodesics

  • AnalyticGeodesic: inherited class using an analytic function to describe geodesics

  • CompositeGeodesic: inherited class using a list of chained geodesics of any type all inherited class must provide the computing function Geodesic& compute(Point& x, Point& dx, real_t& l, real_t lmax, number_t nmax, real_t dt=0) where - (x,dx) is the starting point/dervative of the geodesic

    • l, lmax: the current and max length of the geodesic

    • nmax: maximum number of points to compute

    • dt: step of computation if required (may be dt or ds) GeometricGeodesic and AnalyticalGeodesic are available only for a few simple geometries

When geometry is composed with patches that not match in a C1 way (different tangent planes) the new geodesic direction d2 from the previous one d1 at transition point x is computed as follows d2 = d1-(d1|n1)(n1+n2) where n1 is the outward normal (in tangent plane in x) to the original patch and n2 the outward normal (in tangent plane in x) to the new patch This rule is effective only when using a ParametrizedGeodesic, a MeshedGeodesic or a CompositeGeodesic

Subclassed by xlifepp::AnalyticGeodesic, xlifepp::CompositeGeodesic, xlifepp::GeometricGeodesic, xlifepp::MeshedGeodesic, xlifepp::ParametrizedGeodesic

class GeomDomain
#include <GeomDomain.hpp>

base class of geometric domain

Subclassed by xlifepp::AnalyticalDomain, xlifepp::CompositeDomain, xlifepp::MeshDomain, xlifepp::PointsDomain

class GeomElement
#include <GeomElement.hpp>

object represents the geometric support of mesh elements.

It either a plain element or a side element (side of a GeomElement).

  • when it is a plain element, there is always a MeshElement associated to its but no parentSides

  • when it is a side element, there is at least a parent (parentSides is not empty) and by default no MeshElement, but if required, MeshElement may be constructed (buildSideMeshElement)

class GeomElementLess
#include <GeomElement.hpp>

a very small class defining a functor to sort std::vector of GeomElement* ascendingly according to their number

class GeometricGeodesic : public xlifepp::Geodesic
#include <Geodesic.hpp>

GeometricGeodesic class handling any geodesic described by a 1D geometry.

class Geometry
#include <Geometry.hpp>

handles geometric data of the physical problem

Subclassed by xlifepp::Curve, xlifepp::SetOfElems, xlifepp::SetOfPoints, xlifepp::Surface, xlifepp::Volume

class GeomMapData
#include <GeomMapData.hpp>

object handles useful computational data of a geometric element It stores jacobian, its determinant, … depending of a point

class GeomRefElement

Subclassed by xlifepp::GeomRefHexahedron, xlifepp::GeomRefPoint, xlifepp::GeomRefPrism, xlifepp::GeomRefPyramid, xlifepp::GeomRefQuadrangle, xlifepp::GeomRefSegment, xlifepp::GeomRefTetrahedron, xlifepp::GeomRefTriangle

class GeomRefHexahedron : public xlifepp::GeomRefElement
#include <GeomRefHexahedron.hpp>

child to class GeomRefElement

class GeomRefPoint : public xlifepp::GeomRefElement
class GeomRefPrism : public xlifepp::GeomRefElement
#include <GeomRefPrism.hpp>

child class to GeomRefElement

class GeomRefPyramid : public xlifepp::GeomRefElement
#include <GeomRefPyramid.hpp>

child class to GeomRefElement

class GeomRefQuadrangle : public xlifepp::GeomRefElement
#include <GeomRefQuadrangle.hpp>

child to class GeomRefElement

class GeomRefSegment : public xlifepp::GeomRefElement
class GeomRefTetrahedron : public xlifepp::GeomRefElement
class GeomRefTriangle : public xlifepp::GeomRefElement
#include <GeomRefTriangle.hpp>

xlifepp::GeomRefTriangle defines Reference Element geometric data on triangular elements

class GeoNode
#include <Geometry.hpp>

utility class to describe a hierarchical composite construction each node represent either a unary operation on a geometry/GeoNode or a binary operation on two geometries/GeoNodes op(g1) op(g1,g2) its main purpose is to describe as a tree some complex composite geometries involving several minus, plus, common operations the GeoNode will be attached to any geometry as a member data (not allocated for canonical geometries) GeoNode may be used in two way, either handling GeoNode(s) or Geometry(s) (terminal leaf) in a compact construction such as (g1+g2+g3)-g4 the representation will be: geonode(-, &geonode(+, &geonode(+&g1,&g2) ,&g3), &g4) (two additional GeoNodes) if g=g1+g2+g3 has been already constructed, the representation will be geonode(-, &g, &g4) (no additional GeoNode !) in other words as soon as a geometry pointer is available it is used instead of a new geo node all the tree may be unrolled using expand() function

class GmresSolver : public xlifepp::IterativeSolver
#include <GmresSolver.hpp>

Implement Generalized Minimal Residual algorithm.

struct GMXL
class Graph : public std::vector<std::vector<number_t>>
#include <Graph.hpp>

class to deal with general graphs

template<class ScalarType>
class HelperTraits
#include <XlifeppHelperTraits.hpp>

Class which defines basic traits for working with different scalar types.

An adapter for this traits class must exist for the ScalarType. If not, this class will produce a compile-time error.

class HermiteSegment : public xlifepp::RefSegment
#include <HermiteSegment.hpp>

Grand-Parent class: ReferenceElement Parent class: ReferenceSegment Child class: HermiteStdSegment.

Subclassed by xlifepp::HermiteStdSegment< Pk >

template<number_t Pk>
class HermiteStdSegment : public xlifepp::HermiteSegment
#include <HermiteSegment.hpp>

template class (order is template parameter)

template<number_t Pk>
class HermiteStdTriangle : public xlifepp::HermiteTriangle
#include <HermiteTriangle.hpp>

template class child to class HermiteTriangle

class HermiteTriangle : public xlifepp::RefTriangle
#include <HermiteTriangle.hpp>

defines Hermite Reference Element interpolation data on triangular elements

Parent class : RefTriangle Child classes: HermiteStdTriangle

Subclassed by xlifepp::HermiteStdTriangle< Pk >

template<typename _MatrixType>
class HessenbergDecomposition
#include <HessenbergDecomposition.hpp>

Reduces a square matrix to Hessenberg form by an orthogonal similarity transformation.

This class performs an Hessenberg decomposition of a matrix \( A \). In the real case, the Hessenberg decomposition consists of an orthogonal matrix \( Q \) and a Hessenberg matrix \( H \) such that \( A = Q H Q^T \). An orthogonal matrix is a matrix whose inverse equals its transpose ( \( Q^{-1} = Q^T \)). A Hessenberg matrix has zeros below the subdiagonal, so it is almost upper triangular. The Hessenberg decomposition of a complex matrix is \( A = Q H Q^* \) with \( Q \) unitary (that is, \( Q^{-1} = Q^* \)).

Call the function compute() to compute the Hessenberg decomposition of a given matrix. Alternatively, you can use the HessenbergDecomposition(const MatrixType&) constructor which computes the Hessenberg decomposition at construction time. Once the decomposition is computed, you can use the matrixH() and matrixQ() functions to construct the matrices H and Q in the decomposition.

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the Hessenberg decomposition

class Hexahedron : public xlifepp::Polyhedron
#include <geometries3D.hpp>

definition of a hexahedron geometry in R^3

Hexahedron constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3, _v4, _v5, _v6, _v7, _v8: to define the vertices of the Hexahedron

  • _nnodes: to define the number of nodes on each edge of the Hexahedron

  • _hsteps: to define the local mesh steps on the vertices of the Hexahedron

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Parallelepiped

template<typename T, typename I>
class HMatrix
#include <HMatrix.hpp>

describes a matrix represented by a hierarchical structure (tree), each node being a block matrix a leaf is either a standard matrix or an approximate matrix

template<typename I>
class HMatrixEntry
#include <HMatrixEntry.hpp>

container class to deal with main type of HMatrix

class HMatrixIM : public xlifepp::DoubleIM
#include <HMatrix.hpp>

integral over a product of geometric domains based on hierarchical matrix representation

template<typename T, typename I>
class HMatrixNode
#include <HMatrix.hpp>

describes a node of hierarchical representation of matrix

class Homothety : public xlifepp::Scaling
#include <Transformation.hpp>

representation of an homothety from a center and a factor

Subclassed by xlifepp::PointReflection

template<typename _MatrixType>
class HouseholderQR
#include <HouseholderQR.hpp>

Householder QR decomposition of a matrix.

This class performs a QR decomposition of a matrix A into matrices Q and R such that

\[ \mathbf{A} = \mathbf{Q} \, \mathbf{R} \]
by using Householder transformations. Here, Q a unitary matrix and R an upper triangular matrix. The result is stored in a compact way compatible with LAPACK.

Note that no pivoting is performed. This is not a rank-revealing decomposition.

Param MatrixType:

the type of the matrix of which we are computing the QR decomposition

template<class MatrixType, class VectorType>
class HouseholderSequence
#include <HouseHolderSequence.hpp>

Sequence of Householder reflections acting on subspaces with decreasing size.

This class represents a product sequence of Householder reflections where the first Householder reflection acts on the whole space, the second Householder reflection leaves the one-dimensional subspace spanned by the first unit vector invariant, the third Householder reflection leaves the two-dimensional subspace spanned by the first two unit vectors invariant, and so on up to the last reflection which leaves all but one dimensions invariant and acts only on the last dimension. Such sequences of Householder reflections are used in several algorithms to zero out certain parts of a matrix. Indeed, the methods HessenbergDecomposition::matrixQ(), Tridiagonalization::matrixQ(), HouseholderQR::householderQ(), and ColPivHouseholderQR::householderQ() all return a HouseholderSequence.

More precisely, the class HouseholderSequence represents an \( n \times n \) matrix \( H \) of the form \( H = \prod_{i=0}^{n-1} H_i \) where the i-th Householder reflection is \( H_i = I - h_i v_i v_i^* \). The i-th Householder coefficient \( h_i \) is a scalar and the i-th Householder vector \( v_i \) is a vector of the form

\[ v_i = [\underbrace{0, \ldots, 0}_{i-1\mbox{ zeros}}, 1, \underbrace{*, \ldots,*}_{n-i\mbox{ arbitrary entries}} ]. \]
The last \( n-i \) entries of \( v_i \) are called the essential part of the Householder vector.

Typical usages are listed below, where H is a HouseholderSequence:

A.applyOnTheRight(H);             // A = A * H
A.applyOnTheLeft(H);              // A = H * A
A.applyOnTheRight(H.adjoint());   // A = A * H^*
A.applyOnTheLeft(H.adjoint());    // A = H^* * A
MatrixXd Q = H;                   // conversion to a dense matrix
In addition to the adjoint, you can also apply the inverse (=adjoint), the transpose, and the conjugate operators.
Template Parameters:
  • VectorsType – type of matrix containing the Householder vectors

  • CoeffsType – type of vector containing the Householder coefficients

  • Side – either OnTheLeft (the default) or OnTheRight

class IEcomputationParameters
template<int v>
struct Int2Type
#include <Traits.hpp>

A trick to overcome problem of static dispatch.

class IntegrationMethod
#include <IntegrationMethod.hpp>

abstract class for integration methods

Subclassed by xlifepp::DoubleIM, xlifepp::SingleIM

class IntegrationMethods
#include <IntegrationMethod.hpp>

handles a collection of IntegrationMethod and related criteria

class Interpolation
class IntgBilinearForm : public xlifepp::BasicBilinearForm
#include <BilinearForm.hpp>

describes a bilinear form based on a single integral

 intg_domain opu aopu opv
with opu, opv: operator on u and v aopu, aopv: algebraic operation (*,|,%,^)
class IntgLinearForm : public xlifepp::BasicLinearForm
#include <LinearForm.hpp>

describes a linear form based on a single integral

class IntgMeth
#include <IntegrationMethod.hpp>

structure to handle a triplet (integration method, function part, lower bound)

template<typename K>
struct IterationVectorTrait
#include <Traits.hpp>

Trait struct to determine (scalar) type of Iterator!

class IterativeSolver
#include <IterativeSolver.hpp>

Base class of other Solver classes.

Subclassed by xlifepp::BicgSolver, xlifepp::BicgStabSolver, xlifepp::CgSolver, xlifepp::CgsSolver, xlifepp::GmresSolver, xlifepp::QmrSolver, xlifepp::SorSolver, xlifepp::SsorSolver

template<typename Scalar>
class JacobiRotation
#include <Jacobi.hpp>

Rotation given by a cosine-sine pair.

This class represents a Jacobi or Givens rotation. This is a 2D rotation in the plane J of angle \( \theta \) defined by its cosine c and sine s as follow: \( J = \left ( \begin{array}{cc} c & \overline s \\ -s & \overline c \end{array} \right ) \)

You can apply the respective counter-clockwise rotation to a column vector v by applying its adjoint on the left: \( v = J^* v \) that translates to the following code:

v.applyOnTheLeft(J.adjoint());
template<class T>
class KdNode
#include <KdTree.hpp>

node of a KdTree

template<class T>
class KdTree
#include <KdTree.hpp>

definition of a Kd-tree

class Kernel

Subclassed by xlifepp::TensorKernel

class KernelExpansion
#include <Kernel.hpp>

Kernel expansion according to singularity exponents:

  • \(\displaystyle G(x,y) = \sum_i F_i(x,y) / |x-y|^{{\alpha_0}_i}\)

  • \(\displaystyle grad_x G(x,y) = \sum_i GxF_i(x,y).(x-y) / |x-y|^{{\alpha_x}_i}\)

  • \(\displaystyle grad_y G(x,y) = \sum_i GyF_i(x,y).(x-y) / |x-y|^{{\alpha_y}_i}\)

  • \(\displaystyle grad_{xy} G(x,y) = \sum_i GxyF_i(x,y).(x-y)(x-y)^T / |x-y|^{{\alpha_{xy}}_i} + \sum_i {GxyF_{diag}}_i(x,y) / |x-y|^{{{\alpha_{xy}}_{diag}}_i} *Identity\)

with the convention \(1/|x-y|^{{\alpha_x}_i} = Log(|x-y|)\) when \({\alpha_x}_i = -1\)

class KernelOperatorOnTermVector
#include <KernelOperatorOnTermVector.hpp>

useful class to deal with integral representation u(x) = int_dom opker(x,y) * tv(y) or u(x) = int_dom tv(y) * opker(x,y) or with linear form defined from a bilinear form applied to a TermVector int_domx int_domy tv(y) * opker(x,y) * v(x) or int_domx int_domy v(x) * opker(x,y) * tv(y)

class KernelOperatorOnTermVectorAndUnknown
#include <KernelOperatorOnTermVector.hpp>

useful class to deal with linear form defined from a bilinear form applied to a TermVector int_domx int_domy tv(y) * opker(x,y) * v(x) or int_domx int_domy v(x) * opker(x,y) * tv(y) tv(y) * opker(x,y) or opker(x,y) * tv(y) are read as KernelOperatorOnTermVector

NOTE: the operator on unknown is always considered as a function depending on x

class KernelOperatorOnUnknowns
#include <KernelOperatorOnUnknowns.hpp>

generalization to kernel form describes a pair of OperatorOnUnknows linked by a Kernel operation: (op_u aop_u op_ker) aop_v op_v respect the order of operators, operator u at left and operator v at right

class LagrangeGLHexahedron : public xlifepp::LagrangeHexahedron
#include <LagrangeHexahedron.hpp>

child class of LagrangeHexahedron with Gauss Lobatto interpolation

class LagrangeGLQuadrangle : public xlifepp::LagrangeQuadrangle
#include <LagrangeQuadrangle.hpp>

child class to class LagrangeQuadrangle

class LagrangeGLSegment : public xlifepp::LagrangeSegment
#include <LagrangeSegment.hpp>

child class of LagrangeHexahedron with Gauss-Lobatto interpolation

class LagrangeHexahedron : public xlifepp::RefHexahedron
#include <LagrangeHexahedron.hpp>

defines Lagrange Reference Element interpolation data on hexahedra

Subclassed by xlifepp::LagrangeGLHexahedron, xlifepp::LagrangeStdHexahedron

class LagrangePrism : public xlifepp::RefPrism
#include <LagrangePrism.hpp>

defines Lagrange Reference Element interpolation data on prisms

Subclassed by xlifepp::LagrangeStdPrism< Pk >

class LagrangePyramid : public xlifepp::RefPyramid
#include <LagrangePyramid.hpp>

defines Lagrange Reference Element interpolation data on pyramids

Subclassed by xlifepp::LagrangeStdPyramid< Pk >

class LagrangeQuadrangle : public xlifepp::RefQuadrangle
#include <LagrangeQuadrangle.hpp>

defines Lagrange Reference Element interpolation data on quadrangles

Subclassed by xlifepp::LagrangeGLQuadrangle, xlifepp::LagrangeStdQuadrangle

class LagrangeSegment : public xlifepp::RefSegment
#include <LagrangeSegment.hpp>

Grand-Parent class: ReferenceElement Parent class: ReferenceSegment Child classes: LagrangeStdSegment LagrangeGLSegment.

Subclassed by xlifepp::LagrangeGLSegment, xlifepp::LagrangeStdSegment

class LagrangeStdHexahedron : public xlifepp::LagrangeHexahedron
#include <LagrangeHexahedron.hpp>

child class of LagrangeHexahedron with standard interpolation

template<number_t Pk>
class LagrangeStdPrism : public xlifepp::LagrangePrism
#include <LagrangePrism.hpp>

template class child to class LagrangePrism

http://homepage.mac.com/danielmartin/melina++/doc/elements/prism/LagrangeStdPrism1.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/prism/LagrangeStdPrism2.pdf

template<number_t Pk>
class LagrangeStdPyramid : public xlifepp::LagrangePyramid
#include <LagrangePyramid.hpp>

template class child to class LagrangePyramid

http://homepage.mac.com/danielmartin/melina++/doc/elements/pyramid/LagrangeStdPyramid1.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/pyramid/LagrangeStdPyramid2.pdf

class LagrangeStdQuadrangle : public xlifepp::LagrangeQuadrangle
#include <LagrangeQuadrangle.hpp>

child class to class LagrangeQuadrangle

class LagrangeStdSegment : public xlifepp::LagrangeSegment
#include <LagrangeSegment.hpp>

child class of LagrangeHexahedron with standard interpolation

template<number_t Pk>
class LagrangeStdTetrahedron : public xlifepp::LagrangeTetrahedron
#include <LagrangeTetrahedron.hpp>

template class child to class LagrangeTetrahedron

http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron1.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron2.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron3.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron4.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron5.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron6.pdf http://homepage.mac.com/danielmartin/melina++/doc/elements/tetra/LagrangeStdTetrahedron7.pdf

class LagrangeStdTetrahedronPk : public xlifepp::LagrangeTetrahedron
template<number_t Pk>
class LagrangeStdTriangle : public xlifepp::LagrangeTriangle
#include <LagrangeTriangle.hpp>

template class child to class LagrangeTriangle (up to P6)

class LagrangeStdTrianglePk : public xlifepp::LagrangeTriangle
#include <LagrangeTriangle.hpp>

any order LagrangeTriangle with general formulae

class LagrangeTetrahedron : public xlifepp::RefTetrahedron
#include <LagrangeTetrahedron.hpp>

defines Lagrange Reference Element interpolation data on tetrahedra

Subclassed by xlifepp::LagrangeStdTetrahedron< Pk >, xlifepp::LagrangeStdTetrahedronPk

class LagrangeTriangle : public xlifepp::RefTriangle
#include <LagrangeTriangle.hpp>

defines Lagrange Reference Element interpolation data on triangular elements

Grand-Parent class: RefElement Parent class: RefTriangle Child classes: LagrangeStdTriangle

Subclassed by xlifepp::LagrangeStdTriangle< Pk >, xlifepp::LagrangeStdTrianglePk

template<typename T>
class LargeMatrix
#include <LargeMatrix.hpp>

templated class to deal with large matrices, it handles a vector of values (non zero coefficients) and a pointer to a MatrixStorage

template<typename MatrixType, typename ScalarType>
class LargeMatrixAdapter : public xlifepp::Operator<ScalarType>
#include <LargeMatrixAdapter.hpp>

Template specialization of Operator class using the Operator virtual base class and LargeMatrix class.

This interface will ensure that any Operator and MultVec will be accepted by the templated solvers.

template<typename MatrixType, typename ScalarType>
class LargeMatrixAdapterInverse : public xlifepp::Operator<ScalarType>
#include <LargeMatrixAdapterInverse.hpp>

Template specialization of Operator class using the Operator virtual base class and LargeMatrix class.

This interface will ensure that any Operator and MultVec will be accepted by the templated solvers.

template<typename MatrixType, typename ScalarType>
class LargeMatrixAdapterInverseGeneralized : public xlifepp::Operator<ScalarType>
#include <LargeMatrixAdapterInverseGeneralized.hpp>

Template specialization of Operator class using the Operator virtual base class and LargeMatrix class.

This interface will ensure that any Operator and MultVec will be accepted by the templated solvers.

template<typename K>
struct LargeMatrixTrait
#include <LargeMatrix.hpp>

A small struct to deal with type of scalar (real, complex) of LargeMatrix.

class LcKernelOperatorOnUnknowns : public std::vector<OpkuvValPair>
#include <LcKernelOperatorOnUnknowns.hpp>

describes the linear combination of KernelOperatorOnUnknowns

class LcOperatorOnUnknown : public std::vector<OpuValPair>
#include <LcOperatorOnUnknown.hpp>

describes the linear combination of OperatorOnUnknown

class LcOperatorOnUnknowns : public std::vector<OpusValPair>
#include <LcOperatorOnUnknowns.hpp>

describes the linear combination of OperatorOnUnknowns

template<typename TT>
class LcTerm : public std::vector<std::pair<const TT*, complex_t>>
class LenoirSalles2dIM : public xlifepp::DoubleIM
#include <LenoirSallesIM.hpp>

integral over a product of geometric elements with singularity using Lenoir-Salles analytic technique restricted for the moment to P0 triangle single layer and double layer and P1 single layer Marc Lenoir, Nicolas Salles, Evaluation of 3-D Singular and Nearly Singular Integrals in Galerkin BEM for Thin Layers, SIAM Journal on Scientific Computing, vol.

36, pp. 3057-3078, 2012

class LenoirSalles2dIR : public xlifepp::SingleIM
#include <LenoirSallesIM.hpp>

integral over a geometric element with singularity using Lenoir-Salles analytic technique restricted for the moment to P0/P1 segment and single/double layer potential

class LenoirSalles3dIM : public xlifepp::DoubleIM
#include <LenoirSallesIM.hpp>

integral over a product of geometric elements with singularity using Lenoir-Salles analytic technique restricted for the moment to P0 triangle and single layer Marc Lenoir, Nicolas Salles, Evaluation of 3-D Singular and Nearly Singular Integrals in Galerkin BEM for Thin Layers, SIAM Journal on Scientific Computing, vol.

36, pp. 3057-3078, 2012

class LenoirSalles3dIR : public xlifepp::SingleIM
#include <LenoirSallesIM.hpp>

integral over a geometric element with singularity using Lenoir-Salles analytic technique restricted for the moment to P0/P1 triangle and single/double layer potential

class LinearForm
#include <LinearForm.hpp>

describes a general linear form, that is a list of linear combinations of basic linear forms.

It is intend to collect linear forms with different unknowns, using a map<const Unknown*,SuLinearForm> It is the enduser’s class

template<class T>
class LowRankMatrix : public xlifepp::ApproximateMatrix<T>
#include <ApproximateMatrix.hpp>

class dealing with matrix represented by a small sets of vectors A = U D V* with U a (m,r) matrix, V a (n,r) matrix and D a (r,r) diagonal matrix stored as a vector when D=Id it is not stored

template<class T1, class T2>
class MakePairOp
class Malyuzhinets
#include <MalyuzhinetsFunction.hpp>

describes the class providing the computation of Malyuzhinets function involved in wedge diffraction

template<class ScalarType, class MV, class OP>
class MatOrthoManager : public xlifepp::OrthoManager<ScalarType, MV>
#include <XlifeppMatOrthoManager.hpp>

xlifepp’s templated virtual class for providing routines for orthogonalization and orthonormalization of multivectors using matrix-based inner products.

This class extends xlifepp::OrthoManager by providing extra calling arguments to orthogonalization routines, to reduce the cost of applying the inner product in cases where the user already has the image of target multivectors under the inner product matrix.

A concrete implementation of this class is necessary. The user can create their own implementation if those supplied are not suitable for their needs.

Subclassed by xlifepp::BasicOrthoManager< ScalarType, MV, OP >, xlifepp::SVQBOrthoManager< ScalarType, MV, OP >

template<typename K>
class Matrix : public std::vector<K>
#include <Matrix.hpp>

to deal with numeric matrix (say real or complex vector).

inherited from std::vector<K> (dense storage by row) may be used even for matrix of matrices but restricted usage !

Subclassed by xlifepp::MatrixEigenDense< K >

class MatrixBilinearForm : public xlifepp::BasicBilinearForm
#include <BilinearForm.hpp>

describes a bilinear form given by an explicit matrix explicit matrix is handled by a MatrixEntry object MatrixEntry pointer may be assigned from:

template<typename K>
class MatrixEigenDense : public xlifepp::Matrix<K>
#include <MatrixEigenDense.hpp>

Class (row) dense matrix to deal with direct eigen problem solver.

This class provides some basic methods to support calculation of eigen problem dense matrix.

Template Parameters:

Type – of scalar (real_t, complex_t)

class MatrixEntry
#include <MatrixEntry.hpp>

small class handling current types of LargeMatrix shadowing template parameter of LargeMatrix

class MatrixStorage
#include <MatrixStorage.hpp>

abstract base class of all matrix storage methods

Subclassed by xlifepp::CsStorage, xlifepp::DenseStorage, xlifepp::SkylineStorage

struct MELT
class Memory
#include <memoryUtils.hpp>

memory utilities (OS dependant)

class Mesh
#include <Mesh.hpp>

handles mesh data either created by internal mesh tools or read from file generated by external mesh tools

class MeshDomain : public xlifepp::GeomDomain
#include <GeomDomain.hpp>

class to handle domain with mesh description

class MeshedGeodesic : public xlifepp::Geodesic
#include <Geodesic.hpp>

MeshedGeodesic class handling any geodesic got using surface mesh Mesh is assumed to be linear dom_p must be allocated.

In addition to xs_,dxs_, curAbcs_, compute function fills in the vector of crossed elements (GeomElement*,outward side number)

class MeshElement
#include <GeomElement.hpp>

object represents the geometric support of a mesh element.

It mainly stores global numberings of element

class Messages
#include <Messages.hpp>

store the list of message formats by type as a std::map is indexed by the message format

class MinimalBox
#include <Geometry.hpp>

utility class to describe a minimal box This is like the bounding box, but independant from the orientation.

template<typename K = real_t>
class MonomialT
#include <polynomials.hpp>

deals with a Monomial of 1, 2 or 3 variables of type T, say x1^a1 x2^a2 x3^a3

class MorleyTriangle : public xlifepp::RefTriangle
#include <MorleyTriangle.hpp>

(non conforming H2 element) Parent class: RefTriangle

class MsgData
#include <Messages.hpp>

data to pass to message handling engine

define a structure which contains temporary data to pass to message handling engine

data structure allows any of the following types in any order: string, real, complex, int or boolean

such data is unlimited in number as far as memory allows it
class MsgFormat
#include <Messages.hpp>

store a message format for output

template<class ScalarType>
class MultiVec
#include <XlifeppMultiVec.hpp>

Interface for multivectors used by xlifepp’s linear solvers.

By using the pointer to each vector in MultiVecAdapter, we can create objects which share a same view of memory (share same storage, like Storage in library LargeMatrix) However, these implementation aren’t counted for parallel programming and maybe we need to change them in the future to make the class work with MPI?

xlifepp accesses multivectors through a traits interface called MultiVecTraits. If you want to use xlifepp with your own multivector class MV, you may either specialize MultiVecTraits for MV, or you may wrap MV in your own class that implements MultiVec. Specializing MultiVecTraits works via compile-time polymorphism, whereas implementing the MultiVec interface works via run-time polymorphism. You may pick whichever option you like. However, specializing MultiVecTraits is the preferred method. This is because xlifepp’s linear solvers always use a specialization of MultiVecTraits to access multivector operations. They only use MultiVec through a specialization of the MultiVecTraits traits class, which is implemented below in this header file.

If you want your multivector class (or a wrapper thereof) to implement the MultiVec interface, you should inherit from MultiVec<ScalarType>, where ScalarType is the type of entries in the multivector. For example, a multivector with entries of type double would inherit from MultiVec<double>.

Template Parameters:

ScalarType – The type of entries of the multivector.

Subclassed by xlifepp::MultiVecAdapter< ScalarType >

template<class ScalarType>
class MultiVecAdapter : public xlifepp::MultiVec<ScalarType>
#include <MultiVectorAdapter.hpp>

This class implements all the virtual functions of its ancestor.

template<class ScalarType, class MV>
class MultiVecTraits
#include <XlifeppMultiVecTraits.hpp>

Traits class which defines basic operations on multivectors.

This traits class tells xlifepp’s solvers how to perform multivector operations for the multivector type MV. These operations include creating copies or views, finding the number of rows or columns (i.e., vectors) in a given multivector, and computing inner products, norms, and vector sums. (xlifepp’s solvers use the OperatorTraits traits class to apply operators to multivectors.)

xlifepp gives users two different ways to tell its solvers how to compute with multivectors of a given type MV. The first and preferred way is for users to specialize MultiVecTraits, this traits class, for their given MV type. The second way is for users to make their multivector type (or a wrapper thereof) inherit from MultiVec. This works because xlifepp provides a specialization of MultiVecTraits for MultiVec. Specializing MultiVecTraits is more flexible because it does not require a multivector type to inherit from MultiVec; this is possible even if you do not have control over the interface of a class.

If you have a different multivector type MV that you would like to use with xlifepp, and if that type does not inherit from MultiVec, then you must implement a specialization of MultiVecTraits for MV. Otherwise, this traits class will report a compile-time error (relating to UndefinedMultiVecTraits). Specializing MultiVecTraits for your MV type is not hard.

Template Parameters:
  • ScalarType – The type of the entries in the multivectors.

  • MV – The type of the multivectors themselves.

class NedelecEdgeFirstHexahedronPk : public xlifepp::NedelecEdgeHexahedron
#include <NedelecEdgeHexahedron.hpp>

Nedelec edge first family of any order k on tetrahedron t (NCE1k) space Vk: Q_(k-1,k,k) x Q_(k,k-1,k)x Q_(k,k,k-1), Q_(k,l,m) monomials of degree at most k in x1, of degree at most l in x2, of degree at most m in x3, 3k(k+1)^2 dofs edge dofs: v-> int_e v.t q, q in P_(k-1)[e] k dofs by edge e face dofs (k>1) : v-> int_f (v x n).q, q in Q_(k-2,k-1) x Q_(k-1,k-2) 2k(k-1) dofs by face hexahedron dofs (k>1) : v-> int_t v.q, q in Q_(k-1,k-2,k-2) x Q_(k-2,k-1,k-2)x Q_(k-2,k-2,k-1) 3k(k-1)^2 dofs.

class NedelecEdgeFirstQuadranglePk : public xlifepp::NedelecEdgeQuadrangle
#include <NedelecEdgeQuadrangle.hpp>

Nedelec edge first family of any order k on quadrangle Q (NEC1_k) space Vk: Q_(k-1,k) x Q_(k,k-1) with Q_(k,l) monomials of degree at most k in x1, of degree at most l in x2, 2k(k+1) dofs edge dofs: v-> int_e v.t q, q in P_(k-1)[e] k dofs by edge e quadrangle dofs (k>1): v-> int_t v.q, q in Q_(k-1,k-2) x Q_(k-2,k-1) 2k(k-1) dofs.

class NedelecEdgeFirstTetrahedronPk : public xlifepp::NedelecEdgeTetrahedron
#include <NedelecEdgeTetrahedron.hpp>

Nedelec edge first family of any order k on tetrahedron t (NE1k) space Vk : P^3_(k-1) + Sk with Sk={p in Phk^3, x.p=0}, Phk homogeneous polynomials of degree k, k(k+2)(k+3)/2 dofs edge dofs : v-> int_e v.t q, q in P_(k-1)[e] k dofs by edge e face dofs (k>1) : v-> int_f v.q, q in {P_(k-2)[f]^3, q.n=0} k(k-1) dofs by face tetrahedron dofs (k>2): v-> int_t v.q, q in P_(k-3)[t]^3 k(k-1)(k-2)/2 dofs.

class NedelecEdgeHexahedron : public xlifepp::RefHexahedron
#include <NedelecEdgeHexahedron.hpp>

(Hcurl-conforming edge elements )

Parent class: RefTriangle Child classes: NedelecEdgeFirstHexahedronPk, NedelecEdgeSecondHexahedronPk

Subclassed by xlifepp::NedelecEdgeFirstHexahedronPk, xlifepp::NedelecEdgeSecondHexahedronPk

class NedelecEdgeQuadrangle : public xlifepp::RefQuadrangle
#include <NedelecEdgeQuadrangle.hpp>

(Hcurl-conforming edge elements )

Parent class: RefTriangle Child classes: NedelecEdgeFirstQuadranglePk, NedelecEdgeSecondQuadranglePk

Subclassed by xlifepp::NedelecEdgeFirstQuadranglePk, xlifepp::NedelecEdgeSecondQuadranglePk

class NedelecEdgeSecondHexahedronPk : public xlifepp::NedelecEdgeHexahedron

Nedelec edge second family of any order k on tetrahedron t (NCE2k/AAEk) space Vk P^3_(k) (k+1)(k+2)(k+3)/2 dofs edge dofs: v-> int_e v.t q, q in P_(k)[e] k+1 dofs by edge e face dofs (k>1) : v-> int_f v.q, q in D_(k-1)[f] = P_(k-2)^2 + PH_(k-2)*x (k-1)(k+1) dofs by face hexahedron dofs (k>3) : v-> int_t v.q, q in D_(k-2)[t] = P_(k-3)^3 + PH_(k-3)*x (k-1)(k+1)(k-2)/2 dofs.

class NedelecEdgeSecondQuadranglePk : public xlifepp::NedelecEdgeQuadrangle

AVAILABLE Nedelec edge second family of any order k on quadrangle Q NEC2_k/BDMCE_k.

class NedelecEdgeSecondTetrahedronPk : public xlifepp::NedelecEdgeTetrahedron
#include <NedelecEdgeTetrahedron.hpp>

Nedelec edge second family of any order k on tetrahedron t (NE2k) space Vk P^3_(k) (k+1)(k+2)(k+3)/2 dofs edge dofs : v-> int_e v.t q, q in P_(k)[e] k+1 dofs by edge e face dofs (k>1) : v-> int_f v.q, q in D_(k-1)[f] = P_(k-2)^2 + PH_(k-2)*x (k-1)(k+1) dofs by face tetrahedron dofs (k>3): v-> int_t v.q, q in D_(k-2)[t] = P_(k-3)^3 + PH_(k-3)*x (k-1)(k+1)(k-2)/2 dofs.

“ NOT IMPLEMENTED

class NedelecEdgeTetrahedron : public xlifepp::RefTetrahedron
#include <NedelecEdgeTetrahedron.hpp>

(Hcurl-conforming edge elements )

Parent class : RefTriangle Child classes: NedelecEdgeFirstTetrahedronPk, NedelecEdgeSecondTetrahedronPk

Subclassed by xlifepp::NedelecEdgeFirstTetrahedronPk, xlifepp::NedelecEdgeSecondTetrahedronPk

class NedelecFaceFirstTetrahedronPk : public xlifepp::NedelecFaceTetrahedron
#include <NedelecFaceTetrahedron.hpp>

Nedelec face first family of any order k on tetrahedron t (NF1k) space Vk: P^3_(k-1) + PH_(k-1)*(x1,x2,x3), dim Vk = k(k+1)(k+3)/2 face dofs: v-> int_f v.n q, q in P_(k-1)[f] k(k+1)/2 dofs by face f terrahedron dofs: v-> int_t v.q, q in P_(k-2)[t]^3 k(k-1)(k+1)/2 dofs only for k>1.

class NedelecFaceSecondTetrahedronPk : public xlifepp::NedelecFaceTetrahedron
#include <NedelecFaceTetrahedron.hpp>

Nedelec face second family of any order k on tetrahedron t (NF2k) space Vk: P^3_(k) dim Vk = (k+1)(k+2)(k+3)/2 face dofs: v-> int_f v.n q, q in P_(k)[f] (k+1)(k+2)/2 dofs by face f tetrahedron dofs: v-> int_t v.q, q in R_(k-1)[t] (k-1)(k+1)(k+2)/2 dofs only for k > 1 where R_(k-1)[t] = P^3_(k-2) + S(k-1) S_(k-1)[t] = {p in PH_(k-1), x.p=0}.

class NedelecFaceTetrahedron : public xlifepp::RefTetrahedron
#include <NedelecFaceTetrahedron.hpp>

(Hdiv-conforming face elements )

Parent class: RefTriangle Child classes: NedelecFaceFirstTetrahedronPk, NedelecFaceSecondTetrahedronPk

Subclassed by xlifepp::NedelecFaceFirstTetrahedronPk, xlifepp::NedelecFaceSecondTetrahedronPk

class NedelecFirstTriangleP1 : public xlifepp::NedelecTriangle
#include <NedelecTriangle.hpp>

(first family)

class NedelecFirstTrianglePk : public xlifepp::NedelecTriangle
#include <NedelecTriangle.hpp>

Nedelec first family of any order k on triangle T (NT1k) space Vk: P^2_(k-1) + S_k, dim Vk = k(k+2) where S_k={p in PH_k; p.x=0}, PHk homogeneous polynomials of order k) edge dofs: v-> int_e v.t q, q in P_(k-1)[e] k dofs by edge e triangle dofs: v-> int_t v.q, q in P_(k-2)[t]^2 k(k-1) dofs only for k>1.

class NedelecSecondTrianglePk : public xlifepp::NedelecTriangle
#include <NedelecTriangle.hpp>

Nedelec second family of any order k on triangle T (NT2k) space Vk: P^2_(k) dim Vk = (k+1)(k+2) edge dofs: v-> int_e v.t q, q in P_(k)[e] k+1 dofs by edge e triangle dofs: v-> int_t v.q, q in D_(k-1)[t] k^2-1 dofs only for k>1 where D_(k-1)[t] = P^2_(k-2) + PH_(k-2)*x of dimension k^2-1.

class NedelecTriangle : public xlifepp::RefTriangle
#include <NedelecTriangle.hpp>

(Hcurl-conforming Edge elements)

Parent class: RefTriangle Child classes: NedelecFirstTriangleP1, NedelecFirstTrianglePk, NedelecSecondTrianglePk

Subclassed by xlifepp::NedelecFirstTriangleP1, xlifepp::NedelecFirstTrianglePk, xlifepp::NedelecSecondTrianglePk

template<class P>
struct NoCheck
#include <CheckingPolicy.hpp>

Implementation of the CheckingPolicy used by SmartPtr Well, it’s clear what it does :o)

template<class T>
class Node
#include <Node.hpp>

node of a tree

class NonCopyable
#include <Traits.hpp>

A base class to disable default copy ctor and copy assignement operator.

template<typename K>
struct NormImplement
#include <Traits.hpp>

Trait struct to determine value of a norm.

template<typename K>
struct NumTraits
#include <Traits.hpp>

Trait struct to determine the value type.

class Nurbs : public xlifepp::Spline
#include <spline.hpp>

Nurbs class implements non uniform rational Bspline for 3D surface it is built from BSpline’s in two parameter directions (u,v), may be seen as a cross product of two BSpline it inherits from Spline class but some Spline data are not used or replaced it may deal with approximation or interpolation subtype.

When not specified, use interpolation

template<class T>
class Ode45T : public xlifepp::OdeSolver<T>
template<class T>
class OdeSolver

Subclassed by xlifepp::EulerT< T >, xlifepp::Ode45T< T >, xlifepp::RK4T< T >

class Operand
#include <Operand.hpp>

to deal with syntax Value AlgebraicOperation

template<class ScalarType>
class Operator
#include <XlifeppOperator.hpp>

xlifepp’s templated virtual class for constructing an operator that can interface with the OperatorTraits class used by the eigensolvers.

A concrete implementation of this class is necessary. The user can create their own implementation if those supplied are not suitable for their needs.

Subclassed by xlifepp::LargeMatrixAdapter< MatrixType, ScalarType >, xlifepp::LargeMatrixAdapterInverse< MatrixType, ScalarType >, xlifepp::LargeMatrixAdapterInverseGeneralized< MatrixType, ScalarType >

class OperatorOnFunction
#include <OperatorOnFunction.hpp>

describes the operations to process on Function.

class OperatorOnKernel
#include <OperatorOnKernel.hpp>

describes the operations to process on kernel.

ker_p=0 means K(x,y)=1 !

class OperatorOnUnknown
#include <OperatorOnUnknown.hpp>

describes the operations to process on unknown.

Unknown may be scalar or vector

class OperatorOnUnknowns
#include <OperatorOnUnknowns.hpp>

describes a pair of xlifepp::OperatorOnUnknown linked by an algebraic operation.

it is a part of a bilinear form (see BilinearForm class)

template<class ScalarType, class MV, class OP>
class OperatorTraits
#include <XlifeppOperatorTraits.hpp>

Virtual base class which defines basic traits for the operator type.

An adapter for this traits class must exist for the MV and OP types. If not, this class will produce a compile-time error.

template<class ScalarType, class MV>
class OrthoManager
#include <XlifeppOrthoManager.hpp>

xlifepp’s templated virtual class for providing routines for orthogonalization and orthonormalization of multivectors.

This class defines concepts of orthogonality through the definition of an inner product. It also provides computational routines for orthogonalization.

A concrete implementation of this class is necessary. The user can create their own implementation if those supplied are not suitable for their needs.

Subclassed by xlifepp::MatOrthoManager< ScalarType, MV, OP >

template<class ScalarType>
class OutputManager
#include <XlifeppOutputManager.hpp>

Output managers remove the need for the eigensolver to know any information about the required output.

Calling isVerbosity(MsgEigenType type) informs the solver if it is supposed to output the information corresponding to the message type.

Subclassed by xlifepp::BasicOutputManager< ScalarType >

class Parallelepiped : public xlifepp::Hexahedron
#include <geometries3D.hpp>

definition of a parallelepiped geometry in R^3

Parallelepiped constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3, _v4, _v5, _v6, _v7, _v8: to define the vertices of the Parallelepiped (_v3, _v6, _v7, _v8 are optional)

  • _nnodes: to define the number of nodes on each edge of the Parallelepiped

  • _hsteps: to define the local mesh steps on the vertices of the Parallelepiped

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Cuboid

class Parallelogram : public xlifepp::Quadrangle
#include <geometries2D.hpp>

definition of a parallelogram geometry in R^3

Parallelogram constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3, _v4: to define the vertices of the Parallelogram, counterclockwise oriented (_v3 is optional)

  • _nnodes: to define the number of nodes on each edge of the Parallelogram

  • _hsteps: to define the local mesh steps on the vertices of the Parallelogram

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Rectangle

class Parameter
#include <Parameters.hpp>

encapsulates any scalar value of type int, real_t, complex_t, string_t or const void*.

  • main standard algebric operations are supported for parameter of numerical type

  • const void* allows to store anything; it is designed for advanced users because void pointers are unsafe particular pointers are managed by class: std::vector<real_t>* to store some reals std::vector<complex_t>* to store some complexes std::vector<int_t>* to store some integers std::vector<string_t>* to store some strings Matrix<real_t>* to store a real matrix Matrix<complex_t>* to store a complex matrix Point* to store a point std::vector<Point>* to store some points

class Parameters
#include <Parameters.hpp>

encapsulates a list of Parameter’s.

creation:

Parameter height=3;
Parameters data;
data << height << Parameter(4,"width") << "case 1" << 1.5;

string_t “case 1” has default name “parameter3” real_t “1.5” has default name “parameter4”

usage:

Parameter a=data("height");  // access by name, contains height
Parameter c=data(4);         // access by rank, contains 1.5
data(1)= 2;                  // replace the value 3 by 2
data("height")=2;            // same effect
data(height)=2;              // same effect, caution here as object height is hereafter modified
double x=data(4);            // x contains 1.5
x=data("width");             // x contains 4

No deletion of list element is possible No algebraic operations are performed on Parameters Automatic parameter naming is a crutch for tired users, it is advised that the user manages names of parameters:

Parameter height=3;
Parameter width=4;
Parameter wavenumber=1.5;
Parameter comment="case 1";
Parameters data;
data << height << width << wavenumber << comment;
template<typename K>
struct ParameterTrait
#include <Parameters.hpp>

extern main numerical function, automatic cast (not defined for string_t arg !)

Template Parameters:

K – type to work with Trait to process parameter list

class Parametrization

Subclassed by xlifepp::PiecewiseParametrization

class ParametrizedArc : public xlifepp::Curve
#include <geometries1D.hpp>

definition of a ParametrizedArc geometry in R^3 : x1(t), x2(t), x3(t) if an additional linear transformation T is applied to: T(x1(t),x2(t),x3(t)) = A(x1(t),x2(t),x3(t)) + b where a=T.mat() and b=T.vec()

ParametrizedArc constructors are based on a key-value system. Here are the available keys:

  • _tmin, _tmax: reals defining bounds of parameter t in parametrization

  • _parametrization: parametrization object is handled by Geometry

  • _partitioning: type of partition, one of _nonePartition*, _linearPartition, _splinePartition

  • _nbparts: number of partitions

  • _nnodes: to define the number of nodes on the Segment

  • _hsteps: to define the local mesh steps on the bounds of a Segment

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

    built at construction p1_,p2_, p_: bounds node and nodes As gmsh does not support parametrized curve, when exported to GMSH, ParametrizedArc is split into nbparts_

    • smaller segments (linearPartition)

    • smaller splines (_splinePartition) Be caution, the parameter t should be taken in the interval [0,1] when using the function parametrization_ParametrizedArc whereas it should be taken in [tmin,tmax] when using the object arc_parametrization

class ParametrizedGeodesic : public xlifepp::Geodesic
#include <Geodesic.hpp>

ParametrizedGeodesic class handling any geodesic got using surface parametrization require a GeomDomain or a Geometry or a Parametrization in any case, it constructs geodesic using a RK4 scheme to solve the geodesic EDO dt(x(t),y(t))=F(x(t),y(t)) x(t)=x0, y(t)=y(0) F function (involving Cristoffel symbols) is based on a Parametrization When the Parametrization is a PiecewiseParametrization, the computation is done using an iterative process to go from one parametrization to the other.

class ParametrizedSurface : public xlifepp::Surface
#include <geometries2D.hpp>

definition of a ParametrizedSurface geometry in R^3 : x1(u,v), x2(u,v), x3(u,v) As gmsh does not support parametrized surface, to be exported, ParametrizedSurface can be split into _nbparts parts

  • smaller quadrangles or triangles (_linearPartition)

  • smaller nurbs (_splinePartition) NOT YET AVAILABLE

ParametrizedSurface constructors are based on a key-value system. Here are the available keys:

  • _parametrization: parametrization object is handled by Geometry

  • _partitioning: type of partition, one of _nonePartition*, _linearPartition, _splinePartition

  • _nbparts: number of partitions

  • _nnodes: to define the number of nodes on the bound edges

  • _hsteps: to define the local mesh steps on the bounds nodes

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class PartitionData
#include <GeomDomain.hpp>

to store general information of geometric domain

template<typename T>
class PCollection : public std::vector<T*>
#include <Collection.hpp>

a simple interface to std::vector<T*> hide pointers, add the insertion operator <<, the constructors from enumerating items and access to items using operator ()

Be cautious when using it because pointers are shared (no copy). For instance, if you plan to create a list of T with a loop, do the following

PCollection<T> ts(10); for(int i=0;i<10;++i) ts[i] = new T(…); and clear the T pointers using: ts.clearPointers();

to access to item as const reference you can use either ts(i+1) (same as *ts[i])

template<typename T>
class PCollectionItem
#include <Collection.hpp>

utility class for xlifepp::PCollection class to access to an item of a collection of pointers

class PhysicalData
#include <saveToGeo.hpp>

store data related to a physical group: domain name, domain id and dimension

class PiecewiseParametrization : public xlifepp::Parametrization
#include <Parametrization.hpp>

PiecewiseParametrization class handles a global parametrization of multiple patches: basically a list of standard parametrizations Main data members: map<Parametrization*, vector<pair<Parametrization*,number_t> > > neighborParsMap: map Parametrization* -> neighbor Parametrizations vector vector<Point> vertices: list of all vertices of parametrizations (stored once) map<Parametrization*, vector<number_t> > vertexIndexes: map Parametrization* -> vertex numbers with parameters correspondance index: u=0->1, u=1->2, v=0->3, v=1->4, w=0->5, w=1->6 the neighbor parametrization and vertexIndexes vector are stored according to the parameters correspondance.

EXPERIMENTAL: global C0 parametrization, additional structures Vector <number_t> ns: the numbers n1, n2, n3 map<Triplet, pair<Parametrization*, Transformation*>>> parsMap: map (i,j,k) -> (Parametrization*, Transformation*) (i=1,n1, ,j=1,n2, k=1,n3) map<Parametrization*, Triplet> parsRMap: reverse map Parametrization* -> i,j,k u in [0,1] if curve, (u,v) in [0,1]x[0,1] if surface, (u,v,w) in [0,1]x[0,1]x[0,1] if volume u-interval [0,1] is split in n1 parts [0,1/n1],[1/n1,2/n1], … [(n1-1)/n1,1] defined if curve v-interval [0,1] is split in n2 parts [0,1/n2],[1/n2,2/n2], … [(n2-1)/n2,1] defined if surface w-interval [0,1] is split in n3 parts [0,1/n3],[1/n3,2/n3], … [(n3-1)/n3,1] defined if volume if defines n1 x n2 x n3 cells (Cijk)on which may be attached a parametrization Pijk or not and a tranfer fuction that maps (u,v,w) -> Tijk(n1*u-i+1, n2*v-j+1, n3*w-k+1) in [0,1]x[0,1]x[0,1] where T: [0,1]x[0,1]x[0,1] -> [0,1]x[0,1]x[0,1] is a linear transformation that maps parameters of Pijk the global parametrization may be discontinuous at interfaces except if the algorithm build continous parametrization by matching parameters on interfaces Note: Parametrization* involved here are shared pointers (no clone), null Transformation pointer means no transformation (say id) transformation pointers should be deleted as they are built on memory stack

struct PlyElement

Definition of an Element according to PLY format.

struct PlyProperty

Definition of a Property according to PLY format.

class Point : public std::vector<real_t>
#include <Point.hpp>

holds point coordinates in any dimension

Class Point to hide vector<real_t> class to users (see e.g. Function) and holds point coordinates in any dimension. It is implemented as a child class to stl vector<real_t> and thus inherits of all member functions and algorithms of stl class ‘vector’.

template<typename T>
class PointerF
#include <Function.hpp>

Fake templated class to select right pointer function along point or vector<point> input argument.

class PointReflection : public xlifepp::Homothety
#include <Transformation.hpp>

representation of a point symmetry it is an homothety of factor -1.

class PointsDomain : public xlifepp::GeomDomain
#include <GeomDomain.hpp>

class handles a list of points (cloud)

class Polygon : public xlifepp::Surface
#include <geometries2D.hpp>

definition of a polygonal geometry in R^3

Polygon constructors are based on a key-value system. Here are the available keys:

  • _vertices: the vertices defining the polygon, oriented along the boundary (clockwise or counterclockwise)

  • _nnodes: to define the number of nodes on each edge of the Polygon

  • _hsteps: to define the local mesh steps on the vertices of the Polygon

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Quadrangle, xlifepp::Triangle

class Polyhedron : public xlifepp::Volume
#include <geometries3D.hpp>

definition of a polyhedral geometry in R^3 Generally, a polyhedron is a list of polygonal faces.

But data is storages differently to avoid pointer manipulation So, we decide to store:

  • the list of vertices -> Vector<Point> p_

  • the definition of faces as a list of points -> Vector<Vector<number_t> > faces_ it is so that p_[faces_[i][j]] is the j-st vertex of the i-st face of the polyhedron

  • the number of nodes on each edge -> Vector<Vector<number_t> > n_ it is so that n_[i][j] is the number of nodes on j-st edge [ p_[faces_[i][j]] p_[faces_[i][j+1]] ] of the i-st face of the polyhedron

Polyhedron constructors are based on a key-value system. Here are the available keys:

  • _faces: the geometrical faces defining the Polyhedron

  • _nnodes: to define the number of nodes on each edge of the Polyhedron

  • _hsteps: to define the local mesh steps on the vertices of the Polyhedron

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Hexahedron, xlifepp::Tetrahedron

template<typename K = real_t>
class PolyNodeT
#include <polynomials.hpp>

deals with a tree representation of Polynomials

template<typename K = real_t>
class PolynomialBasisT : public std::list<PolynomialT<real_t>>
#include <polynomials.hpp>

deals with a set of Polynomials

class PolynomialIM : public xlifepp::SingleIM
#include <IntegrationMethod.hpp>

integral over a geometric element using analytic formula for polynomial integrand

template<typename K = real_t>
class PolynomialsBasisT : public std::list<std::vector<PolynomialT<real_t>>>
#include <polynomials.hpp>

deals with a set of vectors of Polynomials

template<typename K = real_t>
class PolynomialT
#include <polynomials.hpp>

deals with a Polynomial, say a linear combination of Monomials

class Preconditioner
#include <Preconditioner.hpp>

Define the preconditioner for linear systems.

This is a main class that users can derive to deal with preconditioning by operators. In most of the cases, users will use xlifepp::PreconditionerTerm when it is a preconditioning with TermMatrix/TermVector level (or MatrixEntry/VectorEntry)

Subclassed by xlifepp::PreconditionerTerm

class PreconditionerTerm : public xlifepp::Preconditioner
#include <PreconditionerTerm.hpp>

Define the preconditioner for linear systems.

This is a main class that users can derive to deal with preconditioning by operators. In most of the cases, users will use xlifepp::PreconditionerTerm when it is a preconditioning with TermMatrix/TermVector level (or MatrixEntry/VectorEntry)

class PrintStream
#include <PrintStream.hpp>

PrintSream class encapsulates multiple std::ofstream objects allowing to print result of threads on different ofstream it there is only one thread available, print as usual in a single file.

Construct such object from one name file, e.g print.txt then the following file will be created print.txt for thread 0 or no multithreading print1.txt for thread 1 print2.txt for thread 2 …

PrintSream inherits from std::ostream and can be used as ordinary stream, for instance PrintStream thePrintStream(“print.txt”); thePrintStream << “toto “<<i<<…

class Prism : public xlifepp::Cylinder
#include <geometries3D.hpp>

definition of a prismatic geometry in R^3

Prism constructors are based on a key-value system. Here are the available keys:

  • _basis: to define the geometrical basis of a Prism (a child object of Polygon)

  • _direction: a direction vector of the axis of the Cylinder

  • _v1, _v2, _v3: to define vertices of the basis when it is triangular

  • _nnodes: to define the number of nodes on the edges of the Prism

  • _hsteps: to define the local mesh steps on build points of the Prism

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class ProdSpace : public xlifepp::Space
#include <ProdSpace.hpp>

defines data related to a product of spaces this class may be useful when interpolations along the components are differents when they are all the same, use standard space definitions NOT USED, for future

class ProductIM : public xlifepp::DoubleIM
#include <IntegrationMethod.hpp>

product of single integration methods

class Projector
#include <Projector.hpp>

end user class handling projection from a space V to a space W

template<class T>
struct PropagateConst
#include <ConstantPolicy.hpp>

Propagate constness of pointed or referred object.

class Pyramid : public xlifepp::Cone
#include <geometries3D.hpp>

definition of a pyramidal geometry in R^3

Pyramid constructors are based on a key-value system. Here are the available keys:

  • _basis: to define the geometrical basis of a Pyramid (a child object of Polygon)

  • _apex: the apex of the Pyramid

  • _v1, _v2, _v3, _v4: to define vertices of the basis when it is quadrangular

  • _nnodes: to define the number of nodes on the edges of the Pyramid

  • _hsteps: to define the local mesh steps on build points of the Pyramid

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class QmrSolver : public xlifepp::IterativeSolver
#include <QmrSolver.hpp>

Implement Quasi-Minimal Residual algorithm.

class Quadrangle : public xlifepp::Polygon
#include <geometries2D.hpp>

definition of a quadrangular geometry in R^3

Quadrangle constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3, _v4: to define the vertices of the Quadrangle, counterclockwise oriented

  • _nnodes: to define the number of nodes on each edge of the Quadrangle

  • _hsteps: to define the local mesh steps on the vertices of the Quadrangle

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Parallelogram

class Quadrature
#include <Quadrature.hpp>

Quadrature defines the quadrature rule in Finite Element Method.

class QuadratureIM : public xlifepp::SingleIM
#include <IntegrationMethod.hpp>

class devoted to integral over a geometric element may be dealt with different shapes

class QuadratureRule
#include <QuadratureRule.hpp>

represents a quadrature formula points and weights

class RaviartThomasStdTriangleP1 : public xlifepp::RaviartThomasTriangle

Subclassed by xlifepp::BuffaChristiansenRT

class RaviartThomasStdTrianglePk : public xlifepp::RaviartThomasTriangle
#include <RaviartThomasTriangle.hpp>

Raviart-Thomas element of any order k on triangle T (RTtk, also known as Rao-Wilton-Glisson element) space Vk: P^2_(k-1) + PH_(k-1)*(x1,x2), dim Vk = k(k+2) (PHk homogeneous polynomials of order k), edge dofs: v-> int_e v.n q, q in P_(k-1)[e] k dofs by edge e triangle dofs: v-> int_t v.q, q in P_(k-2)[t]^2 k(k-1) dofs only for k>1.

class RaviartThomasTriangle : public xlifepp::RefTriangle
#include <RaviartThomasTriangle.hpp>

(Hdiv-conforming Edge elements)

Parent class: RefTriangle Child classes: RaviartThomasStdTriangleP1

Subclassed by xlifepp::RaviartThomasStdTriangleP1, xlifepp::RaviartThomasStdTrianglePk

template<typename _MatrixType>
class RealEigenSolver
#include <RealEigenSolver.hpp>

Computes eigenvalues and eigenvectors of general matrices.

The eigenvalues and eigenvectors of a matrix \( A \) are scalars \( \lambda \) and vectors \( v \) such that \( Av = \lambda v \). If \( D \) is a diagonal matrix with the eigenvalues on the diagonal, and \( V \) is a matrix with the eigenvectors as its columns, then \( A V = V D \). The matrix \( V \) is almost always invertible, in which case we have \( A = V D V^{-1} \). This is called the eigendecomposition.

The eigenvalues and eigenvectors of a matrix may be complex, even when the matrix is real. However, we can choose real matrices \( V \) and \( D \) satisfying \( A V = V D \), just like the eigendecomposition, if the matrix \( D \) is not required to be diagonal, but if it is allowed to have blocks of the form

\[\begin{split} \left(\begin{array}{cc} u & v \\ -v & u \end{array}\right) \end{split}\]
(where \( u \) and \( v \) are real numbers) on the diagonal. These blocks correspond to complex eigenvalue pairs \( u \pm iv \). We call this variant of the eigendecomposition the pseudo-eigendecomposition.

Call the function compute() to compute the eigenvalues and eigenvectors of a given matrix. Alternatively, you can use the RealEigenSolver(const MatrixType&, bool) constructor which computes the eigenvalues and eigenvectors at construction time. Once the eigenvalue and eigenvectors are computed, they can be retrieved with the eigenvalues() and eigenvectors() functions. The pseudoEigenvalueMatrix() and pseudoEigenvectors() methods allow the construction of the pseudo-eigendecomposition.

The documentation for RealEigenSolver(const MatrixType&, bool) contains an example of the typical use of this class.

See also

MatrixBase::eigenvalues(), class ComplexEigenSolver, class SelfAdjointEigenSolver

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the Matrix class template. Currently, only real matrices are supported.

Note

The implementation is adapted from JAMA (public domain). Their code is based on EISPACK.

template<typename _MatrixType>
class RealSchur
#include <RealSchur.hpp>

Performs a real Schur decomposition of a square matrix.

Given a real square matrix A, this class computes the real Schur decomposition: \( A = U T U^T \) where U is a real orthogonal matrix and T is a real quasi-triangular matrix. An orthogonal matrix is a matrix whose inverse is equal to its transpose, \( U^{-1} = U^T \). A quasi-triangular matrix is a block-triangular matrix whose diagonal consists of 1-by-1 blocks and 2-by-2 blocks with complex eigenvalues. The eigenvalues of the blocks on the diagonal of T are the same as the eigenvalues of the matrix A, and thus the real Schur decomposition is used in EigenSolver to compute the eigendecomposition of a matrix.

Call the function compute() to compute the real Schur decomposition of a given matrix. Alternatively, you can use the RealSchur(const MatrixType&, bool) constructor which computes the real Schur decomposition at construction time. Once the decomposition is computed, you can use the matrixU() and matrixT() functions to retrieve the matrices U and T in the decomposition.

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the real Schur decomposition; this is expected to be an instantiation of the Matrix class template.

Note

The implementation is adapted from JAMA (public domain). Their code is based on EISPACK.

class Rectangle : public xlifepp::Parallelogram
#include <geometries2D.hpp>

definition of a rectangular geometry in R^3

Rectangle constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v4: to define the vertices of the Rectangle, counterclockwise oriented

  • _center: to define the center of the Rectangle

  • _origin: to define the first vertex of the Rectangle (same definition as _v1)

  • _xlength, _ylength: the lengths of the Rectangle

  • _xmin, _xmax, _ymin, _ymax: to define the Rectangle v1=(xmin, ymin), v2=(xmax, ymin), v4=(xmin, ymax)

  • _nnodes: to define the number of nodes on each edge of the Rectangle

  • _hsteps: to define the local mesh steps on the vertices of the Rectangle

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::SquareGeo

class ReductionMethod
#include <ReductionMethod.hpp>

handling constraints reduction method information when dealing with essential conditions (constraints), several methods are available

  • pseudo reduction

  • full reduction

  • penalization

  • duality (not yet available)

pseudo-reduction is the full reduction method where eliminated row are replaced by the constraints matrix C: | beta*I + alpha*C | eliminated rows Ap= | | | 0 Ae | default is alpha=1 and beta=0, good choice when solving a problem choose alpha=0 and beta!=0 when dealing with eigenvalue problem

template<class P>
class RefCounted
#include <OwnershipPolicy.hpp>

Implementation of the OwnershipPolicy used by SmartPtr Provides a classic external reference counting implementation.

class RefDof
#include <RefDof.hpp>

A RefDof object represents a generalized Degree of Freedom in a reference element.

class RefElement
#include <RefElement.hpp>

A RefElement object represents the standard FE reference element.

Subclassed by xlifepp::RefHexahedron, xlifepp::RefPoint, xlifepp::RefPrism, xlifepp::RefPyramid, xlifepp::RefQuadrangle, xlifepp::RefSegment, xlifepp::RefTetrahedron, xlifepp::RefTriangle

class RefHexahedron : public xlifepp::RefElement
#include <RefHexahedron.hpp>

Parent class: RefElement Child class: LagrangeHexahedron.

Subclassed by xlifepp::LagrangeHexahedron, xlifepp::NedelecEdgeHexahedron

class Reflection2d : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a reflection

class Reflection3d : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a reflection on a plane

class RefPoint : public xlifepp::RefElement
#include <RefPoint.hpp>

Parent class: RefElement.

class RefPrism : public xlifepp::RefElement
#include <RefPrism.hpp>

Parent class : RefElement Child classes: LagrangePrism.

Subclassed by xlifepp::LagrangePrism

class RefPyramid : public xlifepp::RefElement
#include <RefPyramid.hpp>

Parent class: RefElement Child classes: LagrangePyramid.

Subclassed by xlifepp::LagrangePyramid

class RefQuadrangle : public xlifepp::RefElement
#include <RefQuadrangle.hpp>

Parent class: RefElement Child classes: LagrangeQuadrangle.

Subclassed by xlifepp::LagrangeQuadrangle, xlifepp::NedelecEdgeQuadrangle

class RefSegment : public xlifepp::RefElement
#include <RefSegment.hpp>

Parent class: RefElement Child classes: LagrangeSegment, HermiteSegment.

Subclassed by xlifepp::HermiteSegment, xlifepp::LagrangeSegment

class RefTetrahedron : public xlifepp::RefElement
#include <RefTetrahedron.hpp>

child to class RefElement

Parent class: RefElement Child classes: LagrangeTetrahedron

Subclassed by xlifepp::CrouzeixRaviartTetrahedron, xlifepp::LagrangeTetrahedron, xlifepp::NedelecEdgeTetrahedron, xlifepp::NedelecFaceTetrahedron

template<class T>
class RefToValue
#include <RefToValue.hpp>

Transports a reference as a value Serves to implement the Colvin/Gibbons trick for SmartPtr/ScopeGuard.

class RefTriangle : public xlifepp::RefElement
#include <RefTriangle.hpp>

Parent class: RefElement Child classes: LagrangeTriangle HermiteTriangle CrouzeixRaviartTriangle NedelecTriangle RaviartThomasTriangle.

Subclassed by xlifepp::ArgyrisTriangle, xlifepp::CrouzeixRaviartTriangle, xlifepp::HermiteTriangle, xlifepp::LagrangeTriangle, xlifepp::MorleyTriangle, xlifepp::NedelecTriangle, xlifepp::RaviartThomasTriangle

template<typename T>
struct RemoveAll
template<class T>
struct RemoveConst
template<typename T>
struct RemovePointer
template<typename T>
struct RemoveReference
class RevCone : public xlifepp::RevTrunk
#include <geometries3D.hpp>

A truncated cone of revolution is defined by its axis (P1,P2) and two radii R1 and R2.

R1 (resp. R2) is the radius of the circle lying in the plane orthogonal to (P1,P2) passing by P1 (resp. P2). R1 (or R2) can be 0, in which case we get a cone of revolution. See more details at RevTrunk.

RevCone constructors are based on a key-value system. Here are the available keys:

  • _center: to define the center of the basis

  • _apex: the apex of the RevCone

  • _radius: the radius of the basis

  • _end_shape: the shape of extension part on the end of the RevCone

  • _end_distance: the length of extension part on the end of the RevCone

  • _nbsubdomains: the number of slices of the RevCone (subdivision mesh generator only)

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nnodes: to define the number of nodes on the edges of the RevCone

  • _hsteps: to define the local mesh steps on build points of the RevCone

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class RevCylinder : public xlifepp::RevTrunk
#include <geometries3D.hpp>

A cylinder of revolution is defined by its axis (P1,P2) and the radius of any circle obtained by intersection with a plane orthogonal to (P1,P2).

See more details at RevTrunk.

RevCylinder constructors are based on a key-value system. Here are the available keys:

  • _center1, _center2: to define centers of bases when they are elliptical

  • _radius: the radius of the bases

  • _end1_shape, _end2_shape: the shape of extension parts on both ends of the RevCylinder

  • _end1_distance, _end2_distance: the lengths of extension parts on both ends of the RevCylinder

  • _nbsubdomains: the number of slices of the RevCylinder (subdivision mesg generator only)

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nnodes: to define the number of nodes on the edges of the RevCylinder

  • _hsteps: to define the local mesh steps on build points of the RevCylinder

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class RevTrunk : public xlifepp::Trunk
#include <geometries3D.hpp>

A object of revolution is defined by its axis (P1,P2) and the radii of two circles obtained by intersection with a plane orthogonal to (P1,P2).

The object is delimited by the two planes, orthogonal to (P1,P2), passing by P1 and P2, and this is the default end shape of the object when it is meshed with volumic elements (gesFlat or equivalently in this case, gesNone). When the elements are surfacic, the default is to leave the ends empty (gesNone).

Moreover, on both ends of this object, one can add part of a cone (gesCone), an ellipsoid (gesEllipsoid) or a sphere (gesSphere), connected to the boundary circle of the object. Let us consider the boundary circle whose center is P1. The apex of the cone or the ellipsoid is assumed to lie on the line (P1,P2) at a given distance distance1_ from P1. This distance is irrelevant in the case of the sphere. The same apply on the other end of the object. When the elements are surfacic, one can additonnaly chose a flat “lid” (gesFlat) ; the distance argument is then also irrelevant in this case.

RevTrunk constructors are based on a key-value system. Here are the available keys:

  • _center1, _center2: to define centers of bases when they are elliptical

  • _radius1, _radius2: the radii of the bases

  • _end1_shape, _end2_shape: the shape of extension parts on both ends of the RevTrunk

  • _end1_distance, _end2_distance: the lengths of extension parts on both ends of the RevTrunk

  • _nbsubdomains: the number of slices of the RevTrunk (subdivision mesg generator only)

  • _type: indicator to fit curved boundaries (default) or not which gives flat (or plane) boundaries

  • _nnodes: to define the number of nodes on the edges of the RevTrunk

  • _hsteps: to define the local mesh steps on build points of the RevTrunk

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::RevCone, xlifepp::RevCylinder

template<class T>
class RK4T : public xlifepp::OdeSolver<T>
class Rotation2d : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a rotation from a point and an angle

class Rotation3d : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a rotation from an axis ( a point and a vector ) and an angle

class RowCsStorage : public xlifepp::CsStorage
class RowDenseStorage : public xlifepp::DenseStorage
#include <RowDenseStorage.hpp>

handles dense storage of matrix stored row by row

class SauterSchwabIM : public xlifepp::DoubleIM
#include <SauterSchwabIM.hpp>

integral over a product of geometric elements with singularity using Sauter-Schwab technique (for elements that shared vertices) Stefan A.

Sauter, Christoph Schwab, “Boundary Element Methods”, Springer, 2010

class SauterSchwabSymIM : public xlifepp::DoubleIM
#include <SauterSchwabSymIM.hpp>

integral over a product of geometric elements with singularity using Sauter-Schwab technique (for elements that shared vertices) Stefan A.

Sauter, Christoph Schwab, “Boundary Element Methods”, Springer, 2010

class Scaling : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a scaling from a center and a scaling factor vector

Subclassed by xlifepp::Homothety

class SegElt
#include <Geodesic.hpp>

EltSeg class handles a segment separating a geometric element gelt1 in 2 parts (interior segment) or separating element gelt1 and gelt2 (edge) P1_,P2_ : vertices of segment gelt1_, gelt2_ : pointers to the geometric elements concerned (gelt2=0 if interior ssegment) s1_,s2_ : side numbers where P1 (resp.

P2) belongs to or side numbers of edge

class Segment : public xlifepp::Curve
#include <geometries1D.hpp>

definition of a segment geometry in R^3

Segment constructors are based on a key-value system. Here are the available keys:

  • _xmin, _xmax: to define a Segment along the x axis

  • _v1, _v2: to define a Segment from its bounds

  • _nnodes: to define the number of nodes on the Segment

  • _hsteps: to define the local mesh steps on the bounds of a Segment

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

template<typename _MatrixType>
class SelfAdjointEigenSolver
#include <SelfAdjointEigenSolver.hpp>

Computes eigenvalues and eigenvectors of selfadjoint matrices.

A matrix \( A \) is selfadjoint if it equals its adjoint. For real matrices, this means that the matrix is symmetric: it equals its transpose. This class computes the eigenvalues and eigenvectors of a selfadjoint matrix. These are the scalars \( \lambda \) and vectors \( v \) such that \( Av = \lambda v \). The eigenvalues of a selfadjoint matrix are always real. If \( D \) is a diagonal matrix with the eigenvalues on the diagonal, and \( V \) is a matrix with the eigenvectors as its columns, then \( A = V D V^{-1} \) (for selfadjoint matrices, the matrix \( V \) is always invertible). This is called the eigendecomposition.

The algorithm exploits the fact that the matrix is selfadjoint, making it faster and more accurate than the general purpose eigenvalue algorithms implemented in RealEigenSolver.

Only the lower triangular part of the input matrix is referenced.

Call the function compute() to compute the eigenvalues and eigenvectors of a given matrix. Alternatively, you can use the SelfAdjointEigenSolver(const MatrixType&, int) constructor which computes the eigenvalues and eigenvectors at construction time. Once the eigenvalue and eigenvectors are computed, they can be retrieved with the eigenvalues() and eigenvectors() functions.

To solve the generalized eigenvalue problem \( Av = \lambda Bv \) and the likes, see the class GeneralizedSelfAdjointEigenSolver.

See also

MatrixBase::eigenvalues(), class EigenSolver

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the Matrix class template.

Subclassed by xlifepp::GeneralizedSelfAdjointEigenSolver< _MatrixType >

class SetOfConstraints : public std::map<const Unknown*, Constraints*>
#include <Constraints.hpp>

class handles a set of Constraints indexed by Unknown pointer

a zero Unknown pointer means a global constraints: coupling unknowns constraints in that case, there is only one global constraints system in SetOfConstraints if not the case, to each non zero Unknown pointer is associated a constraints system

Note : SetOfConstraints is constructed from EssentialConditions (also stored) and it is deep copied to Term so it is not shared except the virtual dual space/unknown that are not duplicated

class SetOfElems : public xlifepp::Geometry
#include <geometries2D.hpp>

This class defines an initial mesh from a list of points (pts), a list of elements (elems) and a list of boundaries (bounds).

Each element is defined by N numbers corresponding to the rank of its N vertices in the vector pts ; the numbers start from 1. Thus, elems[k][i] is the number of the vertex (i+1) of the element number (k+1) (if the elements are numbered starting from 1), and 1 <= elems[k][i] <= pts.size(). The boundaries of the polygonal domain defined by the elements are also defined by point numbers with the same convention. Each boundary is defined by the list of numbers of the points they belong to, given in any order. The last argument nbsubdiv is the number of subdivisions wanted. The initial mesh corresponds to nbsubdiv=0. -> Important: the subdivision algorithm generate a new point on each edge of the mesh. It belongs to boundary B if the two end points of the edge belong to the boundary B ; it is an internal point otherwise. Owing to this rule, in order to get a correct result, care must be taken in the definition of the boundaries since too few boundaries may lead to get boundary points that are in fact inside the domain. For instance, subdividing one single triangle leads to mandatory define its three edges as boundaries.

class SetOfPoints : public xlifepp::Geometry
#include <geometries1D.hpp>

This class defines a set of points.

The points are implicitly ordered according to their position in the vector. This allows the definition of a polygonal line made of successive segments from arbitrary points in 1D, 2D or 3D.

class ShapeValues
class SingleIM : public xlifepp::IntegrationMethod
#include <IntegrationMethod.hpp>

abstract class for integration method of single integral over E

Subclassed by xlifepp::FilonIMT< complex_t >, xlifepp::FilonIMT< T >, xlifepp::LenoirSalles2dIR, xlifepp::LenoirSalles3dIR, xlifepp::PolynomialIM, xlifepp::QuadratureIM

class SkylineStorage : public xlifepp::MatrixStorage
#include <SkylineStorage.hpp>

abstract base class of all skyline storage classes

Subclassed by xlifepp::DualSkylineStorage, xlifepp::SymSkylineStorage

template<typename T, template<class> class OwnershipPolicy, class ConversionPolicy, template<class> class CheckingPolicy, template<class> class StoragePolicy, template<class> class ConstnessPolicy>
class SmartPtr : public StoragePolicy<T>, public OwnershipPolicy<StoragePolicy<T>::InitPointerType>, public CheckingPolicy<StoragePolicy<T>::StoredType>, public ConversionPolicy
#include <SmartPtr.hpp>

Smart pointers are objects which store pointers to dynamically allocated (heap) objects.

They behave much like built-in C++ pointers except that they automatically delete the object pointed to at the appropriate time. Conceptually, smart pointers are seen as owning the object pointed to, and thus responsible for deletion of the object when it is no longer needed.

Note

The implementation is adapted from Modern C++ Design: Generic Programming and Design Patterns Applied

template<typename T, template<class> class OwnershipPolicy = RefCounted, class ConversionPolicy = DisallowConversion, template<class> class CheckingPolicy = NoCheck, template<class> class StoragePolicy = DefaultSPStorage, template<class> class ConstnessPolicy = DontPropagateConst>
struct SmartPtrDef
#include <SmartPtr.hpp>

this class added to unify the usage of SmartPtr.

instead of writing SmartPtr<T,OP,CP,KP,SP> write SmartPtrDef<T,OP,CP,KP,SP>::type

template<bool, bool>
struct SolverChoice
#include <Traits.hpp>

Helper struct to make choice.

template<class ScalarType, class MV, class OP>
class SolverManager
#include <XlifeppSolverManager.hpp>

The SolverManager is a templated virtual base class that defines the basic interface that any solver manager will support.

Subclassed by xlifepp::BlockDavidsonSolMgr< ScalarType, MV, OP >, xlifepp::BlockKrylovSchurSolMgr< ScalarType, MV, OP >

template<class K_, class M_>
struct SolverPtrTrait
template<class ScalarType, class MV, class OP>
class SolverUtils
#include <XlifeppSolverUtils.hpp>

xlifepp’s templated, static class providing utilities for the solvers.

This class provides concrete, templated implementations of utilities necessary for the solvers. These utilities include sorting, orthogonalization, projecting/solving local eigensystems, and sanity checking. These are internal utilties, so the user should not alter this class.

class SorSolver : public xlifepp::IterativeSolver
#include <SorSolver.hpp>

Implement Successive Over Relaxation algorithm.

Implement Symmetric Successive Over Relaxation algorithm.

template<class MagnitudeType>
class SortManager
#include <XlifeppSortManager.hpp>

xlifepp’s templated pure virtual class for managing the sorting of approximate eigenvalues computed by the eigensolver.

A concrete implementation of this class is necessary.

Subclassed by xlifepp::BasicSort< MagnitudeType >

struct SortPointsByXAndY
#include <RefElement.hpp>

sort nodes according to coordinates

class Space
#include <Space.hpp>

base class of spaces

Subclassed by xlifepp::FeSpace, xlifepp::ProdSpace, xlifepp::SpSpace, xlifepp::SubSpace

class SpaceInfo
#include <Space.hpp>

structure to store general information of a space

class SpaceMap
#include <Space.hpp>

a class handling the map between dof numbers of the trace of 2 spaces (V1,V2) on an interface the spaces have to be FE spaces on a same mesh with same interpolation ! This class manages a numbering vector, say m, that relates dof numbers of V1 to dof numbers of V2 : i_th dof of V1 = m(i)_th dof of V2 This map allows to transport a TermVector defined on V1 to a TermVector defined on V2

template<typename K>
class SparseMatrix : public std::map<NumPair, K>
#include <SparseMatrix.hpp>

to deal with numeric sparse matrix (say real or complex vector) using (i,j,v) representation

class SpDof : public xlifepp::Dof
#include <Dof.hpp>

to store spectral dof specific informations

class SpectralBasis
#include <SpectralBasis.hpp>

defines an abstract class of global basis functions (not finite element)

Subclassed by xlifepp::SpectralBasisFun, xlifepp::SpectralBasisInt

class SpectralBasisFun : public xlifepp::SpectralBasis
#include <SpectralBasis.hpp>

defines class of global basis functions given by an analytic expression.

It uses the general Function class (defined in utils lib) with function of the form:

T function(const Point&, Parameters&)
T is either a real_t or a complex_t or a Vector<real_t> or a Vector<complex_t>
providing the computation of the n-th basis function at a given point.

For instance, to define the spectral basis a_n sin(n pi x), define the standard c++ function:

real_t sin_n(const Point &p,Parameters& pa = defaultParameters) {
  real_t x=p.x();
  real_t h=pa("h");                    //get the parameter h (user definition)
  number_t n=pa("basis size");         //get the size of the basis
  number_t id=pa("basis index");       //get the index of function to compute
  return sqrt(2/h)*sin(id*pi*x/h);}  //computation
}
and use it as follows:
Parameters p(1,"h");
SpectralBasisFun sinBasis(Omega,Function(sin_n,p),10); //define the set of basis function
real_t s1;
sinBasis.functions(1,Point(0.5),s1); //compute the basis function n=1 at point x=0.5 in S1
Vector<real_t> sn;
sinBasis.functions(Point(0.5),sn);   //compute all the basis functions at point x=0.5 in Sn
class SpectralBasisInt : public xlifepp::SpectralBasis
#include <SpectralBasisInt.hpp>

defines global basis functions given by interpolated functions, say TermVectors

class Spline
#include <spline.hpp>

abstract Spline class type_, subtype_: C2Spline,_CatmullRomSpline, _BSpline, BezierSpline, Nurbs and _SplineInterpolation, _SplineApproximation degree: degree of polynoms used by spline (called spline degree) controlPoints, knots: internal arrays common to any splines but handling different stuff splinePar_: type of spline parametrization (change the derivatives but not the tangent) yps_, ype_: tangent vector at end points (required by some boundary conditions) (1D) bces_, bce_: boundary condition at start point and end point parameterBounds_: real bounds (a,b) of spline parametrization: parametrization are always set on [0,1] but the spline parametrization functions does the mapping s = a + (b-a)t

Subclassed by xlifepp::BSpline, xlifepp::BezierSpline, xlifepp::C2Spline, xlifepp::CatmullRomSpline, xlifepp::Nurbs

class SplineArc : public xlifepp::Curve
#include <geometries1D.hpp>

definition of a spline geometry in R^3

SplineArc constructors are based on a key-value system. Here are the available keys:

  • _vertices: list of control points

  • _spline: spline object

  • _spline_type: type of spline one of _C2Spline, _CatmullRomSpline, _BSpline, _BezierSpline, _Nurbs

  • _spline_subtype: subtype of spline, one of _SplineInterpolation, _SplineApproximation

  • _spline_BC: spline boundary condition, one of _naturalBC, _clampedBC, _periodicBC

  • _degree: degree of spline (default 3)

  • _tension: tension factor for _CatmullRomSpline

  • _spline_parametrization: spline parametrization type, one of _xParametrization, _uniformParametrization,_chordalParametrization, _centripetalParametrization

  • _weights: weights of control points (for _BSpline only)

  • _tangent_0, _tangent_1: tangent vectors at the bounds of the arc (for _clampedBC only)

  • _nnodes: to define the number of nodes on the arc

  • _hsteps: to define the local mesh steps on the bounds

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class SplineSurface : public xlifepp::Surface
#include <geometries2D.hpp>

definition of a SplineSurface geometry in R^3 from a Nurbs object (non uniform rational Bspline) only nurbs are available either approximation nurbs or interpolation nurbs (default when subtype is not specified)

SplineSurface constructors are based on a key-value system. Here are the available keys:

  • _vertices: list of control points

  • _spline: spline object

  • _spline_type: type of spline one of _C2Spline, _CatmullRomSpline, _BSpline, _BezierSpline, _Nurbs

  • _spline_subtype: subtype of spline, one of _SplineInterpolation, _SplineApproximation

  • _spline_BC: spline boundary condition, one of _naturalBC, _clampedBC, _periodicBC

  • _degree: degree of spline (default 3)

  • _nbu: number of control/interpolation points in u-direction (_Nurbs only)

  • _spline_parametrization: spline parametrization type, one of _xParametrization, _uniformParametrization,_chordalParametrization, _centripetalParametrization

  • _weights: weights of control points (for _BSpline only)

  • _nnodes: to define the number of nodes on the arc

  • _hsteps: to define the local mesh steps on the bounds

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class SpSpace : public xlifepp::Space
#include <SpSpace.hpp>

defines general data of a space defined by a set of spectral functions SpSpace class is not exposed to end users

class Sq
class SquareGeo : public xlifepp::Rectangle
#include <geometries2D.hpp>

definition of a square geometry in R^3

SquareGeo constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v4: to define the vertices of the Square, counterclockwise oriented

  • _center: to define the center of the SquareGeo

  • _origin: to define the first vertex of the SquareGeo (same definition as _v1)

  • _length: the length of the SquareGeo

  • _xmin, _xmax, _ymin, _ymax: to define the SquareGeo v1=(xmin, ymin), v2=(xmax, ymin), v4=(xmin, ymax)

  • _nnodes: to define the number of nodes on each edge of the SquareGeo

  • _hsteps: to define the local mesh steps on the vertices of the SquareGeo

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class SsorSolver : public xlifepp::IterativeSolver
template<class ScalarType, class MV, class OP>
class StatusTest
#include <XlifeppStatusTestDecl.hpp>

A pure virtual class for defining the status tests for the xlifepp iterative solvers.

xlifepp::StatusTest is an interface that can be implemented to create convergence tests for all xlifepp solvers. Almost any kind of test can be expressed using this mechanism, including composite tests (see StatusTestCombo).

Subclassed by xlifepp::StatusTestCombo< ScalarType, MV, OP >, xlifepp::StatusTestMaxIters< ScalarType, MV, OP >, xlifepp::StatusTestOutput< ScalarType, MV, OP >, xlifepp::StatusTestResNorm< ScalarType, MV, OP >, xlifepp::StatusTestWithOrdering< ScalarType, MV, OP >

template<class ScalarType, class MV, class OP>
class StatusTestCombo : public xlifepp::StatusTest<ScalarType, MV, OP>
#include <XlifeppStatusTestCombo.hpp>

Status test for forming logical combinations of other status tests.

Test types include StatusTestCombo::_OR, StatusTestCombo::_AND, StatusTestCombo::_SEQOR and StatusTestCombo::_SEQAND. The StatusTestCombo::_OR and StatusTestCombo::_AND tests evaluate all of the tests, in the order they were passed to the StatusTestCombo. The StatusTestCombo::_SEQOR and StatusTestCombo::_SEQAND run only the tests necessary to determine the final outcome, short-circuiting on the first test that conclusively decides the outcome. More formally, StatusTestCombo::_SEQAND runs the tests in the order they were given to the StatusTestCombo class and stops after the first test that evaluates _failed. StatusTestCombo::_SEQOR run the tests in the order they were given to the StatusTestCombo class and stops after the first test that evaluates _passed.

template<class ScalarType, class MV, class OP>
class StatusTestMaxIters : public xlifepp::StatusTest<ScalarType, MV, OP>
#include <XlifeppStatusTestMaxIters.hpp>

A status test for testing the number of iterations.

xlifepp::StatusTestMaxIters will test true when an eigensolver has reached some number of iterations. Specifically, where maxIter is the parameter given to the status tester.

This status test also supports negation, so that it negates the need for a StatusTestMinIters status tester. In this way, all tests on the range of iterations can be constructed through the appropriate use of StatusTestMaxIters and StatusTestCombo.

template<class ScalarType, class MV, class OP>
class StatusTestOutput : public xlifepp::StatusTest<ScalarType, MV, OP>
#include <XlifeppStatusTestOutput.hpp>

A special StatusTest for printing other status tests.

StatusTestOutput is a wrapper around another StatusTest that calls StatusTest::print() on the underlying object on calls to StatusTestOutput::checkStatus(). The frequency and occasion of the printing can be dictated according to some parameters passed to StatusTestOutput::StatusTestOutput().

template<class ScalarType, class MV, class OP>
class StatusTestResNorm : public xlifepp::StatusTest<ScalarType, MV, OP>
#include <XlifeppStatusTestResNorm.hpp>

A status test for testing the norm of the eigenvectors residuals.

StatusTestResNorm was designed to be used as a test for convergence. The tester compares the norms of the residual vectors against a user specified tolerance.

In addition to specifying the tolerance, the user may specify:

template<class ScalarType, class MV, class OP>
class StatusTestWithOrdering : public xlifepp::StatusTest<ScalarType, MV, OP>
#include <XlifeppStatusTestWithOrdering.hpp>

A status test for testing the norm of the eigenvectors residuals along with a set of auxiliary eigenvalues.

The test evaluates to _passed when then the most significant of the eigenvalues all have a residual below a certain threshhold. The purpose of the test is to not only test convergence for some number of eigenvalues, but to test convergence for the correct ones.

In addition to specifying the tolerance, the user may specify:

  • the norm to be used: 2-norm or OrthoManager::norm() or getRitzRes2Norms()

  • the scale: absolute or relative to magnitude of Ritz value

  • the quorum: the number of vectors required for the test to evaluate as _passed.

Finally, the user must specify the xlifepp::SortManager used for deciding significance.

class SuBilinearForm
#include <BilinearForm.hpp>

describes a linear combination of bilinear forms with the same pair of Unknowns.

class SubSpace : public xlifepp::Space
#include <SubSpace.hpp>

defines data related to a ‘subspace’ of a space the subspace may be geometrically supported by a subset of geometrical domain or be a restriction to a boundary of the parent geometrical domain (trace space) or both The SubSpace class is mainly used as a dof numbering object in computation.

SubSpace class is not exposed to end users

Subclassed by xlifepp::FeSubSpace

class SuLinearForm
#include <LinearForm.hpp>

describes a linear combination of linear forms with the same unknown.

class Surface : public xlifepp::Geometry
#include <geometries2D.hpp>

base class for 2D geometries

Subclassed by xlifepp::Ellipse, xlifepp::EllipsoidSidePart, xlifepp::ParametrizedSurface, xlifepp::Polygon, xlifepp::SplineSurface, xlifepp::TrunkSidePart

class SuTermMatrix : public xlifepp::Term
#include <SuTermMatrix.hpp>

handles numerical representation of single unknowns bilinear forms (SuBilinearForm).

Internal class

class SuTermVector : public xlifepp::Term
#include <SuTermVector.hpp>

handles numerical representation of single unknown linear forms (SuLinearForm).

Internal class

class SuTermVectors : public std::vector<SuTermVector>
#include <SuTermVector.hpp>

end user class handling vector of SuTermVector it inherits from std::vector

class SvdElements
template<class ScalarType, class MV, class OP>
class SVQBOrthoManager : public xlifepp::MatOrthoManager<ScalarType, MV, OP>
#include <XlifeppSVQBOrthoManager.hpp>

An implementation of the xlifepp::MatOrthoManager that performs orthogonalization using the SVQB iterative orthogonalization technique described by Stathapoulos and Wu.

This orthogonalization routine, while not returning the upper triangular factors of the popular Gram-Schmidt method, has a communication cost (measured in number of communication calls) that is independent of the number of columns in the basis.

class SymbolicFunction
#include <SymbolicFunction.hpp>

binary node to represent symbolic functions

class SymbolicTermMatrix
#include <SymbolicTermMatrix.hpp>

handles expressions involving xlifepp::TermMatrix’s

xlifepp::SymbolicTermMatrix class is designed to handle any algebraic expression involving some xlifepp::TermMatrix The following symbolic operations are available + - * *scalar /scalar inv conj adj trans Id No real operations on xlifepp::TermMatrix are performed only the product by a xlifepp::TermVector may be performed example: A + trans(K)*inv(M)*K inv(A+B) is not allowed! We use a binary tree to represent such symbolic operation, a node representing an operation on one or two xlifepp::SymbolicTermMatrix The previous example has the following tree representation

                                 (+)
                         |--------|--------|
                      (Id)A               (*)
                                  |--------|-------|
                               (trans)K           (*)
                                          |--------|-------|
                                         (inv)M          (Id)K
The product by a xlifepp::TermVector will produce the xlifepp::TermVector A*X + trans(K)*inv(M)*K*X For instance A*B is not recognized as symbolic because the product of two xlifepp::TermMatrix exists so writing ~A*B or A*~B or ~A*~B will enforce a symbolic representation!
class SymCsStorage : public xlifepp::CsStorage
#include <SymCsStorage.hpp>

child class for row compressed storage of matrix with symmetrty

class SymDenseStorage : public xlifepp::DenseStorage
#include <SymDenseStorage.hpp>

handles dense storage of “symetric” matrix storing the lower “triangular” part row by row the diagonal is stored first, then the strict lower part

class SymSkylineStorage : public xlifepp::SkylineStorage
#include <SymSkylineStorage.hpp>

child class dealing with skyline storage of matrix with symmetry

template<typename T>
class Tabular : public std::vector<T>
class TensorKernel : public xlifepp::Kernel
class Term
#include <Term.hpp>

abstract base class of TermVector and TermMatrix, that are the numerical representations of linear and bilinear forms on spaces.

Subclassed by xlifepp::SuTermMatrix, xlifepp::SuTermVector, xlifepp::TermMatrix, xlifepp::TermVector

class TermMatrix : public xlifepp::Term
#include <TermMatrix.hpp>

end user class handling numerical representation of any bilinear form (BilinearForm).

May be multiple unknowns

class TermVector : public xlifepp::Term
#include <TermVector.hpp>

end user class handling numerical representation of any linear form (LinearForm).

class TermVectors : public std::vector<TermVector>
#include <TermVector.hpp>

end user class handling vector of TermVector it inherits from std::vector

class TestFunction : public xlifepp::Unknown
#include <Unknown.hpp>

end user’s class to manage problem test functions

class Tetrahedron : public xlifepp::Polyhedron
#include <geometries3D.hpp>

definition of a tetrahedron geometry in R^3

Tetrahedron constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3, _v4: to define the vertices of the tetrahedron

  • _nnodes: to define the number of nodes on each edge of the Tetrahedron

  • _hsteps: to define the local mesh steps on the vertices of the Tetrahedron

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

class ThreadData
#include <ThreadData.hpp>

class handling some possible shared data in omp computation(normal vectors, element, dof, …)

class Timer
#include <Timer.hpp>

cpu time and elapsed time management class

class Trace
#include <Trace.hpp>

Trace object allows to keep trace of runtime, as a string list, of the hierarchy of functions used up to now.

class Transformation
#include <Transformation.hpp>

handles mesh transformations

Subclassed by xlifepp::Reflection2d, xlifepp::Reflection3d, xlifepp::Rotation2d, xlifepp::Rotation3d, xlifepp::Scaling, xlifepp::Translation

class Translation : public xlifepp::Transformation
#include <Transformation.hpp>

representation of a translation of vector u

template<typename T>
class TrapzInterval
#include <quadratureMethods.hpp>

adaptative trapeze method from a function and a given tolerance eps compute int_[a,b] f(x)dx using trapeze method I1=0.5*(b-a)*[f(a)+f(b)] and the modified trapeze method I2=0.25*(b-a)*[f(a)+2*f(0.5*(a+b))+f(b)] error estimator: |I1-I2|< 3*eps*(b-a)

class Trgeo
class Triangle : public xlifepp::Polygon
#include <geometries2D.hpp>

definition of a triangular geometry in R^3

Triangle constructors are based on a key-value system. Here are the available keys:

  • _v1, _v2, _v3: to define the vertices of the triangle, counterclockwise oriented

  • _nnodes: to define the number of nodes on each edge of the Triangle

  • _hsteps: to define the local mesh steps on the vertices of the Triangle

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

template<typename _MatrixType>
class Tridiagonalization
#include <Tridiagonalization.hpp>

Tridiagonal decomposition of a selfadjoint matrix.

This class performs a tridiagonal decomposition of a selfadjoint matrix \( A \) such that: \( A = Q T Q^* \) where \( Q \) is unitary and \( T \) a real symmetric tridiagonal matrix.

A tridiagonal matrix is a matrix which has nonzero elements only on the main diagonal and the first diagonal below and above it. The Hessenberg decomposition of a selfadjoint matrix is in fact a tridiagonal decomposition. This class is used in SelfAdjointEigenSolver to compute the eigenvalues and eigenvectors of a selfadjoint matrix.

Call the function compute() to compute the tridiagonal decomposition of a given matrix. Alternatively, you can use the Tridiagonalization(const MatrixType&) constructor which computes the tridiagonal Schur decomposition at construction time. Once the decomposition is computed, you can use the matrixQ() and matrixT() functions to retrieve the matrices Q and T in the decomposition.

Template Parameters:

_MatrixType – the type of the matrix of which we are computing the tridiagonal decomposition; this is expected to be an instantiation of the Matrix class template.

template<class K = number_t>
class Triplet
struct TrueType
class Trunk : public xlifepp::Volume
#include <geometries3D.hpp>

A Trunk is a volume defined by a cylinder or a trunk of cone.

A cylinder is a trunk of a cylinder !!! To define it, we need a basis, a translation and a homothety to build the other basis. To make it more simple, we will need a basis, the first point of the other basis (determining the translation and the center of the homothety), and a scale factor. This “first point” of a basis is defined as basis.p(1) : it is the first vertex for a polygon, but the center for an ellipse or a disk

Trunk constructors are based on a key-value system. Here are the available keys:

  • _basis: to define the geometrical basis of a Trunk (a child object of Surface)

  • _origin: the origin point of the second basis (the first vertex of a Polygon, but the center of an Ellipse or a Disk)

  • _scale: the scale factor to define the second basis

  • _center1, _center2: to define centers of bases when they are elliptical

  • _v1, _v2: to define apogees of the basis when it is elliptical

  • _nnodes: to define the number of nodes on the edges of the Trunk

  • _hsteps: to define the local mesh steps on build points of the Trunk

  • _domain_name: to define the domain name

  • _side_names: to define the side names

  • _varnames: to define the variable names for print purpose

Subclassed by xlifepp::Cone, xlifepp::Cylinder, xlifepp::RevTrunk

class TrunkSidePart : public xlifepp::Surface
#include <geometries3D.hpp>

definition of a part of trunk side in R^3 (lateral surface) Trunk is defined by its basis_ (B), center1 (C), origin_(O) and scale factor (s) of the top part of side trunk is defined from a Trunk object and either 2 points of basis boundary or two angles if elliptical trunk General parametrisation of a side part ( g(u) parametrization of the basis boundary) P(u,v) = (1-v+sv)g(u) + v(O -sC) no construction via key parameter, no geometric transformation available, no mesh (p_,n_,h_ not managed) not a user geometry for the moment !!!

template<typename OrdinalType, typename ScalarType>
class UMFPACK
#include <UmfPack.hpp>

This class plays a role of wrapper of Umfpack library.

And only necessary functions are provided here. However, we we can easily extend this class with new methods wrapping functions of Umfpack library. Because Umfpack only works with int/double, (e.x umfpack_di_symbolic, etc) or long/double, (e.x umfpack_dl_symbolic) Class template specialization approach seems to be the best!

template<typename MatrixType>
class UmfPackLU
#include <UmfPackLU.hpp>

Wrapper class of Umfpack.

class UmfPackSolver
#include <UmfPackSolver.hpp>

This class solve AX=B with Umfpack library and it provides a same interface as iterative solvers User can invoke this solver with the operator()

template<class ScalarType, class MV>
class UndefinedMultiVecTraits
#include <XlifeppMultiVecTraits.hpp>

Used by MultiVecTraits to report lack of a specialization.

MultiVecTraits<ScalarType, MV> uses this struct to produce a compile-time error when no specialization exists for the scalar type ScalarType and multivector type MV.

template<class ScalarType, class MV, class OP>
struct UndefinedOperatorTraits
#include <XlifeppOperatorTraits.hpp>

This is the default struct used by OperatorTraits<ScalarType, MV, OP> class to produce a compile time error when the specialization does not exist for operator type OP.

template<class T>
struct UndefinedUMFPACKRoutine
class Unknown
#include <Unknown.hpp>

end user’s class to manage problem unknowns

Subclassed by xlifepp::ComponentOfUnknown, xlifepp::ComponentsOfUnknown, xlifepp::TestFunction

class UserBilinearForm : public xlifepp::BasicBilinearForm
#include <BilinearForm.hpp>

describes a bilinear form given by a user function computing elementary matrix

  • bffun_ : user function void uf(BFComputationData&, Parameters&)

class Value
#include <Value.hpp>

to encapsulate any kind of users value (scalar, Vector or Matrix)

template<class ScalarType>
struct ValueEigenSolver
#include <XlifeppEigenTypes.hpp>

This struct is used for storing eigenvalues and Ritz values, as a pair of real values.

template<typename K>
class Vector : public std::vector<K>
#include <Vector.hpp>

to deal with numeric vector (say real or complex vector).

may be used for vector of vectors but restricted usage

Subclassed by xlifepp::VectorEigenDense< K >

template<typename K>
struct VectorAlgorithmSelector
#include <VectorEigenDense.hpp>

Trait to select corresponding algorithm.

template<typename K>
class VectorEigenDense : public xlifepp::Vector<K>
#include <VectorEigenDense.hpp>

Class (row) dense vector to deal with direct eigen problem solver.

This class provides some basic methods to support calculation of eigen problem dense matrix.

TODO Improve performance by reusing vector data

Template Parameters:

Type – of scalar (real_t, complex_t)

class VectorEntry
#include <VectorEntry.hpp>

small class handling current types of Vector shadowing template parameter of Vector

template<typename Vec>
struct VectorTrait
#include <Traits.hpp>

Trait struct to determine the value type for vector f values.

class Volume : public xlifepp::Geometry
#include <geometries3D.hpp>

base class for 3D geometries

Subclassed by xlifepp::Ellipsoid, xlifepp::Polyhedron, xlifepp::Trunk

namespace internalEigenSolver

namespace dedicated to internal eigensolver of XLiFE++

Functions

template<typename MatrixType, typename VectorsType, typename CoeffsType>
void applyBlockHouseholderOnTheLeft(MatrixType &mat, VectorsType &vectors, const CoeffsType &hCoeffs)
template<typename MatrixType>
MatrixType directSwapping(MatrixType &matT, unsigned int p, unsigned int q, real_t gamma)
template<typename MatrixType>
void doComputeEigenvectorsComplexSolverInPlace(const real_t matrixnorm, const MatrixType &schurT, const MatrixType &schurU, MatrixType &eigVec)
template<typename MatrixType>
void doComputeEigenvectorsRealSolverInPlace(const real_t matrixnorm, const MatrixType &schurT, const MatrixType &schurU, MatrixType &eigVec)
template<typename MatrixQR, typename HCoeffs>
void householderQRinplaceBlocked(MatrixQR &mat, HCoeffs &hCoeffs, Index maxBlockSize = 32)
template<typename MatrixQR, typename HCoeffs>
void householderQRinplaceUnblocked(MatrixQR &mat, HCoeffs &hCoeffs)
template<typename TriangularFactorType, typename VectorsType, typename CoeffsType>
void makeBlockHouseholderTriangularFactor(TriangularFactorType &triFactor, VectorsType &vectors, const CoeffsType &hCoeffs)
inline void printOutDebugInfoEigenProblem(const string_t &nameOfClass, const string_t &message)
template<typename MatrixType>
void swapComplexSchurInPlace(MatrixType &matrixT, const std::vector<int> &order)
template<typename MatrixType>
void swapComplexSchurInPlace(MatrixType &matrixT, MatrixType &matrixQ, const std::vector<int> &order)
template<typename MatrixType>
void swapRealSchurInPlace(MatrixType &matrixT, MatrixType &matrixQ, unsigned int ifst, unsigned int ilst)

Given the quasi-triangular matrix T and orthogonal matrix Q obtained from the real Schur decomposition, this function reorders the eigenvalues appearing on the (block) diagonal of matrix T The diagonal element of block of T with row index ifst is moved to row ilst.

This is implemented from “On Swapping Diagonal Blocks in Real Schur Form”

Parameters:
  • matrixT[inout] quasi-triangular matrix of real Schur decomposition

  • matrixQ[inout] orthogonal of real Schur decomposition

  • ifst[in] index of row needs moving

  • ilst[in] index of destination row

inline void testErrorEigenProblem(bool condition, const string_t &s)
inline void testErrorEigenProblemMultVec(bool condition, const string_t &s)
inline void testWarningEigenProblem(bool condition, const string_t &s)
template<typename MatrixType, typename DiagonalType, typename SubDiagonalType>
void tridiagonalizationInplace(MatrixType &mat, DiagonalType &diag, SubDiagonalType &subdiag, bool extractQ)

Performs a full tridiagonalization in place.

Computes the tridiagonal decomposition of the selfadjoint matrix mat in place such that \( mat = Q T Q^* \) where \( Q \) is unitary and \( T \) a real symmetric tridiagonal matrix.

The tridiagonal matrix T is passed to the output parameters diag and subdiag. If extractQ is true, then the orthogonal matrix Q is passed to mat. Otherwise the lower part of the matrix mat is destroyed.

The vectors diag and subdiag are not resized. The function assumes that they are already of the correct size. The length of the vector diag should equal the number of rows in mat, and the length of the vector subdiag should be one left.

See also

class Tridiagonalization

Parameters:
  • mat[inout] On input, the selfadjoint matrix whose tridiagonal decomposition is to be computed. Only the lower triangular part referenced. The rest is left unchanged. On output, the orthogonal matrix Q in the decomposition if extractQ is true.

  • diag[out] The diagonal of the tridiagonal matrix T in the decomposition.

  • subdiag[out] The subdiagonal of the tridiagonal matrix T in the decomposition.

  • extractQ[in] If true, the orthogonal matrix Q in the decomposition is computed and stored in mat.

Note

Currently, it requires two temporary vectors to hold the intermediate Householder coefficients, and to reconstruct the matrix Q from the Householder reflectors.

template<typename MatrixType, typename CoeffVectorType>
void tridiagonalizationInplace(MatrixType &matA, CoeffVectorType &hCoeffs)

Performs a tridiagonal decomposition of the selfadjoint matrix matA in-place.

On output, the tridiagonal selfadjoint matrix T is stored in the diagonal and lower sub-diagonal of the matrix matA. The unitary matrix Q is represented in a compact way as a product of Householder reflectors \( H_i \) such that: \( Q = H_{N-1} \ldots H_1 H_0 \). The Householder reflectors are defined as \( H_i = (I - h_i v_i v_i^T) \) where \( h_i = hCoeffs[i]\) is the \( i \)th Householder coefficient and \( v_i \) is the Householder vector defined by \( v_i = [ 0, \ldots, 0, 1, matA(i+2,i), \ldots, matA(N-1,i) ]^T \).

Implemented from Golub’s “Matrix Computations”, algorithm 8.3.1.

Parameters:
  • matA[inout] On input the selfadjoint matrix. Only the lower triangular part is referenced. On output, the strict upper part is left unchanged, and the lower triangular part represents the T and Q matrices in packed format has detailed below.

  • hCoeffs[out] returned Householder coefficients (see below)

template<typename MatrixType, typename CoeffVectorType>
void tridiagonalizationUpperInplace(MatrixType &matA, CoeffVectorType &hCoeffs)
template<typename MatrixType, bool IsComplex>
struct ComplexSchurReduceToHessenberg
template<typename MatrixType, bool IsComplex>
struct ComputeSchurForm
struct EigenSolverVerbose
#include <EigenTestError.hpp>

struct to handle verbose level

template<typename MatrixType, bool IsComplex>
struct EigenValueComputation
template<typename MatrixType, bool IsComplex>
struct EigenVectorComputation
template<typename MatrixType, bool IsComplex>
struct SortSchurForm
namespace iomel

namespace dedicated to management of Melina mesh format

Functions

number_t checkPointNumbers(const vector<vector<number_t>> &elt_wise_numbers, const pair<number_t, number_t> &mM)

checkPointNumbers

void domainRead(StringInput &mi, const char kindom, const number_t e1, const char code, MeshDomain *meshdom_p, const vector<GeomElement*> &elements, number_t &no_sideElt)

build domain component list from input stream (reads domain list of elements/components)

void domainReadComponents(StringInput &mi, const number_t e1, const char f, const vector<GeomElement*> &elements, vector<GeomElement*> &domainElements, number_t &no_sideElt)

reads the component list defining a boundary domain or point-wise domain

void domainReadElements(StringInput &mi, const number_t e1, const char nxc, const vector<GeomElement*> &elements, vector<GeomElement*> &domainElements)

reads the element list defining an element domain

char domainReadKind(StringInput &mi, number_t &e1, char &code, dimen_t &dimdom)

find domain kind from input stream: list of elements (E) or components (C) Also returns the number of the first element e1, and the domain dimension in the components case (unset otherwise).

number_t loadDescription(StringInput &mi, dimen_t &spaceDim)

loads mesh description from input file

Syntax: < Description du maillage ^ Mesh Description > < Variables d’’espace ^ Space variables > : &S1 [&S2 [&S3]] < Nombre d’’elements ^ Number of elements > : &I

void loadDomain(StringInput &mi, const Mesh &msh, number_t &no_sideElt, vector<GeomDomain*> &domains_)

loads a domain description from input file

GeomElement *loadGeomElement(ifstream &ifs, const Mesh *msh, const RefElement *r_e, dimen_t spaceDim, vector<real_t> &elt_coords, vector<number_t> &elt_numbers, const number_t no_elt, pair<number_t, number_t> &minmax)

loads a Geom Element of mesh from input file

string loadTitle(StringInput &mi)

loadTitle loads mesh Title from input file.

Syntax: Titre/Title “title as a string” or Titre/Title &I (followed by) “title as &I lines of input”

void Points_and_Elements(const number_t nb_points, const vector<vector<real_t>> &elt_wise_coords, const vector<vector<number_t>> &elt_wise_numbers, dimen_t spaceDim, vector<Point> &Nodes, vector<GeomElement*> &Elements)

defines mesh nodes and elements_ members: create Nodes vector and set Points in Elements from the number of points in Mesh and element-wise arrays coords and numbers

dimen_t readVarNames(StringInput &mi)

Reads variable names from input mesh file and returns the space dimension.

void updateGeomElement(GeomElement *ge_p, vector<number_t>::const_iterator gnum_el, const number_t nbPts, const RefElement *re_p, vector<Point> &nodes)

Utilitary function to update MeshElement part of the GeomElement ge_p.

Variables

std::pair<string_t, ShapeType> shapeList[] = {std::make_pair("se", _segment), std::make_pair("tr", _triangle), std::make_pair("qu", _quadrangle), std::make_pair("te", _tetrahedron), std::make_pair("he", _hexahedron), std::make_pair("pr", _prism)}

Strings corresponding to the ShapeType identifiers (defined in config.hpp) taken into account by Melina format.

class ElementBlock
class StringInput
#include <StringInput.hpp>

This class is used by the function Mesh::loadMelina to read data from a file containing a mesh in Melina format.

namespace subdivision

namespace dedicated to tools of “subdivision” mesh generator

Typedefs

typedef std::map<pair_nn, number_t> map_pair_num
typedef std::map<set_n, number_t> map_set_num
typedef std::map<set_n, pair_nn> map_set_pair
typedef std::map<set_n, pair_in> map_set_pair_in
typedef std::map<set_n, std::vector<pair_nn>> map_set_vec
typedef std::pair<int_t, number_t> pair_in
typedef std::pair<number_t, number_t> pair_nn
typedef Point (SubdivisionMesh::* PtCompFun)(const refnum_t localcod, const real_t *coef, const std::vector<Point> &VP) const
typedef number_t refnum_t
typedef std::set<number_t> set_n
typedef Vector<real_t> Vect

Enums

enum GeomEndShape

Values:

enumerator None
enumerator Flat
enumerator Cone
enumerator Ellipsoid
enumerator Sphere
enum topologicalArea

Values:

enumerator boundaryArea
enumerator interfaceArea
enumerator subdomainArea

Functions

Point barycenter(const real_t *coef, const std::vector<Point> &VP)

Computation of the barycenter of the points stored in the vector VP, with associated coefficients stored in coef.

barycenter of n points

Point barycenter(const std::vector<real_t> &coef, const std::vector<Point> &VP)

Computation of the barycenter of the points stored in the vector VP, with associated coefficients stored in coefn as std::vector.

int DECHOL(const vector<vector<real_t>> &A, int n, vector<vector<real_t>> &L, real_t eps)
void DRCHOL(const vector<vector<real_t>> &L, int n, vector<vector<real_t>> &B, int m)
string fmtTeX(const string &strorig)

TeX format.

This function returns a copy of strorig where some characters have been replaced by their equivalent in typewriter font (tt) in order to allow compilation by TeX.

void gsubstitute(string &str, const char *that, const char *bythat)

Global substitution.

This function substitutes each occurrence of substring that in str by the string bythat.

void IMP(const vector<vector<number_t>> &comesh, const vector<pair<short, short>> &rkEV, const vector<number_t> &rkUnk, const vector<number_t> &rkData)
Point projOnPlane(const Point &P, const Point &A, const Vect &U)

Projection of the point P onto the plane defined by the point A and the normal unitary vector U.

projection onto the plane defined by the point A and the normal unitary vector U

Point projOnSph(const real_t *coef, const std::vector<Point> &VP, const real_t Radius)

Projection onto the sphere S of the barycenter of the points stored in VP with associated coefficients stored in coef.

projection onto a sphere of radius Radius of the barycenter of n points

The points in VP are assumed to be lying on the sphere S centered at the origin, with the radius Radius.

Matrix<real_t> rotationMatrix(real_t theta, dimen_t axis)

Apply rotations defined in rots and the translation of vector U to each point of Pt.

Point rotInPlane(const Point &P, const real_t ct, const real_t st, const Point &A, const Vect &U)

Rotation of the point P by the angle theta (given by their cosine ct and sine st) around the axis defined by the point A and the unitary vector U in the plane defined by the point P and the normal unitary vector U.

rotation of the current point around the axis defined by the point A and the unitary vector U, in the plane orthogonal to U

Point rotOnSph(const Point &P1, const Point &P2, const int k, const int n)

Rotation of P1 by the angle alpha = k/n * ang(P1,O,P2) in the plane (P1,O,P2).

rotation of P1 by the angle k/n * ang(P1, O, P2)

P1 and P2 are assumed to be lying onto the sphere, centered at the origin 0.

Point translate(const Point &P, const real_t lambda, const Vect &U)

Translation of the point P by the vector lambda*U.

translation of the current point by the vector lambda*U

template<class T_>
class CartesianFig : public xlifepp::subdivision::GeomFigure
template<class T_>
class CartesianMesh : public xlifepp::subdivision::GeomFigureMesh<T_>
class DefaultGeometry : public xlifepp::subdivision::PatchGeometry

Subclassed by xlifepp::subdivision::SurfPlane

struct DivideByZero
#include <PatchGeometry.hpp>

Structure used to transmit information in case an exception is thrown.

class GeomFigure

Subclassed by xlifepp::subdivision::CartesianFig< Hexahedron >, xlifepp::subdivision::CartesianFig< Quadrangle >, xlifepp::subdivision::Simplex< Tetrahedron >, xlifepp::subdivision::Simplex< Triangle >, xlifepp::subdivision::CartesianFig< T_ >, xlifepp::subdivision::Simplex< T_ >

template<class T_>
class GeomFigureMesh : public xlifepp::subdivision::SubdivisionMesh

Subclassed by xlifepp::subdivision::CartesianMesh< T_ >, xlifepp::subdivision::SimplexMesh< T_ >

class Hexahedron : public xlifepp::subdivision::CartesianFig<Hexahedron>
class HexahedronMesh : public xlifepp::subdivision::CartesianMesh<Hexahedron>

Subclassed by xlifepp::subdivision::VolMeshHexCone, xlifepp::subdivision::VolMeshHexCube, xlifepp::subdivision::VolMeshHexCylinder

struct HOV_error
#include <GeomFigure.hpp>

Structure used to transmit information in case an exception is thrown.

Used in GeomFigure. Type referenced by GeomFigureMesh.

class PatchGeometry
#include <PatchGeometry.hpp>

abstract base class that defines the geometrical information associated to the patches of the domain.

Subclassed by xlifepp::subdivision::DefaultGeometry, xlifepp::subdivision::SurfRevolution

class Quadrangle : public xlifepp::subdivision::CartesianFig<Quadrangle>
class QuadrangleMesh : public xlifepp::subdivision::CartesianMesh<Quadrangle>
#include <QuadrangleMesh.hpp>

abstract class that holds a mesh of quadrangles built by successive subdivisions of an initial elementary mesh consisting of several quadrangles.

Subclassed by xlifepp::subdivision::SurfMeshQuaCone, xlifepp::subdivision::SurfMeshQuaCube, xlifepp::subdivision::SurfMeshQuaCylinder, xlifepp::subdivision::SurfMeshQuaDisk, xlifepp::subdivision::SurfMeshQuaSet

struct ShapeInfo
template<class T_>
class Simplex : public xlifepp::subdivision::GeomFigure
template<class T_>
class SimplexMesh : public xlifepp::subdivision::GeomFigureMesh<T_>
class SubdivisionMesh

Subclassed by xlifepp::subdivision::GeomFigureMesh< Hexahedron >, xlifepp::subdivision::GeomFigureMesh< Quadrangle >, xlifepp::subdivision::GeomFigureMesh< Tetrahedron >, xlifepp::subdivision::GeomFigureMesh< Triangle >, xlifepp::subdivision::GeomFigureMesh< T_ >

class SurfCone : public xlifepp::subdivision::SurfRevolution
class SurfCylinder : public xlifepp::subdivision::SurfRevolution
class SurfEllipsoid : public xlifepp::subdivision::SurfRevolution
class SurfMeshQuaCone : public xlifepp::subdivision::QuadrangleMesh
class SurfMeshQuaCube : public xlifepp::subdivision::QuadrangleMesh
class SurfMeshQuaCylinder : public xlifepp::subdivision::QuadrangleMesh
class SurfMeshQuaDisk : public xlifepp::subdivision::QuadrangleMesh
class SurfMeshQuaSet : public xlifepp::subdivision::QuadrangleMesh
class SurfMeshTriCone : public xlifepp::subdivision::TriangleMesh
class SurfMeshTriCylinder : public xlifepp::subdivision::TriangleMesh
class SurfMeshTriDisk : public xlifepp::subdivision::TriangleMesh
class SurfMeshTriSet : public xlifepp::subdivision::TriangleMesh
#include <SurfMeshTriSet.hpp>

This class allows the construction of a surfacic mesh made of triangles.

It is built by successive subdivisions of an initial elementary mesh consisting of a set of triangles given by the user.

class SurfMeshTriSphere : public xlifepp::subdivision::TriangleMesh
class SurfPlane : public xlifepp::subdivision::DefaultGeometry
#include <DefaultGeometry.hpp>

class that defines the shape of a plane surface on the boundary or inside (interface) of a 3D domain.

class SurfRevolution : public xlifepp::subdivision::PatchGeometry

Subclassed by xlifepp::subdivision::SurfCone, xlifepp::subdivision::SurfCylinder, xlifepp::subdivision::SurfEllipsoid, xlifepp::subdivision::SurfSphere

class SurfSphere : public xlifepp::subdivision::SurfRevolution
class Tetrahedron : public xlifepp::subdivision::Simplex<Tetrahedron>
class TetrahedronMesh : public xlifepp::subdivision::SimplexMesh<Tetrahedron>

Subclassed by xlifepp::subdivision::VolMeshTetCone, xlifepp::subdivision::VolMeshTetCube, xlifepp::subdivision::VolMeshTetCylinder, xlifepp::subdivision::VolMeshTetSphere

class TeXPolygon
class TopoGeom
class Triangle : public xlifepp::subdivision::Simplex<Triangle>
class TriangleMesh : public xlifepp::subdivision::SimplexMesh<Triangle>

Subclassed by xlifepp::subdivision::SurfMeshTriCone, xlifepp::subdivision::SurfMeshTriCylinder, xlifepp::subdivision::SurfMeshTriDisk, xlifepp::subdivision::SurfMeshTriSet, xlifepp::subdivision::SurfMeshTriSphere

class Vertex
class VolMeshHexCone : public xlifepp::subdivision::HexahedronMesh
class VolMeshHexCube : public xlifepp::subdivision::HexahedronMesh
class VolMeshHexCylinder : public xlifepp::subdivision::HexahedronMesh
class VolMeshTetCone : public xlifepp::subdivision::TetrahedronMesh
class VolMeshTetCube : public xlifepp::subdivision::TetrahedronMesh
class VolMeshTetCylinder : public xlifepp::subdivision::TetrahedronMesh
class VolMeshTetSphere : public xlifepp::subdivision::TetrahedronMesh