Cosimulation is a method of integrating two or more independent simulation software programs so that they can perform a joint simulation. Data is then transferred between the two programs as needed. Usually one of the programs is in charge of the overall simulation and decides when each program should communicate with the other programs. The points in time when data is exchanged is referred to as communication points or times, and the interval between these times is the communication step. The other programs must then be able to perform the simulation of a (usually small) communication step. The programs performing the simulation may use their own time-stepping algorithms and internal time stepping.