AntHocNet 2.0.0
Paper-faithful ant-colony ad hoc routing: the shared core and its adapters
Loading...
Searching...
No Matches
sim.h File Reference
#include <cstdint>
#include <deque>
#include <functional>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <string>
#include <vector>
#include "anthocnet/core/ant_router_logic.h"
#include "anthocnet/core/config.h"
#include "anthocnet/core/ports.h"

Go to the source code of this file.

Classes

class  ahn_web::SplitMix64
 SplitMix64: tiny, portable, and bit-identical on every platform (integer arithmetic only; the double is an exact 53-bit scaling). More...
 
struct  ahn_web::Vec3
 A position in metres (z = altitude; 0 on planar worlds). More...
 
struct  ahn_web::Leg
 One straight leg of a node's trajectory: p0 at t0 to p1 at t1. More...
 
struct  ahn_web::Mobility
 A node's mobility model and its parameters. More...
 
struct  ahn_web::LogEvent
 One entry of the event log (see Ev for what each field means per kind). More...
 
struct  ahn_web::Flow
 A constant-bit-rate data flow and its running totals. More...
 
class  ahn_web::Node
 One AntHocNet node: the core logic plus the adapter state around it. More...
 
class  ahn_web::World
 The whole simulation: nodes, radio, mobility, traffic and the event queue. More...
 

Namespaces

namespace  ahn_web
 Built-in teaching scenarios: one per network family, shaped like the repo's presets but scaled down to what reads well on a screen.
 

Enumerations

enum class  ahn_web::MobilityKind {
  ahn_web::Static , ahn_web::RandomWaypoint , ahn_web::GaussMarkov , ahn_web::Manhattan ,
  ahn_web::Orbit
}
 How a node moves. Values are part of the JS API (setMobility's kind). More...
 
enum class  ahn_web::ChannelKind { ahn_web::Disk , ahn_web::Urban , ahn_web::Isl }
 Which link rule the teaching radio uses. More...
 
enum class  ahn_web::Ev : int {
  ahn_web::TxAnt = 1 , ahn_web::RxAnt = 2 , ahn_web::TxData = 3 , ahn_web::Deliver = 4 ,
  ahn_web::Drop = 5 , ahn_web::RouteAdd = 6 , ahn_web::RouteDel = 7 , ahn_web::Queue = 8 ,
  ahn_web::TxFail = 9 , ahn_web::NodeDown = 10 , ahn_web::NodeUp = 11
}
 Event kinds of the log the front end animates and the parity test diffs. More...
 
enum class  ahn_web::DropReason : int {
  ahn_web::Ttl = 1 , ahn_web::QueueTimeout = 2 , ahn_web::HoldCap = 3 , ahn_web::RepairDiscard = 4 ,
  ahn_web::NodeOff = 5
}
 Why a data packet was lost (the peer field of an Ev::Drop event). More...
 

Functions

double ahn_web::detSin (double x)
 sin / cos from arithmetic only (range reduction + Taylor series), so the native and WASM builds compute bit-identical orbits: libm's transcendental functions are not guaranteed to round the same on both.
 
double ahn_web::detCos (double x)
 
Vec3 ahn_web::orbitPosition (const Mobility &m, const Vec3 &centre, double t)
 Where an Orbit puts a node at time t (centre = the field's centre, z = 0).