LIBPF 0.8 was released on 2008/09/23, 7 months and about 300 changes after release 0.7 (2008/02/20).

Apart from the usual bug-fixing the key improvements are:

In the following you can find the complete list of detailed changes from version 0.7 to version 0.8 for the calculation kernel and for the user interface.

List of changes for the calculation kernel

  1. genflashNX::estimateNow
  2. fix dummy::calculate to use PH when first pass also in simultaneous mode
  3. remove print_connectivity call from multistage::maketables (pure virtual error)
  4. QTBL::insert use SQLPREPARE / SQLBindParameter to maximise precision
  5. phase::setequimolar, setequimass, setpure, setimpure; stream_VL::spanPAflash(nsteps, i)
  6. stream_VL_ideal::estimateNow; stream_VLe_ideal::estimateNow
  7. tighten eps in NLEauto::test to 1e-9
  8. fix flash::computealfaminmax and clipbetweenalfaminmax
  9. add call to computealfaminmax in stream_VL::estimate and stream_VLS::estimate
  10. stream_VL::spanPAflash
  11. alfa out-of-range correction in flash::calculate_RRG_residual is substracted/added
  12. in stream::testPTflash and testPHflash T range narrowed
  13. remove pseudo-random perturbation in stream::testPHflash
  14. clipbetweenalfaminmax in stream_VL and stream_VLS::estimate
  15. do not VLtest with setimpure if components[i]->isSolid()
  16. improve flash convergence: flashbase, stream_VL, stream_VLS::clip_
  17. catch errors in stream::testPTflash, testPHflash and stream_VL::testPAflash
  18. global variables Pmin, Pmax
  19. increase precision in Quantity::print_
  20. setpure and setimpure check number of components; diagnostic improvements
  21. improve robustness in flash::calculate_RRG_residual
  22. complete redesign of stream tests
  23. removed stream::testFlashes; added stream_VL::testPurePAflash
  24. in multihx sequential, estimate outlet streams' temperatures based on inlet streams and outletApproaches if option=="Ts"
  25. reduce diagostic noise from multiReaction::calculate
  26. virtual flowsheetBase::supports_simultaneous
  27. enthalpy flow imbalance is possible if there is an energy input/putput froa unit so this check is now deactivated by default
  28. overall mass flows are checked for gross imbalance (error) and for finer imbalance (warning)
  29. enableAssignment vector was deallocated by std::vector destructor called in compiler-generated flowsheetBase destructor, but item in Is stayed there so modelBase::~modelBase would go and try to delete it again
  30. flowsheetBase::~flowsheetBase and provided code to delete from Is any element which is a pointer to an element of a std::vector<Ilong>
  31. remove redundant Tphase->h*Tphase->AMW
  32. include as optional code to verifying the solution and the derivatives
  33. issue errors on flowsheet-level enthalpy/mass imbalance
  34. perform overall mass balances in dummy (source and sink)
  35. stream::setFlash uses molar enthalpy / entropy
  36. introduce molar-based phase::H and S
  37. in column, initial estimates for cut streams; column1
  38. add test target
  39. initialize streams to be cut in multistage::setup
  40. update unit tests
  41. compute dutycold in hx::calculate_residuals
  42. improved error reporting for errorFC
  43. do not zero-pad indices
  44. flowsheetBase::disableAssignments and flowsheetBase::enableAssignments; improve descriptions for
  45. enableAssignment in flowsheetBase::enableAssignments
  46. simplified sequentialassembly::makeAssignment using default arguments
  47. added functionality to deactivate individual assignemnts via enableAssignment and nAssignments
  48. fix assignment
  49. genericphase::{h,s}mol{v,l,s}_
  50. UOMarrayGen<T>::tostring and ::print print "invalid unit" rather than kmol^2147483647 rad^2147483647 A^2147483647 m^2147483647 cd^2147483647 kg^2147483647 K^2147483647 s^2147483647
  51. various diagnostic improvements
  52. move makesequentialassembly and makeuserassembly from flowsheet to flowsheetBase
  53. check uom of destination in Quantity::operator= with valuetype arg
  54. improve diagnostic and fix const args in calculate_singlephase_split
  55. improved diagnostic in NLEbase::verifysolution and fixed max index calculation in NLEbase::solve
  56. milden error reporting in reactionYield::calculate
  57. improved diagnostic, especially in stream::Htot; do not reset_errors() in stream::calculate
  58. completely intialize tear streams
  59. calculate estimated recycles as feed streams to the flowsheet before cutting to exploit the information supplied by user
  60. stream_LS_ideal
  61. diagnostic enhancements, call copy_hetero(inletstream, outSplit[i]) in splitter::calculate
  62. several diagnostic enhancements, fix logic to skip enthalpy calculation for cut or PH streams in stream::calculateX, copy_hetero factor
  63. stream::copy_hetero with optional factor parameter
  64. stream_*::calculate_residuals takes also NULL as argument
  65. heatVapor_dummy enhancements
  66. J/kmol/K
  67. diagnostic refinement in NLEauto::test
  68. calculate with three arguments
  69. handle NaN error return code from line search
  70. substract cid to all catalog ids print_dot
  71. several options for drive_ algorithm in flash::calculate_RRG_residual
  72. clip alfa between 0 and 1 in stream_VL::estimate, stream_VL::estimateNow, stream_VLS::estimate reset errors in flowsheet::calculate in sequential modular mode
  73. fix compressor flashmode
  74. fix compilation with gcc
  75. multistage::setup and multistage::cutstreamname
  76. fix modelBaseInterface::print_ods to print out xml-compliant contents.xml even if some type names contain brackets
  77. use stream_VLe_ac<NRTL1> in column, increase stages and number of iterations
  78. column separation with NRTL
  79. instantiate and register multistage<genflashNX<stream_VLe_ac<NRTL1> >, genflashNX<stream_VLe_ac<NRTL1> >, stream_VLe_ac<NRTL1>
  80. use more tolerance in detecting unfeasible phase fractions in stream::calculateXnoflash; avoid division by zerowhen
  81. calculating enthalpy of zero stream in stream::HtotN
  82. add zero and one globals
  83. NRTL1::setA and NRTL1::setB increase assert checks
  84. deltah to compute heat of reactions
  85. NRTL::test and fix NRTL convergence problems
  86. fixed NLEauto::test
  87. fixed cos sparse derivative
  88. fixed cos and fabs derivativesActive::sin and cos; instantiate Active<double>:: friends
  89. stream_VLe_ac
  90. factored out stream_ac: streamAc.[cc,hpp]
  91. move pof to stream_ideal, stream_ac, stream_eos
  92. sin, cos support with derivatives
  93. improve print_ods
  94. use only stream_L
  95. modelBaseInterface::print_ods
  96. genflash::resizeReactionList
  97. replaced include with streamlined main function
  98. improved diagnostic in stream::calculateXnoflash
  99. fixed missing copy_hetero
  100. fixed genflash::addReaction
  101. vertex<2,3>
  102. improved diagnostic in smaller::operator()
  103. vertex<4,2>
  104. fixed timing stuff
  105. genflash::addReaction
  106. added timing for insert into persistency operation
  107. fixed problem with updating the number of errors and warnings after a recalc
  108. implemented persistency::tc for sqlite
  109. fixed parent ids and offsets
  110. added DESCRIPTION, PARENT, UOM, INPUT, OUTPUT; fixing insert
  111. first test with persistency_SQLite
  112. removed Object type; split and .hpp
  113. implemented modelBase::insert, update and constructor with new persistency
  114. completed transition to persistency_item; updated some properties
  115. updated constructors
  116. modelBaseInterface::CATALOGID now is persistent_item_interface::id_
  117. modelBaseInterface : virtual public persistent_item_interface
  118. updated Jamfile and Doxyfile.* to include types.*
  119. add ohm*m resistivity unit
  120. proton sofc: Resistivity electrolyte correlation;
  121. if SQLExecDirect executes a searched update or delete statement that does not affect any rows at the data source, the call to SQLExecDirect returns SQL_NO_DATA
  122. databaseODBC::purge should not throw an errorODBC then
  123. fix modelBaseInterface::del command
  124. fixed databaseODBC::purge to habdle TC table
  125. added ID argument to databaseODBC
  126. added save, purge, calculate, delete, new commands to
  127. changed return type of modelBase::insert and fixed parentid field
  128. moved common stuff in; updated ILong::set to set_var where necessary
  129. bound properly in QTBL::update and insert
  130. override estimateNow in stream_VS and stream_LS
  131. move code to zero inertfraction and fluidfraction from stream_XXX::calculate_residuals to
  132. flashbase::calculate_inertsolids
  133. fix TRIM synthax in Access ODBC
  134. fixed set_vals
  135. fix datasource name for Linux
  136. updated all main() functions to use "CATALOG::instance().tc();" and not to output HTML and XML files
  137. trim strings read from database
  138. purge TC before CATALOG
  139. fix gcc error: extra qualification CATALOG:: on member tc
  140. transitive closure
  141. widen buffers
  142. stream::calculateX should be virtual, phase::calculateX not
  143. fixed call to fillkvl in flash::setFlash_
  144. fix postgres underflow
  145. include iostream to avoid gcc invalid use of incomplete type
  146. included, UtfConverter.ccp and ConvertUTF.c in Jamroot
  147. fixed parent_ in case it is not initialized
  148. fixed a duplicate parent_ member in Quantity
  149. moved parentID from ITBL to PARENT field in CATALOG
  150. Pointer type
  151. renamed Ilong::I to I_ and String::S to S_
  152. fixed String by removing TAG, ID, DESCRIPTION and making S private
  153. renamed Ilong::set to set_val
  154. Qdouble, Ilong and String are derived from persistent_item
  155. factor out .hpp; added stuff to convert between UTF-8 and UTF-16
  156. removed GID from ITBL, STBL, QTBL
  157. max residual diagnostic in NLEbase::solve
  158. vertex<3,2> and flowsheet<vertex<3,2> >
  159. enhanced model::print to give it a chance to print at least the name of a Qs, Is, Ss, Os pointer that has gone astray
  160. modified stream_VLS constructor to avoid screwing up the Qs["phases[0].fraction"] and Qs["phases[1].fraction"] already set up by stream_VL constructor
  161. genericphase::reset and modified stream::calculateXnoflash and copy_hetero to handle zero streams;
  162. stream_VLS::stream_VLS makes phases[2].fraction;
  163. genericphase::reset and documented getphase
  164. differentiate between flash and flashbase; stream_VLS is derived from streaam_VL
  165. adapted for documentation generation on Linux
  166. force instantiation of flowsheet<vertex<4, 3> > and of vertex<4, 3>
  167. force instantiation of template class flowsheet <many_two>
  168. added properties svn:keywords and svn:eol-style; removed useless stuff; updated Jamroot
  169. genflashNX <stream_LSe_ideal>
  170. kg/d and g/d
  171. fixed insert in QTBL to user the SQL compliant keywords TRUE and FALSE
  172. fixed purge to use countRows; inverted arguments for countRows to allow for default argument value for ID
  173. changed table names and login to support Postgres on Linux Debian Etch
  174. use iODBC rather than unixodbc on Linux
  175. eliminate reference to TCHAR
  176. fixed gcc 4.1 error: extra qualification NRTL:: on member
  177. moved gmm include files in a subfolder.

