LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
mam_transient2.h File Reference

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"
Include dependency graph for mam_transient2.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.

Detailed Description

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.