Difference between revisions of "Release Notes"
(Addition of notes for 5.4.2.)
|Line 1:||Line 1:|
= Version 5.4.1 (4936) - June 1, 2021 =
= Version 5.4.1 (4936) - June 1, 2021 =
Revision as of 15:14, December 20, 2021
Version 5.4.2 (5308) - December 17, 2021
SAS4A/SASSYS-1 Version 5.4.2 includes minor bug fixes to the 5.4.1 code release and considerable improvements to the code manual.
SAS is provided as a 64-bit executable for Intel-based macOS, Linux, and Windows operating systems.
Bug Fixes and Improvements
- Removed an undocumented input that would allow users to re-initialize input blocks during a restart. (#257)
- Resolved an issue in the calculation of acceleration pressure drop during steady-state initialization. Corrections to the related equations in the manual have also been made. (#307)
- Resolved a minor issue in the formulation of compressible volumes with cover gas. (#310)
- Updated a utility used to create input for sub-channel models to be compatible with the current build environment. (#321)
- Resolved an issue where an incorrect pressure may be used for a segment that flows into a compressible volume that is represented by an external CFD code. (#325)
- SAS now reports a more helpful error message if fuel type (`IFUELV` or `IFUELB`) is not defined for a channel. (#332)
- A description of how arguments are handled by function blocks has been added to the manual. (#270)
- Extensive updates have been made throughout the manual to improve caption numbering and cross-references to tables, figures, chapters, and sections. (#308)
- Numerous errata have been eliminated in the code manual. (#315)
Internal Code Changes
- The build target used to create source distributions no longer requires an undistributed dependency. (#323)
- Unused Python plotting tools have been deprecated in the source tree. (#326)
Version 5.4.1 (4936) - June 1, 2021
SAS4A/SASSYS-1 Version 5.4.1 includes minor bug fixes and code improvements to the 5.4 release. In addition, the 5.4.1 release is compiled using the Intel Fortran 2020 compiler.
SAS is provided as a 64-bit executable for Intel-based macOS, Linux, and Windows operating systems.
Bug Fixes and Improvements
- Resolved an issue where coupling RVACS to an external code may fail if running multiple simulations on the same platform. (#278,#304)
- The Intel Fortran 2020 compiler release is now required for compiling the SAS source. (#301)
- Numerous errata in the code documentation have been corrected. (#224,#286,#288,#309)
- An array length mismatch in the detailed IHX calculations has been resolved. (#283)
- An assertion failure is no longer emitted if the code terminates prior to initializing internal timers. (#303)
Internal Code Changes
- Potential false positives during regression testing have been eliminated. (#239)
- Updated unit test names for thick-walled CVs. (#300)
- Regression tests that utilize a restart now link to a reference RESTART file. (#271)
- Environment variables are now automatically set when running unit tests on Windows. (#277)
- Sample code illustrating SAS-Gothic coupling now compiles without errors. (#287)
- The 5.4 branch is now included in the Jenkins build. (#305)
Version 5.4.0 (4526) - November 16, 2020
SAS4A/SASSYS-1 Version 5.4 includes several new features and improvements to the code architecture. Major updates are described below.
SAS is provided as a 64-bit executable for Intel-based macOS, Linux, and Windows operating systems.
Channel-Dependent Reactivity Feedback
The channel-dependent reactivity feedback models for fuel, cladding, coolant (void), and structure have been rewritten to support additional flexibility. Doppler and channel-independent reactivity feedback models have not been changed. As a result of the update, minor numerical differences consistent with machine precision may be observed when results are compared with previous versions of SAS. Other than differences due to machine precision, existing models will function as before.
Existing inputs for `FUELRA`, `CLADRA`, `VOIDRA`, and `STRCRA` are supported by the new model. However the updated model includes support for a more flexible input format that is not constrained by the axial core channel mesh. To use the new input, users can provide a table identifier to reference channel-dependent `TABLE`s that describe reactivity feedback coefficients. Note that the new input structure does not yet support boiling (TSBOIL), fuel melting (PINACLE), or fuel relocation (PLUTO and LEVITATE).
Two new input locations have been defined in `INPCHN` to support this functionality.
|`ReactivityTable`||543||Table ID referencing new table-based reactivity feedback data.|
|`MassFractionTable`||544||Table ID referencing new table-based mass fraction component descriptions for fuel.|
If `ReactivityTable` is not zero and it references a valid input table block, then the columns of the table may override zero or more of the reactivity feedback components normally defined in `POWINC`. The `TABLE` block referenced by the `ReactivityTable` input parameter may contain the following columns:
|`LENGTH` (optional)||Axial lengths of the mesh intervals over which the reactivity feedback data in this table applies. The total length of all mesh intervals must match the length of the `MZ` or `MZC` mesh, depending on the value of `IREACZ`. If the `LENGTH` column is omitted, then the mesh is assume to be the same as the `MZ` or `MZC` mesh, according to `IREACZ`|
|`FUELRA` (optional)||Fuel reactivity worth for each axial mesh interval. If this column is present, the values for `FUELRA` in block `POWINC` are ignored.|
|`CLADRA` (optional)||Clad reactivity worth for each axial mesh interval. If this column is present, the values for `CLADRA` in block `POWINC` are ignored.|
|`CLADRA2` (dependent)||Second-order clad reactivity worth for each axial mesh interval. May only be present if `CLADRA` is present.|
|`VOIDRA` (optional)||Void reactivity worth for each axial mesh interval. If this column is present, the values for `VOIDRA` in block `POWINC` are ignored.|
|`VOIDRA2` (dependent)||Second-order void reactivity worth for each axial mesh interval. May only be present if `VOIDRA` is present.|
|`STRCRA` (optional)||Structure reactivity worth for each axial mesh interval.|
|`STRCRA2` (dependent)||Second-order structure reactivity worth for each axial mesh interval. May only be present if `STRCRA` is present.|
|any (optional)||Reactivity worth distribution(s) for multi-component fuel compositions. The interpretation of additional columns in this table is determined by the definition of the fuel mass fraction table (see below).|
If `MassFractionTable` is not zero and it references a valid input table block, then the columns must correspond to columns in the `ReactivityTable`. If the parameter `MassFractionTable` is zero, it is equivalent to defining a table with a single column labeled `FUELRA`, where all values are equal to 1.0.
|any||Mass fraction of fuel component “any” for each axial mesh interval in the original fuel (`MZ`) mesh. Column labels in the `MassFractionTable` must match a column label in the `ReactivityTable`.|
Reactor Vessel Cooling System Coupling Interface
Previously, SAS provided two options for representing a reactor vessel auxiliary cooling system (RVACS): a table lookup option that defined heat rejection boundary conditions for the reactor vessel, and a more detailed model of an air-cooled RVACS system to predict heat rejection rates during a transient. A new option has been introduced that allows coupling with third-party models so that alternative reactor vessel cooling systems can be modeled.
The existing input `IRVOPT` has been expanded to recognize additional options:
|0||Use detailed RVACS model.|
|1 – 12||Use the simple RVACS model. IRVOPT is the number of entries in the table of h vs T.|
|> 12||Use the simple RVACS model. IRVOPT is the function block ID for h(T).|
|-1||Use coupled RVACS model, participate in null transient.|
|-1000||Use coupled RVACS model, do not participate in null transient.|
|-1001 – -1012||Use coupled RVACS model during transient, and simple RVACS model during the null transient. ABS(IRVOPT+1000) is the number of entries in the table of h vs T.|
|< -1012||Use the coupled RVACS model during the transient, and function block ID ABS(IRVOPT+1000) for h(T) during the null transient.|
Negative values for `IRVOPT` invoke the new coupling interface. When coupling is active, SAS will exchange data with third-party software using the open-source ZMQ communication library. The different options for coupling only represent different ways in which the null transient is handled. When `IRVOPT = -1`, third-party software is expected to contribute to the null transient solution. The remaining options use internal code for solving the null transient to simplify the coupling process. Details of the coupling interface will be documented separately.
Additional positive values for `IRVOPT` are also recognized: When `IRVOPT > 12`, the simple model will obtain its boundary condition from a user-defined FUNCTION block.
15-15Ti Cladding Properties
Performance and failure assessment models for stabilized austenitic stainless steel (15-15Ti) cladding materials have been added to SAS. 15-15Ti was the reference cladding material for PHENIX reactor fuel and is now one of the candidate materials for some mixed oxide and nitride fueled sodium-cooled and lead-cooled fast reactor concepts. Descriptions of the model have been incorporated into the manual. To use the new models, set `IDEFOPT > 0` and `ICTYPE = 4`.
Existing SAS inputs are utilized and new input locations have been defined to support the new models. New or modified inputs include the following:
In the `INPCHN` input block:
|`IDEFOPT`||497||When >0, invoke the updated DEFORM-4 module.|
|`IDEFSTFAL`||498||When >0, invoke stochastic clad damage evaluation model as an additional analysis.|
|`ICTYPE`||225||When =4, use new 15-15Ti cladding properties (requires `IDEFOPT > 0`).|
|`MFAIL`||86||When =8, activate MOX fuel post-failure models upon new 15-15Ti cladding creep rupture.|
In the `PMATCH` input block:
|`CDOSECONV`||149||Conversion factor from clad fast neutron flux (n/cm2/s/1.0E+22) to dose rate (dpa/s).|
|`COCOR`||150||Clad outer corrosion thickness prior to transient initiation (m).|
|`CDFMEAN`||151||Mean value of the normal distribution describing the predicted fraction of the fuel pins failed due to creep rupture as a function of the common logarithm of CDF.|
|`CDFSIGMA`||152||Standard deviation value of the normal distribution describing the predicted fraction of the fuel pins failed due to creep rupture as a function of the common logarithm of CDF.|
|`FSTRAN`||1261||Limits the maximum clad strain. It is essential to set a reasonable value, such as 0.02, for stability.|
Heavy Metal Coolant Properties Updates
Coolant properties for lead and lead-bismuth eutectic have been updated to be consistent with the 2015 edition of the OECD "Handbook on Lead-bismuth Eutectic Alloy and Lead Properties, Materials Compatibility, Thermal-hydraulics and Technologies".
Thick-Walled Compressible Volumes
Compressible volumes (CVs) now support a thick-walled approximation where multiple nodes are used to model the temperature distribution within the wall. This capability provides an additional option for representing thermal inertia of thick-walled structures.
To invoke the feature, users define a value for `ThickWallTableID` (INPMR4, Location 1414) that references a user-defined table block with the following contents:
|`ICV`||ID of the CV using a thick-walled approximation|
|`nNodes`||Number of wall nodes in the thick-walled approximation. Must be greater than 2.|
|`kWall`||Wall thermal conductivity (W/m-K).|
|`tWall`||Wall thickness (m).|
Existing input locations are used to describe the CV geometry and other relevant parameters of the thick-walled CV.
Primary Heat Exchanger Model
Previously, SAS provided two options for modeling an intermediate heat exchanger (IHX): a table lookup option and a detailed tube-and-shell heat exchanger option. The latter option requires a complete coolant loop on the secondary side of the IHX. A new option, referred to as a primary heat exchanger (PHX), is similar to the existing detailed model except it does not require a secondary-side loop. In this case, the secondary side of the PHX is represented by user-defined boundary conditions.
To invoke the new model, users define an extra element for the secondary side of the PHX, and assign that element as a negative value for `ILIHXS`. Boundary conditions for temperature and flow are defined by two function blocks specified by `iPHXTID` and `iPHXWID`. If the secondary coolant is different than the primary coolant, it can be specified by the new input `iPHXPRP`. A summary of the new input locations in `INPMR4` is shown below:
|`ILIHXS`||481-484||Index of the secondary element in the heat exchanger. A negative value invokes the new primary heat exchanger model.|
|`iPHXPRP`||1415-1422||Coolant property selection for the secondary side of a primary heat exchanger. Default is `ICLPRP`.|
|`iPHXTID`||1423-1430||Function ID for the inlet temperature boundary condition of the secondary element in the Kth HX.|
|`iPHXWID`||1431-1438||Function ID for the mass flow rate boundary condition of the secondary element in the Kth HX.|
For practical reasons, flow reversal is not supported. Therefore, if the function referenced by `iPHXWID` changes sign during a transient simulation, SAS will terminate with an error.
Since Version 5.3, the code manual for SAS4A/SASSYS-1 has been maintained as reStructuredText and is compiled to HTML using Sphinx. Improvements continue to be made to the Sphinx-based documentation. The previously published (Word-based) PDF files are no longer included with the distribution, but a monolithic PDF is available for download from OSTI.
Summary of Changes
- The binary file `CHANNEL.dat` now includes the initial steady-state condition. (#32)
- New channel-dependent reactivity feedback models have been implemented in the code that support a more flexible input format. Existing input locations will continue to be supported. (#106)
- A new coupling interface has been added that allows third-party software to represent a reactor vessel cooling system. (#194)
- Properties for 15-15Ti cladding have been added to the code. (#171,#217)
- Coolant properties for lead have been updated to be consistent with the 2015 edition of the OECD "Handbook on Lead-bismuth Eutectic Alloy and Lead Properties, Materials Compatibility, Thermal-hydraulics and Technologies". (#172)
- Coolant properties for lead-bismuth eutectic (LBE) have been updated to be consistent with the 2015 edition of the OECD "Handbook on Lead-bismuth Eutectic Alloy and Lead Properties, Materials Compatibility, Thermal-hydraulics and Technologies". (#227)
- The core channel data acquisition system of the Control System has been extended to include temperature limits across a range of channels. (#205)
- Compressible volumes include the option of a thick-walled treatment where multiple nodes are used to characterize heat transfer through the vessel wall. (#232)
- The ALMR EM pump model can now be tripped by means of a user-defined function block. (#236)
- The detailed IHX model may now be used independent of a user-defined secondary-side loop. Boundary conditions for the PHX are provided by user-defined functions. (#240)
- SAS will now issue a warning if a previously defined input block is overwritten due to the parameter `IZERO`. (#258)
- A regression failure when using lead properties has been resolved. (#190)
- A few local variables in PINACLE and LEVITATE that might be uninitialized are now properly initialized. (#225,#226)
- A potential double allocation in the new reactivity feedback model has been eliminated. (#231)
- Format statements have been updated to be compliant with Fortran 2008 standards (#235)
- The user-specified initial conditions for a simple (table) heat exchanger are respected during a null transient. (#244)
- When multiple compressible volumes share a common cover gas, it is possible one may "overflow" numerically, resulting in a negative gas volume. This condition is now detected and reported as an error. (#259)
- Potential inconsistencies in the use of shell- and tube-side heat transfer coefficients have been resolved in the detailed IHX model. (#262)
- An error is now generated if a liquid segment connects to compressible volumes with different coolant properties (#263)
- A configuration error for unit tests on Windows has been resolved. (#273)
- The documentation incorrectly stated that `ZPLENU` and `ZPLENL` have defaults. They do not. Incorrect statements have been removed. (#105)
- Documentation has been added to describe the existing ALMR electromagnetic pump model. (#164)
- Lead coolant properties are now documented in the manual. (#180,#209)
- LBE coolant properties are now documented in the manual. (#230)
- Definitions for user-defined coolant property coefficients are now included in the manual. (#222)
- Typographical errors in the detailed radial expansion equations have been corrected. (#238)
- Notations in the manual that DRACS capabilities are "not yet available" have been removed. Instead, the input for `ISGLNK` and `ICVNAK` are the accepted means for modeling decay heat loops in SAS. (#242)
- The description for input `IFT16` has been improved. (#246)
- The descriptions for `BTAPNA` and `BTATNA` have been improved, and specific references to sodium have been removed. (#260)
- Legacy PDF (Word) versions of the manual are no longer included in the distribution. (#269)
- Numerous validation cases for RVACS performance have been added to the internal test suite. (#198)
- Use of blank common has been significantly reduced, but not completely eliminated. (#19)
- The internal regression testing scripts have been updated to Python 3 (#186)
- Internal development scripts are now under the same version control as the source code. (#187)
- Compiler options have been modified to improve floating-point consistency across different platforms and architectures. (#233)
- Documentation is now internally built using Jenkins. (#249)
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.