This article illustrates the component architecture of ElecNetKit.
Block Diagram And Description
The components in ElecNetKit interact in the fashion demonstrated in the block digram, below.
The core components of ElecNetKit are:
- NetworkController
-
The NetworkController is responsible
for coordinating the entire experimentation / simulation process. It invokes all other modules at the
appropriate time and tightly controls access to the NetworkModel to ensure reliability
of results.
- ISimulator
-
The ISimulator 'abstracts away' the complexity of the raw simulator software interface.
Upon receiving commands from the NetworkController, it sends and extracts data to and from the underlying simulation engine.
ISimulators are not directly interacted with for the purposes of running network experiments. The only
time that ISimulators should be directly used is when passed to NetworkController.
- IExperimentor
-
The IExperimentor defines an interface for conducting experiments on the simulated network.
When the NetworkController runs a simulation,
it invokes the assigned IExperimentor, alerting it to the current state of the electrical network and expecting
a list of simulator commands that will be used to manipulate the network.
- IResultsTransform
-
The IResultsTransform class offers a way to read the network
results both before and after the experiment is undertaken, and can modify the
results and topology of the final network immediately before it is returned by the
NetworkController. This allows for perturb-and-observe style measurements, or
logarithmic scaling of results, for example.
- NetworkModel
-
The NetworkModel represents the entire electrical network
that is being operated upon. For futher information, see Traversing the Network Model.
- INetworkGraph
-
The INetworkGraph interface specifies a consistent means for producing
visual representations of NetworkModels. Some graphs are included
with ElecNetKit for convenience. These are discussed in Graphing with ElecNetKit.
To get a feel for the interaction between these modules, take a look at the Walkthrough: A Minimal Working Example example.
Reference