# Projects » The Parallel Princeton Ocean Model

The use of parallelism as a vehicle to advance Earth's simulations is considered as one of the most complex problems facing the scientificc community today and is one of the Grand Challenges of the next century.

Climate models and in particular ocean models have followed a similar development with atmospheric models and in fact they have been coupled to simulate the Earth's global climate dynamics. However, there is a high demand for high resolution and inclusion of more complex physical processes in order to make accurate predictions for future climate conditions. For meeting the required demands a huge amount of computations is needed that can be carried out in realistic time using parallel computers.

## The POM Model

The POM model was developed by A. Blumberg and G. Mellor [1]. The model is a three dimensional ocean model incorporating a turbulence closure model to provide a realistic parameterization of the vertical mixing processes [2]. The model uses a sigma coordinate system which simulates well the bottom topography. The prognostic variables are the three components of velocity, temperature, salinity, turbulence kinetic energy and turbulence macroscale.

## Parallelization of POM

In this section we describe how we have implemented POM using message passing. The most common technique to introduce parallelism in environmental models using finite differences for the discretization of the involved system of partial dierential equations is domain decomposition. The basic idea is to decompose the computational domain into subdomains and assign each subdomain to a different processor. Each processor solves by a separate computing process the problem using the original code. In this way, there is only a single code to be maintained for both sequential and parallel computing platforms. In addition, the sequential code is reused entirely in the parallelization. To keep the computations consistent with the sequential code inter processor communication is needed.

The computations in the horizontal mesh use explicit finite differences. This means that each grid point in the next time level is computed using only values from grid points in the previous time levels. So, the computations for each grid point in the advanced time level are independent and can be carried out in parallel by assigning a group of these points to each of the available processors. As the computations in the vertical direction use implicit schemes the previous approach cannont be applied since in the present case the values of the grid points in the next time level are computed via the solution of a linear system using direct methods (e.g. Gaussian elimination). Although there exist methods for the parallel solution of such systems, we postponed this approach for future investigation and decided not to introduce parallelism in the vertical direction.

Back to top