# Grids¶

Assume that we have an `Atoms` object contained in a cubic unit cell of sidelength `L`:

```L = 2.0
atoms = Atoms(cell=(L, L, L), pbc=True)
```

and we use a calculator with a grid spacing of `h=0.25` Å or `gpts=(8, 8, 8)`. Since we have periodic boundary conditions, the x-axis will look like this (the y and z-axes look the same):

``` 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0
-+---------------+---------------+---------------+-
-L               0               L              2*L
```

Wave functions are represented on 8x8x8 grids, where the grid points are numbered from 0 to 7.

If we use zero boundary conditions (`pbc=False`), then the x-axis will look like this:

```  0 1 2 3 4 5 6
+---------------+
0               L
```

Here the wave functions are exactly zero at x=0 Å and x=L, and only the non-zero values are stored in 7x7x7 grids (grid points numbered from 0 to 6).

Update this XXX how about padding?

An example:

```>>> L = 2.0
>>> atoms = Atoms(...,
...               cell=(L, L, L),
...               pbc=False)
>>> calc = GPAW(..., gpts=(8, 8, 8))
>>> atoms.SetCalculator(calc)
>>> e = atoms.get_potential_energy()
>>> wf = calc.get_pseudo_wave_function(band=0)
>>> wf.shape
(7, 7, 7)
>>> calc.GetGridSpacings()
array([ 0.25,  0.25])
```