Codes lie at the heart of numerical simulation: they are the point where the various different and complementary specialisations come together. The physicist selects the models to study, the mathematician translates the model into equations and develops the algorithms to solve these equations, the computer specialist enables all of these algorithms to be executed on the computers and the engineer uses the codes to successfully carry out his project. A code is a complex assembly which, starting with the input parameters representing phenomena studied, delivers the results as output.
To anticipate and minimise the impact of computer upgrades, the codes are based on program architectures which enable each function to be more or less independent of the others.
A code represents a unit which capitalises on a wealth of knowledge built up over a long period of time. Its development and operation are managed as a project. A life cycle needs to be defined for it, starting from the schedule of conditions and continuing up to the delivery and maintenance of the deliverables and including specification, design, configuration management, coding, verification and validation, and documentation phases. This approach is a sign of quality for the end-users.