Keywords for computing dispersion curves

From CUDOS
(Redirected from UM 2p5 parameters 5)
Jump to: navigation, search

User Manual Index > 2.5 Parameters

2.5.5 Keywords for computing dispersion curves

number of points = steps [integer]: Defines the number of wavelengths steps for which to compute the mode between the first and last wavelengths. Note that when optimization is set to fast, fibre only minimizes the determinant for each wavelength step, without computing the whole eigenvalue decomposition. The entire eigenvalue decomposition is then only computed when the modes are logged to a file (see number of points between log keyword). The algorithm to compute dispersion curves uses quadratic interpolation between the given and previously computed points or linear extrapolation of the previously computed points to estimate the effective index for the next wavelength step. The estimated effective index should be sufficiently close to the actual value of the effective index for the Broyden part of the root finding algorithm to converge, without the help of the much slower zooming algorithm. If you see (through a comment in the error file or through the progress output file) that the zooming algorithm is used while computing the dispersion, increasing (say doubling) the number of wavelength steps will most certainly decrease the computation time. Values for this parameter generally range between 50 (for small wavelength intervals or simple structures) to several hundreds. Note that the maximum value for this parameter is 4000. If several dispersion simulations are to be done within the same parameter file (unless they are separated by the delete n_eff table keyword), the sum of all number of steps, added to the number of wavelengths used to initialize the interpolation of the effective index (through load dispersion file, load bcf file, or n_eff(lambda) statements) must remain under 4000. (Synonyms: steps, number_of_points, numpoints)

number of points between log = logsteps [integer]: Defines the number of wavelength steps between two mode logs. Every logsteps, the mode will be saved to a file. When optimization is set to fast, this also defines the number of wavelength steps between two complete eigenvalue decompositions. It is generally not necessary to have the complete set of Fourier-Bessel coefficients for every single wavelength step, but it is good to be able to check that the mode tracked with varying wavelength remains the right one (to avoid the consequences of mode crossing for example). (Synonyms: number of log points, numlogpoints, number of points between logs, number_of_points_between_logs)

start n_width = start n_width [complex]: When starting the computation of a dispersion curve with only one (or zero) data points (ie the effective index of the mode for one wavelength as defined through a single load bcf file or n_eff(lambda) instruction, or when starting a dispersion computation by defining a range of effective indices where the mode for the first wavelength is to be found), defines the region in the complex plane in which to look for the mode at the second initial wavelength step. The width of the region is defined in an absolute way for the real part and in a relative way for the imaginary part: the region in which the mode for the second initial wavelength is computed is centered on the effective index for the first wavelength and is of width (real part of start n_width, [imaginary part of start n_width]×[imaginary part of the effective index for the frist wavelength]). If the resulting range of effective indices has negative imaginary parts, it is readjusted to include positive values of the imaginary part only, but remains of the same width. Example: You want to compute the dispersion curve for a given mode, which you have found for a wavelength of say 700nm. The mode has an effective index of (1.45,1e-7) at that wavelength. You initialize the dispersion computation by using the n_eff(lambda) statement:

 n_eff(lambda)=0.7 (1.45,1e-7)

You then define the width of the region in which you expect the effective index of the mode to be at the next wavelength:

 start n_width=(1e-2,1000)

The region in which the mode for the second wavelength will be searched will be centered on (1.45,1e-7), and have a width of (1e-2,1000*1e-7)=(1e-2,1e-4). The region would hence cover complex values in the region inside the rectangle defined by the two opposite corners (1.45 − (1e − 2)/2, 1e − 7 − (1e − 4)/2) and (1.45 + (1e − 2)/2, 1e − 7 + (1e − 4)/2), which includes negative values of the imaginary part. The region is hence rectified to the rectangle between (1.45 − (1e − 2)/2, 0) and (1.45 + (1e − 2)/2, 1e − 4), which has the same width as the previous rectangle. Unless the effective index has a large imaginary part (say 1e-2 or higher) it is best to set a large imaginary part for start n_width (10 to 1e5). The default value of this parameter is (1e-2,10). (Synonyms: start nwidth, default nwidth, default n_width, start_width)

