Video summary
The video features a discussion on MEEP, an open-source software tool designed to simulate Maxwell's equations using the finite-difference time-domain method. Hosted by Brock Palin and featuring Jeff Squires from Cisco Systems along with MIT professors Stephen Johnson and Artavan Oskui, the conversation highlights how this program discretizes space to march electromagnetic equations forward in time. While MEEP is highly general and capable of handling various physics including optics, plasmas, and microwave effects, it trades some efficiency for versatility compared to specialized codes that solve only narrow classes of problems. The software serves as a foundational tool for modeling wave propagation phenomena such as lasers, optical fibers, sensors, and solar cells, making it essential for industries ranging from display technology like organic LEDs to data center interconnects using optical circuits.
A significant portion of the discussion focuses on the practical applications and scalability challenges associated with running these simulations. The speakers explain that while MEEP can theoretically handle frequencies from radio waves to X-rays, its primary utility lies in the optical and infrared ranges where complex photonics design occurs; at longer wavelengths like microwaves or shorter ones like X-rays, simpler methods often suffice because materials behave more predictably (e.g., metals are highly conductive or everything is transparent). To address computational demands that exceed single-server capabilities, Artavan Oskui's startup, Syphidis, provides cloud-based infrastructure on Amazon Web Services. This approach allows small teams and startups to access high-performance computing resources without the prohibitive cost of building local clusters, leveraging spot instances for pennies per hour while managing data transfer bottlenecks through efficient parameter sweeps rather than massive parallelization across time steps.
The dialogue also delves into the unique technical advantages that distinguish MEEP from other simulation packages and proprietary alternatives. One key feature is its subpixel smoothing algorithm, which accurately handles material boundaries on a grid without requiring excessively high resolution, thereby reducing computational costs for shape optimization tasks where hundreds of calculations are performed in parallel. Additionally, the software's scriptability has evolved over decades; originally written with Scheme to avoid recompilation issues common in Fortran codes, it now offers robust Python interfaces that integrate seamlessly with libraries like NumPy and Matplotlib. This flexibility allows engineers to automate complex workflows, customize geometries dynamically, and extract specific data points without relying on graphical user interfaces, bridging the gap between academic research tools and commercial engineering needs through a model of open-source software supported by consulting services rather than restrictive licensing fees.
Read the full video transcript
[Music]
welcome to another edition of rce
again this is brock palin you can find
us online subscribe and find
the entire back catalog of over 100
episodes on research computing
at rce dashcast.com i have again with me
jeff squires of cisco systems and one of
the authors of openmpi
jeff thanks again for your time hey
brock it's getting to be
i guess we're hitting mid to late spring
here um and that seems like a perfect
time to me to talk about electrodynamics
don't you think
of course it's always a good time to
talk about that
so we have with us uh some of the team
that's behind
me um guys why don't you take a moment
to introduce yourself
i'm stephen johnson i'm a professor of
applied math and physics at mit
i am artavan oscui i was formerly a
student here at mit with professor
johnson and currently leading a startup
out of san francisco commercializing me
called syphidis
okay so can you give us a background on
what meep slash sympatis i think is
sympatis synthesis uh
you know what is it so meep is uh
a program to simulate maxwell's
equations the equations of
electromagnetism and there are lots and
lots of methods
computational methods for
electromagnetism
so meep uses one of the most general
and basic methods called the finite
difference time domain method so just
discretizes space and marches maxwell's
equations
forward in time and so because of
because of that it's handling the full
time dependent maximum equations it can
include lots of different kinds of
physics and it's you know very general
code
uh with the trade-off this is not as
efficient as maybe as some
more specialized code that only solve
one small class of problems
so dr johnson you were on this show
before uh about fftw which is probably
what you're best known for there's a
relationship between fftw
and meep isn't there uh very tenuous
so fhw is actually used
uh for another electromagnetic
simulation code that i developed
called mpb which it is less general than
meep it but it only solves one kind of
problem it finds
the like harmonic modes the resonant
modes
of maxwell's equations and that uses 40
transforms and
and a fourier transform basis and also
uses ftw and in fact f50w was
developed in part four meep so meep
uh solves a more general class of
problems and so it doesn't use
fourier transforms directly but it can
it actually can call mpb for for part of
its features and then and then mpb calls
f50w so there is a connection but it's
sort of a little bit indirect
ah okay so but meep is actually an
acronym right what does meat stand for
so i think it originally stood for uh
mit electromagnetic equation propagation
we've invented lots of other meanings
for the acronym like maxwell's equations
for every person
and other things like that but like most
acronyms mostly
people forget what it stands for and
they just call it meep
okay so you talked about mexico's
equations or whatnot but break it down
for those of us
who are not deep into the science here
what kind of physical phenomenon does
this simulate i mean what
how would i explain this to say my
mother
so you know maxwell's equations is all
electromagnetic electricity and
magnetism like
circuits and also light and optics are
electromagnetic waves
and all sorts of things like plasmas and
other kinds of things can fall into this
category as well
so mainly meep is oriented towards
modeling wave propagation problems so
problems uh like i said in optics
modeling
uh you know lasers modeling sensors
um you know modeling all sorts of like
optical fibers
and filters and other kinds of uh you
know phenomena
also microwave effects so you can you
can model microwaves and microwave
devices and other kinds of things
but mostly i think most of the people
using meep are using it
for optical and infrared simulations
so how would that those types of
simulations map into like a
real world uh product and what people
actually use
i can give a few examples here um one
kind of emerging area of display
applications you
guys might have heard of are organic
leds
they're recently been introduced by
apple in the
latest generation iphone x but also
increasingly uh prevalent in solid-state
lighting applications
and one of the big challenges in organic
leds is much of the light that's
generated by these organic molecules
actually remains confined within the
device and so there's a lot of research
within companies such as
samsung lg
nichia japanese company to design
structures
that can extract the light and to
increase the energy efficiency of these
organic
led devices and so that's one
application
that involves quite a bit of optical
simulations
based on uh finite difference time
domain tools such as meat
and other solvers other applications
involving
photonics involve
integrated circuit applications for data
centers
and so many of the listeners of this
podcast
may be familiar with bottlenecks related
to data transfer
within large data centers and there's
been a lot of talk recently
into transitioning from a kind of an uh
copper interconnect technology
to a light based optical fiber
technology
and at the core of that are essentially
optical circuits
that can convert electrons into photons
and those involve quite a bit of optical
design and
uh simulation tools such as meep and
others so getting light onto a chip
from an optical fiber and into a circuit
and off back off
also solar cells like you know the if
you're
trying to make a solar cell more
efficient very often what you do
nowadays is you
take a thin solar cell layer and you
texture it
or you put microstructures on it to to
scatter the light and make it absorb
more efficiently
and to design that you need lots and
lots of simulations
so who are you know who uses this
software so you mentioned a bunch of
brand names in there and i work for a
very large
networking company too cisco um you know
do we
use these things to develop our hardware
because forgive me i actually i don't
know because i'm a software guy so
i don't work down much more at the
hardware certis level
well i can say pretty much with high
confidence that
most large corporations developing
display
applications or sensors involving light
and
steven mentioned solar cells all of them
electromagnetic simulation tools really
at the core of their design
and more recently there are applications
involving augmented reality
you may be following kind of
developments in google glass and its
successor daydream
oculus for virtual reality all of these
have involved really intensive research
into kind of next generation display
technologies
and those involve lots and lots of
optical simulations as well
and now there are lots of simulation
methods and lots of simulation software
out there so sometimes it can be a
little hard to track down who is using
what
so for example meep is a time domain
simulation
uh and there are actually several it
meep is completely open source free
software
but there are also closed source
proprietary uh
simulation factors that use similar
algorithms from a whole bunch of
companies uh
so you know and different people are
using different software so initially i
think
me meep's initial foothold was more in
the research world
where you know when you're doing
research and you're pushing the edge of
of what's possible with optics you you
often need to be able to get inside the
code and really change what's happening
and that's only possible
with an open source tool uh but you know
now our artivans company is working
much more with a lot of different uh
commercial commercial vendors that are
starting to use this kind of thing
so you've talked a lot about the organic
leds which you know for things like
displays you want to be in the visible
range you also mentioned
i think it was infrared um what about
extreme parts of the spectrum
is is this code completely generalizable
like
could i use it for extremely high
frequency like almost like radio tran
like like radio type frequencies well
radio's not
high it's actually low but yeah i got
that backwards but
um like yeah okay is it is it purely
generalizable or do you kind of assume
you want to stay and we're focused on
this optical range you know from inner
infrared
you know to each side of optic you know
visible but you kind of want to stay in
that range
now it can work for everything from
radio frequencies to x-rays
uh you know as a theorist i usually work
in dimensionless units i said
my wavelength is always one uh so you
know in some sense uh
the theory is the same whether radio
frequencies are at x-rays the difference
is the materials
so at at really uh at long wavelengths
uh you know microwaves and radio
frequencies
um you know where you have really really
good conductors like metals is really
high
um then you know you can still use this
code but sometimes there are other
methods
that take advantage of of that that
really high connectivity to be
able to be more efficient from metallic
structures
um at really short wavelengths
in some sense once you get to start
getting the x-rays it
it almost becomes is overkill because at
x-rays
uh almost everything is transparent as
you know that's why they use x-rays to
look through you
uh so there isn't as much to do in terms
of doing scouting calculations
meat can certainly handle it but it's
it's like
if if you're mostly modeling light
propagation through empty space
it's overkill to use a big simulation
for that
so you know many of the most interesting
the reason the reason that i i mention
uh uh uh you know
most people are using it for infrared
and optical frequencies
is that that's where most of the
interesting photonics design is going on
at this space
it if you're at microwave frequencies if
you're ready
if you're really long wavelengths 100
kilometer wavelengths but for radio
waves
then you're doing circuits right so i
mean and it's overkill to do the full
maxwell's equations for a circuit
well and if you're a microwave if you
want to trap
if you want to make a waveguide at
microwave if you want to send light
along a channel you just make a metal
tube
you don't need a complicated geometry
and again on the other end of the
spectrum if you're at x-ray
there's really not much to do with
optical design because it goes through
just about everything
so the the interesting part is optical
and
infrared and that's that's why people
need lots of simulation tools there
so you mentioned uh mpb
you know mit photonic bands which was
another code you had done and you
mentioned that
meep is able to call mpb
but you said that meep is more
generalizable
so what what does mpb
do that you'd still want to call it
versus just using meep why would you
want to choose one package or the other
so you know usually in and this is
all of scientific competition there's a
trade-off between
generality and performance you know
and ease of use so if you have something
that just does one kind of calculation
it can be very fast and very easy to use
for that thing so mpb is one of those
things that just does one thing
it just computes what are called the
modes
uh the harmonic modes of a structure so
if you have a waveguide
an optical channel it will very
efficiently compute
you know what those modes are what the
field patterns are that just propagate
down the wave
that we've got at a fixed frequency so
meep is much more general you can have
things that don't really have modes they
have non-linearities or things are
moving around in time so the frequency
is changing it gets
extremely powerful in general but
the trade-off is that if you just want
to compute the modes of an optical fiber
you can do it with meat but it'll be
slower and a little bit more annoying to
use than something that's specialized
for just that problem
and so the reason that meep calls mpb is
very often
if you're doing a calculation for
example you're coupling you're trying to
couple an optical fiber
into a chip and so you want to start off
the simulation
by sending in one of the modes of those
fibers your initial condition
in some sense your source is one of the
modes of those fibers
and so what meep will do is it'll call
mpb to compute
that mode and use it as the source and
so
mbb will tell it oh this is the
fundamental mode of that optical fiber
and and then meep will use that
information and launch that mode in
into the chip and then you'll see what
it does the mode comes in and it
bounces around or it gets converted into
something else and so forth and people
will do all those dynamics
now one of the obvious challenges that
we have in in lots of scientific
computing
is that uh you know on a single server
you can do so much
and so you know typical solutions to
this are you know the the typical
mpi types of solutions does does me
support mpi do you guys scale up
that way yes yes so in fact
one of the things that our defense
company does is is help with
people do that feeling like
okay so what's your what's the biggest
scale that you guys have done or
or i guess maybe a better question would
be what is a typical scale that your
customers run on
well let me give some context to this
which is the
the range and the size of the problems
that uh meat calculations uh involve can
be huge
we're talking from you can run
calculations on your desktop kind of
with a few cores
all the way to hundreds of cores or
perhaps even thousands of course
and so that range
and then the computational needs um
really demand
uh and kind of inspired us to kind of
start this company
a scalable resource like a public cloud
infrastructure where you can
on demand access a scalable resource
that's sized just for the
applications of interest and so
particularly for a small startup or a
small team that
can't afford to build their own local
cluster and maintain it
having access to uh an amazon cloud or a
google cloud infrastructure really
enables them to leverage
me and other open source tools in ways
that would be very difficult
if these tools were not available
so how well so i that sounds exactly
uh in line with my expectations of you
know using
amazon and google for their
infrastructure one and it's perfect for
exactly this
but there have been some traditional
challenges um doing hpc in the cloud
such as the data transfer on and off and
the lack of
high-speed networking in the cloud how
do you guys uh
address that well the
applications that we've been looking at
uh
recently haven't been pushing
the limits of the uh interconnect
capabilities of these resources
yet so
bottlenecks or communications
bottlenecks yet of course they are there
and uh it's just that the applications
that we've been using
uh have been fairly well constrained uh
i would say
um but certainly i would say that uh and
of course having a dedicated hpc
infrastructure for these kinds of
calculations
would obviously be important for
performance reasons yeah
and of course so some of the big
calculations we do you you get time on a
traditional super computer as well
um you know a lot of the time you're
running simulations on a few course
uh that can even fit on a single machine
and then you're
if you need lots and lots of cores it's
often because you're doing parameter
sweeps
or some kind of optimization where you
have lots of
lots of things that are embarrassingly
parallel that don't even need to talk to
one another
uh so then you just need to run a
thousand instances of them
um so um but it you know
it's you and usually in sort of data
days of design work people are typically
doing
relatively small simulations and then
every once in a while when they've got
sort of everything working they put
everything together
and then throw it at a huge machine with
you know hundreds or thousands of course
okay you actually answered my question i
was going to ask if you could actually
optimize around the fact
for total time dissolution because you
do have the ability to sweep over
frequency
and maybe actually subdivide ways where
you're not as worried about getting
a single large one done quickly when
you're more interested maybe across a
range of frequencies or range of time or
something like that where you could
actually subdivide
so it sounds like you're already doing
that but
so so first of all meep is is a time
domain code so you're not putting in a
single frequency so
it actually automatically gives you so
if you want multiple frequencies
you put in a pulse in time and then you
fully transform the result
and it gives you all the frequencies in
one simulation that's actually one of
the big advantages of doing a tiny
simulation
in cases like solar cells for example
where you're really interested in a
broad bandwidth you know the whole
the whole visible spectrum and more um
you can get that entire bandwidth in one
simulation
um you also can't paralyze over time
because this is
the the time dimension is serial you
know you have you have to do the earlier
times before you can do the later time
so you can't
you can't do those in parallel so you
can only really paralyze over
uh space like you chop up space into
into different into pieces
and they still have to talk to one
another or over other parameters for
example
you know in engineering design you're
usually not just doing one structure
you're you're looking at a whole family
of structures and you want to you know
see the effect of this parameter or that
that parameter that
the radius of this of this uh waveguide
or the
the height of that of that other
structure
and so you're doing a whole bunch of
simulations in parallel and those things
paralyzed perfectly of course
so you've mentioned a couple different
cloud providers there are are you
finding that the companies you're
working with
or the people you're working with that
they kind of drive that decision
or are you providing a um
almost like hey for the type of
simulation you want to do we find
this to work better over here what's
kind of driving that decision about who
you know like which different provider
to choose
um well to be honest we're just using
amazon at this point
um we've been asked whether we uh
provide our offerings through google
cloud or microsoft but we haven't yet
gone in those directions yet only
because aws is really cheap
uh you guys and your listeners might be
familiar with spot instances and so
this is a situation where you can rent
like a multi-core
virtual machine for literally pennies
per hour um
and so and the scale of amazon's
infrastructure is just so much larger
than its competitors at this point
where the cost kind of considerations
are really foremost
among our customers at this point and so
they want really it's more important for
them to access the cheapest
uh low-cost machines versus the most
high performance
and most spec'd out uh computers okay
i was i was thinking more along the
lines of if that there was a
an interest in like they had existing
data existing infrastructure or
existing agreements because i assume
some of this work is proprietary when
you're talking about working with
companies
but that really hasn't come up yet with
the clients you're working with they're
happy to trust you with amazon
well people people also run it on their
own machines of course right so we have
you can download and compile it people
have their own clusters
or or run it on you know if they have if
they have their own
super computer time there's lots of
people that do that actually the
the that that was everyone until very
recently until until lord evans
uh started up this thing with sympathise
actually when when did you start that up
i can't remember
uh sippitus actually started in july of
2015
and it really started because we
felt that we had been working on meat
for almost a decade
and we were really more than a decade
more than a decade and in fact
even before meet uh as he mentioned was
working on mpb
and so we had these set of really
powerful open source solvers
and we really felt that we wanted to
kind of take them to the next level and
to
give enterprises and companies who are
doing real product design
access to the most cutting edge solvers
that didn't have these licensing
restrictions
as you know licensing commercial
simulation packages is very expensive
and for some companies the the budget
for accessing simulation software is a
non-trivial fraction
of their overall cost and so the idea
was
what if they could leverage the very
best in open source software
and where we could support it with
consulting and technical support
that they could have assurance and being
able to deploy these uh tools
uh and to improve their productivity
so when a customer connects to you know
the instances or use whatever tools that
you have there
on on ec2 what exactly did they get
did they get you know pre-canned
simulations that they just supply the
input
or can they write their own applications
and call your routines however they wish
how how exactly does this work right now
what we provide is a
are the latest versions of meep and mpb
pre-installed on ubuntu virtual machines
and in fact that's a free offering and
so our customers can deploy this
amazon machine image it's a virtual
machine with these tools pre-installed
sized for their particular applications
and for them they customize it so they
add on their own tools or they add on
third-party
servers to create some custom tool chain
and sometimes we
we provide them with technical support
for that but at this point in time
the tools are free and they deploy it
for their specific needs and we just
provide them with some technical support
yeah so just in terms of inputs
basically once you have the programs you
can run it on any geometry and any kind
of device you want
uh it's uh scriptable actually
there's a funny story i mean it's
scriptable initially using scheme
and recently we added on a python
interface and you can also call it from
c plus plus as well so you can just
write
uh you know right basically write
programs in any of those languages that
that uh control the simulation
and input any geometry want and allow it
to change as a function of time and
extract any information you want from it
so it's quite quite flexible
so i have to ask the obvious question is
is it scheme because of mit
no so the story the story here is
uh um you know before
meep came this other software which
still exists uh it's just more
specialized called mpb
and uh so i was developing that in the
back in the late 90s
actually the same time as fftw
and at that time uh
most of the simulation codes that we had
that were like these large fortran codes
that you have an input usually and
people who are fortran users uh
will recognize this every time you run a
new simulation you have to recompile the
code
because the parameters of the simulation
where where put is like code parameters
and or it had and or it had some um
inscrutable text file full of numbers
and these in the usual fortran formulas
are usually space sensitive
uh that you had usually had to write a
script to write the input file for this
this code
so i wanted to have uh my program be
scriptable
and uh at the time you know python
in like 1997 was still kind of a you
know not completely on people's radar
screen
uh for company first computational
science and
the uh the the gnu standard
for scripting language add-on was guile
was this
is a scheme uh implementation
and and at the time that was one of the
ones that was
one of the only languages that was
really designed and documented
uh to be something that you would add on
to a c program and
and use it to control that that c
program uh you know python said you know
if if i started a few years later i
probably would i probably would have
used python
um or lua or something like that but
those
languages were really on the radar
screen at that time i also
of course new scheme because because i'm
at mit
and you know i took scheme as an
undergraduate and actually knew
scheme when i was in high school as well
so i was familiar and comfortable with
the language
so i ended up using guile and scheme to
script
mpb and then a few years later in 2003
when we started working on meep
it was natural to use the same this the
same scripting tools i developed for
scheme
for for controlling mpbs sorry for
controlling
uh meep as well uh so that's that was
the interface for many many years was
this scheme interface
okay so let me ask you about python
because python is all the hotness these
days
um how well does meep play with
other python numerical packages like
numpy and like
so so python so so the python interface
is very
fairly recent actually there was a
another python interface that was uh
done by another group uh um at get
university a few years ago
uh that but we wanted something that was
a little bit more closely integrated
with uh with the core of meep and so
this this was uh recently started i
guess uh
in the last year it was done and then
chris hogan
who's here as well was the the lead on
developing that so yeah it uses numpy
it you know so for example you can be
running a meep simulation
and uh at any point in time you can say
give me the fields
uh as a numpy array and then i want to
pl or get a slice of the field as a
numpy array and then i can plot it with
matplotlib
and so you can use all of the python
tools it uses
it uses numpy uses h5
pi the the hdf5 python interface it uses
it uses uh the hooks in with the mpi
uh library so you so that that so you
can use
python's mpi tools to talk to meeps mpi
uh stuff so it's it's hooked in pretty
well
so give us a little background here how
did meep get started because
if i read your web pages correctly uh
this has been this is a fairly mature
project right
yeah it's been around since 2003 was
when it first got started
and it was actually started by david
roundy
as people may have heard of him because
he wrote something called the darks
version control system uh which was a
you know
a it came before git was one of the
early
distributed version control systems it
still exists and he's currently a
professor
at uh at oregon state uh so he started
this along with uh
um uh a couple of colleagues of mine
mikhail benesco
uh and peter bermel who's now from at
purdue
and i got involved uh very shortly as
well
uh so at the time you know basically in
order to do research
in electromagnetism you have to have you
know access to the codes
and every group had its own you know
musty old fortran code for doing
this kind of simulation and we were no
exception we expected
two different fortran codes uh so david
uh started developing this actually was
initially called dactyl
uh for two footed because it was only 2d
and only cylindrical coordinates and he
started developing something that would
handle cylindrical coordinates and be
really uh scriptable as a c plus library
and then it ended up being so
so useful that he and and we
started adding on full full you know
support for other kinds of geometries
and
it became our main uh our main time
domain simulation code after that
[Music]
so you mentioned that the uh the code is
open source and that you were trying to
bring you know these scalable you know
cutting edge
academic software to the commercial
space and make it accessible and that's
part of the
business around consulting and making
accessible especially for small
companies utilizing the power of cloud
while also supporting people's local
systems uh
but the the licensing i noticed you know
fftw
it it says that you know you need to
contact mit
if you want to get a commercial license
for this so can you clarify like what
license is meep itself under
and is it under a similar type of
arrangement
so meep is also gpl you know
the difference with fpw is that fdw is
really only usable as a library
so if you want to use it in your in
matlab or some other commercial code
uh you have to uh
and you don't want to open source your
entire commercial commercial code then
you have to buy a non-gpl license
from mit so meep is also
you know plus plus and
uh and python and and so forth
but uh um so far people really haven't
been integrating into like large
commercial packages
you you control it with little scripts
that you never distribute so the license
doesn't really prevent you from
using that in a commercial setting as is
under the gpl because you know the gpl
basically has no effect on you if you
don't redistribute the code so if
you just write a one-off script to use
meep for your device
it has no effect on you so that's that's
not so
so so the commercial entities don't need
a special license
to use mpb it says to use meep or mpb
uh so it so art events business model is
not
selling licenses uh it's you know more
selling consulting and other kinds of
things i
you know you can speak to more than i
one of the things i'm really focusing on
here as i mentioned is to make
uh the simulations accessible to a much
broader audience and part of that
involves
offering the access to the tools through
amazon
particularly for companies who don't
have their own local clusters
but another aspect of what we're working
on right now is to make the tool easier
to use
one of the big challenges with
engineering simulation tools is that
they require typically a phd level
training to have confidence that the
simulations are being set up correctly
and when the bar is set so high it makes
it very difficult for small companies
particularly startups to really gain
access to these kind of cutting edge
technologies
and so the focus that sympathies is
really to try to make the tools
much more accessible by automating the
key functionality
that requires uh accurate stimulation so
for example
choosing the right resolution in a meep
simulation is non-trivial
uh it depends very much on the materials
that are involved and the structures
that
are being used and so choosing the right
resolution
has an enormous impact on the accuracy
of the result and so
we're working on ways to essentially be
able to automate
choosing the right resolution for a
given application in order to ensure
confidence and typically
these involve a lot of trial and error
and manual hand kind of tuning
which we're developing tools to automate
the other aspect is actually running
these simulations in the cloud so for
example choosing a cluster that's sized
for the application
in order to ensure a very high
throughput is also non-trivial
and so to really leverage the the cloud
you want to
choose a cluster configuration that's
sized just for that application
and that's also a non-trivial kind of
problem to deal with
particularly for new users who don't
have experience and so
again we're developing tools that can be
used to leverage the cloud
to deploy neat simulations in a way
that's not possible today and quite
frankly it's not possible with the other
commercial solvers
either so what is it about me i mean
earlier
uh in our conversation you mentioned
that there's a lot of other software
packages out there
and clearly you're working to make it
easy to use
make it available in a cloud-based
environment have consulting services and
things like that but
what about the meep software itself what
makes it unique why
you know other than licensing issues and
whatnot why would i use
meep instead of some of the other
packages
one of the key challenges with
finite difference time domain solvers in
general is
the representation of materials on the
actual
grid the volume the volumetric grid and
uh in very early research that we did
when we
were developing meat we realized that
the choice
of the representation of these material
geometries
uh is very much dependent on things like
subpixel smoothing um
yeah so so basically these algorithms
work by dividing space onto a grid
and so the question is what do you do
with the material that's at a boundary
uh you know you have a pixel basically
you're discretizing
the geometry into pixels and what do you
do with a pixel that crosses a boundary
between
two different materials and how do you
deal with that accurately and so one of
the things that it had early on was we
developed a unique algorithm for
for doing a special kind of averaging uh
that makes it much more accurate
uh in handling boundaries so so it has
some unique
accuracy features enabled in its ability
to handle
uh you know discontinuous boundaries
with high accuracy for example
why this is important is that this
allows you to reduce the sun
considerably so typically in order to
ensure very high accuracy you really
need to crank up the resolution
but with this subpixel averaging method
that we developed this allows you to
reduce the size of the simulations while
still ensuring accuracy
and this is particularly important for
things like shape optimization where
you're varying the size
or shape of your material geometry and
you're doing
tens maybe hundreds of calculations and
you want each simulation to be as small
and as compact as possible
because you're exploring a large
parameter space for example
and so this subpixel averaging really
enables the application
of me to these problems that previously
required
lots of computational resources yeah and
another
unique thing is just the scriptability
the ability to to
write you know call it as a sequence
plus library or call from python
hook into numpy you know the level of
integration that that's possible there
uh is is i think relatively unusual
where a lot of the focus uh especially
in commercial codes is typically
making nice gui interfaces which are
also nice
uh for their own you know for certain
audiences
um but especially in a research setting
or in a design setting
where you need to run lots and lots of
different variations on a given design
it's really powerful
to be able to program it
i think we keep hearing one of your
developers there in the background
as well yeah my
my one of my well my dog is in the
background so she comes with me in the
to the office
a few days a week and she's a little
restless at uh
you know not being uh not being able to
play with me
all right well let me ask you a question
that i ask uh all development projects
on the podcast here is uh what version
control system do you use and why
so initially we used darks and
it was because uh david roundy started
uh started meep and he
wrote the docs version control system
and i use that for many
but uh and i actually like darks a lot i
think it has a much better interface in
many ways than good
um but at some point the advantage
of uh being able to use github
especially
so overwhelming that we switched over so
i transferred all the history from darks
over to get there's nice
nice tools to let you convert
repositories one way or the other
actually that was a little tricky
because we were using dark so early on
from such an early version
that the darks to get migration tools
didn't actually handle
the early commits so i had to patch it a
little bit in order for that to work
so nowadays it's all git it's on github
we use the github you know version
tracking where you have to use the the
travis ci
all the usual uh uh all the usual tools
that people use these days
okay so since uh meep is open source i
assume you have a bit of a community
behind it how
do you guys accept uh github pull
requests you know how does
someone get involved in the meat project
yeah so we do accept pull requests
uh i mean you the way you get involved
is the way you normally get involved
with something on github
uh you know you submit a poll request
you usually i would suggest
uh first filing if you if you plan or
planning a feature first filing an issue
get some feedback on whether on the
design of that feature
how it fit in with other plans and once
there's the green light
then go ahead and and submit a pull
request
with the code implementation and uh
most of the large patches at this point
have been done by people who work
directly with me
or and or artifact um
but uh you know
there's been smaller contributions and
and
there's now that we're on github which
is actually a relatively recent thing in
the last couple of years
uh there's starting to be a wider
community of people that are that are
actually
contributing directly patches and things
uh whereas before
you know people could submit patches of
course before with even without github
but it was you know much rarer i think
for people to get involved that way
it's it's much easier now that there are
all these nice online tools for tracking
contributions
and where can people find uh contact
information for
your new company uh you can
check out sympathis.com symphonies is
actually a reference to simulations
being
an impetus for new discoveries and
technologies
s-i-m-p-e-t-u-s dot com
okay well thank you very much guys
thanks for your time thank you
thank you thanks guys
[Music]
you