Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
3.1 kB · 151 lines
Nix
at litex
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152{ stdenv, lib, buildPythonPackage, fetchFromGitHub, autoreconfHook, pkg-config, gfortran, mpi, blas, lapack, fftw, hdf5-mpi, swig, gsl, harminv, libctl, libGDSII, openssh, guile, python, numpy, scipy, matplotlib, h5py-mpi, cython, autograd, mpi4py}:
assert !blas.isILP64;assert !lapack.isILP64;
buildPythonPackage rec { pname = "meep"; version = "1.25.0";
src = fetchFromGitHub { owner = "NanoComp"; repo = pname; rev = "v${version}"; hash = "sha256-4rIz2RXLSWzZbRuv8d4nidOa0ULYc4QHIdaYrGu1WkI="; };
format = "other";
# MPI is needed in nativeBuildInputs too, otherwise MPI libs will be missing # at runtime nativeBuildInputs = [ autoreconfHook gfortran pkg-config swig mpi ];
buildInputs = [ gsl blas lapack fftw hdf5-mpi harminv libctl libGDSII guile gsl ];
propagatedBuildInputs = [ mpi numpy scipy matplotlib h5py-mpi cython autograd mpi4py ];
propagatedUserEnvPkgs = [ mpi ];
dontUseSetuptoolsBuild = true; dontUsePipInstall = true; dontUseSetuptoolsCheck = true;
enableParallelBuilding = true;
preConfigure = '' export HDF5_MPI=ON export PYTHON=${python}/bin/${python.executable}; '';
configureFlags = [ "--without-libctl" "--enable-shared" "--with-mpi" "--with-openmp" "--enable-maintainer-mode" ];
passthru = { inherit mpi; };
/* This test is taken from the MEEP tutorial "Fields in a Waveguide" at <https://meep.readthedocs.io/en/latest/Python_Tutorials/Basics/>. It is important, that the test actually performs a calculation (calls `sim.run()`), as only then MPI will be initialised and MPI linking errors can be caught. */ doCheck = true; checkPhase = '' export PATH=$PATH:${openssh}/bin export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
export OMP_NUM_THREADS=1
# Fix to make mpich run in a sandbox export HYDRA_IFACE=lo export OMPI_MCA_rmaps_base_oversubscribe=1
# Generate a python test script cat > test.py << EOF import meep as mp cell = mp.Vector3(16,8,0) geometry = [mp.Block(mp.Vector3(mp.inf,1,mp.inf), center=mp.Vector3(), material=mp.Medium(epsilon=12))] sources = [mp.Source(mp.ContinuousSource(frequency=0.15), component=mp.Ez, center=mp.Vector3(-7,0))] pml_layers = [mp.PML(1.0)] resolution = 10 sim = mp.Simulation(cell_size=cell, boundary_layers=pml_layers, geometry=geometry, sources=sources, resolution=resolution) sim.run(until=200) EOF
${mpi}/bin/mpiexec -np 2 python3 test.py '';
meta = with lib; { description = "Free finite-difference time-domain (FDTD) software for electromagnetic simulations"; homepage = "https://meep.readthedocs.io/en/latest/"; license = licenses.gpl2Only; platforms = platforms.linux; maintainers = with maintainers; [ sheepforce markuskowa ]; };}