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).