Frequently Asked Questions

What doesn’t pystella do for me?

pystella cannot ensure that kernels are properly ordered (i.e., with regard to data dependence). For example, in wave_equation.py, the Laplacian of f has to be computed by derivs before lap_f is read by stepper. pystella only creates kernels that do exactly what you ask for (and nothing more).

What domain dimension does pystella support?

Currently, three dimensions or fewer are supported. While pystella was designed for 3-D problems, one can, for example, implement a 2-D problem by simply setting one axis to have length 1 and halo padding 0 (to remove needless halo layers), e.g., grid_shape = (1, 4096, 4096) and halo_shape = (0, 2, 2). Be warned that some implemented functionality may not run optimally in this case, and that 1- and 2-D domains have not been thoroughly tested.

Where can I find more examples?

Aside from the complete examples implementing the wave equation and simulating gravitational waves from scalar-field preheating, pystella’s tests provide another source of examples.

Common gotchas/pitfalls

  • loopy.diagnostic.LoopyError: could not determine type of '___'

    You likely either forgot to pass an array argument when calling a kernel or to fix a value at kernel creation (i.e., by passing fixed_parameters=dict(...)).