Having investigated a case where CODE stopped working after importing an older method, we found that a data field contained numbers marked as NAN (= not a number). Up to now we don’t know how this situation can arise – probably it was caused by a failing import of measured data.
The following mechanisms have been implemented to make the software survive this situation (active starting with object generation 5.09):
- Directly after loading numbers marked as NAN are replaced by zeroes. This check is done for configurations stored with generations lower than 5.09.
- Starting with object generation 5.09, numbers of data fields are checked for NAN status (and replaced by zeroes if necessary) before they are saved in a configuration file.
- After each import of measured data the relevant data field is checked for NAN status and eventually corrected.
When you load a new configuration, SCOUT adjusts its main window dimensions (position and size) according to the values stored when the configuration was saved.
On the other hand, position and size of the main window of CODE are not changed when you load a new configuration.
Starting with object generation 5.08 you can now have both behaviors in both applications. You can use the menu command ‘File/Options/Appearance/Ignore main window settings after import of configuration file’ to change the behavior – it works like a checkbox. The state of the checkbox is saved to the file ‘additional_default_settings.ini’ in the user’s application folder when you close the application. The file is read when the application starts and the behavior us adjusted according to the settings found in the file.
Starting with object generation 5.05 the list of spectra offers a new object type called ‘Function fit’. It allows the user to define a function which may contain terms that retrieve optical functions, fit parameters and integral quantities (the latter in CODE only, but not in SCOUT). The function value is computed based on the current model and compared to a user-defined target value, or an interval of allowed target values. The fit deviation of the object is the absolute difference between current value and target value (or closest limit of the target range), taken to a user-defined power. If the function value stays within the target interval the deviation is zero.
Objects of this type can be used to impose restrictions to the model. If, for example, an optical function returns the real part n of the refractive index at a certain wavelength, you can define a target interval for n and generate a large deviation outside the target interval. This forces the fit to look for solutions that are compatible with the given range of refractive index values.
Design targets for color values or other integrated spectral values may not always be well-defined numbers. You can also search for designs where color values stay within tolerated boundaries, but it does not matter where exactly.
Such design situations can be handled in CODE using so-called ‘penalty shape functions’. However, the use of this concept turned out to be rather complicated.
We have now (starting with version 5.02) introduced a very easy definition of tolerated intervals for integral quantities: Instead of typing in the target value you can define an interval by entering 2 numbers with 3 dots in between, like ’23 … 56′ or ‘-10 … -8’. If the integral value lies within the interval its contribution to the total fit deviation is zero. Outside the interval the squared difference between actual value and closest interval boundary is taken, multiplied by the weight of the quantity.
Times change, and the way we handle software licenses is changing, too. The info page has been updated recently (=today) – we are sure that for most users nothing will change in the way SCOUT and CODE are used.
We have implemented (starting with object generation 4.99) the Leng oscillator which has been developed to model optical constants of semiconductors. As shown in the original article (Thin Solid Films 313-314 (1988) 132-136) it works well for crystalline silicon:
Warning: While the model works fine in the vicinity of strong spectral features (critical points in the joint density of states) it may generate non-physical n and k values in regions of small absorption.
In object generation 4.97 we have implemented a new mechanism to pass error messages from SCOUT and CODE to OLE automation clients.
While it runs the OLE server (i.e. SCOUT or CODE) collects error messages in a list. We have introduced a view object (type ‘Error messages view’) to display the current list of error messages in a view.
Any OLE client (LabView, Excel, …) can retrieve information about the number of error messages, their type and text content. There is also a classification to separate critical errors and warnings. Once the OLE client has finished error handling it can clear the list in the OLE server.
After using the command ‘Prepare new results page for Von Ardenne exsitu files’ the assignment of spectra and positions on the glass was not correct. This has been fixed.
We have implemented the new script command ‘import all spectra from a von ardenne exsitu file’ which shows the dialog to load spectra from a Von Ardenne exsitu file.
We have included a new fit option which helps to increase the speed of analysis in time critical applications: In methods which use pre-fit sets in the list of fit parameters you can now include the current fit parameter values in the pre-fit search. This eventually avoids many fit iterations if differences between consecutive measurements are small.
The new feature can be turned on or off in the dialog of fit options.