1. Introduction to NumBAT¶
1.1. Introduction¶
NumBAT, the Numerical Brillouin Analysis Tool, is a software tool integrating electromagnetic and acoustic mode solvers to calculate the interactions of optical and acoustic waves in waveguides. Most notably, this includes Stimulated Brillouin Scattering (SBS) frequency shifts and optical gains.
This chapter provides some background on the capabilities and techniques used in NumBAT. If you would like to get straight to computations, jump ahead to the installation and setup instructions in Installing NumBAT.
1.2. Goals¶
NumBAT is designed primarily to calculate the optical gain response from stimulated Brillouin scattering (SBS) in integrated waveguides. It uses finite element algorithms to solve the electromagnetic and acoustic modes of a wide range of 2D waveguide structures. It can account for photoelastic/electrostriction and moving boundary/radiation pressure effects, as well as arbitrary acoustic anisotropy.
NumBAT also supports user-defined material properties and we hope its creation will drive a community-driven set of standard properties and geometries which will allow all groups to test and validate each other’s work.
A full description of NumBAT’s physical and numerical algorithms is available in the article B.C.P Sturmberg at al., “Finite element analysis of stimulated Brillouin scattering in integrated photonic waveguides”, J. Lightwave Technol. 37, 3791-3804 (2019), available at https://dx.doi.org/10.1109/JLT.2019.2920844.
NumBAT is open-source software and the authors welcome additions to the code. Details for how to contribute are available in Contributing to NumBAT.
1.3. Development team¶
NumBAT was developed by Bjorn Sturmberg, Kokou Dossou, Blair Morrison, Chris Poulton and Michael Steel in a collaboration between Macquarie University, the University of Technology Sydney, and the University of Sydney.
We thank Christian Wolff, Mike Smith and Mikolaj Schmidt for contributions.
1.4. Citing NumBAT¶
If you use NumBAT in published work, we would appreciate a citation to B.C.P Sturmberg at al., “Finite element analysis of stimulated Brillouin scattering in integrated photonic waveguides”, J. Lightwave Technol. 37, 3791-3804 (2019), available at https://dx.doi.org/10.1109/JLT.2019.2920844 and https://arxiv.org/abs/1811.10219, and a link to the github page at https://github.com/michaeljsteel/NumBAT.
1.5. Contributing to NumBAT¶
NumBAT is open source software licensed under the GPL with all source and documentation available at github.com. We welcome additions to NumBAT code, documentation and the materials library. Interested users should fork the standard release from github and make a pull request when ready. For major changes, we strongly suggest contacting the NumBAT team before starting work at michael.steel@mq.edu.au.
1.6. Seeking assistance¶
We will do our best to support users of NumBAT within the time available.
All requests should be sent to michael.steel@mq.edu.au.
For assistance with installing and building NumBAT, please see the instructions in Seeking help with building NumBAT and collect all the required information before writing.
- For assistance with calculations once NumBAT is working, please send an email
containing the following information:
Your platform (Linux, Windows, MacOS) and specific operating system
The version number of your NumBAT installation. You can determine this by typing the following command in your terminal
python -c 'import numbat;print(numbat.version())'A short python script which demonstrates the issue you are trying to solve. Please make the script as short in both code length and execution time as possible while still exhibiting the issue of concern.
Note: NumBAT is updated frequently with new features, API and bug fixes. Consequently, please understand that we can only provide assistance for issues with the current github version of NumBAT. Please be sure that your script runs against the current github tree and that your problem is still present with that version.
1.7. Release notes¶
1.7.1. Version 2.0¶
A number of API changes have been made in NumBAT 2.0 to tidy up the interface and make plotting and analysis simpler and more powerful. You will need to make some changes to existing files to run in NumBAT 2.0. Your best guide to new capabilities and API changes is to look through the code in the tutorial examples.
- Some key changes you will need to make are as follows:
On Linux, the fortran Makefile is now designed to work with a virtual environment python to avoid dependencies on your system python.
There is a new core NumBAT module
numbatthat should be imported before any other NumBAT modules.It should no longer be necessary to import the
objectorNumbat(note different case) modules.The first call to any NumBAT code should be to create a NumBAT application object by calling
nbapp = numbat.NumBATApp().The default output prefix can now be set as an argument to
numbat.NumBATApp(). All output can be directed to a sub-folder of the starting directory with a second argument:nbapp = numbat.NumBATApp('tmp', 'tmpdir').The waveguide class
Structhas been renamed toStructure.A waveguide is now constructed using
nbapp.make_waveguiderather thanobject.Structure.The parameter names for some waveguide types have changed to become more intuitive than the generic
inc_a_xapproach. You can find details for a given structure usingNumBATApp().wg_structure_help(inc_shape).The interface for creating materials has changed. You now call the
materials. make_material(name)function. For examplematerial_a = materials.make_material('Vacuum')To access an existing material in an existing
Structureobject (say, in a variable calledwguide) usewguide.get_material(label)For example,mat_a = wguide.get_material('b')where the allowed labels arebkgand the lettersator.The member name for refractive index in a
Materialobject has changed fromntorefindex_n.The member name for density in a
Materialobject has changed fromntorho.- Due to a change in parameters, the function
plotting.gain_spectrais deprecated and replaced byplotting.plot_gain_spectrawith the following changes: The frequency arguments
freq_minandfreq_maxshould now be passed in units of Hz, not GHz.The argument
k_AChas been removed.
- Due to a change in parameters, the function
In all functions the parameter
prefix_strhas been renamed toprefixfor brevity. Using the default output settings inNumBATApp(), these should be rarely needed.All waveguides are now specified as individual plugin classes in the files
backend/msh/user_waveguides.jsonandbackend/msh/user_meshes.py. These files provide useful examples of how to design and load new waveguide templates. See the following chapter for more details.
1.8. About our mascot¶
The numbat (Myrmecobius fasciatus) is a delightful insect-eating marsupial from Western Australia, of which it is the official state animal. It has two other common Aboriginal names, noombat in the Nyungar language, and walpurti in the Pitjantjatjara language.
As a carnivorous marsiupial, they belong to the order Dasyuromorphia, closely related to quolls and the famed thylacines which had similar markings on their lower back. Once found across southern Australia, numbats are now confined to small local groups in Western Australia and the species has Endangered status.
A numbat at Perth zoo in 2010. (Creative commons).¶
Apart from the distinctive striped back (which we like to think of as an acoustic wave made flesh), numbats have a number of unique properties. They are the only fully diurnal marsupial. They are insectivores and eat exclusively termites, perhaps 20000 each day!
To find out how you can support the care and revitalisation of this beautiful animal, check out the work at projectnumbat and the Australian Wildlife Conservancy.
1.9. Acknowledgements¶
We acknowledge the elders past and present of the following First Nations people, on whose unceded lands NumBAT has been developed: the Wallumattagal clan of the Dharug nation, the Cammeraygal people, and the Gadigal people of the Eora nation.
Development of NumBAT has been supported in part by the Australian Research Council under Discovery Projects DP130100832, DP160101691, DP200101893 and DP220100488.