forked from Quandela/CAMFR
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
132 lines (108 loc) · 5.79 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
- Better handling of near-singular matrices in GARCLED.py.
- Added routines to Geometry to convert images into an Expression
(Lieven Vanholme).
CAMFR 1.3:
- Added code to model spontaneous emission and light extraction in light
emitting diodes, both for planar structures and for structures with a
2D periodic grating in the cavity or in the substrate.
- Now a BlochStack can also be used inside a Stack, either as first term,
last term or both:
bs = BlochStack(...)
s = Stack(bs(0) + ... + bs(0))
In this case, the reflection and transmission coefficients relate to
BlochModes, rather than to the SlabModes in the last slab of the
BlochStack, which is much more useful. (Pieter Dumon)
- All plotting functions like plot(stack), animate_field(), ... are now
class member functions and need to be called as stack.plot().
- By default, NumPy and matplotlib are imported to create a more
complete Matlab-like environment. SciPy is also required for the RCLED
modelling code.
- Added Dispersive_Material_Factory, to make it easier to work with
materials whose index is defined as a table in a text file.
- Reworked manual, a.o. integrating plotting more with the rest of the
examples.
- Better stability when joining together two slabs which are each other's
mirror image. (This can occur when modelling triangular lattices.)
- New solver for 1D slabs based on adaptive spatial resolution. Very useful
for metallic structures. (Peter Debackere)
- Stack.fw_bw() and BlochMode.fw_bw() can now take an optional extra argument
to specify the limit value of z, i.e. Plus or Min.
- get_kt() and set_kt() for Planars now works again (Peter Vandersteegen).
- Fix field plot bug for Planars.
- The wavelength can now be complex (Thanks to KC Huang for requesting this)
- Extra stability when working with backwards and complex modes.
- The 'filename' argument in the plotting functions is now a named argument
rather than a positional one, i.e. it has to be specified by
filename="string", rather than just by "string" on the correct position.
CAMFR 1.2 (2003-11-12):
- circular structures can now have multiple radial discontinuities (Mihai
Ibanescu)
- interactive plotting utilities (Lieven Vanholme) to look at fields,
animations, Poynting vectors, save to file, zoom in, ... . Try
plot(Stack), plot(Slab), plot(BlochStack)
- improved stability for Slabs, especially for wide photonic crystal
structures
- a new solver suitable for high loss materials. See set_solver(series)
- added various small utility functions: Stack.width(), BlochStack.width(),
Cavity.width(), Cavity.length(), Cavity.bot_stack(), Cavity.top_stack()
- the MATLAB bindings are updated to the latest versions of MATLAB and
pymat (the latter needs to be installed separately from
http://pymat.sf.net) (Ross Stanley)
CAMFR 1.1 (2003-03-05):
- improved stability for Slabs
- inc_S_flux and ext_S_flux are now much faster
- Python doesn't terminate abruptly anymore when faced with some user
errors or lost modes
- the refractive index profile can now be displayed on top of the
field plots (Lieven Vanholme)
- animation of field profiles is much smoother (Lieven Vanholme)
- field plots can be saved in a variety of formats (jpg, gif, png, ...)
Animations can be saved as an (uncompressed) animated gif (Lieven Vanholme)
e.g. plot_field(s, lambda f : f.E2().real, r_x, r_z, "field.jpg")
- plot_n and plot_field now works for BlochStacks, BlochModes and Cavities
too
- added Stack.fw_bw(z), which returns a tuple of the expansion
coefficients of the forward and backward field at position z in the Stack.
Also works for Blochmodes.
e.g. fw, bw = stack.fw_bw(0)
fw, bw = blochstack.mode(0).fw_bw(0)
- Cavity.find_modes_in_region() has been renamed to Cavity::find_all_modes()
- the constructor for Cavity has been changed from Cavity(top, bottom) to
Cavity(bottom,top). This makes the coordinate system more intuitive.
- arbitrary sources can now be placed inside a cavity
e.g. cavity.set_source(fw, bw)
- fixed memory corruption when doing exotic things with Expressions
- fixed crash when plotting uniform layers or planars
CAMFR 1.0 (2002-09-24):
- faster binaries, especially under Windows, which can be up to three
times faster than CAMFR 0.9
- new way of defining complicated structures using geometric shapes and
automatic discretisation
- more excitations for cartesian structures: gaussians, plane waves
and arbitrary shaped functions (Lieven Vanholme)
- support for stacks terminated by an infinite repetition of a basic
period
- more robust method of calculating Bloch modes (Lieven Vanholme)
and their field profiles
- Matlab link under Windows is by default enabled and installed
- integrated plotting and animation routines for field profiles in a stack
(Lieven Vanholme), optionally using Matlab as backend
- added stack.n(), stack.mu() and stack.eps()
- added Poynting vector components field.S1(), field.S2() and field.Sz()
and its magnitude field.abs_S()
- better handling of loosely coupled or degenerate waveguides
- better handling of metals, also metals with purely imaginary refractive
index
- more flexible way of plotting field profiles of modes
- CAMFR now runs reliably under graphical IDE environments like Idle
or ActiveState's PythonWin
- various documentation updates and minor bugfixes
- more graceful handling of user errors
Important to note if you are upgrading from a pre 1.0 version of CAMFR are
the following changes:
- set_left_wall and set_right_wall are replaced by set_lower_wall and
set_upper_wall respectively
- imaginary thicknesses and coordinates are deprecated: PML is set by
set_lower_PML, set_upper_PML and set_circ_PML
CAMFR 0.9 (2001-09-06):
- initial public release