File doc/controls.txt; TRANSIENT V3.11; 18 Feb. 2006
(C) 2001-06 Miroslav Kolar
Control parameters, their default values and their purpose:
-------------------
monitor = 1
Controls the level of diagnostic output (on screen) for transient calculations:
-1 - Only t printed at "pr_Other" output times.
0 - Only values of t and cDiffM printed at "pr_Other" output times.
1 - Values of t, cDiffM (max c change), # of attempts, and total # of
runband Newton-Raphson (NR) iterations in all attempts are printed
after EACH time step.
2 - During EACH time step a line with iter #, (fresidT), fresidM, node and equ #
where fresidM occurs, (cresidT), cresidM, and the corresponding node and
and equ #, are printed after each iteration; then a line which starts
with t, cDiffM, tStep, Scale = next_tStep/tStep ratio.
Also some details about repeated attempts are given, and output
to the two output files is flagged as outOTH and out.
3 - In addition to 2, one more line is inserted indicating where
the maximum of cDiff occurs.
In the last 4 cases the last line ends with the cumulative #s of time
steps, attempts (calls to runband), and NR iterations (incl. those in
unsuccessful attempts).
CmntC = #
Character to mark the beginning of comment
(i.e., not to be plotted) lines in the output files.
May start a valid input line in input files.
steady = 0
0 - The main purpose of this program: transient solution of
coupled reaction-diffusion equations in one spatial
variable; all control parameters listed below are used.
1 - Only the steady state is calculated using the same evalf()
function as for transient solution, provided that it consistently
uses the global variable 'tStepInv' to calculate the contribution
of discretized time derivatives of concentrations to B[k][k]
(tStepInv = 1/tStep); only monitor (1=2) and CmntC are used.
2 - Calculate steady state and then use it as the initial state for
the transient calculation (e.g., to check its stability).
Tau = 0.1
"Implicitness" of the differencing scheme (in time; 0 <= Tau <= 1):
0 fully implicit
0.5 Crank-Nicholson
1 explicit
Preferably use Tau = 0.5; if there are problems, try Tau < 0.5;
in some cases, Tau = 0 may be the best.
NIG = 0.5
New Initial Guess extrapolation factor (0<=NIG<=1) for the next time step:
c_New_Initial_Guess = c + NIG * scale * (c - c_previous); where
scale = (t_new - t) / (t - t_previous); t & c: current time and concentration
nIter = 10
Desired number of NR iterations in runband() in each attempt
Prec = 0
0 = default precision; reasonable values between -3 and 10;
as Prec increases, the precision of the results increases but execution slows down
tStart = 0 sec
Initial time (start of integration)
tEnd = 1.600000000000e+16 sec
Final time (end of integration)
tStepInit = 0.01 sec
Magnitude of the initial time step tStep
tStepMin = -1e-05 sec
If > 0: the smallest allowed magnitude of the time step tStep;
If < 0: |tStep| >= -tStepMin*tt, where tt is the (always positive) time
elapsed from the beginning of a run
tStepMax = -0.1 sec
If > 0: the largest allowed magnitude of the time step tStep;
If = 0: |tStep| <= 0.1*|tEnd-tStart|;
If < 0: |tStep| <= tStepInit-tStepMax*tt, where tt is the (always positive)
time elapsed from the beginning of a run
tOutInit = 2.629800000000e+06 sec
Initial time (tOut) for c profiles output
tOutMulF = 1.4
Rate of increase of the time interval between subsequent c profiles outputs:
Next_tOut = tOut + (tOut - previous_tOut) * tOutMulF
nOutOTH = -20
pr_Other() is called at |nOutOTH|-1 regularly spaced time instants
between 2 consecutive tOut (can be used for additional output).
If nOutOTH<0, pr_Other calls need not be exactly equidistant in time.
sepProf = 1
0 - Concentration profiles for all output times will be placed
into a single output file.
1 - Profiles for each time will be placed into a separate file.
-1 - No profiles file created. In addition, no diag file created.
strict = -1
strict < 0: cDifMxf(t) is not used at all to calculate next tStep
which is determined only by nIter.
strict = 0: cDiffM does usually not exceed cDifMxf(t) too much.
strict = 1: cDiffM <= cDifMxf(t) is strictly enforced.
Here cDiffM is the maximum magnitude of the change in all c[][k]
over the whole tStep (while cresidM is over a single NR iteration only).
cDifMxf(t) is determined by input parameters cDifMxMode, cDifMxInit and
cDifMxEnd. Often strict<0 is good enough, and fast.
cDifMxMode = 2
Mode of interpolating between cDifMxInit and cDifMxEnd in cDifMxf(t):
0 - Max allowed change in c is constant and equal to cDifMxInit
1 - Linear interpolation
2 - Log-log linear: ln(cDifMxf) = linear function of ln(|t|)
cDifMxInit = 0.1
Value of cDifMxf at t = tStart+sign(tEnd-tStart)*tStepInit
cDifMxEnd = 1e-09
Value of cDifMxf at t = tEnd (needed only for cDifMxMode>0)
init_from_file =
Name of file containing the initial profiles; if nonnull, the
user supplied function read_profiles() will be invoked just after
Initialize(), and initial profiles set in Initialize() will be
overwritten by those read in in read_profiles(). Can be used to
continue an interrupted calculation (possibly after changing some
parameters).