SKILL.md
Meep FDTD workflows (MaxwellLink)
Confirm prerequisites
- Ensure
pymeepis installed and importable before generating Meep-based inputs. - Use
mxl.MeepSimulation(not rawmeep.Simulation) when using the unifiedmxl.MoleculeAPI.
Build a Meep-coupled run
- Set
timeunitsfsexplicitly and keep it consistent across analysis. - Create molecules with either:
- Embedded driver: Molecule(driver=..., driver_kwargs=...) - Socket driver: SocketHub(...) + Molecule(hub=hub, ...)
- For "baseline" EM-only runs (no molecules), use raw
mp.Simulation(...); switch tomxl.MeepSimulation(...)only when MaxwellLink molecules are present (common when generating reference spectra/fields first, then enabling coupling). - Use
boundary_layers=[mp.PML(...)], setresolution, and keepCourant=0.5(Meep default).
Prefer templates
- Start from the copy-ready templates:
- skills/mxl-project-scaffold/assets/templates/meep-tls-embedded - skills/mxl-project-scaffold/assets/templates/meep-tls-socket-unix - skills/mxl-project-scaffold/assets/templates/slurm-meep-plasmon-rteh-tcp (3D plasmonic structure + RT-Ehrenfest molecular lattice)
- Use SLURM/HPC patterns from
skills/mxl-hpc-slurm/SKILL.mdfor multi-node socket runs.
References
- Recipes:
skills/mxl-meep/references/meeprunrecipes.md - Docs:
docs/source/em_solvers/meep.rst
MPI/libfabric init tips (macOS/local single-rank)
- Sandbox note: sandboxed runs often block the libfabric endpoint; if
MPIInitthreadfails withepenable/socket errors, rerun unsandboxed (sandboxpermissions=require_escalated). - When Matplotlib is imported, set
MPLCONFIGDIR=/tmp/mplconfigto avoid cache permission errors.
Other common bugs
- The
dimensions=...input can only be assigned inmxl.Molecule()notmxl.MeepSimulation(). For example, assigningdimensions=1in bothmxl.Molecule()andmxl.MeepSimulation()will lead to runtime error:meep: cannot require a ez component in a 1D grid. - In 1D and 2D simulations,
mxl.Molecule(or molecular drivers) should have a transition dipole moment along z-direction, becausemxl.MeepSimulation()sets themxl.Moleculeto emit only along z-direction in 1D and 2D. - Cylindrical cells additionally support an on-axis x/y dipole with
polarization_type="analytical"andm=+1orm=-1passed tomxl.MeepSimulation(). Unlike the x/y/z^2-weighted Cartesian analytical kernels, the cylindrical x/y dipole uses an isotropic Gaussian polarization density, which is exactly representable in a single|m|=1sector.