The voltages and their possible time dependence.

See also the general note on voltages.

General notes for time-dependent voltages:

The time-dependent fields are dealt with in the 'quasi-static' approximation. In other words, the program ignores any magnetic fields that are generated from the time variations of the electric fields (that is, electromagnetic effects), and so the user must ensure that the frequency of the field is not too high and that the wavelength is much longer than the electrode lengths.

When the requested ray inaccuracy is 0.001 or smaller, the segment voltages and charges are changed every time that a potential or field is calculated. But for higher inaccuracies the voltages are recalculated only at the mid-time of each ray step.

(In more detail, when the requested ray inaccuracy is 0.001 or smaller, the segment voltages and charges are changed typically 16 times inside each ray step in the Bulirsch-Stoer technique. This therefore increases the tracing times. But for higher inaccuracies the voltages are recalculated only at the mid-time of each ray step. The program will adjust the step lengths or times to give the ray inaccuracy that you request (see note on ray tracing and note on ray tracing accuracy), so for inaccuracies higher than 0.001 make sure that the initial step length or time is sufficiently small, so that the program does not reduce it further, because the mid-time at which the voltages are calculated for the first ray step is determined by the value of the initial step length or time that the user enters).

The voltages and all the other input information in the rest of the file have no effect (now or interactively at run time) on the unit charges and segment properties.

Three types of time dependence are available:

(1) Sine-wave voltages,

(2) Line-section voltages, and

(3) User-supplied time dependencies, such as multiple sine frequencies, square wave and sawtooth forms.

The sine-wave and line-section voltages, which can be set in the databuilder, are the main subject of this note.

Examples are test2d08 (sinusoidal), test2d24 (user-supplied), xmpl2d45 (rectangular), test3d08 (sinusoidal) and test3d16 (user-supplied)

Different forms of time dependence can be applied to different electrodes.

After the completion of a run the contour options can be used to investigate the fields at specified times.

Sine-wave voltages

These depend sinusoidally on time:

v(t) = v0+v1*sin(phi+2*pi*t/tau),

where v0, v1, tau and phi are entered in the databuilder and where tau is in milliseconds.

Line-section (that is, piece-wise) wave-form

This is a general wave-form that can be used to generate wave forms such as saw-tooth and rectangular. It consists of 5 linear sections.

The voltage starts at V0 at time 0, then changes linearly to V0 + V1 at time T1,

then changes linearly to V0 + V2 at time T2, then changes linearly to V0 + V3 at time T3,

then changes linearly to V0 + V4 at time T4, then changes linearly back to V0 at time T5.

The period is therefore T5.

The wave-form is offset by the time t0.

All the times are in milliseconds.

Any of the time intervals can be zero, in which case the voltage change will be sudden.

For example to generate a saw-tooth wave-form the following values could be used:

time = 0 T1 = 0.001 T2 = 0.001 T3 = 0.001 T4 = 0.001 T5 = 0.001

voltage = 1 2 1 1 1 1

To generate a rectangular wave-form the following values could be used:

time = 0 T1 = 0 T2 = 0.001 T3 = 0.001 T4 = 0.002 T5 = 0.002

voltage = 1 2 2 1 1 1

To generate another type of rectangular wave-form the following values could be used:

time = 0 T1 = 0 T2 = 0.001 T3 = 0.001 T4 = 0.002 T5 = 0.002

voltage = 0 1 1 -1 -1 0

To test a wave-form, use the printing level ‘all + fields’.

Warning: If the voltages change suddenly the routine that traces the rays has to reduce the step lengths (sometimes by a large factor) to try to follow the changes, and so then the ray tracing time can increase considerably.

For users who are editing or constructing an 'input data file' without the use of the data-builder -that is, pre-processor:

But Manual editing is certainly not recommended -it is a relic from the time when the databuilder was not available All users are strongly encouraged to use the databuilder, which always gives the correct formats and which has many options for which the formats are not described or easily deduced.

The option for time-dependent voltages is triggered in different ways in CPO2D and CPO3D, but the specification of the time-dependence is the same in both.

To trigger the option:

(1) In CPO2D enter a line that starts with 's', 't' or any other letter, followed by one line (as specified below) for each of the voltages. The number of voltages was given in line 7 of the file (see general note on voltages). The letter in the first line has the following significance:

any letter except 's' or 't' -constant voltages,

's' -a sinusoidal variation with time,

't' -the time variation will be given by a user-supplied routine.

(2) In CPO3D the letter 's' or 't' is entered as described in the general note on voltages.

To specify the time variation:

(1) If the voltages are constant then enter each one anywhere in the first 19 spaces of its line. An optional description of the voltage may be added on the same line, starting at space 21. This description will appear on the screen if the voltages are edited interactively.

(2) If the voltages depend sinusoidally on time then enter 4 numbers on each line, giving v0, v1, tau and phi, where

v(t) = v0+v1*sin(phi+2*pi*t/tau),

and where tau is in milliseconds.

The zero of time for each separate ray will be entered later. The voltage v0 will be used in the calls referred to in the note on preliminary potential and field information, but after that the voltage v(t) will be recalculated as a function of ray time.

(3) If the time dependence of the voltages is to be given by a user-supplied routine then enter a single arbitrary voltage on each line. These voltages will be used only in the calls referred to in the note on preliminary potential and field information. Other details are as for the sinusoidal variation.

See program 1: for an example of a user-defined program to define sinusoidal voltages.

See instructions on re-compiling a C++ user supplied routine.

Examples of the use of time-dependent voltages are given in test2d08.dat, test3d08.dat and xmpl3d05.dat.