The component of the isoneutral diffusive flux through the
eastern face of a T cell
for the small angle
Redi tensor is given by
| + | (35.2) |
| = | ![]() |
(35.3) |
| (35.4) |
As written, it appears necessary to dimension two arrays: Ax(i+ip,k)(i,k | i+ip,k-1+kr) and Sx(i+ip,k)(i,k | i+ip,k-1+kr). However, it turns out that it is possible code this flux so that only one array, (Ax * Sx)(i+ip,k)(i,k | i+ip,k-1+kr) is dimensioned. This trick is also employed for discretizing the other flux components, as well as for the gent_mcwilliams and biharmonic_rm schemes. However, it cannot be employed for full_tensor. In the following, this approach will be implicit in the expressions written for the fluxes. This approach was not used in the original MOM 2 implementation of isoneutral diffusion. Instead, the slopes were computed both in the subroutine which determined the diffusivities and in the subroutine which determined the flux components. This double computation of the slopes was chosen instead of saving the slopes inside of an array dimensioned as the diffusivity and hence incurring an increase in memory cost. The new approach uses the same memory, but eliminates the second calculation of the slope. A test with the flat bottom sector model used in Griff ies et al. (1998), using two active tracers and the small angle isoneutral diffusion process, realized a 15% reduction in total model runtime with the new code over the MOM 2 code. The relative savings will clearly increase upon using more tracers.