# How to load a crystal from the Zoo

## Namespaces

The `Peacock.Zoo`

module contains functions to generate some of the photonic crystals that I have studied. To avoid polluting the global namespace, these functions are only accessible after calling `using Peacock.Zoo`

, or by calling each function as `Peacock.Zoo.name`

.

## Unpacking parameters

Each `make_*`

function returns a `NamedTuple`

containing the geometry, solver, polarisation, and high symmetry $k$-points of the crystal. You can use the `@unpack`

macro from the `Parameters`

module to extract the variables held in the `NamedTuple`

.

For example, the topological photonic crystal first introduced by Wu *et al* 2015 can be generated using `make_wu_topo`

.

```
using Parameters # for the `@unpack` macro
# Load photonic topological insulator from Wu et al 2015
@unpack geometry, solver, polarisation, G, K, M = make_wu_topo(fourier_space_cutoff)
# Preview the crystal
plot(geometry)
```

## Available crystals

```
Modules = [Peacock.Zoo]
Private = false
```