![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The waiting room outside a capped region, as fluid coordinates. More...
#include <line/solvers/fluid/fluid_dae.h>
Public Attributes | |
| std::size_t | n = 0 |
| std::vector< std::size_t > | region |
| std::vector< std::size_t > | klass |
| per staging coordinate | |
| std::vector< bool > | adm |
| per event: an admission? | |
| std::vector< std::size_t > | adm_region |
| std::vector< std::size_t > | adm_stage |
| std::vector< std::vector< bool > > | gated_by |
| (ncon x n) which rows gate which room | |
| Matrix< double > | Dn |
| Matrix< double > | Dp |
| negative and positive parts of D | |
The waiting room outside a capped region, as fluid coordinates.
WHY THE CONSTRAINT ALONE IS NOT ENOUGH. Throttling a region's admission events does hold its population at the cap, but it holds it by slowing the UPSTREAM STATION'S COMPLETIONS – an admission event IS that station finishing a job – so blocked mass piles up at a station it has already finished being served by. Where that station is a delay the error is visible as a broken Little's law. A waiting queue means the job COMPLETES upstream service and then waits; it is somewhere else, and the model needs somewhere else to put it.
Each region gains one coordinate per class, and every admission splits in two: upstream -> staging at the nominal rate, so the upstream station empties exactly as it would with no region; staging -> region at theta_f * s_{f,c}, the throttled leg. The two jumps sum to the original, so only where the mass rests changes.
ONE THROTTLE PER REGION, hence one binding cap per region: a region has a single admission control – how fast its queue drains – so it can satisfy exactly one equality.
Definition at line 544 of file fluid_dae.h.
| std::vector<bool> line::fluid::FluidDaeStaging::adm |
per event: an admission?
Definition at line 547 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_extend(), line::fluid::fluid_dae_legs(), and line::fluid::fluid_dae_staging().
| std::vector<std::size_t> line::fluid::FluidDaeStaging::adm_region |
Definition at line 548 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_staging().
| std::vector<std::size_t> line::fluid::FluidDaeStaging::adm_stage |
Definition at line 548 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_extend(), line::fluid::fluid_dae_legs(), and line::fluid::fluid_dae_staging().
| Matrix<double> line::fluid::FluidDaeStaging::Dn |
Definition at line 550 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_staging().
| Matrix<double> line::fluid::FluidDaeStaging::Dp |
negative and positive parts of D
Definition at line 550 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_staging().
| std::vector<std::vector<bool> > line::fluid::FluidDaeStaging::gated_by |
(ncon x n) which rows gate which room
Definition at line 549 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_integrate_hybrid(), line::fluid::fluid_dae_legs(), line::fluid::fluid_dae_staging(), and line::fluid::solver_fluid_dae().
| std::vector<std::size_t> line::fluid::FluidDaeStaging::klass |
per staging coordinate
Definition at line 546 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_conservation(), and line::fluid::fluid_dae_staging().
| std::size_t line::fluid::FluidDaeStaging::n = 0 |
Definition at line 545 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_conservation(), line::fluid::fluid_dae_extend(), line::fluid::fluid_dae_hold_multipliers(), line::fluid::fluid_dae_integrate_hybrid(), line::fluid::fluid_dae_legs(), line::fluid::fluid_dae_staging(), line::fluid::FluidDaeSystem::nstaging(), and line::fluid::solver_fluid_dae().
| std::vector<std::size_t> line::fluid::FluidDaeStaging::region |
Definition at line 546 of file fluid_dae.h.
Referenced by line::fluid::fluid_dae_extend(), and line::fluid::fluid_dae_staging().