JakobCHR.com
 
Quick Navigation:
 
Personal:
 Go to Home
 MS Research
 PhD Research
 Curriculum Vitae

General:
 Linux

Soon to come:
 Matlab
 On-line Stores
 Cycling
 Medicine & Health
 LaTeX
 OOP & C++
 Sony PCM-R500 DAT


next up previous contents index
Next: Arrangement of source code Up: Neutronics Implementation Previous: Introduction   Contents   Index

Overview

This section provides an overview of the different parts of the full implementation. The flow chart depicted in Figure 3.1 reveals the different parts of the implementation.

\begin{figure}
% latex2html id marker 13002\rule{\textwidth}{0.2mm}
\rule{0cm}...
...\hspace{1em}The
flow chart describing the neutronics program block.}\end{figure}

A short description of the different parts are given below

.
Input data: The input data, which specify parameters for both the neutronics and thermal-hydraulics computation, are given in two separate files. These data specify amongst other the geometry of the reactor, where to find files which contain the condensed cross sections and parameters for the grid.

.
Grid generation: This program block calculates a suitable computational grid (ie the steplengths hk) as described in section 1.9.

.
Generation of homogenized cross sections: The cross sections in every region in the reactor are calculated using the calculated grid, the cross section files (specified in the input) and some kind of average of the void fraction ( $\mbox{$<\!{\alpha}\!>$}$) and fuel temperature (Tf) in each region. The void fractions and fuel temperatures are either calculated using data from the thermal-hydraulics computation or assumed.

.
Building the system of equations: A this point we build the system of equations which forms the eigenvalue problem, ie we calculate the non-zero block elements of the matrices B and C in (1.91).

.
Fundamental eigensolution computation: Having established the eigenvalue problem we compute the fundamental eigensolution using the power method and the fractional iteration method (see sections 2.2 and 2.3).

.
Flux scaling: The fundamental eigensolution computation only gives us the direction of the eigenvector (or alternatively the form of the fluxes)--the length of the vector (or alternatively the level of the fluxes) has to be determined by a requirement regarding the total generated power. The total power generation is calculated using the formulae given in section 1.8.

.
Pre-processing: After having calculated the fluxes and axial power distribution the results are stored in a Matlab mat-file. The actual pre-processing eg making a plot of the flux is done by the user through the mat-file.

Before going into a detailed description of the different part of the program we would like to point out the general features upon which the implementation is build.

  • Portability: The source code is written to ensure portability, ie only generally accepted C-functions are called and measures have been taken to allow differences in the sizes of machine words. This is a powerful feature since this enables compilation of the source code with a standard $\mbox{C}++$ compiler on all machines. I have run the program on both an IBM-compatible 486 DX2/66 and a HP 9000/735 work station with no problems.
  • Encapsulation and abstraction: With every large program it is important to encapsulate packets of information belonging together into entities. This gives the program a great deal of flexibility and since encapsulated data are invisible in the global scope the risk of spurious errors becomes less pronounced. In $\mbox{C}++$ this is accomplished through objects, but since this is not exploited in the program the ordinary C structure will have to do.

  • Dynamic allocation: Memory is allocated to variables when these are needed. When variables are not needed any more the memory is freed for other purposes. This approach ensures an efficient memory utilization--the only way of dealing with large amounts of data. The drawback is evidently that the programmer has to control the allocation3.2--if not done correctly this could easily result in a system crash.

  • Modular structure: The source code is deliberately divided up in modules (= files). Each module contains a group of functions for a specific purpose, eg the mathematical functions. As a consequence, the program becomes more readable.

  • Double precision: All data are stored and worked with in double precision.


next up previous contents index
Next: Arrangement of source code Up: Neutronics Implementation Previous: Introduction   Contents   Index  
 
 
 
Revision 2.0, Copyright © 1999-2004 Jakob Christensen
http://www.JakobCHR.com
E-Mail: webmaster@JakobCHR.com
Top Quality
Developed with

Danish
Brain Power
Linux Powered!