Samuel J Palmer

Results 12 issues of Samuel J Palmer

We should add examples of non-orthogonal lattices to the documentation, with some pictures ### Interface #### Assuming both lattice vectors `a1` and `a2` should have length == 1 In this...

Accuracy of FDFD and PWEM solutions can be improved by dielectric averaging Resources - https://empossible.net/wp-content/uploads/2019/08/Lecture-4f-FDFD-Extras.pdf - Paper discussing subpixel averaging in MEEP http://ab-initio.mit.edu/~oskooi/papers/Oskooi10.pdf

enhancement

While plane-wave expansion method is efficient for modelling dielectric materials, it is inefficient at modelling materials such as metals or modelling finite (non-periodic) systems It would therefore be useful to...

enhancement
breaking

Currently we have Wilson loop methods which are very general and can be used to calculate * Total Chern number of a set of bands * Some [symmetry-protected Chern numbers](https://sp94.github.io/Peacock.jl/dev/how-tos/wilson_loops/)...

enhancement

Add `GPU=true` keyword option (passed on to the solver constructor `Solver(... GPU=GPU)`) when loading crystals from the `Peacock.Zoo`

enhancement

### Problem Currently the geometry is defined by specifying an `epf(x,y)` function and a `muf(x,y)` function, ```julia geometry = Geometry(epf, muf, ...) ``` This is straightforward for simple geometries but...

enhancement

We should provide users with a simple interface for transformation eigenmodes. Sometimes an analysis requires us rotate or mirror an eigenmode (eg studying symmetry eigenvalues) or to shift it by...

enhancement

### Issue Sometimes full 3D simulations (photonic crystal periodic in x, y, z directions) will be required, but `Peacock.jl` currently supports only 2D simulations (crystal periodic in x and y...

enhancement
breaking

`Mode` is for storing an eigenvector that has an associated eigenvalue. `HilbertSpace(modes)` takes the modes, discards the eigenvalues, and orthonormalises the eigenvectors - useful for then calculating new eigenmodes, such...

enhancement
breaking

The `Mode` object returned by `solve(solver, k, polarisation)` could be generalised Currently it is assumed to be a frequency eigenmode ```julia Mode(k0::Vector, frequency::Number, data::Vector...) ``` We should rename `frequency` to...

enhancement