forked from mirrors/nixpkgs
commit
9313ae3ba5
|
@ -0,0 +1,42 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, gfortran
|
||||
, blas
|
||||
, lapack
|
||||
}:
|
||||
|
||||
assert !blas.isILP64;
|
||||
assert !lapack.isILP64;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "harminv";
|
||||
version = "1.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NanoComp";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-EXEt7l69etcBdDdEDlD1ODOdhTBZCVjgY1jhRUDd/W0=";
|
||||
};
|
||||
|
||||
# File is missing in the git checkout but required by autotools
|
||||
postPatch = ''
|
||||
touch ChangeLog
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook gfortran ];
|
||||
|
||||
buildInputs = [ blas lapack ];
|
||||
|
||||
configureFlags = [ "--enable-shared" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Harmonic inversion algorithm of Mandelshtam: decompose signal into sum of decaying sinusoids";
|
||||
homepage = "https://github.com/NanoComp/harminv";
|
||||
license = with licenses; [ gpl2Only ];
|
||||
maintainers = with maintainers; [ sheepforce markuskowa ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libGDSII";
|
||||
version = "0.21";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HomerReid";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-EXEt7l69etcBdDdEDlD1ODOdhTBZCVjgY1jhRUDd/W0=";
|
||||
};
|
||||
|
||||
# File is missing in the repo but automake requires it
|
||||
postPatch = ''
|
||||
touch ChangeLog
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library and command-line utility for reading GDSII geometry files";
|
||||
homepage = "https://github.com/HomerReid/libGDSII";
|
||||
license = [ licenses.gpl2Only ];
|
||||
maintainers = with maintainers; [ sheepforce markuskowa ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
151
pkgs/development/python-modules/meep/default.nix
Normal file
151
pkgs/development/python-modules/meep/default.nix
Normal file
|
@ -0,0 +1,151 @@
|
|||
{ 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 ];
|
||||
};
|
||||
}
|
|
@ -7899,6 +7899,8 @@ with pkgs;
|
|||
|
||||
gyb = callPackage ../tools/backup/gyb { };
|
||||
|
||||
harminv = callPackage ../development/libraries/science/chemistry/harminv { };
|
||||
|
||||
igrep = callPackage ../tools/text/igrep {
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
|
@ -27322,6 +27324,8 @@ with pkgs;
|
|||
|
||||
ledger-udev-rules = callPackage ../os-specific/linux/ledger-udev-rules {};
|
||||
|
||||
libGDSII = callPackage ../development/libraries/science/chemistry/libGDSII { };
|
||||
|
||||
inherit (callPackages ../data/fonts/liberation-fonts { })
|
||||
liberation_ttf_v1
|
||||
liberation_ttf_v2
|
||||
|
|
|
@ -5804,6 +5804,8 @@ self: super: with self; {
|
|||
|
||||
mediapy = callPackage ../development/python-modules/mediapy { };
|
||||
|
||||
meep = callPackage ../development/python-modules/meep { };
|
||||
|
||||
meilisearch = callPackage ../development/python-modules/meilisearch { };
|
||||
|
||||
meinheld = callPackage ../development/python-modules/meinheld { };
|
||||
|
|
Loading…
Reference in a new issue