3d eulerian
A brief note on indexing and notation
In order to keep track of tensors e.g. in point space and spectral space, I like to do the following:
- The index for cubes will be
- the index for cubical indices will be
$l_1,l_2,l_3$
- The index for spectral coefficients will use variable
Design simplifications:
- 3D cubical domain.
- rigid among z and y boundaries, periodic among x boundary.
with potentially wildly different stiffnesses depending on both tracer (glass color) and temperature values.
- design for multiple GPUs (i.e. one MPI per GPU. This generalizes well to the cluster that I have)
Construction and derivatives
Assume that . Then
is the derivative of 1D interpolant polynomials
on the GLL points. Then if we have a scalar quantity
located at the GLL points
then
is
This comes from the fact that
Righthand side terms are computed within an element, then undergo DSS (direct stiffness summation) which involves intra-element communication. Since DSS is a jacobian-weighted average over all redundant points, and our Eulerian grid (which is a subset of Euclidean space) has a Jacobian which is just the identity matrix, this means that our DSS procedure is just a sum which must take into account the number of redundant points.
Given that our viscosity has the form (in particular, it isn't flow dependent), we get some choice in
of prognostic equations. For the sake of education, I'm going to try to follow along with this paper
But I think I can basically just use the Navier Stokes equations as is.
Code:
Create abstract base class for an equation set