SUBROUTINE SIM_CLEAR(sim) #include "dyna.inc" #include "sim.inc" RECORD /Sim_Data/ sim INTEGER i sim.maxtime = SIM_DFLT_MAX_TIME sim.timestep = SIM_DFLT_TIMESTEP sim.iter = 0 sim.maxiter = sim.maxtime/sim.timestep sim.status = SIM_UNINIT sim.time.minutes = 0.D0 sim.jj = 0 sim.kay = SIM_DFLT_KAY sim.iseed = 0 sim.ipinit = 0 sim.starttm = SIM_DFLT_STARTTM sim.endtm = SIM_DFLT_ENDTM sim.watchnode = 1 sim.iqwait = 1 sim.kspstep = SIM_DFLT_KSPSTEP sim.pustep = SIM_DFLT_PUSTEP sim.keqpstep = SIM_DFLT_KEQPSTEP sim.route_choice_rule = SIM_BR_ROUTING sim.logit_smooth_factor = 1.D0 DO i = 1,MAX_VE sim.veh_ptr(i) = 0 ENDDO sim.delayrhind = 0 sim.volumerhind = 0 sim.do_inc_det = 1000.0 sim.cms_response_level = 1.00 sim.ttime_bin_length = SIM_DFLT_TTIME_BIN_LEN sim.num_ttime_bins = SIM_DFLT_NUM_TTIME_BINS sim.sticky_queues = .FALSE. C - Initialize incident data sim.numincidents = 0 DO i = 1,MAX_INCIDENTS CALL INCIDENT_CLEAR(sim.incident(i)) ENDDO RETURN END SUBROUTINE SIM_INIT(io,sim) #include "dyna.inc" #include "io.inc" #include "sim.inc" RECORD /Io_Data/ io RECORD /Sim_Data/ sim CR - Set global warning flag based on cl args show_warnings = io.show_warnings sim.maxiter = sim.maxtime/sim.timestep RETURN END C ---------------------------------------------------------------------- INTEGER FUNCTION ADD_INCIDENT(sim,net,incident) C ---------------------------------------------------------------------- C - Adds an incident to the list of incidents which are to occur C - during the simulation run C - INCLUDED FILES: #include "dyna.inc" #include "sim.inc" #include "network.inc" #include "par.inc" C - UNMODIFIED ARGUMENTS: RECORD /Sim_Data/ sim RECORD /INCIDENT_PARAM/ incident C - MODIFIED ARGUMENTS: RECORD /Road_Network/ net C - MODIFIED GLOBAL DATA: ! ostr (see dyna.inc) C - LOCAL VARIABLES: INTEGER ipp INTEGER i,j INTEGER n1,n2 INTEGER l1 C - FUNCTIONS CALLED: INTEGER LINKFROMPARAM C - RETURN VALUE: ! Non-zero if there was an error C ---------------------------------------------------------------------- sim.numincidents = sim.numincidents + 1 i = sim.numincidents sim.incident(i).number = incident.id.number sim.incident(i).starttime = incident.starttime sim.incident(i).endtime = incident.endtime sim.incident(i).numeffects = incident.numeffects DO j = 1,incident.numeffects sim.incident(i).effect(j).linknum = + LINKFROMPARAM(net,incident.effect(j).link) sim.incident(i).effect(j).movenum = 0 sim.incident(i).effect(j).capacity_reduction = + incident.effect(j).capacity_reduction ENDDO RETURN END