18#include <janus/core/JanusConcepts.hpp>
19#include <janus/core/JanusTypes.hpp>
39using janus::JanusMatrix;
40using janus::JanusVector;
51using janus::NumericMatrix;
52using janus::NumericScalar;
53using janus::NumericVector;
54using janus::SymbolicMatrix;
55using janus::SymbolicScalar;
56using janus::SymbolicVector;
59using janus::SparseMatrix;
60using janus::SparseTriplet;
64using janus::as_vector;
67using janus::sym_vector;
81using janus::JanusScalar;
133#define ICARUS_VERSION_MAJOR 0
134#define ICARUS_VERSION_MINOR 6
135#define ICARUS_VERSION_PATCH 0
138#define ICARUS_STRINGIFY(x) #x
139#define ICARUS_VERSION_STR(major, minor, patch) \
140 ICARUS_STRINGIFY(major) "." ICARUS_STRINGIFY(minor) "." ICARUS_STRINGIFY(patch)
166inline std::string
MakeFullPath(
const std::string &entity,
const std::string &name) {
169 return entity +
"." + name;
177class ComponentConfig;
178template <
typename Scalar>
class Backplane;
188template <
typename T,
typename Scalar>
192 { c.Name() } -> std::convertible_to<std::string>;
195 { c.Provision(bp, cfg) } -> std::same_as<void>;
196 { c.Stage(bp, cfg) } -> std::same_as<void>;
197 { c.Step(t, dt) } -> std::same_as<void>;
203template <
typename T,
typename Scalar>
205 { c.OnPhaseEnter(lifecycle) } -> std::same_as<void>;
206 { c.OnPhaseExit(lifecycle) } -> std::same_as<void>;
224#define ICARUS_ASSERT(cond, msg) \
227 throw std::runtime_error(std::string("ICARUS_ASSERT failed: ") + (msg)); \
235#define ICARUS_DEBUG_ONLY(code) code
242#define ICARUS_ASSERT_PTR(ptr, context) ICARUS_ASSERT((ptr) != nullptr, "Null pointer in " context)
250#define ICARUS_ASSERT_LIFECYCLE(lifecycle, required, operation) \
251 ICARUS_ASSERT((lifecycle) >= (required), std::string(operation) + \
252 " requires lifecycle state >= " + \
253 std::to_string(static_cast<int>(required)))
258#define ICARUS_ASSERT(cond, msg) ((void)0)
259#define ICARUS_DEBUG_ONLY(code) ((void)0)
260#define ICARUS_ASSERT_PTR(ptr, context) ((void)0)
261#define ICARUS_ASSERT_LIFECYCLE(lifecycle, required, operation) ((void)0)
#define ICARUS_VERSION_MINOR
Definition CoreTypes.hpp:134
#define ICARUS_VERSION_STR(major, minor, patch)
Definition CoreTypes.hpp:139
#define ICARUS_VERSION_MAJOR
Definition CoreTypes.hpp:133
#define ICARUS_VERSION_PATCH
Definition CoreTypes.hpp:135
Component-facing facade for signal registration and resolution.
Definition Backplane.hpp:32
Base class for all Icarus exceptions.
Definition Error.hpp:52
Concept for types that can serve as Icarus components.
Definition CoreTypes.hpp:189
Concept for components with optional extended hooks.
Definition CoreTypes.hpp:204
Alias for Icarus-specific documentation.
Definition CoreTypes.hpp:89
Definition AggregationTypes.hpp:13
constexpr int VersionPatch()
Patch version number.
Definition CoreTypes.hpp:149
std::string MakeFullPath(const std::string &entity, const std::string &name)
Build a full path from entity and name.
Definition CoreTypes.hpp:166
constexpr int VersionMinor()
Minor version number.
Definition CoreTypes.hpp:146
Lifecycle
Simulation lifecycle phases.
Definition CoreTypes.hpp:98
@ Completed
Simulation finished.
Definition CoreTypes.hpp:104
@ Provisioned
After Provision, before Stage.
Definition CoreTypes.hpp:100
@ Staged
After Stage, ready to run.
Definition CoreTypes.hpp:101
@ Running
During Step loop.
Definition CoreTypes.hpp:102
@ Paused
Temporarily halted.
Definition CoreTypes.hpp:103
@ Uninitialized
Before Provision.
Definition CoreTypes.hpp:99
constexpr bool kDebugMode
Check if we're in debug mode at compile time.
Definition CoreTypes.hpp:31
constexpr int VersionMajor()
Major version number.
Definition CoreTypes.hpp:143
constexpr const char * Version()
Version string (derived from components).
Definition CoreTypes.hpp:152
Configuration container for components.
Definition ComponentConfig.hpp:37
Run configuration for Stage phase.
Definition CoreTypes.hpp:120
double t_start
Simulation start time.
Definition CoreTypes.hpp:121
bool equilibrium
If true, run trim solver at Stage.
Definition CoreTypes.hpp:124
double t_end
Simulation end time.
Definition CoreTypes.hpp:122
double dt
Time step.
Definition CoreTypes.hpp:123