Many physical systems are not easy to describe analytically but are amenable to study with computer simulations. Broadly speaking a simulation is usually a framework for specifying microscopic details for the individual components of a system so that the collective behaviour of the overall system can be measured and studied. Quite often a simulation is formulated and compared with "reality" in some known regime and then used to investigate a parameter regime that is not easily studied in the real system. Or the model may be used to try to characterise a reality regime more quantitatively precisely than is possible with the real system. This is often useful for real systems that have hard to control components such as people.
Simulations are often formulated as some sort of time-stepping or evolving series of actions. A number of atoms or agents or people or other constituent parts of a system are set up in some initial state and are updated through some time stepping scheme so that their interactions with one another in a plausible reflection of the laws of nature or society that we think we can describe from some a priori formulae and input parameters. We then run the simulation and see what happens. Often there are bulk properties of the overall system that we hope to measure and to compare with those we might measure for real systems. Properties like temperature, pressure, maximum response time, spatial cluster size, or some other measurable macroscopic property can be calculated exactly for the simulated system, and furthermore can be closely studied under exactly known microscopic conditions.
A simulation experiment often involves a search of the microscopic parameter space - the space of plausible input parameter values to see how they affect the macroscopic properties of the whole. Sometimes certain parameters turn out to be unimportant and the overall system hardly changes its behaviour at all if they are changed. Other parameters might turn out to be very important and a small change in them might completely change the overall outcome.
The art of simulation is in setting up such systems and developing techniques for modelling bulk systems that behave realistically and have as few artifacts of the simulation apparatus in them as possible.
There are many different ways to set up a simulation depending upon the microscopic details that are known to be involved and the level of detail that one believes are important to the outcome. Often one is surprised and obtains an unexpected or emergent behaviour from what is thought to be a simple model system. Sometimes the phenomena one is studying only arises in very large systems or in systems that have evolved for a long tome. In such cases one has to apply careful technique s to simulate as large a system as possible in as unbiased a way as possible to reproduce phenomena from nature.
Computational science involves to a very large extent this application of simulation techniques to calculate or emulate some natural behaviour of a real system in a model system with some known input parameters.
Some physical models of interest to us are (in no particular order):Our particular interests are in studying the underpinning spatial dependence of systems. It is interesting to compare how a microscopic model will behave when it is constrained to two dimensions compared with when it is allowed three or even four. It is also of great interest to study systems when they are embedded in a fractional-dimension space a fractal network for example. Such studies can reveal great insights into what interactions are really important (or not) in a model system.
Many techniques in discrete and continuous mathematics are of use in formulating simulations. It is often possible to formulate a model in terms of partial differential equations only to find it is not feasible to solve them, and so a microscopically-based simulation based on a numerical representation of the equations can be used to bridge the gap between the theory and an experiment on a real system. The numerical simulation is a sort of experimental framework in its own right and can be used as an intermediary playground between theory and experiment.
Although in recent times many excellent simulation packages have become available, we are often interested in simulating very large systems or systems that are computationally expensive to simulate. In such cases we often need to develop efficient and fast hand-crafted simulation codes. Formulating the most appropriate data structures; understanding how to fairly advance all the interacting components of a simulation; and building programs that can visualise and measure properties of the simulation system are all challenges of large scale simulation work.
Several of our simulation projects are described in the CSTN Technical note series. There are several outstanding student projects available in this area too.