(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:

- CÆSAR Package User's Manual
- CÆSAR Package Code Manual
- CÆSAR Package Methods Discussion
- CÆSAR Package Code Listings

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.

- Table of Contents
- List of Figures
- List of Tables

- I. CÆSAR Package User's Manual

- II. CÆSAR Package Code Manual
- 6. Design Decisions
- 7. m4 Preprocessing
- 8. Intrinsics Module
- 9. Utilities Module
- 10. Data_Structures Module
- 11. Mathematics Module
- 12. Parallel_Utilities Module
- 13. Linear_Algebra Module
- 14. Equation Module
- 15. Mesh Module

- III. CÆSAR Package Methods Discussion

- IV. CÆSAR Package Code Listings
- A. m4 Preprocessing Code Listings
- B. Intrinsics Module Code Listing
- C. Utilities Module Code Listing
- D. Data_Structures Module Code Listing
- E. Mathematics Module Code Listing
- F. Parallel_Utilities Module Code Listing
- G. Linear_Algebra Module Code Listing
- H. Equation Module Code Listing
- I. Mesh Module Code Listing

- Bibliography
- Index
- About this document ...