Sorry for a little advertisement, but this might help you. The following compilation procedure for MEEP (and Python-meep, both supporting HDF and OpenMPI) works also for Debian 8.5:
https://github.com/FilipDominec/python-meep-install I tested it today again in a virtual machine, and MEEP passed all its 19 tests. Note that the Python-meep scripts presented on my github page facilitate much of the "housekeeping", including graphical export. Filip 2017-01-08 6:05 GMT+01:00, Robin Whittle <r...@firstpr.com.au>: > Thanks Steven and colleagues for Meep! > > I wrote a message to the list on 2015-04-20 about compiling Meep 1.3 on > a Debian 8 (testing) system. Here is a revised version for Debian 8.5. > Again, I built HDF5 from sources, which are now up to version > 1.10.0-patch1. This also documents how I tested Meep with the first > three tutorial examples. > > As before, I was able to compile the single threaded version ("serial", > I didn't try MPI) of Meep with two problems: > > 1 - "make check" failed for near2far. I will email the > log file to m...@ab-initio.mit.edu as requested. > > 2 - Meep's configure script did not find the HDF5 libraries. I fixed > this by compiling HDF5 from source, with a configure option > suggested in a recent list message by Pavel Ivanov. > > This description is detailed in the hope that it will help people who > are stuck somewhere. There are many decisions to make about compiling > and/or installing from packages the various things Meep itself relies > on, and other tools required to use Meep. > > - Robin > > > > This is a dual hex-core Xeon X5670 machine with Debian 8.5 which I > installed some months ago. > > Low-key preliminaries: > > The system has X Windows and I am sshing to it from a Windows > machine and using Xming for the Windows display of X windows > programs. To run Synaptic (package manager) like this without > any fuss, I needed to (from non-root account and then "su -") > add "PermitRootLogin yes" to /etc/ssh/sshd_config and restart > the sshd server with: "/etc/init.d/ssh restart". Then I could > use PuTTY to log into the machine as root, and the command > "synaptic" would bring up the GUI package manager. (PuTTY: > Connection > SSH > X11 > Enable X11 forwarding.) > > Apart from running Synaptic, which I did as root, I did all the > following, including untargzipping the tarballs, as a mortal user, with > sudo to run "make install" commands as root. I have not attempted to to > compile for MPI -so this is a single-threaded Meep. This is based on > the instructions at: > > http://ab-initio.mit.edu/wiki/index.php/Meep_Installation > > which was last updated on 2016-11-27, and which has only very slight > changes since I referred to it last time, with latest updates on 2015-02-13. > > I used Synaptic Reload and "Mark All Upgrades" to update the system. > > (Note for newbies and myself since I tend to forget this: If > the Installing Software dialog box seems to be stuck forever, > click the little right-pointing arrow to the left of "Details". > This will probably reveal some script which is waiting for the > user to press Enter, 'q' etc.) > > I had already installed the build-essential 11.7 package, which sets up > the GCC compiler and lots of other things for compiling programs in C > and C++. (BTW, Synaptic makes Meep 1.2.1-2+b1 available.) > > Since harminv's use of BLAS and LAPACK requires a Fortran compiler, I > installed (with Synaptic): > > gfortran-4.9 4.9.2-10 > libgfortran-4.9-dev 4.9.2-10 > > > Here are some packages which were already installed, or which I > installed now: > > gcc > > Some gcc packages were already installed, not counting some 4.8 > packages: > > gcc 4:4.9.2-2 > > gcc-4.9 4.9.2-10 > gcc-4.9-base 4.9.2-10 > > > > BLAS > libblas-common 1.2.20110419-10 was already installed. > libblas3 1.2.20110419-10 was already installed. > libblas.dev 1.2.20110419-10 I installed. > > > LAPACK (search Synaptic for "liblapack".) > liblapack3 3.5.0-4 was already installed. > liblapack-dev 3.5.0-4 I installed. > > > Harminv > > Via Synaptic I could have installed 1.3.1-10, but since 1.4 is > needed, I compiled it. (It requires BLAS and LAPACK). > > http://ab-initio.mit.edu/wiki/index.php/Harminv_installation > > (The last change to this page was in 2005.) > > From the link at: > > http://ab-initio.mit.edu/wiki/index.php/Harminv > > (The last change to this page was in 2015-03-31.) > > I downloaded: > > http://ab-initio.mit.edu/harminv/harminv-1.4.tar.gz > > and untargzipped it to: > > /xx/meep-build/harminv/harminv-1.4/ > > From there: > > ./configure > > seemed to run OK to the point of an error: > > cannot compile a simple Fortran program > > By right clicking the gfortran-4.9 item in Synaptic and selecting > Properties > Installed files, I ascertained that the compiler was: > > /usr/bin/gfortran-4.9 > > Following the instructions on the Harminv installation page, I gave > this command instead: > > ./configure F77=/usr/bin/gfortran-4.9 > > This produced the Makefile and no errors. Then I could give the next > command: > > make > > Next, for the installation command to run as root I want to be able > to give this command from a non-root shell: > > sudo make install > > (See my 2015-04-20 email for how I has set up my mortal account > a sudoer.) > > > GNU Guile > > Searching Synaptic for "guile" indicated that no packages with names > including "guile" had been installed. The minimum version for Meep > is 1.6. I installed: > > guile-2.0 2.0.11+1-9 > guile-2.0-libs 2.0.11+1-9 > guile-2.0-dev 2.0.11+1-9 (This brought in many other packages.) > > > libctl > > I installed these packages. > > libctl-dev 3.2.2-2 > libctl-doc 3.2.2-2 > libctl5 3.2.2-2 > > > > HDF5 (This is where the trouble begins . . . I did this next set of > installations, but I suggest that you don't. See my notes below > starting at AAA for how to compile HDF5 for uniprocessor AKA "serial" > systems, that is not MPI meep.) > > I installed: > > h5utils 1.12.1-2.1+b2 > > which brought in: > > hdf5-tools 1.8.13+docs-15+deb8ul > libhdf5-8 1.8.13+docs-15+deb8ul > > Since we want the -dev packages too, I installed: > > libhdf5-dev 1.8.13+docs-15+deb8ul > > which brought in: > > hdf5-helpers 1.8.13+docs-15+deb8ul > libhdf5-cpp-8 1.8.13+docs-15+deb8ul > libjpeg-dev 1:1.3.1-12 > libjpeg62-turbo-dev 1:1.3.1-12 > > I have no real idea what these packages are, other than that the > H5utils are vital for using Meep: > > http://ab-initio.mit.edu/wiki/index.php/H5utils > > I later recognized that Meep uses a shared library for the many > HDF5 functions it typically has, and which most people want. > This set of packages turned out to be incompatible with the Meep > configure system. I discuss this, and the fix for it, below. > > > From http://ab-initio.mit.edu/wiki/index.php/Meep_download I downloaded > meep-1.3.tar.gz and untargzipped it to: > > /xx/meep-build/meep-1.3/ > > > and from there: > > ./configure F77=/usr/bin/gfortran-4.9 > > There were no errors. Then: > > make > sudo make install > > This all went without errors, which is quite remarkable considering how > many packages are required. Then I ran the self-tests: > > make check > > The known_results test took less than 3 minutes. (7 minutes last time, > but the machine's memory system was running slower then.) One test - > near2far - failed. This concerns the new feature added in 1.3: "New > near-to-far-field functionality: given a bounding surface, automatically > computes the Fourier-transformed field in any desired grid of > 'far-field' points arbitrarily far away." As instructed, I am about > to email the test results to m...@ab-initio.mit.edu. I will send the > file meep-1.3/tests/near2far.log. > > I also dumped the help material in Meep's configure file: > > ./configure --help > configure-help.txt > > > However, all was not well . . . I should be able to run the interactive > commands at the start of the tutorial: > > http://ab-initio.mit.edu/wiki/index.php/Meep_Tutorial > > - - - - > > (set! geometry-lattice (make lattice (size 16 8 no-size))) > > (set! geometry (list > (make block (center 0 0) (size infinity 1 infinity) > (material (make dielectric (epsilon 12)))))) > > (set! sources (list > (make source > (src (make continuous-src (frequency 0.15))) > (component Ez) > (center -7 0)))) > > (set! pml-layers (list (make pml (thickness 1.0)))) > > (set! resolution 10) > > (run-until 200 > (at-beginning output-epsilon) > (at-end output-efield-z)) > > - - - - > > (Control D to exit Meep.) > > and have it produce a .h5 file. However, now, it generated a message: > > creating output file "./eps-000000.00.h5"... > meep: not compiled with HDF5, required for HDF5 output > > This is the same as what happened in April 2015. My solution to it then > was to compile HDF5 from source. I did this again, because it worked > for me, and because my attempt to understand what Filip Dominec did to > fix the same problem in his context (automating compilation of > everything MPI and with a Python front-end for Meep) got me nowhere. > > > With Synaptic I uninstalled (complete removal) the following packages > listed above as the ones you probably shouldn't install: > > h5utils 1.12.1-2.1+b2 > hdf5-tools 1.8.13+docs-15+deb8ul > libhdf5-8 1.8.13+docs-15+deb8ul > libhdf5-dev 1.8.13+docs-15+deb8ul > hdf5-helpers 1.8.13+docs-15+deb8ul > libhdf5-cpp-8 1.8.13+docs-15+deb8ul > libjpeg-dev 1:1.3.1-12 > libjpeg62-turbo-dev 1:1.3.1-12 > > AAA > > The source is at: > > http://www.hdfgroup.org/HDF5/release/obtainsrc.html > > for HDF5-1.10.0-patch1: > > > https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/hdf5-1.10.0-patch1.tar.gz > > This is much later than the version I compiled in April 2015: > HDF5-1.8.14. I untargzipped this to: > > /astro/meep-build/HDF5/hdf5-1.10.0-patch1/ > > and from there dumped the help material in HDF5's configure file: > > ./configure --help > configure-help.txt > > The only other guidance I could find on using the configure file was: > > > https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/unpacked/release_docs/INSTALL > > but I didn't need any extra guidance. > > > From the just-mentioned directory, I gave these commands to compile > HDF5. (This is based on what I did in April 2015): > > ./configure --prefix=/usr/local > configure-output-HDF5.txt > make > sudo make install > install-HDF5.txt > > (Compilation generated hundreds of warnings.) > > Now the HDF5 shared libraries and a settings file are in /usr/local/lib > as reported in install-HDF5.txt. > > > I have not yet tried compiling h5utils from source - maybe it will be > good enough to install the package via Synaptic again. For now, I tried > the Meep configure command again to see if it was happy about HDF5: > > ./configure F77=/usr/bin/gfortran-4.9 > configure-output-3.txt > > It only produced the first three warnings mentioned above - the warning: > "Couldn't find the HDF5 library!!" did not appear. > > I compiled, installed and tested Meep: > > make > sudo make install > > Now, as explained in my April 2015 message to the list, what should be > done at this point is this next command: > > sudo ldconfig > > Then continue with the tests: > > make check > > This runs OK, with the same near2far failure as listed previously. > > The interactive commands from the first part of the tutorial (for the > straight waveguide, as previously listed) produced two .h5 files as > expected. The final lines from meep were: > > creating output file "./eps-000000.00.h5"... > creating output file "./ez-000200.00.h5"... > run 0 finished at t = 200.0 (4000 timesteps) > > The next step in the tutorial involves programs from H5utils. > > Rather than compile h5utils, I tried re-installing with Synaptic: > > h5utils 1.12.1-2.1+b2 > > which requires: > > hdf5-tools 1.8.13+docs-15+deb8ul > libhdf5-8 1.8.13+docs-15+deb8ul > > I was wary about potentially interdependent programs being a mix of > installed packages and compilations from source. There were no obvious > problems. > > After exiting Meep with control-D, I was able to complete the next two > steps of the tutorial: > > h5topng -S3 eps-000000.00.h5 > h5topng -S3 -Zc dkbluered -a yarg -A eps-000000.00.h5 ez-000200.00.h5 > > ez-000200.00.png looked a little different to the image in the tutorial: > > http://ab-initio.mit.edu/wiki/index.php/Image:Tutorial-wvg-straight-ez-000200.00.png > > It looks the same in principle, but as if the snapshot was taken when > the source was at a different phase of its sinewave cycle. It is binary > identical to the ez-000200.00.png I produced in April 2015, about which > I wrote: "identical to a file I produced with an earlier version of Meep > in 2011." This is pretty good going, considering that the versions of > Meep, HDF5 and I guess h5utils have all changed since 2011, and that > this version of Meep predates by more than a year the version of HDF5 I > am using. > > > NOTE! There is no file for this in the examples directory of the > Meep source code, and the file there "bend-flux.ctl", which > is commented as being for the "transmission around a 90-degree > waveguide bend in 2d" actually matches the third example, > which has the title: "Transmission spectrum around a waveguide > bend". > > I copied the text from the tutorial page for the second example "A 90° > bend" and saved this as "90-degree-bend.ctl": > > - - - - - > > (set! geometry-lattice (make lattice (size 16 16 no-size))) > (set! geometry (list > (make block (center -2 -3.5) (size 12 1 infinity) > (material (make dielectric (epsilon 12)))) > (make block (center 3.5 2) (size 1 12 infinity) > (material (make dielectric (epsilon 12)))))) > (set! pml-layers (list (make pml (thickness 1.0)))) > (set! resolution 10) > (set! sources (list > (make source > (src (make continuous-src > (wavelength (* 2 (sqrt 12))) (width 20))) > (component Ez) > (center -7 -3.5) (size 0 1)))) > (run-until 200 > (at-beginning output-epsilon) > (to-appended "ez" (at-every 0.6 output-efield-z))) > > - - - - - > > I ran this: > > meep 90-degree-bend.ctl > > and then gave the rest of the command lines listed in the tutorial, with > the name of the .ctl file added to the file names, since I generated > them from a .ctl file while in the tutorial they are generated from an > interactive session: > > h5ls 90-degree-bend-ez.h5 > > The tutorial page indicates that this should respond with: > > ez Dataset {161, 161, 330/Inf} > > but I got: > > ez Dataset {160, 160, 333/Inf} > > Adapting the next line of the tutorial: > > h5topng -t 0:329 -R -Zc dkbluered -a yarg -A eps-000000.00.h5 ez.h5 > > to the different number of images, now 333 for some reason: > > h5topng -t 0:332 -R -Zc dkbluered -a yarg -A \ > 90-degree-bend-eps-000000.00.h5 \ > 90-degree-bend-ez.h5 > > This produced 333 .png files. The final line of the tutorial uses a > program from the package imagemagick, which was already installed. > Again, adapting the tutorial line to my own filenames: > > 90-degree-bend-ez.tnnn.png > > I gave the command: > > convert 90-degree-bend-ez.t*.png 90-degree-bend-ez.gif > > This produced a .gif (read only for everyone except the owner) file > which resembles that of the tutorial: > > http://ab-initio.mit.edu/wiki/images/7/7a/Tutorial-wvg-ez.gif > > except that instead of the bend pointing downwards, it points upwards. > This is the same as my April 2015 experience. > > After installing ffmpeg I was also able to create a .mp4 video file > (better quality than .mpg): > > convert 90-degree-bend-ez.t*.png 90-degree-bend-ez.mp4 > > This was read write the owner and not even readable by others. Once I > fixed this I could play it with VLC Player on my Windows machine, and > slow it down with the '-' key or Playback > Speed. > > Everything seems to be working, so far. > > > I ran the file which matches the 90 degree bend section of the tutorial > meep-1.3/examples/bend-flux.ctl : > > meep bend-flux.ctl > > This generated errors similar to those from HDF5 (1.8.11) reported to > this list by Léna Soun on 2016-06-01. My errors start with: > > - - - - - > > HDF5-DIAG: Error detected in HDF5 (1.10.0-patch1) thread 0: > #000: H5F.c line 579 in H5Fopen(): unable to open file > major: File accessibilty > minor: Unable to open file > > - - - - - > > This is because this .ctl file is not meant to be run like this > initially. From the tutorial, the first run is: > > meep no-bend?=true bend-flux.ctl | tee bend0.out > > and the second is: > > meep bend-flux.ctl | tee bend.out > > These produced the desired text files, but I don't know enough about > Octave to try to reproduce the graph from them. However, the numbers in > the second column of the .dat files seemed, when divided as described, > to match the "transmission" curve. > > > > > > _______________________________________________ > meep-discuss mailing list > meep-discuss@ab-initio.mit.edu > http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss _______________________________________________ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss