/*
* JaamSim Discrete Event Simulation
* Copyright (C) 2014 Ausenco Engineering Canada Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jaamsim.basicsim;
import com.jaamsim.events.EventManager;
import com.jaamsim.events.ProcessTarget;
public class InitModelTarget extends ProcessTarget {
public InitModelTarget() {}
@Override
public String getDescription() {
return "SimulationInit";
}
@Override
public void process() {
// Initialise each entity
for (Entity each : Entity.getClonesOfIterator(Entity.class)) {
each.earlyInit();
}
// Initialise each entity a second time
for (Entity each : Entity.getClonesOfIterator(Entity.class)) {
each.lateInit();
}
// Start each entity
double startTime = Simulation.getStartTime();
for (Entity each : Entity.getClonesOfIterator(Entity.class)) {
EventManager.scheduleSeconds(startTime, 0, true, new StartUpTarget(each), null);
}
// Schedule the initialisation period
if (Simulation.getInitializationTime() > 0.0) {
double clearTime = startTime + Simulation.getInitializationTime();
EventManager.scheduleSeconds(clearTime, 5, false, new ClearStatisticsTarget(), null);
}
// Schedule the end of the simulation run
double endTime = Simulation.getEndTime();
EventManager.scheduleSeconds(endTime, 5, false, new EndModelTarget(), null);
// Start checking the pause condition
Simulation.getInstance().doPauseCondition();
}
}