| While we live according to a single time measured by the clock 
              on the wall, in a simulation the definition of time is more complicated. 
             We define the time measures of interest as follows: 
              tclock 
                - this will be an increment in the actual clock time in the world 
                of the person running the simulation and on the processor clock.
 
tsim 
                - this is the time increment represented by the simulation. For 
                example, in a simulation of a planetary orbit, tsim 
                might represent a day or a week. In a simulation of an atomic 
                interaction, on the other hand, tsim 
                might represent a nanosecond or less. 
 
dtcalc 
                - the time increment used in a numerical 
                calculation of the simulated phenomena over the time span of tsim. 
                To obtain an accurate simulation, dtcalc 
                must often be much smaller than tsim.. 
                For example, in the case of a ODE 
                dtcalc = 
                tsim/N
 for N 
                steps in the integration.
 If we attempt to match tsim 
              to the tclock 
              time, we will say tsim 
              is simulating "physical time". So , for example, if we 
              simulate a ball dropping one meter and we drop a real ball from 
              a meter above the floor at the same moment we click on the Drop 
              button, then ideally both the real and simulated balls would hit 
              the floor at the same moment. Perhaps all you need from your simulation is a simple final answer 
              such as the coordinates of the spot where a cannon ball will hit. 
              Usually, though, we want an animation of the whole process. In a 
              typical animation the program tries to draw the frames fast enough 
              to give the illusion of smooth continual motion. We define the programming 
              time increments involved in an animation as follows: 
              tframe 
                - the time between frames, such as 40 msecs to provide 25 frames 
                per second.tcomp 
                - this is the time needed to calculate the new arrangement of 
                objects in the frame, such as planets or atomic particles. Note 
                that some steps may require more computation than others and so 
                tcomp 
                could vary from frame to frame.tdisplay 
                - the time it takes to display the frame.tsleep 
                - the idle time between when the frame display and the start of 
                the next frame calculation.tinterrupt 
                - time taken up by the system when it stops the simulation to 
                go do other tasks. This also includes time taken up by other threads 
                within your program that you create to do parallel tasks. The figure here shows graphically the relationships among these 
              time increments. 
              
                 
                  | Figure: Time relationships |    Before Java 1.2, animations required using the Thread 
              class sleep() 
              method (see Chapter 
              8: Java : Demo 1) to pause between the calculation and display 
              processing. However, this could cause some flickering if the tcomp 
              varied significantly from frame to frame.  The timer classes discussed in Chapter 
              8: Tech : Timers help considerably with program timing. In particular, 
              the java.util.Timer 
              class, which became available in Java 1.3, provides the scheduleAtFixedRate() 
              method. The two overloaded versions fix the timing events relative 
              to the clock rather than by delay from the previous event as with 
              the schedule() 
              method. In the latter case, timing errors would accumulate relative 
              to the clock. We will compare the timing methods in the following applet. It 
              does a animation of a ball falling and then bouncing until it comes 
              to rest.        |