start_lambda = λ0 [real] Sets the initial wavelength from which fibre will compute the dispersion curve. If a single point of the dispersion curve has been given as a starting point, λ0 should be the wavelength of that point. Note when using dispersion and mode searching in a same parameter file: this keyword also sets the current wavelength (see wavelength). Other keywords affecting this value: load dispersion file. (Synonyms: start lambda, first wavelength, first lambda, start wavelength)'

stop_lambda = λf [real]: Sets the final wavelength of the wavelength range in which the dispersion has to be computed. Note that λf can be less or greater than λ0 . (Synonyms: stop lambda, last wavelength, last lambda, stop wavelength)

n_eff(lambda) = λ [real] nef f [complex]: This keyword takes two arguments: a real number indicating a wavelength and a complex number being the effective index at that wavelength. The keyword adds an entry to the dispersion table used to extrapolate or interpolate values of the effective index as a function of wavelength. Other keywords used to add entries to the table of effective indices are load bcf file and load dispersion file (see below). Note that limitations on the number of entries in the table of effective indices apply (see number of points). (Synonyms: n_eff_table, effective index)

Action keywords

delete n_eff table (no arguments): Deletes and resets the table of effective indices. This keyword is useful when computing dispersion curves of different structures or different modes in a same parameter file. Unless this keyword is used, all previously en- tered or computed values of nef f as a function of wavelength are taken into account to interpolate or extrapolate nef f when computing a dispersion curve. (Synonyms: erase n_eff table)

load dispersion file = dispersion file name [character string]: Loads the file dis- persion file name and adds its data to the table of effective indices. dispersion file name has to be a text file with three columns of real numbers. The first column indicates a wavelength and the two following columns represent the real and imaginary part of the effective index of the sought mode at the indicated wavelength. Note that dispersion output files have the correct format to be used as dispersion input files. After loading dispersion file name, start_lambda is set to the wavelength of the last line of the dispersion file. Note that limitations on the number of entries in the table of effective indices apply (see number of points).

load bcf file = bcf file name [character string]: Loads the Fourier Bessel text coefficient file bcf file name, loads the associated structure, and adds the wavelength and refractive index of the mode to the table of refractive indices. Note that the file must be a text file (ending with .bcf), not a binary file (.fbb are not valid). (Synonyms: load mode)

get dispersion curve (no arguments): Runs the simulation to find the effective index of a mode as a function of wavelength. What fibre does depends on the content of the refractive index table (see : n_eff(lambda), load dispersion file, load bcf file)

• If the table contains two ore more entries, fibre directly enters the algorithm for tracking a mode with varying wavelength, using the table of refractive indices to extrapolate or interpolate first guesses of the refractive index for each new wavelength step. The table of refractive indices is completed after each new wavelength step.
• If the the table contains exactly one entry, fibre tries to find the mode for a wavelength close1 to the only wavelength of the table of refractive indices (the latter should be equal to start_lambda), in a wavelength range defined as explained for the start_width keyword. If one mode is found, its effective index and wavelength are added to the table of effective indices and the algorithm for tracking a mode with varying wavelength is entered. If more than one mode is found, a warning message is written to the error file, the mode with largest real part of the effective index is added to the table of effective indices and the algorithm for tracking a mode with varying wavelength is entered. If no mode is found, execution is aborted.
• If the table is empty, and the data needed to initiate a search for modes is defined, fibre search for the modes as explained for the search modes keyword, then continues as above. If more than one wavelength is found during the initial search for modes, the mode with largest real part of the effective index is used for the further steps (Synonyms: compute dispersion curve, dispersion, lambda track, wavelength track)

note 1. The wavelength for this initial step is defined by start_lambda+0.01 × (stop_lambda-start_lambda)/number_of_points

See also