This file describes the main class structure and function of the ODIN Java application, developed by Bill Pragnell at the University of Birmingham.

The Odin program comprises the following class files:

Node2D
NodeArray
Odin

PlaneSurface
Corner
Rib
DoubleCorner
ClosedSection
DoubleCorner
InsideCorner
LayeredPlaneSurface
CustomGrid

The program works by iteratively solving the diffusion equation across a 2D grid using finite difference methods. At each node in the grid, the new elemental composition is calculated for each time step, based on the previous values and the values of surrounding nodes. The whole model is driven by a boundary condition at exterior surfaces which involves solving a mass balance between diffusive flux from the interior and oxidation flux to the exterior.

Node2D is a basic type which stores elemental concentrations and position information, as well as pointers to neighbouring Node2D objects.

NodeArray holds the entire grid as a standard array, each node also linked to its neighbours via the internal pointers (this means that the array can be traversed quickly, but no awkward calculation is required to find the neighbours). NodeArray also provides the methods to calculate the new concentrations at the various types of nodes for a given time step, as well as the usual getter/setter methods. NodeArray is an abstract class; it provides the methods for operating on a properly-linked grid, but not the means for building the grid. Subclasses need provide only the constructor to take care of this task.

Odin is the main class which provides the main() method for the simulation loop, and the event-based GUI which allows entry and validation of the various input data and options. Odin also takes care of input/output data files and simulation results.

The remainder of the classes are all subclasses of NodeArray, specifying a constructor to build whichever grid geometry is required. They all build the various grids the same way, row by row, linking the nodes via their pointers as they go.

It is beyond the scope of this document to describe the underlying science, or fully document the program's use. For a simple description of the main inputs and options, please refer to the manual document within this .zip file. The model has been published in the journal Modelling and Simulation in Materials Science and Engineering; the full reference is given below.

W.M. Pragnell and H.E. Evans, Modelling and Simulation in Materials Science  and Engineering 14, 733-740 (2006)



Bill Pragnell 2008