New release notes

From CUDOS
Revision as of 14:43, 8 November 2013 by Boris (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

New Release Notes

This page contains the release notes after versions

  • 2.1.2.2 of fibre (07/11/2013)
  • 2.01.02.00 of bfld.exe (27/06/2011)
  • 2.01.02.05 of winfield (11/10/2012)

For earlier release notes, see Release notes

Fibre

fibre 2.1.2.2 (07/11/2013)

Increased stack size to allow for larger number of rings. Some additional keywords for simulating gratings of microstructured fibres have been added since the previous version, but are too experimental to be useful at this stage.

fibre 2.1.2.1 (07/07/2011)

Simple bug fix of output format of rhofb files in scattering simulations (first column indicating file number was truncated).

fibre 2.1.2.0 (05/04/2011)

Drude model added for permittivities of metals. See Material Dispersion Winfield.

fibre 2.1.1.3 (27/09/2010)

Corrected a bug leading to zero fields in the coating of coated cylinders in scattering simulations.

fibre 2.1.1.1 (23/04/2010)

Added user defined variables, which can be declared using new keywords

complex=varname
real=varname
char=varname
integer=varname

then can be assigned using =

varname=

and used in write statements as well as other declarations. Numbers can be converted to text by assigning a number variable to a char variable. For example

real=mynumber
mynumber=3
char=mytext
mytext=mynumber

mynumber will contain the real number 3 and mytext will contain the text "3.00000000000000". Similar conversion can be used between real, complex and integer.

Concatenation can be achieved using spaces:

char=string1
char=string2
string1=text1
string2=text2
write=string1 string2

will write 'text1text2'.

This can be used for assigning file names using current parameters. For example

lambda=2.0
integer=ilambda
ilambda=lambda*1000
file name extension=sometext ilambda

will define the file name extension to be "sometext2000".

Spaces are not allowed around binary operators *,/,^,+,-.

Some, but not all, parameters can be accessed as variables (that is, they can appear on the right hand side of an equal sign). At this stage those that can are lambda, file_extension, n_eff_0, n_width, start_lambda, real_accuracy_goal, file_name_radix_root, start_mode, stop_mode, structure_file, mode_class_number (the latter contains the current class number at time of assignment).

Known Bugs:

  • using formulae/operators when assigning used defined real or complex variables doesn't work.
  • assigning complex numbers with and signed exponent in the imaginary part (eg (1.2,1e+2)) to user defined variables doesn't work either.


fibre 2.1.1.0 (21/04/2010)
Added a new, powerful keyword: shell which allows to execute any shell command/script from the parameter file.
fibre 2.1.0.7 (20/04/2010)
Updated randomize function to work with coated cylinders and without symmetries. See randomizing structures. I also fixed a bug causing erros in mof files when written using write structure since version 2.01.
fibre 2.1.0.6 (16/04/2010)
This release fixes no bugs and brings no changes under windows, however the source code has been adapted so as to be compatible with compilation on linux systems. Under linux systems, executables and symmetry file names should be in folder ~/bin/ . Numerical agreement is to machine precision for searching modes, and to better than single precision for scattering simulations (with a tendency for slightly higher accuracy for the linux compiled version, for reasons which are not obvious to me).
fibre 2.1.0.5 (14/04/2010)
Fixed the following bug: When calculating scattering using the diffract keyword with material dispersion, refractive indices for the first line of the list of wavelengths and angles would be wrong (calculated for zero wavelength) and for following lines in the list the refractive indices would be those for the wavelength of the previous line.
fibre 2.1.0.4 (8/04/2010)
Fixed a bug causing hanging of simulation using several bcf or structure files within same parameter file.
fibre 2.1.0.3 (6/04/2010)
added Cauchy formula for describing material dispersion. Feature is detailed in Material Dispersion Winfield. Batchfiled 2.1.0.1 and winfield 2.1.0.1 have also been updated to be compatible with Cauchy formulas.
fibre 2.1.0.2
corrected normalization bug for scattering calculations. I also added a report on material refractive index values in the result file for scattering simulations.
fibre 2.1.0.1
added a normalization in csmatrix to avoid an overflow when calculating the inverse of the scattering matrix

this effectively doubled the range of available radii for calculation of plasmonic modes, but things could be improved much further by normalizing out the asympotitc behaviour of the bessel and hankel functions in other words using modified bessel functions I and K.

fibre 2.1.0.0
implemented arbitrary circularily symmetrix index profiles. Arbitrary profiles are defined as a new material.

Fields can at this stage not be calculated inside the inclusions.

fibre 2.0.3.21
bug leading to discontinuity of E_theta and H_theta for c_inf_v

structures (due to a lack of normalization) is corrected. Improved mode calculation for single coated inclusions, allowing to get fields inside the coating as well. However the matrices used for this computation are ill formulated (basically resulting from multiplying 0 by infinity) so that field continuity is far from perfect. Ths accuracy of neff is not in question, but modal fields for this case may be discontinuous. There's clear room for improvement here.

fibre 2.0.3.20
bug leading to access errors when loading two structures without loading bcf files fixed.
fibre 2.0.3.19
there was a bug in normalizing c vectors when using c representation. This has been fixed but not thoroughly tested, especially for non c-inf-v cases!

Winfield

Winfield 2.1.2.6 (6/12/2012)
One bug fix: software crashed when creating a new structure or deleting cylinders.


Winfield 2.1.2.5 (11/10/2012)
Two bug fixes: writing bitmap caused software to crash, resizing windows to 200 or 400 pixel using the menu was inaccurate in newer versions of windows.
Winfield 2.1.2.3 (8/06/2011)
This version increases the maximum value of order/gorder parameters to 499, to allow large scale scattering simulations.


Winfield 2.1.2.3 (05/05/2011)
bug fix of 2.1.2.2: user defined materials of cladding/jacket/matrix did not save properly.
Winfield 2.1.2.2 (05/05/2011)
I fixed a bunch of annoying old bugs in the structure editor: including coated being disabled for c_inf_v symmetries, the ok button closing the structure editor (it now updates the structure, so numbers can now finally be validated by pressing enter), the gorder parameter being disabled when no jacket is selected, 'N.A.' being displayed instead of gamma when using Drude materials, and a bug causing sometimes erroneous refractive indices to be written to structure files after switching between material dispersion and user defined materials. I also fixed a bug causing mix up in materials when deleting a user-defined material, and a bug also causing some confusion in materials when switching the no jacket/cladding option.
Winfield 2.1.2.1 (21/04/2011)
Fixed all fields export : real(h_y) was erroneous (and contained real(e_y) instead).


Winfield 2.1.1.1 (28/03/2011)
Fixed a bug that made file dialogs in windows 7 unusable.
Winfield 2.1.1.0 (24/03/2011)
Added option to export all fields simultaneously, with a matlab routine to import all fields. See Export fields.
Winfield 2.1.0.1 (6/04/2010)
Added Cauchy formula for describing material dispersion. Feature is detailed in Material Dispersion Winfield. I also fixed a bug causing the wrong controls to be enabled/disabled in the structure editor for layered inclusions, and for creation of layered inclusion arrays.
Winfield 2.1.0.0
Winfield now includes the formulation and structure editor for inclusions with arbitrary number of layers.

batchfield

Batchfield 2.1.2.0 (27/06/2011)
I added field overlap integrals in the output of mode_table.dat, that calculate the overlap with
  1. a region defined by the distance from the origin
  2. a region defined by a refractive index.

In the batchfield parameter file these regions are defined by the new keywords

overlap index=n
overlap radius=r

where n is a complex value and r is a real value. Two integrals are calculated, called noverlapint and roverlapint and are the last two numerical values on each line of mode_table.dat. They are defined as:

Noverlapintnew.png

Roverlapint.png

Batchfield 2.1.1.0 (05/05/2011)
I added modal quantities derived from field integrals in the output of mode_table.dat, and also added the all fields output format from winfield. I also added compatibility with Drude model for material dispersion implemented in recent versions of Fibre and Winfield. I also included a new keyword
zoom=zfact

where zfact is a real number, and which corresponds to the zoom function in Winfield. When no field window width is defined, the viewport will be defined to be from -jacket_radius/zfact to +jacket_radius/zfact in both x and y directions. zfact<1 thus zooms out, zfact>1 zooms in.

The three field integrals are now the last three columns of mode_table.dat, neffi,ngi,ngwg:

  • neffi is the effective index as calculated from field integrals Eq. 31-23 in Snyder and Love "Optical Waveguide Theory"
  • ngi is the group index as calculated from field integral Eq. 31-30 in Snyder and Love "Optical Waveguide Theory"
  • ngwg is the waveguide group index (group index without material dispersion), calculated from field integral Eq.(31-31) in Snyder and Love "Optical Waveguide Theory". The actual implementation of the latter relies on Eq. 31-30 without the wavelength derivatives of the permittivity, mathematically equivalent to Eq. 31-31.

The integrals are calculated using the numerical values of the fields calculated (that is with a spatial resolution set by resolution, and over the window set for field output). These quantities are thus only accurate if the window over which fields are calculated covers a substantial amount of space beyond the waveguide (consider using zoom=.25 for example) and using high resolution (eg 400). The difference between neffi and neff calculated by Fibre will give an indication of the accuracy of results. If accuracy cannot be increased by increasing resolution, it may be that the fields themselves are not particularly accurate (check the Wijngaard test).

To write all fields in Winfield's all fields format simply add

fields=all

the fields will be written to fiels with the .fields extension. Such files can then be easily loaded into matlab for further use. See Export fields. Beware that such files can take several hundred megabytes for large resolutions, so a batchfield simulation using this output format for a large number of files could potentially fill a hard drive.

Batchfield 2.1.0.2 (8/04/2010)
fixed a bug preventing loading from newest position file format. Added output line at execution start stating version number.
Batchfield 2.1.0.1 (6/04/2010)
Added Cauchy formula for describing material dispersion. Feature is detailed in Material Dispersion Winfield.
Batchfield 2.1.0.0
Winfield now includes the formulation and structure editor for inclusions with arbitrary number of layers.

This section is work in progress Sorting "Release Notes"

The below sections are from the old release notes and are to be sorted into appropriate pages.

Since the old time sequence version of Release Notes will remain on the website, main aim is to present information together with the manual so that users can use the programs easily with all relevant information on updates for the programs. Thus below, the sections with a strike through it are no longer relevant in the current usage time frame, or they are not relevant under the subheading, and have been moved to another subheading (where it's moved to is indicated at the end of the strikeout, where notes are moved FROM is also indicated at the beginninng of the dot point). Note, The crossout due to redundancy in current usage depends on what information is presented in later release notes. E.g. it may be no longer true last two to three digits of numerical results may differ from results obtained through Lahey compiled version (fibre_ii.exe:30/07/04 09.54).

The latest notes are at the top of each subsection below.

Bug Fix Track

Not all bugs fixed are tracked here, only general bugs. E.g. bugs to do with dispersion computations are in "Dispersion Curve Calculations"

  • (fibre.exe (13/09/0422:26, v2.00.00.03))fixed bug resulting in inconsistent version numbers in output files.

Keyword changes

  • (fibre.exe (3/12/04 12:15, v2.00.00.05))reintroduced the documented
erase n_eff table
delete n_eff table

keywords which had mysteriously disappeared at some stage between the public version and the internal version.

  • (fibre.exe (3/12/04 12:15, v2.00.00.05))added a
load pitch list

keyword, which enables to track a mode with changing pitch, diameter, cladding inner and outer parameters, with data for these parameters being in a file (useful for calculating the local modes in a taper). The format of the pitch list file is

pitch  diameter    cladding inner radius   cladding outer radius

A bcf file must be loaded to define the initial mode, with structural parameters close to the ones of the first line of the pitch list file. Some structural parameters must also be defined separately in the parameter file (MNr, Nr, order, refractive indices). This function is still experimental, and at the moment only works without cladding or jacket. The keyword to run the simulation is 'track with geometry'. If you want to use this function, you should probably ask me first. (moved to "Symmetry Classifications")

  • added two keywords:
num_n_points_2
num_ni_points_2

which are the same as num_n_points, num_ni_points but for the second wavelength step when computing dispersion curves starting from one point only. Default values are 50 and 4 (or 0 if start n_width=0 or Im(n_eff) of the first wavelength step is 0). If n_width=0 or Im(n_eff) of the first wavelength step is 0 and num_ni_points_2 is set to a non zero value, num_ni_points_2 is adjusted to 0. If computing more than one dispersion curve in a same parameter file, num_n_points_2 and num_ni_points_2 don't needed to be redefined for each dispersion curve, but if num_ni_points_2 is adjusted to zero it will stay at zero from one dispersion curve to the other unless it is redefined in the parameter file.

Cylinder Definitions

  • (from: fibre.exe (no more distinction with fibre_ii.exe) 25/08/04 12:54) Regarding the cylinder defintions: the 6 first parameters are unchanged. Material (integer) is for future use. shape (integer), b_radius (real) and ellipse_theta (real) are for elliptical holes, these parameters are taken into account in the current version, set them to zero. Order (integer) and representation (integer) are described below. All parameters must be present on each line or the file won't be read. The old file format is still understood, but all structures defined and saved with the new version will be written using the new file format.

- The order parameter can now be defined for each cylinder individually. An additional keyword allows to define the order parameter for the central cylinder (if present) separately from other cylinders:

central cylinder order

which is used in the same way as the order or gorder keywords.

If you need more flexibility in defining different order parameters for different cylinders, you can either define the order parameter for each cylinder in the structure files by hand (it's now the 11th parameter on each line defining a cylinder), or use the updated structure editor of winfield.

field representation for cylinders

  • (from: fibre.exe (no more distinction with fibre_ii.exe) 25/08/04 12:54)- The field representation for each cylinder can now be chosen (either internal (c coeffificients) or external (b coefficients) Fourier Bessel coefficients). This could prove useful for mofs having low and high index inclusions within the same structure. This is experimental at the moment, come and ask me if you're interested in using this alternate field representation. The field representation can be defined in the structure file (12th parameter on each line defining a cylinder, possible values are 0 [b representation, default] and 1 [c representation]). You can also define the field representation using Winfield's structure editor.


Symmetry Classifications

  • (from fibre.exe (3/12/04 12:15, v2.00.00.05))A bcf file must be loaded to define the initial mode, with structural

parameters close to the ones of the first line of the pitch list file. Some structural parameters must also be defined separately in the parameter file (MNr, Nr, order, refractive indices). This function is still experimental, and at the moment only works without cladding or jacket. The keyword to run the simulation is 'track with geometry'. If you want to use this function, you should probably ask me first.

  • (fibre_ii.exe 05/08/04 17:09) Major improvement: 3.5 x faster than previously for simulations concerning the fundamental mode, see below.

:fibre_ii.exe is the same as below, but with:

- consistency problems with the lahey compiled version fibre.exe should no longer exist, results are the same to +-1 last digit. From next week or so I will only use the intel compiler.
- new symmetry classification according to JM Fini implemented. This enables to find the fundamental mode substantially quicker. (also appears in "fibre_ii.exe (and fibre.exe merging)
To use Fini's symmetry classification, copy the finic6.txt file into your program files\cudos folder, and in your parameter file create/load your structure as usual, then use the keyword:
convert to fini 
this keyword converts the structure so that the irreducible sector is the one from Fini's classification, and loads the appropriate symmetry definitions.
Note that until further notice this works with C6v structures only.
Since the structure has been converted, you will need to save it with a file name different from the original file name, eg using
save structure=mystructure_fini.txt 
In Fini's classification there are 6 classes of symmetry:
  1. degenerate with class 5
  2. degenerate with class 4
  3. non degenerate
  4. degenerate with class 2 (eq. to class -2)
  5. degenerate with class 1 (eq. to class -1)
  6. non degenerate. (eq. to class 0)
For classes 1,2,4,5 Fibre will automatically find degenerate modes of the appropriate complementary symmetry class.
For the fundamental mode use
start mode=1 
stop mode=1
then run the simulation as usual. this is on average 3.5 times faster than using the McIsaac symmetry properties. Note that the resulting modal field distributions are different from the modes obtained when using McIsaac's classification, classes 3 and 4 in McIsaac are obtained through a superposition of classes 1 and 5 in Fini's classification.
Further, you'll need the latest release of winfield to be able to open the associated bcf/fbb files. Currently bfld can't deal with Fini's symmetry classification.
For modes other than the fundamental, Fini's classification can sometimes be slower than McIsaac's. This is the case for modes of class 1,2,7,8 in McIsaac's classification (so notably for the second and third mode).
For more information about Fini's symmetry classification, see J. Opt. Soc. Am. B. 21 (8), pp.1431-1436 (2004). (See: "fini Improved symmetry analysis of many-moded mof.pdf")

Dispersion Curve Calculations

  • (fibre.exe (7/10/04 20:12, v2.00.00.04))Fixed a bug which made dispersion computation when using structures with different order parameters virtually
  • (from fibre.exe (no more distinction with fibre_ii.exe) 25/08/04 12:54) Dispersion: When more than one mode is found for the second wavelength step, fibre now choses the one with n_eff closest to the previous one (in earlier versions, the mode with highest Re(n_eff) was arbitrarily chosen.)
  • (fibre.exe: 05/08/04 10:07) Corrects a bug which appeared in the previous version of fibre.exe: The bug caused an error when computing several dispersion curves in a same parameter file ("*** Error: bcf file for initializing dispersion refers to different structures.")
  • (from: fibre.exe (no more distinction with fibre_ii.exe) 25/08/04 12:54)

Threshold keywords

  • (fibre.exe: 29/07/04 19:37) I lifted the bugs on the limit on minima threshold, the overwriting of progress file and the problem with num_ni_points taking values between 1 and 3.

fibre_ii.exe (and fibre.exe merging)

  • (fibre.exe (no more distinction with fibre_ii.exe) 25/08/04 12:54)

- New file format for bcf, fbb, and structure files (should be fully backwards compatible though). New bcf and structure files start with

new_version

followed, on the next line, by the version number. I'll try to define the version numbers in a consistent way from now on, starting from 2000001 (or v.2.00.00.01).

New position file format:

new_version
2000001
symmetry 
number of cylinders in irreducible sector
order !(for backwards compatibility, value ignored)
gorder
matrix epsilon
exterior epsilon
cladding inner radius, cladding outer radius
cladding epsilon
cylinder lines: r, theta, radius, epsilon, symcat, axis, material, shape, b_radius, ellipse_theta, order, representation

Except for the first two lines, the header is identical to the previous file format.

Regarding the cylinder defintions: the 6 first parameters are unchanged. Material (integer) is for future use. shape (integer), b_radius (real) and ellipse_theta (real) are for elliptical holes, these parameters are taken into account in the current version, set them to zero. Order (integer) and representation (integer) are described below. All parameters must be present on each line or the file won't be read. The old file format is still understood, but all structures defined and saved with the new version will be written using the new file format.

- The order parameter can now be defined for each cylinder individually. An additional keyword allows to define the order parameter for the central cylinder (if present) separately from other cylinders:

central cylinder order

which is used in the same way as the order or gorder keywords.

If you need more flexibility in defining different order parameters for different cylinders, you can either define the order parameter for each cylinder in the structure files by hand (it's now the 11th parameter on each line defining a cylinder), or use the updated structure editor of winfield. (moved to cylinder definitons)

Note that the suggest order keyword has not been updated, and will allocate the same order parameter to all inclusions.

This change is a major one, I had to update the entire structure of the software. As a consequences, lots of new bugs may have been introduced, please report them.

- The field representation for each cylinder can now be chosen (either internal (c coeffificients) or external (b coefficients) Fourier Bessel coefficients). This could prove useful for mofs having low and high index inclusions within the same structure. This is experimental at the moment, come and ask me if you're interested in using this alternate field representation. The field representation can be defined in the structure file (12th parameter on each line defining a cylinder, possible values are 0 [b representation, default] and 1 [c representation]). You can also define the field representation using Winfield's structure editor. (moved to "field representation of cylinders")

- Dispersion: When more than one mode is found for the second wavelength step, fibre now choses the one with n_eff closest to the previous one (in earlier versions, the mode with highest Re(n_eff) was arbitrarily chosen.) (moved to "dispersion curve calculations")

- I tried to correct a bug I still haven't quite understood which caused the program to crash in undetermined circumstances (essentially when more than one small eigenvalue was found). It's better now, but I'm still working on that one.

  • (from fibre_ii.exe 05/08/04 17.09):fibre_ii.exe is the same as below, but with:
- consistency problems with the lahey compiled version fibre.exe should no longer exist, results are the same to +-1 last digit. From next week or so I will only use the intel compiler.
  • (from fibre_ii.exe 05/08/04 17.09):- new symmetry classification according to JM Fini implemented. This enables to find the fundamental mode substantially quicker.

fibre_ii.exe used Fini's symmetry classification instead of McIsaac's classification for the fundamental mode and for C6v structures only (summarised by JL)

  • (fibre_ii.exe: 30/07/04 09:54) This executable is the same as fibre.exe, but compiled with Intel Fortran compiler (as opposed to lahey). It is up to 10% faster, but may contain unknown compiler dependent bugs. I've tried it on a few examples and didn't find any bugs, but if you use it and find any suspicious behaviour, please let me know. The last two to three digits of numerical results (up to 5 last digits for the imaginary part of neff) may differ from results obtained through the Lahey compiled version, but this should be irrelevant.
  • (fibre_ii.exe 05/08/04 16.25)corrected minor bug causing file name error under certain circumstances when computing dispersion curves. Corrected the "fibre_ii.exe 05/08/04 17:09" version compiler options, inaccuracies in floating point operations fixed.