Version 5.3.2 (3957) - April 1, 2020
SAS4A/SASSYS-1 Version 5.3.2 includes minor bug fixes and code improvements to the 5.3.1 release.
Bug Fixes and Improvements
- Disabled compiler vectorization on a loop in the multiple-pin model that could result in segmentation violations.
- Added a tool to convert a CONTROL.dat file to a CSV file.
- SAS now reports an error if a PRIMAR-4 valve element is used but no valve property tables are defined.
- Several minor errors in the documentation have been fixed.
- Resolved issues with a small number of uninitialized variables when debugging.
- Resolved potential inexact floating-point exceptions when user-defined coolant properties are used.
- Updated README and COPYRIGHT files for release.
- Corrected a regression case on coolant properties.
Version 5.3.1 (3595) - October 12, 2019
SAS4A/SASSYS-1 Version 5.3.1 includes minor bug fixes and code improvements to the 5.3 release.
Bug Fixes and Improvements
- Corrected an error when interpolating constant-temperature material properties.
- Resolved an issue where some output may be written to the terminal when the command-line option
- Resolved an issue where the control-rod driveline expansion model might cause failures if there was full reversal of primary coolant flow.
- Various improvements to documentation in the user manual.
- Various improvements to formatting of the user manual.
- Added additional source comments to the RVACS routines.
- A Sphinx extension for syntax highlighting of SAS input files has been defined.
- Corrected an issue where regression tests might fail due to platform-dependent line endings.
Version 5.3 (3357) - April 15, 2019
SAS4A/SASSYS-1 Version 5.3 includes significant improvements to the code architecture and to the input processing capabilities. Major updates are summarized below.
SAS4A/SASSYS-1 and the supporting plotting tools are now being distributed as 64-bit executables. To support this transition, significant restructuring of the data management has been under way since the release of Version 5.0. In nearly all cases, users should not see differences in the numerical result when compared to Version 5.2.3. The known exception to this is when a model depends on the use of trigonometric functions, such as the
sin function available in the Control System. In these cases, numerical results may differ in the least few significant bits.
The SAS Input Processor has been upgraded to include a pre-processor that supports two new features: free-formatted input and
Free-formatted input may be used in integer and floating-point input blocks to simplify the preparation of input and to reduce errors. Free-formatted input differs from fixed-formatted input in that the location field is followed by a colon (
:) rather than an integer specifying the number of input values to follow. Arbitrary numbers of space-, tab-, or comma-delimited input may follow the colon. For example:
INPCOM 1 1 1 # Fixed formatted: # NCHAN # | 1 1 5 # # IPOWER # | IPOWOP 8 2 0 0 # Free Formatted: 1: 5 ! NCHAN = number of channels 8: 0, 0 ! IPOWER, IPOWOP END
INCLUDE directive is similar to that used in Fortran, C/C++, and other programming languages. When an include directive is encountered in the main body of a SAS input file, the argument after the directive specifies a file to be read at that location as additional input for the SAS simulation. If the included file name has spaces or quotes, the argument must be quoted. Fortran conventions apply to quoting. The preprocessor supports nesting of include files to any arbitrary depth. For example:
INPCOM 1 1 1 1: 5 ! NCHAN END INCLUDE ChannelDefs.inp ...
SAS4A/SASSYS-1 now supports command-line arguments for specifying model input and output files. By default, SAS reads model input from standard input and writes simulation results to standard output:
$ sas.x < file.inp > file.out
As an alternative, the input file may be specified as the first positional argument:
$ sas.x file.inp
Command-line options may also be used:
$ sas.x --input file.inp --output file.out
The entire code manual for SAS4A/SASSYS-1 has been converted to reStructuredText and is compiled to HTML using Sphinx. The developers are aware that improvements will be needed in the Sphinx-based documentation. Therefore, the previously published (Word-based) PDF files are included with Version 5.3. However, new content and corrections will be incorporated only into the new markup format. Suggestions for improving the new documentation will be appreciated.
- SAS is now distributed as a 64-bit executable. Some very minor changes may be observed in simulation results that depend on trigonometric functions. (#149)
- Plotting utilities are now provided as 64-bit executables. (#152)
- The SAS input processor now supports free-formatted input for integer and floating-point blocks. (#134,#154)
- The SAS input processor now supports an
INCLUDEdirective so that model files can be composed from multiple input files. (#150,#153)
- The Control System supports a Variable Lag Compensator as a new Block Signal. This is similar to a Lag Compensator, however the time delay parameter can be varied during a simulation. (#71,#160)
- The Code Manual is now distributed as a collection of HTML pages compiled with Sphinx. (#119,#137,)
- A binary file (
STRATCV.dat) can be generated that contains transient information on stratified compressible volumes. (#139)
- SAS would fail to terminate properly if an invalid value for
NTwas defined by a user. (#115)
IVIS3Dwere not previously defined in the manual. (#101, #103)
- Units for heat of vaporization were corrected in the appendix of Chapter 12 of the manual. (#124)
- The temperature ranges for Eq. 10.3-5 in the manual have been corrected. (#143)
- The layout of Eq 9.2-6 was corrected in the HTML version of the manual. (#157)
- A typo in the definition of the Prandtl number in Eq. 5.4-122 has been corrected. (#158)
- The Control System now accesses PRIMAR-4 data through a Virtual Data Acquisition System. The implementation matches the new modeling features added in Version 5.2. (#87)
- The internal test suite has been improved to eliminate problems with cases that have liquid segments that bypass an IHX or pump. (#89)
- The internal test suite has been improved to define better job titles. (#90)
- The test suite has been expanded to include extensive nodalization tests. (#113)
- Data structures for the balance-of-plant model have been modernized. (#117,#121)
- Minor code cleanup to improve readability. (#122,#135)
- Analytical test suite has undergone an extensive internal review. (#136)
- Regression testing has been improved for better compatibility under Cygwin on Windows. (#142)
- Custom Sphinx plugins have been updated to support older (3.5) versions of Python. (#159)
Version 5.2.3 (3251) - January 24, 2019
- Fixed a minor issue with one of the built-in terms used to represent the decay of Pu-241 fission products. (#147)
- Fixed an issue with the regression script where it could fail if no cases were being executed. (#151)
Version 5.2.2 (3098) - October 12, 2018
- Step changes in programmed reactivity (`PREA`) at t = 0 are properly handled. (#123)
- User functions are no longer truncated to 32 characters. The maximum length is now 256 characters. (#125)
- Extensive unit testing of point-kinetics and decay heat has been added. (#123)
- Simplified implementation of "developer" build used for regression testing. (#127)
- Removed unused `AutoRef` source file from build configuration. (#128)
- Minor improvement to `make` configuration file to improve compatibility on Windows. (#129)
- Shortened some regression test filenames to be compatible with Windows path limitations. (#130)
- Improved compatibility of temporary directory creation for unit tests on Linux. (#131)
- Removed references to unused dynamic library (`libcrypto` on Linux) to improve compatibility with different Linux distributions. (#132)
- Reduced dependency on `-save` compiler option for better error detection. (#133)
- Sample cases distributed with SAS are now properly included in regression testing. (#145)
Version 5.2.1 (2848) - January 24, 2018
- `RESTART` files are not generated if `NSTEP = 0`, consistent with documentation. (#48)
- Eliminated a potential divide-by-zero error when the Young's Modulus for cladding and fuel are not provided in input. (#88)
- Corrected the declaration of a local variable used in debug print statements. (#91,#98)
- Corrected an issue where input parameter `IPRION` was not treated consistently when PRIMAR-4 was not being used. (#95)
- Eliminated a potential floating-point exception on Windows when debug prints are enabled. (#99)
- Eliminated a potential divide-by-zero error when predicting the time-step cutback in PRIMAR-4 if core channel flow rates are not changing. (#100)
- Corrected an issue where a non-zero value for `IFLOW` would impact PRIMAR-4 calculations. (#102)
- Eliminated a rare divide-by-zero error on Windows caused by poor CPU timing resolution. (#104)
- Removed unneeded compilation of `fpoptimizer` from the FParser library. (#81)
- Added support for "developer" build to simplify regression testing. (#85,#97)
- Updated copyright. (#86)
- Replaced non-standard calls to `ETIME` with calls to standard `CPU_TIME`. (#92)
- Corrected typos in the README file. (#94)
Version 5.2 (2568) - March 2017
- Control System models now have access to an extensive set of core and core channel state variables such as fuel, cladding, coolant, and structure temperatures; coolant flow rates and pressures; and several other parameters.
- All fixes from release 5.1.1 have been incorporated into 5.2
- Nearly all obsolete code constructs have been removed to bring the code into compliance with Fortran 2003 standards. (#82)
- Compiler options for Windows have been significantly revised for better consistency with macOS and Linux builds. (#79)
- `make source` now works on Linux (#83)
Version 5.1.1 (2524) - January 2017
- Corrected an issue in the input processor where integer input in a floating-point field would be interpreted with an assumed decimal point with five decimal digits. ,
- When input parsing fails in fixed-formatted input, a warning is printed if one or more tab characters was found. 
- The `COMC` data structure is now fully initialized. (#69)
- Corrected an issue in the decay heat model where the 5^th^ decay heat region would not be properly initialized during steady state (#73)
- Corrected an array bounds violations error in the BOP module that produced different results depending on compilation options (#74)
- Removed unused character array processing routines (#61,#63,#64,#65,#66)
- SAS now reports errors if undefined element types or compressible volume types are detected in the PRIMAR4 input. (#68)
Version 5.1 (2238) - October 2015
- Full support for compiling on Mac OS X, Linux (x86), and Windows platforms.
- Consistent licensing mechanism across all three supported platforms.
- Support for user-defined input tables of arbitrary size.
- Support for user-defined input functions based on table lookup, scripted function, external plug-in, and control-system signals. Table lookup functions support linear, log-linear, spline, log-spline, and several other cubic interpolation options.
- Added binary "CONTROL.dat" file for logging control system signals during a simulation.
- Added conversion utility for reading "CONTROL.dat" file and generating Excel-compatible XML file.
- Input model files can now contain blank lines.
- Input files now require an explicit `ENDJOB` statement. Previously, a lone `-1` would qualify as an end-of-job indicator.
- Input blocks may be terminated by an `END` statement rather than specifying a data location of `-1`.
- Simulations that use the DIF3D-K Coupling Interface may specify radial, axial, and control-rod expansion models in SAS that are passed as additional feedback effects to the quasi-static solvers.
- Simulations that use the DIF3D-K Coupling Interface may include a Control System feedback model that will be passed as an additional feedback effect to the quasi-static solvers.
- Explicit control-rod motion may be specified in DIF3D-K Coupling Interface. Movable rod compositions are defined by new TABLE blocks and rod motions are defined by FUNCTION blocks.
- Initial steady-state flows in liquid segments in PRIMAR-4 may now be negative.
- Basic control system models that do not access PRIMAR-4 variables can be defined when only PRIMAR-1 is in use.
- The code now allows more than six delayed neutron precursor families in a `DLAYXS` file when `NPK > 1`.
- Extended interpretation of IPOBOI input to optionally terminate simulation when boiling is encountered.
- Corrected an issue where the acceleration pressure drop was not correctly evaluated for non-isothermal pipes.
- Corrected an issue with a missing `USE` declaration that led to a regression failure in an FPIN model.
- A lone `-1` in input is no longer interpreted as an end-of-job marker.
- Channel-dependent input arrays are now properly initialized and do not depend on compiler settings or relying on users to zero a block on first use.
- Corrected an issue in the DIF3D-K coupling interface where a lower fission gas plenum (IPLUC ≠ 0) was not handled properly.
- Issues with reading a restart file with multiple restart frames have been resolved.
- Corrected an array bounds violation that could result in improper null transient initialization with table lookup steam generators.
- Upper reflector temperatures are now printed correctly by the boiling module.
- Resolved an issue where job titles were mangled by the DIF3D-K output routines.
- Corrected a memory issue that occurred when a file-wide chi vector is not present in an ISOTXS file.
- Added distribution target builds to include licensing pre-flight checks in executable.
- Renamed GEOMIN common block in fpin to "FPGEOMIN" to avoid naming conflicts with original GEOMIN input block.
- Eliminated some code structures that led to optimization failures with the Intel 2013 compiler.
- All source code is now declared with `IMPLICIT NONE`.
- The `COMC` common block has been completely rewritten as two new modules.
- The `COLC` common block has been completely rewritten and merged into one of the new modules for `COMC`.
- The `PLUC` common block has been completely rewritten as a new module.
- Internal data structures for DEFORM-4 and DEFORM-5 have been completely rewritten as new modules.
- The common blocks for `ANEUTR`, `INEUTR`, and `RNEUTR` have been rewritten as new modules.
- Implemented significant refactoring of the DIF3D-K Coupling Interface to extract the transient driver as a separate source file.
- Eliminated legacy timers and checks on remaining CPU time that weren't enforced anyway.
- Source code has been improved to be more compliant with pre-processor requirements.
- Added an internal `sleep` function where the argument is interpreted in milliseconds.
- Added `svn:keywords` property on files that were missing the setting.
- Corrected some minor issues where dummy arguments were not declared with the correct shape.
- Debug build target now implements more aggressive checking for uninitialized variables. Some previously uninitialized variables are now properly initialized.
- The Control System module has been significantly refactored and is no longer dependent on PRIMAR-4 to operate.
- All FPIN code has been converted to free-format source style.
- Full source can be optionally compiled to produce "Mini SAS", which excludes severe accident and balance-of-plant modules and limits models to five channels.