SUBROUTINE NODE_CLEAR(node) #include "dyna.inc" #include "node.inc" RECORD /Node_Data/ node INTEGER i,j node.number = 0 node.izone = 0 node.nidest = 0 node.xcoord = 0 node.ycoord = 0 DO i = 1,MAX_IN DO j = 1,MAX_LANE_TYPE node.lanenum(i,j) = 0 ENDDO ENDDO node.numplans = 0 node.curplan = 0 DO i = 1,MAX_PLAN CALL PLAN_CLEAR(node.plan(i)) ENDDO RETURN END INTEGER FUNCTION NODE_READ(unit,node) #include "dyna.inc" #include "node.inc" INTEGER unit RECORD /Node_Data/ node CALL NODE_CLEAR(node) CALL FND(unit) READ(unit,13,END=99661) + node.number,node.izone,node.xcoord,node.ycoord 13 FORMAT(2I5,2I6) NODE_READ = 0 RETURN C - Node not read 99661 NODE_READ = 1 RETURN END SUBROUTINE NODE_INIT(sim,net) #include "dyna.inc" #include "sim.inc" #include "network.inc" RECORD /Sim_Data/ sim RECORD /Road_Network/ net RECORD /Node_Data/ tnode INTEGER NODE_READ !function C --- Read Nodes --- CALL READSTAT('nodes',NODE_FILE) DO WHILE( NODE_READ(NODE_FILE,tnode).EQ.0 ) CALL ADD_NODE(net,tnode) ENDDO Cr - Check watchnode IF (sim.watchnode.LE.0.OR.sim.watchnode.GT.MAX_NO + .OR. + net.nodenum(sim.watchnode).LE.0 + .OR. + net.nodenum(sim.watchnode).GT.net.nnodes) THEN WRITE(ostr,'(A,I5,A)') + 'Invalid watchnode [',sim.watchnode + ,'] ignoring'//CHAR(0) CALL DYNA_ERROR(ostr + ,DYNA_NONFATAL_WARNING + ,DYNA_INPUT_ERROR + ,DYNA_INVALID_NODENUM) sim.watchnode = 0 ENDIF sim.watchnode = net.nodenum(sim.watchnode) RETURN END