Package org.seamcat.model.plugin.system
Interface SystemPlugin<UI extends SystemModel>
-
- Type Parameters:
UI
- the UI of this system
- All Superinterfaces:
ConsistencyCheck
public interface SystemPlugin<UI extends SystemModel> extends ConsistencyCheck
A system plugin models a complete radio system that will integrate completely into SEAMCAT - i.e. it is understood by the simulation engine of SEAMCAT and can be set up as a victim, an interfering system, or both in a interference simulationScenario
The required implementation of a System Plugin falls into three categories- UI
- Consistency check
- Simulation
UI
The UI is described in theSystemModel
interface. Notice that this UI definition is similar to thePlugin
UI definition but allows for composition of several frames of inputs organized in tabs.Consistency check
A System Plugin has the possibility to validate it's input before a simulation is started. This is to inform users of any configuration error that might lead to unwanted results or actual errors in the simulation (for simulation error resulting in exception the simulation will be aborted). SEAMCAT also provides a scenario-wide consistency check that validates standard elements of a scenario, for instance: the distance between a victim receiver and interfering system transmitter will be checked against the propagation model configured in the interference link.Simulation
For an actual simulation define the behaviour of the system. this boils down to specifying what transmitters and receiver are positioned inside a system. Much more detail on this in theSimulationInstance
interface.
-
-
Field Summary
Fields Modifier and Type Field Description static UniqueValueDef
BANDWIDTH_CORRECTION
static UniqueValueDef
DISTANCE
static UniqueValueDef
EFFECTIVE_PATHLOSS
static UniqueValueDef
FREQUENCY
static UniqueValueDef
ILT_POWER_IN_VLR_BANDWIDTH
static UniqueValueDef
PATHLOSS
static UniqueValueDef
TX_POWER_CONTROL_GAIN
static UniqueValueDef
TX_RX_AZZIMUTH
static UniqueValueDef
TX_RX_ELEVATION
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description SystemSpaces
generateSystemSpaces(SystemSpaces enclosing)
Before a simulation instance runs the methodsSimulationInstance.victimSimulation(VictimResultCollector)
,SimulationInstance.interferingSystemSimulation(EventResult, InterferenceLink, Point2D)
, orSimulationInstance.interferingSystemSimulation(EventResult, InterferenceLink, Point2D, LinkResult)
the sector shapes are calculated.RadioSystem
getSystem(Context context)
Get the configuredRadioSystem
of thisSystemPlugin
This is expected to return something meaningful afterprepareSimulation
has been invoked.UI
getUI()
void
postSimulation(Context context, Results results)
void
prepareSimulation(Scenario scenario)
void
preSimulation(Context context, Results results)
Calculate the pre-simulation results for this system.void
setUI(UI ui)
This method sets the current configuration of the UI of a SystemPlugin.SimulationInstance
simulationInstance(Context context, SystemSpaces systemSpaces)
-
Methods inherited from interface org.seamcat.model.plugin.system.ConsistencyCheck
consistencyCheck, getInterferenceLinkSystemCoverage, getSystemCoverage
-
-
-
-
Field Detail
-
FREQUENCY
static final UniqueValueDef FREQUENCY
-
DISTANCE
static final UniqueValueDef DISTANCE
-
PATHLOSS
static final UniqueValueDef PATHLOSS
-
EFFECTIVE_PATHLOSS
static final UniqueValueDef EFFECTIVE_PATHLOSS
-
TX_RX_AZZIMUTH
static final UniqueValueDef TX_RX_AZZIMUTH
-
TX_RX_ELEVATION
static final UniqueValueDef TX_RX_ELEVATION
-
TX_POWER_CONTROL_GAIN
static final UniqueValueDef TX_POWER_CONTROL_GAIN
-
BANDWIDTH_CORRECTION
static final UniqueValueDef BANDWIDTH_CORRECTION
-
ILT_POWER_IN_VLR_BANDWIDTH
static final UniqueValueDef ILT_POWER_IN_VLR_BANDWIDTH
-
-
Method Detail
-
setUI
void setUI(UI ui)
This method sets the current configuration of the UI of a SystemPlugin. It can be called a number of times before the simulation has been started, i.e. when modifying the scenario each update will result insetUI
being called.
It is recommended to avoid converting the UI to the RadioSystem each timesetUI
is called as it could change a lot before simulation begins.- Parameters:
ui
- the current configuration of theSystemPlugin
-
getUI
UI getUI()
-
prepareSimulation
void prepareSimulation(Scenario scenario)
-
getSystem
RadioSystem getSystem(Context context)
Get the configuredRadioSystem
of thisSystemPlugin
This is expected to return something meaningful afterprepareSimulation
has been invoked.- Returns:
- the configured
RadioSystem
-
preSimulation
void preSimulation(Context context, Results results)
Calculate the pre-simulation results for this system. A pre-simulation can produce any number of unordered or unique results which can be used by any snapshot throughout the simulation. The pre-simulation will therefore run before the event simulation.- Parameters:
context
- the context of this pre-simulation. Either victim or interfering system.results
- the presimulation results to be used by each event
-
simulationInstance
SimulationInstance simulationInstance(Context context, SystemSpaces systemSpaces)
-
generateSystemSpaces
SystemSpaces generateSystemSpaces(SystemSpaces enclosing)
Before a simulation instance runs the methodsSimulationInstance.victimSimulation(VictimResultCollector)
,SimulationInstance.interferingSystemSimulation(EventResult, InterferenceLink, Point2D)
, orSimulationInstance.interferingSystemSimulation(EventResult, InterferenceLink, Point2D, LinkResult)
the sector shapes are calculated. This allows the simulation to communicate which positions are areas are used.- Parameters:
enclosing
- optional argument. Used when aggregating systems are simulated. The sectors used by the previous systems in the aggregate can be used here.
-
-