![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Laplace-domain transient level-to-level transform V(s,n,m) of a piecewise level-dependent QBD, the port of matlab/src/solvers/MAM/mam_transient2.m (finite, closed at a top level) and mam_transient2_open.m (the last regime repeating to infinity). More...
#include <algorithm>#include <complex>#include <cstddef>#include <vector>#include "line/num/complex_number.h"#include "line/util/error.h"#include "line/util/linalg.h"#include "line/util/lu.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::mam::CQbdFundMat |
| G and R of a QBD whose local block is complex. More... | |
| struct | line::mam::TransientQbd |
| The piecewise QBD blocks, 1-based exactly as the reference's cell arrays. More... | |
Namespaces | |
| namespace | line |
| namespace | line::mam |
Typedefs | |
| using | line::mam::CMat = Matrix<Complex> |
Functions | |
| CQbdFundMat | line::mam::qbd_fundmat_laplace (const CMat &B, const CMat &L, const CMat &F, double precision=1e-14, unsigned maxNumIt=50) |
| Port of qbd_fundmat.m at complex argument: cyclic reduction (Bini-Meini logarithmic reduction) on the raw level blocks, with R recovered from G. | |
| TransientQbd | line::mam::make_transient_qbd (const std::vector< CMat > &B, const std::vector< CMat > &L, const std::vector< CMat > &F, const std::vector< CMat > &Lv, const std::vector< long > &T) |
| Build the 1-based padded form from plain 0-based vectors. | |
| CMat | line::mam::mam_transient2_open (const TransientQbd &q, long n, long m, const Complex &s) |
| V(s,n,m) for an OPEN piecewise QBD, the port of mam_transient2_open.m. | |
| CMat | line::mam::mam_transient2 (const TransientQbd &q, long n, long m, const Complex &s) |
| V(s,n,m) for a FINITE piecewise QBD, the port of mam_transient2.m. | |
Laplace-domain transient level-to-level transform V(s,n,m) of a piecewise level-dependent QBD, the port of matlab/src/solvers/MAM/mam_transient2.m (finite, closed at a top level) and mam_transient2_open.m (the last regime repeating to infinity).
V(s,n,m) is the Laplace transform, at complex argument s, of the transient transition-probability matrix from level n to level m. The construction follows the Horvath et al. formulation the reference is ported from: per regime, the fundamental matrices G and R of the shifted blocks (L - sI) are computed in both directions (up and down), the boundary levels are linked by the "SY / SYh" backward and forward recursions, the threshold-to-threshold transforms SV are assembled, and a level strictly inside a regime is reached by interpolating between its two enclosing thresholds with the R matrices.
INDEXING. The block cell arrays are indexed by regime and are kept 1-based here, exactly as in the reference, because the recursions mix k, k+1 and k-1 with the threshold vector T and every off-by-one is silent – it returns a transform of the wrong level rather than failing. The accessors B1, L1, F1, Lv1 and T1 take the reference's own index.
ARITHMETIC. Complex double only. The blocks are shifted by -sI at a complex quadrature node, so G, R and every intermediate are complex; see line/num/complex_number.h for why the generic linear algebra is available at that element type.
Definition in file mam_transient2.h.