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

Reply via email to