List of changes for the user interface

  1. fix showGenericMessage; MainWindow::purge_ clears first, then purges
  2. fix crash in OpenDialog when user does not select any row
  3. verified fr translation
  4. fix crash in OpenDialog::okClicked when table_existing->rowCount == 0
  5. reverted order of errorMessage and flag in MainWindow's statusBar; MainWindow::showSuccessMessage needs not be a slot;  MainWindow::finished to interpret negative error codes as errors; updated versions
  6. avoid Multiple Instances of the Application
  7. update GUI during purge and delete
  8. differentiate temporary messages from status/error messages in status bar, add green/red led
  9. port to Qt 4.4.1; fix URL for opening streamtable.ods
  10. open_ods calls doods external program
  11. simplify MainWindow::reset_, fix MainWindow::calculate_, MainWindow::open_xls and MainWindow::delete to use root_node
  12. TreeWindow::root_node
  13. add open_xls_main node argument
  14. also look up locale in settings
  15. remove now useless stuff from hierarchy constructor
  16. hide PFD tab after clearing
  17. QWidget *SvgWindow::view
  18. new EditableSqlModel::, EditableIntSqlModel::clear all setQuery to empty string
  19. pt, fr, de trasnlations - first versions
  20. MainWindow::types_file and build_newdialog; fix MainWindow::selectkernel to handle missing trailing slash
  21. cleaner xls icon
  22. fixed delete and purge to access kernel; implemented selectkernelAction and selectkernel
  23. open_xls Win32 implementation
  24. Updated license text and about UIPF; implemented open_xls in Win32; do not show xlsAction on non-Win32
  25. implement open_ods
  26. improve error reporting
  27. handle empty active_kernel; always use "/" as directory separator: Qt will translate the paths to conform to the underlying operating system
  28. ods and xls actions; still need to implement MainWindow::open_ods slot
  29. fix path to svg files
  30. lock types selection in NewWindow nd if there is only one, to avoid calling kernel with empty type specification !
  31. NewDialog::lock_type
  32. NewDialog::index
  33. load types.txt
  34. about and aboutQt Help menu commands
  35. MainWindow::highlight_ and fix empty lines in messages window
  36. added main window icon; set the application icon on OSX and on Windows
  37. TreeWindow::refresh
  38. relaod tree and tables whenever the user changes the toggle child option
  39. fix filtering by totalclosure to inlcude also current node for root node
  40. fixed translations and use Itbl_ enums wherever possible
  41. add Config tab to modify enableAssignments
  42. clear after deleting or purging
  43. fixed gcc warning "In constructor EditableSqlModel::EditableSqlModel extraFilter_ will be initialized after child_"; fixed error in EditableTable
  44. sql query for Linux
  45. table.cpp:29: warning: when initialized here
  46. add lens icon
  47. MainWindow::run toggleTC
  48. EditableSqlModel::toggle_child and TableWindow::toggle_child
  49. TreeWindow::type
  50. revive Qmcfc
  51. do not write registry setting, just read; MainWindow::reset_and calculate_ dirty workaround
  52. duplicate actBase, NRTL, NRTL1
  53. genflashNX<stream_VLe_ac<NRTL1> >, multistage<genflashNX,stream_VLe_ac<NRTL1> >, stream_VLe_ac<NRTL1>, column
  54. add sez200, sez300, vertex<4,2> and flowsheet<vertex<4,2>>
  55. fix Q_WS_WIN
  56. remover stray initialization
  57. uncrustify, update revision, hide diagnostic message
  58. mac port to OSX 10.2 and Qt 4.1.4 tested
  59. implement sqlite
  60. added comments, readme, license; modified to compile against Qt 4.1.4; renamed hierarchy.h
  61. clean up and uncrustify
  62. include latest code from Dmytro Skrypnyk
  63. updated kernel path and filename in Win32
  64. new view menu, toolbars, icons...
  65. add icons
  66. add icons folder
  67. fix EditableSqlModel::go to store current node and use it in refresh
  68. updated phase icon
  69. simplify messages tab and use color codes for warnings and errors
  70. TreeWindow::rootnode_ and fix root button returning to node 0
  71. Messages tab
  72. hide ID column
  73. colorize items in tree according to the number of errors and/or warnings
  74. fix update sql synthax for Access; also update complete tag with user-input tag
  75. arranged OpenDialog vertically for consistency with NewDialog
  76. added tag and description editable text fields and rearranged NewDialog
  77. added filter to avoid "<" and ">" characters in filenames
  78. call XmlData::clear in SvgWindow::openFile
  79. linked SvgWindow::select signal to TreeWindow::force_go_relative, hidden debug stuff
  80. merged in sd2k "clickable svg widget in Qt" alpha deliverable
  81. merged in sd2k "clickable svg widget in Qt" alpha deliverable
  82. minot
  83. fixing OpenDialog::table_existing
  84. add table in OpenDialog
  85. fixed OpenDialog
  86. added cancel button in NewDialog
  87. add proper NewDialog
  88. improved menus
  89. OpenDialog::update_list_existing ignores argument and is public; reload list of existing cases
  90. whenever OpenDialog is executed
  91. translate Qt libraries
  92. enable run menus after loading existing case
  93. update table headers after refresh
  94. make output table read-only
  95. implemented very rough editable table
  96. fix MainWindow::openExisting to just open results and not start run
  97. fix compilation with Qt 4.1 for compatibility with OSX 10.2
  98. settings is a pointer; MainWindow and TreeWindow::showpfd
  99. disable run, reset and update actions initially
  100. hide PFD tab initially
  101. MainWindow::updateLog optional highlighting
  102. TreeWindow::set_current_node
  103. show completetag in tree root node
  104. don't go(0) when starting; inly go after 1-st run
  105. TreeWindow::force_go emits showpfd
  106. highlight lines with " . Iter" and "solve" in messages window
  107. OpenDialog shows list of saved cases
  108. store type description in hierarchy
  109. fixed svg location in Win32
  110. build OpenDialog::list based on data in hierarchy
  111. test types for derivation from flowsheet<zero_zero> to populate the
  112. OpenDialog::list ComboBox; implemented hierarchy::is_a_strict; set
  113. working directory in Linux
  114. added OpenDialog::addItem and moved initialization of OpenDialog::list
  115. from OpenDialog constructor to MainWindow constructor
  116. minor
  117. added unknown method; included flowsheet types from Qijhe and Qgianluca;
  118. added support for multireactions
  119. included multireaction icon in resources
  120. added icon for multireaction types
  121. fixed some GPF when the tree is empty
  122. show descriptions rather than type named is OpenDialog drop-down list
  123. added OpenDialog
  124. added static PFD page with zoomable view
  125. fix again for ACCESS
  126. fixed substring in Postgresql
  127. do not show ID column in Table
  128. strip leading part of the path
  129. add TableWindow::strip;simplify TableWindow::TableWindow by calling go()
  130. fixed for ACCESS which requires the INNER keyword in JOINs
  131. fixed const char * warning; use transitive closure to filter RGS table view
  132. and fix again for Win32
  133. fix on Linux
  134. switch from QSqlTableModel tp QSqlQueryModel
  135. tabbed right hand side
  136. added input/output filter
  137. public treewindow::current_node and expandThis
  138. also read standard error; capture QProcess::started signal; fix running on windows;
  139. launch kernel, automatically reload results
  140. added lower messages bar, process object
  141. made "Up" key response more intuitive
  142. set icons
  143. Streams and Units subfolders are now created for all flowsheets,
  144. including nested flowsheets
  145. creates Units and Streams folders
  146. implemented 90% of icons in tree view
  147. added class hierarchy stuff
  148. fixed "QSqlQuery::value: not positioned on a valid record" error if retention database is empty.



process simulation

Mobile app