The CÆSAR Code Package
(LA-UR-00-5568, LA-CC-06-027)
Michael L. Hall
20 January 2010
The CÆSAR Code Package is a computational physics development environment.
In other words, it provides an environment where the physics of real systems
can be modeled, by discretizing a set of partial differential equations on a
mesh and solving the resultant algebraic system.
The CÆSAR Code Package does not by any means span this extremely large
problem space. It does, however, provide a consistent means of incorporating
new methods of attacking the computational physics problem. It is
extensible - new equation sets, new discretizations, new meshes, new
linear solvers, new communication libraries, etc., may be incorporated easily.
The emphasis in CÆSAR is on equation sets, discretizations, meshes,
nonlinear solvers and preconditioners, which are all incorporated into the
basic CÆSAR structure. In contrast, linear solvers, communications
libraries, mesh generators and partitioners, and visualization tools are
generally included as external packages developed elsewhere, but may be
developed inside CÆSAR eventually.
The CÆSAR Code Package has these coding characteristics:
- It is written in Fortran-90, preprocessed by Gnu m4.
- It is written in an object-based fashion, and probably comes as close
to being object-oriented as is possible in Fortran-90.
- It has both parallel and serial versions, designed in from the start
of the project.
- It has a completely levelized design (Lakos, 1996); there are no
dependency loops between classes or modules.
- It uses its own form of Design by
Contract
(Meyer, 1997) to
verify the behavior of all procedures.
- It uses extensive unit testing to certify all classes.
- It uses the ideas of literate programming
(Knuth, 1992) to generate
documentation (in HTML, PostScript and PDF) from comments included in
the code, via the Document Package.
The CÆSAR Code Package has these computational physics characteristics:
- It allows for multiple mesh types. Currently, a multi-mesh class
which can support many types of meshes is being developed. Among the
meshes supported will be: uniform meshes, orthogonal meshes,
structured meshes, unstructured meshes, adaptive mesh refinement
(AMR) meshes, triangular/tetrahedral meshes, and
quadrilateral/hexahedral meshes. Polygonal/polyhedral meshes may also
be supported in the future.
- It allows for multiple dimensions - 1-D, 2-D and 3-D.
- It allows for multiple geometries - cartesian, cylindrical and
spherical.
- It allows for multiple physics packages by allowing for various
sets of partial differential equations. Future physics to be modeled
may include diffusion, radiation transport (photonics), radiation
hydrodynamics, fluid dynamics, magnetohydrodynamics and heat pipe
thermal hydraulics.
- It allows for multiple discretizations of the same terms in the
equations.
- It allows for multiple external packages for linear solvers,
communications, visualization, etc.
The CÆSAR Code Package is related to the earlier
Augustus,
Spartan, and
THROHPUT
Code Packages.
The documentation is split into the following major parts:
Additional documentation related to the CÆSAR project is listed in
Presentations and Articles.
PDF
and Postscript
versions
of the documentation are available.
A Short Table of Contents is given on this page. A full
Table of Contents
and an Index are also available.
Michael L. Hall