Article Preview
TopIntroduction
The codes which are talked about are computer programs designed to perform specific tasks and computations for complex systems producing power like nuclear reactors, or parts of nuclear reactors. There are different code types among which there are:
- 1.
The neutronics codes which perform neutronics calculations especially for the core of nuclear reactors like CITATION (Fowler et al., 1971) and GNOMER (Trkov, 1994), which are 3-D codes based on Diffusion Theory (DT) (Ameglio, 1981; Lamarsh, 1983; Ronen, 1986), and SCALE (Bowman et al., 1993) and KENO (Knight, 1984), which are based on the transport theory, in addition to the codes which are based on the Monte Carlo Method like MCNP (Briesmeister, 2001) and PENELOPE (Sempau et al., 2003).
- 2.
The thermal-hydraulic ones which perform calculations for the determination of the “thermal” status of the reactor and the hydraulic parameters such as the coolant velocity, the pressure drop, etc. An example of these codes can be RELAP5 (Polkinghorne et al., 1991), PARET (Obenchain, 1969), THYD (Albarhoum, 2009) and many other codes (Chao, 1980; Mansouri, 1994; Mele & Zefran, 1992).
- 3.
There are other code types which solve fuel burn-up issues and perform the related calculations such as ORIGIN-2 (Groff, 1980), LEOPARD-MICRO (Barrey, 1963), REBUS-PC 1.4 (Hoover et al., 1971), and PSG2 / Serpent (Leppänen, 2009).
Many codes of the 1st type can substitute the codes of the 3d type. Sometimes neutronic calculations use two-step computations: first using a cell code like WIMSD4 (Askew et al., 1966) and second a core calculation code like CITATION. There exist some packages that perform these computations automatically like BMAC (Albarhoum, 2008).
All codes, regardless the type, are written using some programming languages (of the 3rd generation) like FORTRAN (Chivers & Sleightholmem, 2006), BASIC (Schneider & Norton, 1991), Pascal (Yester, 1992), and C (Gottfried, 1992), or other symbolic languages too.
This type of compiles, or interpreters, is based on the “instruction” concept, i.e., an order to be executed by the program. The program executes the instructions only; it does not have the ability to take decisions for new orders.
From the other side the code is written to solve a specific problem the user would like to solve and, generally speaking, a huge number of data are required as input data. Whether the input data are correct and adequate for that specific problem or not is a question to be answered by the user. If the number of data exceeds a certain limit dealing with them becomes a big issue, especially for what concerns the correct position in the input file, the correct reading of these data, the ability of the compiler and the processor to treat the results from the mathematical point of view, etc.