*** v4.1/changes.txt: 31. August 2001, Kevin Belanger, Programmer/Analyst, Timber Supply Branch, Ministry of Forests *** v4.0/v4.0x see /tsas/system/docs/fss4.0 directory for descriptions of changes from v3.0 to v4.0 Summary of Changes: =================== v4.1 (31.AUGUST.2001) Although the release of fssim version 4.1 represents a major revision in the internal architecture of fssim, it should make no changes whatsoever to the user: fssim versions 4.0 and 4.1 accept identical input and produce identical output. 1) - removed customized list class by employing standard c++ (STL) list, vector, map, and queue container classes. a) replaced for-next loops with standard c++ (STL) algorithms to iterate through container class objects. i) used function objects to preserve data across iterations of for_each algorithms ii) implemented the accumulate STL algorithm and replaced C-style arrays with C++ valarrays as a precursor to vectorization of fssim's algebraic methods iii) preserved list hashing of BlockStructs to mimic version 3.x and 4.0 processing order b) replaced harvest candidate list with a harvest candidate priority queue which is populated and emptied as classes are made eligible for harvest and then harvested within each period N.B. A bug was isolated which causes the random harvest rule to override priorities as specified in priority.dat This bug will be fixed in a subsequent release of fssim. 2) - replaced all C-style structures in FssimApp.h with classes in header files named: '{old-struct-name}Struct.h' a) moved constant declarations and global enumerations from FssimApp.h to FssimUtil.h, and encapsulated specific enumerations within appropriate class definitions. b) replaced literal constants with symbolic constants wherever possible. c) began re-naming all variables and symbolic constants to comply with forthcoming TSB coding standards. Further changes of this nature will appear in the next release of fssim (v4.1.1). 3) - generalized the commonalities of GroupStruct and ZoneStruct into the StandSet base class. Further generalized the commonalities of AUStruct and StandSet into the LandUnit base class. a) the advantages provided by these generalizations (through inheritance and polymorphism) are only partially exploited in this release of fssim. Further advantages of this nature will appear in subsequent versions of fssim. 4) - replaced string comparisons (strcmp) with integer index comparisons for ZoneStruct and GroupStruct membership. N.B. this change alone was responsible for the majority of the performance improvement from version 4.0). 5) - added absolute indexing to the AUStruct and BlockStruct classes a) added 'find' methods to lookup by label and index (with range checking) to Zone/Group/Block/AU/Structs. 6) - revisited serialization methodology for Zone, Group, Block, Au, TimberClass, and their composite members. 7) - defined and implemented an exception hierarchy which traps, identifies, and reports on fatal, non-fatal, as well as normal exceptions which occur while running fssim. Replaced all exit() calls with thrown exception objects. N.B. Please report any abnormal behaviour, suggestions, or questions regarding exceptions messages at your earilest convenience to: Kevin.Belanger@gems5.gov.bc.ca 8) - improved stability of config.dat input data read by modularizing data input methodology. This improvement will be generalized to the reading of other input data files in subsequent versions of fssim. 9) - made const-ness and type-safety of function parameters more rigorous, replaced 'int' with 'bool' where applicable 10) - inlined eligible functions for performance enhancement and removed '#include' cross-dependencies wherever possible. 11) - removed extraneous parameters in function calls by re-defining global data and global functions as member data and member functions of their primary object's class. Further changes of this nature will appear in the next release of fssim (v4.1.1). a) moved object construction and initialization of the new '{old-struct-name}Struct.h' classes into their class constructor method from their respective init.h functions 'init_make_{old-struct-name}' N.B. No "Details of Each Change" section appears in this document because coding changes were so extensive that such detail is extraneous in light of many new files, classes, functions, variables - in short a massively re-architected fssim. - The "cvs" code-versioning system has been installed and will be used in future to automatically document all changes and updates to fssim code, including bug fixes, performance enhancements, and additional features.