File 00readme.txt; TRANSIENT V4.3; 12 Nov. 2023 (C) 1995-2023 Miroslav Kolar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Release notes for TRANSIENT V4.3 beta | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ beta - because this release does not contain a fully updated manual yet. Minimally updated manual is at http://transient.mkolar.org/transien/index.html /* Transient solution of a system of nonlinear partial differential */ /* equations of parabolic type */ /* ================================================================ */ /* Adaptive time step algorithm linked to the maximum change during */ /* one time step in all concentrations at all grid points, */ /* and/or to the number of Newton-Raphson iterations in each step. */ TRANSIENT package/engine is intended to be used together with the code written by the user, contained in one or more files of C source called together throughout the TRANSIENT package the Problem Definition Module (PDM) - code written for each individual model (set of one-dimensional transient reaction-diffusion equations) to be simulated. Steady-state cases can also be handled. The main source of the information on how to use TRANSIENT is the Manual in the file doc/transien.tex, to be processed either by LaTex or by latex2html. It is also posted at http://transient.mkolar.org/. In addition to that, inspect defs.h, incl_pri.h, the beginning of transien.h, and all other files in the 'doc' subdirectory. Useful information is also in the makefiles, and the readme files for the demonstration PDMs: demo/0readme and demo/demoX/Xreadme; X=1,2,3,4. In particular, demo/0readme contains the instructions on how to make the TRANSIENT demonstrations programs (a starting point to explore TRANSIENT) using different compilers and/or operating systems. The TRANSIENT engine consists of the C source and header files, *.c and *.h, in this directory. PDMs written for relatively recent older versions (V2.50 and newer) of TRANSIENT should work with this V4.3 version with only the following minimal changes: 1. For PDMs written for any older version of TRANSIENT: Enable the preV4_3 macro in defs.h, or add to the PDM this line: #define preV4_3 1 If the PDM is not too old, this may be the only action needed to use it with V4.3. See defs.h for more information on preV4_3: There is actually no need to set this macro if PDM's update_Other() does not use at all the concentrations c or the RESETtStepAT99 macro. 2. For PDMs written for versions V3.3 and lower: If the PDM contains the declaration of the function double linInter(...){...} (linear interpolation of a time series), it has to be removed from the PDM, because now this function is declared in InOut.c of TRANSIENT (for user convenience, and because it is now also used in InOut.c). 3. For PDMs written for versions V3.2 and lower: Add the following dummy function declaration into PDM: void init_tStep_for_evalf(void) {} 4. For PDMs written for all versions lower than V3.0 (i.e., all V2.5x and V2.6x): Add these two lines to the beginning of the PDM module: #define report_max_resid report_max_NR_error #define exitTR(x) exitTR(x,"") Alternatively replace in the whole PDM every occurrence of report_max_resid by report_max_NR_error, and add a second argument to all exitTR calls (either an empty string, or a string describing the reason for the program termination). 5. Some control input parameters controlling the precision, may still need to be replaced/adjusted: For example, this version uses input parameters TOL and TOLC, instead of previously used CTOL. Start with higher values of TOL and/or TOLC, and decrease them to increse precision. 6. You may want to add to the pr_profiles(int MaxIter) function a simplified action for MaxIter=0 as this value indicates the printout of initial profiles for echoInit=1. See PDMtemplate.c . 7. For PDMs written for versions V4.1 and lower: You may want to redistribute some output because of the newly available 'Output'.tdep file. Previously, output using macro Pm was directed into the par file, now it goes into the tdep file. The par file now gets the output from the newly introduced Pp macro. See file incl_pri.h for the list of all available output stream macros. ~~~~~~~~~~~~~~~~~~~~ See history.txt for the most recent changes in TRANSIENT. List of all current control parameter values and their roles are in the file controls.txt. Convergence criteria for the NR iterative process are in the file nl3_conv.h (and can be customized by the user if necessary). For comparison of the role of new TOL and TOLC with that of the previous CTOL, the convergence criteria for the two previous versions can be found in files doc/nl3_conv.h.V4.1 and doc/nl3_conv.h.V4.2 . Basically, convergence is deemed to be achieved if cresidT decreases substantially. cresidT is the sum, over all NEQNS equations (minus Nexcl optionally "excluded" equations) and all nodes, of the absolute value of the change in the "concentration" (the unknown) for each equation in each grid node in a single NR iteration (see Sec. 4 of the Manual). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Note: A TRANSIENT V4.3 based program may return exit statuses -11,-10,-9,...,0, or from 101 to 100+(number of signals/interrupts)+1, or any other positive numbers if/as set by the author of a PDM module - see transien.h. These are passed through the C exit function, which accepts any integer as its argument (exit status). The contents of the shell exit status variable then equals this C exit status modulo 256. E.g., in csh shell, echo $status only returns values from -128 to 128, but in sh or bash shells, echo $? returns values from 0 to 255. Thus sh and bash will convert the TRANSIENT's negative internal exit statuses -11,-10,-9,-8,...,-1 into 245,246,247,248,...,255 (this has of course no effect on the termination codes and messages that are printed at the end of the 'Output'.stat file). (When Cygwin generated code is run in normal Command Prompt window, TRANSIENT's negative exit statuses are transformed into errorlevels 65525 to 65535, at least in Windows 2000.) Exit codes larger than 100 are generated by interrupt catching. MS Windows prior to Windows 2000 had poor signal handling, and TRANSIENT based programs, when terminated by Ctrl-C in these old Windows might occasionally not complete the 'Output'.stat file (not write out the total CPU time) and moreover the MS-DOS prompt window might get hung up. ------------------- Warning: The TRANSIENT code still contains macros for some "ancient" operating systems such as DEC's VMS and Ultrix. The newer versions of TRANSIENT have not been tested on such systems or their emulators for ages. Similarly, no compilations have been done using native MS Windows compilers for a number of years. At least one newer addition will almost surely not work in VMS.