package nl.tudelft.simulation.examples.dsol.dess;
import java.io.Serializable;
import nl.tudelft.simulation.dsol.formalisms.dess.DifferentialEquationInterface;
import nl.tudelft.simulation.dsol.model.AbstractDSOLModel;
import nl.tudelft.simulation.dsol.simtime.SimTimeDouble;
import nl.tudelft.simulation.dsol.simulators.DESSSimulatorInterface;
import nl.tudelft.simulation.dsol.statistics.SimPersistent;
import nl.tudelft.simulation.dsol.swing.charts.xy.XYChart;
/**
*
* Copyright (c) 2002-2020 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved.
*
* See for project information www.simulation.tudelft.nl.
*
* @author Alexander Verbraeck
*/
public class DESSModel extends AbstractDSOLModel.TimeDouble
{
/** The default serial version UID for serializable classes. */
private static final long serialVersionUID = 1L;
/** the distance chart. */
private XYChart distanceChart;
/** the distance persistent. */
private SimPersistent distancePersistent;
/**
* constructs a new DESSModel.
* @param simulator DESSSimulatorInterface.TimeDouble; the continuous simulator
*/
public DESSModel(final DESSSimulatorInterface.TimeDouble simulator)
{
super(simulator);
}
/** {@inheritDoc} */
@Override
public void constructModel()
{
try
{
Distance distance = new Distance(this.simulator);
this.distancePersistent = new SimPersistent<>("persistent on distance", this.simulator, distance,
DifferentialEquationInterface.VALUE_CHANGED_EVENT[0]);
}
catch (Exception exception)
{
getSimulator().getLogger().always().error(exception);
}
this.distancePersistent.initialize();
this.distanceChart = new XYChart(this.simulator, "xyplot of distance");
this.distanceChart.add(this.distancePersistent);
}
/**
* @return chart
*/
public final XYChart getDistanceChart()
{
return this.distanceChart;
}
/**
* @return distancePersistent
*/
public final SimPersistent getDistancePersistent()
{
return this.distancePersistent;
}
/** {@inheritDoc} */
@Override
public Serializable getSourceId()
{
return "DESSModel";
}
}