What's new in LIBPF 0.9

Summary of improvements with LIBPF 0.9

LIBPF 0.9 was released on 2010/06/02, 20 months and about 650 changes after release 0.8 (2008/09/22).

Apart from the usual extensive testing and optimization and bug-fixing the key improvements are:

  • Calculation kernel:

    • Unit operation modeling: support for Proton-SOFC fuel cells;

    • Physical properties: major refactoring of phase- and stream-related classes, handling of root extrapolation (pseudoproperties) in cubic equations of state, PC-SAFT equation of state, prototype GERG-2004 and IAPWS-95 equations of state;

    • Systems: Classic OPC interface revamp, OPC Unified Architecture prototype interface, online software activation;

  • User interface:

    • Internationalization: the User Interface is now available seven additional languages, for a total of twelve languages: Modern Standard Arabic, simplified Chinese, English, French, German, Hebrew, Italian, Japanese, Korean, Portuguese, Russian and Spanish;

    • Usability: added a Save As command.

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

List of changes for the calculation kernel

  • in dummy::calculate, fix test for feed stream not inside flowsheet-in-flowsheet
  • fix phasesplit outlet stream types in Qwte
  • fix deltah::calculate in Qco2capture
  • initialize totalvaporfraction_ and totalliquidfraction_ when estimating flash in stream_two_solid
  • add _SCL_SECURE_NO_DEPRECATE where required
  • set VAPORE:Vphase.fraction in in gianluca0::setup
  • call prepare_residuals for all phases in stream::initializeNonPersistents
  • echo errors to stderr for UIPF
  • readtables in reactionYield::reactionYield;
  • fix modelBase::update
  • save actual id in database in modelBaseInterface::dbid_
  • persist normally nErrors and nWarnings
  • merge implementations of modelBase::insert and update
  • report_messages, set_error and set_warning are not const
  • update is const
  • call readtables from within createObject
  • fix size of szState char vector on errorODBC::errorODBC
  • #include multi.h in test_multistage.cc;
  • fix stream_VL_ideal constructor in Qhello_world.cc
  • change eosBase::estimate signature
  • make pcsaft class concrete by implementing estimate method
  • remove varValue in link::readValue
  • clients must free all memory associated with ‘out’ or ‘in/out’ parameters: pValue and pErrors for IOPCSyncIO::Read and pErrors in IOPCSyncIO::Write
  • call VariantClear when appropriate
  • set rsa_ to NULL after every call to RSA_free
  • new message MSG_MINMAX
  • in bridge::add report event MSG_MINMAX if required
  • fix in pilot_reactor_new::calculate make s1.Tphase.mdot positive
  • fill in pcsaft parameters in ServiceStart
  • pcsaft::setbeta to set the packing based on the molar density
  • remove pcsaft::estimate_ and integrate in pcsaftphase::estimate, after simplification
  • clip to max / min in link::SyncWrite
  • fix pcsaft::density
  • improve pcsaft::estimate_ to compute an estimate of the vapor-phase density based on ideal-gas law
  • define NOMINMAX to avoid annoying interference with min and max macros
  • define link::min_, max_, setmin() and setmax()
  • clip value between min_ and max_ in link::readValue
  • improve modelBaseInterface::test_newcalcsaverestore and test_newcalcsaverestorerecalc to call test_recursive
  • fix and streamline Qopc main loop
  • bring pc-saft components from 4 to 9
  • revert ideal_ is true by default;
  • set ideal_ to false in flash_VL_Tx:flash_VL_Tx;
  • overload stream::CalculateFeed in stream_two and stream_two_solid to call solveFlash with ideal_=false if required
  • in flash_VL override flash::estimate to call fillkvl
  • flash_VL_T::alfaset_ must be protected
  • remove duplicate alfaset_ in flash_VL_Tx
  • do not call fillkvl in flash_VL_T::setFlash_
  • revert ideal_ is true by default;
  • set ideal_ to false in flash_VL_Tx:flash_VL_Tx;
  • overload stream::CalculateFeed in stream_two and stream_two_solid to call solveFlash with ideal_=false if required
  • flash::niter is public;
  • default flashbase::ideal_ is false
  • fix calculation of logarithm in pcsaft::preparefugacity
  • implement test cases 1 and 2 from standalone.f by Joachim Gross
  • fuelcell::icoord and jcoord;
  • deactivate newtDuty assignment in ijhe::makeuserassembly (is ineffective !)
  • improved initialization of electrochemical reaction in fuelcell::setup
  • fix compressor::calculate to call calculateX in isentropic and myout with massbalancemode:Nx rather than incorrect N
  • fix stream::operator*= to handle single-phase streams
  • rename vertexBase::mdot to cmdot to avoid confusion with phase::mdot
  • in taskgraph::core_calculate_onepass perform checkbalance even for simultaneous steps
  • fix sign of mdotout
  • flash_VL_T::setFlash_ do not call fillkvl
  • zero_zero, many_one, one_many, many_many and many_two::checkbalance
  • move away mass flow imbalance error / warning from from flowsheet::calculate to xxx_yyy::checkbalance
  • call checkbalance in taskgraph::core_calculate_onepass
  • override xxx_yyy::checkbalance in dummy
  • report messages after calculation in test_xyz
  • remove testflo from Qmcfc and prepare for test_multistage
  • verify derivatives only if flowsheet supports the simultaneous solution mode
  • major improvements to test_multihx
  • remove testHx from test
  • add test_gensep
  • in gensep::calculate force calculation of outlet streams based on massbalancemode::Nx, since in calculateFlows_ we split in terms of ndot, x
  • do not use default value for addphase 4th parameter since the compiler might get confused and generate the std::logic_error because of NULL string
  • initialize Tphase, Vphase, Lphase Xphase and Sphase to NULL
  • call calculateX in gensep::calculate, compressor::calculate
  • add 9 new unit operation tests test_xxxx
  • setParent in flowsheet::build and in modelBaseInterface::makeEmbedded_
  • phase_total::phase_total has to pass over correct value of cid to the modelBaseInterface constructor;
  • improved stream::addphase to correctly label phases
  • fix copyscale and add stream::operator=; silence noisy diagnostic about offsetCATALOGID in modelBase::modelBase; fix modelBaseInterface::copynonembedded_ diagnostic during copy of Qdoubles
  • call Tphase->calculateX in stream::CalculateFeed; exclude pcsaft tests in test_stream
  • improve diagnostic in of_FADOO::init; label correctly the isentropic substream in compressor::setup_of to provide correct unknown identification
  • reset nEquilibriumReactions to zero in genflash::maketablesm hx::maketables and in multihx::maketables to avoid adding up and therefore counting twise in case the object is retrieved from persistency
  • offsetCATALOGID is a list where the offsets between local and database new free index is pushed and popped, to handle situations where the object to be retrieved from persistency has a lower id which conflicts with the catalogRAM; flowsheetBase::build and *modelBaseInterface::makeEmbedded_ set the embbeddedID to the correct value, available AFTER creation; the call to readembedded in flowsheet::flowsheet is useless; nIn and nOut in many_many, many_one, one_many and many_two should not be persisted since they are incremented by the xxx_xxx::attach functions called by flowsheetBase::build, but they should be initted to 0 in the constructor; consequently flowsheet::check_inout can not use reflection to find sink.nIn and source.nOut; modelBaseInterface::prepare_test_recursive and test_recursive() for performing the postcondition check after retrieving an object from database of_FADOO::xfulltag; do not assert xmin <= xmax in NLEauto::test; Output graph in AT&T DOT format as flowsheet3.dot also for calculate runs; readtables and adjust fromID, toID in edgeBase::edgeBase; do not calculateX subphases in single-phase stream::calculateXnoflash
  • do not overwrite ID of embedded objects (which might have been changed from within modelBase constructor)
  • initialize I_ in Integer constructor
  • fix major bug in new phase constructors
  • only report derivative discrepancies in NLEauto::test if numeric derivative is different from zero
  • silence diagnostic in modelBaseInterface::operator==, taskgraph::makeDAG_, suggest_cut, find_strong_components
  • equilibriumReaction::calculateKIstWert protect against very low of negative partial pressures using Ppositive; fix hx::calculate and multihx::calculate to call calculateX for outlet streams both in sequential as well as in simultaneous mode
  • fix olga_fluid_file; replace reset with setfirstpass(true) in a few spots; rename registrar_phase to registrar_phases; in stream::calculateXnoflash call phase::calculateX
  • stream_two_solid::X
  • protect against singularity when Vphase->fraction == Lphase->fraction == Sphase->fraction == 0 stream_two_solid::estimateFlash and estimate_equilibrium
  • stream_single_solid::Fraction
  • move calculate_inert-solids from flash_VL to flash; stream_single_solid constructor missing readtables call after makeing embeddedD?phase; no need to initialize remotex_ since will not use flash::X; stream_single_solid call calculate_inertsolids; stream_single_solid::X override flash::X
  • improve flash_VL::calculate_split and costfunction; normalize dew and bubble point computations in stream_two*::test
  • pcsaft use eosBase::Tcriticalmechanical
  • fix tests, add V/L molar volume consistency test, do not request too high vapor fraction for solid-containing phases
  • fix prepare_residuals
  • debugging stream_VL_eosM{C2H6;C7H16}non-ideal
  • fix stream_two::test and stream_two_solid::test to avoid trying vapor fraction = 0.5 for streams with one pure component
  • phase::impure added
  • fix dippr:psat and pdippr::psat extrapolation for high temperatures
  • improve tests
  • stream::set* are public rather than private
  • added stream_VS_eos, stream_LS_NRTL1, stream_VLS_eos, stream_VLS_NRTL1
  • componentList::compnames
  • fix compressor::calculate
  • add returmn statement to phase_total::operator=; stream::findphase improve diagnostic; add stream::findphaseindex and use it in copyscale; fix Sphase add statement in stream_single_solid and stream_two_solid
  • allocate fluidx_ in stream_two_solid
  • fix phase::mww
  • move copy constructor phase(const phase &) to phase_total(const phase_total &); completely remove  calculate_rho_nonconst, calculate_H_nonconst, calculate_Cp_nonconst, calculate_S_nonconst
  • persistent_item(const persistent_item &) operator= are private and not implemented, making class non copyable;
  • Integer(const Integer &src) and String(const String &src) copy constructors
  • Integer and String::operator= copy operator
  • modelBase &operator= is private and not implemented, making class non copyable
  • update doxygen stuff; remove references to streamIdeal and streamEos.h; stream_one_solid, stream_two_solid interfaces; fix compilation of Qsale_pepe
  • delete old-style {phase, flash, stream} and enable new style classes;
  • extract cut.h and cut.cc;
  • modelBase::operator=
  • flowsheet::makeEdge call 1 parameter constructor rather than 2 parameter
  • multiReaction::phases
  • rename copy_hetero to copyscale
  • discard copy_homo
  • implement idealphase::mu_ and sigma_
  • phase::sumcomponents and subtractcomponents
  • rework phasesplit::calculate
  • eliminate from genflash::calculate redundant code (already in setflash_)
  • eliminate redundant phase_total::xxx_nonconst functions
  • stream::operator+=, setphase, ptype, pid, nphases, estimateFlash, operator+=, *=, /=
  • stream::calculateX and phases are public; remove fastprop
  • move Qopc to new stream types
  • add testsuite
  • modelBaseInterface::setfirstpass is now recursive; modelBaseInterface::reset is redundant and can be replaced by setfirstpass(true);
  • normalize betac by sumx in pcsaft::betac; add a dummt pcsaft::Tcriticalmechanical
  • stream::clearcomposition
  • eosBase::betac is a function of sumx; phase::clearcomposition is public; added phase::operator=
  • move calculate_P_eos, betac_ and betac() to eosBase;
  • eosBase::testeos restore previous value of beta; change initial value for pcsaft vapor phase packing fraction
  • fix gcc 4.3.2 warning friend declaration declares a non-template function
  • simplify signature of phasebase::fugacity; move actual calculation of the fugacity coefficients to preparefugacity; idealphase::phi_ is a vector; move pseudoroot variables and testeos to eosBase
  • eosCubic and pcsaft::preparefugacity_eos; move phiideal_ to eosCubic; move pcsaftphase::calculate_P_eos_ to pcsaft
  • pcsaft and not pcsaftphase is derived from eosBase
  • r480 | paolog | 2010-04-10 16:40:02 +0200 (sab, 10 apr 2010) | 2 lines
  • simplify Qphieos_ interface; Qf_eos__, Qphieos_ and prepare_phi are const; preparefugacity calls prepare_phi
  • rename Pact to Ppositive and expose as public function
  • add global variables pmin, pmax
  • simplify Qf_eos__; prepare to implement preparefugacity
  • streamline stream_xxx::prepare_residuals
  • merge eosCubicBase::precompute and compute
  • perform stream_two::test in a significant temperature range
  • phase::clearcomposition, setequimolar, setequimass, setpure, setimpure
  • fix alfa incorrectly calculated as 1 at low temperatures
  • fixed instabilities in stream_VL_eos
  • add kappa_ to scalingmode::rational; add two-parameter scaler::setup
  • streamline tests; fix stream_two::estimate_equilibrium for XA flashes
  • diagnostic improvements; deal with negative pressures in eosphase::preparefugacity
  • flash_VL::setmidalfa
  • testing stream_VL_eos
  • NLEbase::bmpout
  • remove scaling errors
  • fix recalc from persistency in stream_VL_eos
  • pass cid to stream::postconstruct_ to avoid overwriting fraction
  • improve stream::test by testing also restore from persistency; silence noisy diagnostic; fix stream_two contructor
  • implement test_newcalcsaverestore and test_newcalcsaverestorerecalc;
  • improve diagnostic in modelBaseInterface::operator==
  • update doxygen configuration files, fix documentation
  • fix to compile on MSVC; increment version string
  • extract units.cc and .h from quantity; extract diagnostic.h from Q.h
  • factor out persistency.cc; improve doucmentation; include cfloat to gat DBL_EPSILON
  • add size method
  • first time stream_V_gerg2004 operational
  • make duty and mtot visible as results
  • add Quantity::active
  • fix aaa:bbb.ccc[999] for Q, S and I; fix aaa:bbb.ccc[888, 999] for Q
  • gerg-2004 wip
  • always use newstyle function declarations, not K&R
  • fix a number of minor doxygen doc inconsistencies; added gerg2004 to newstream
  • removed useless errorOF constructor with int i
  • add GERG-2004 implementation
  • added ibutane, ipentane, nhexane, noctane, nnonane, ndecane, argon, helium, hydrogensulfide components for GERG-2004 and GERG-2004 XT08
  • O2, N2, CO, CO2, H2 have an option to disable henry-law (asymmetric activity coefficient)
  • allow phase::calculate also for phasetype::Null; improve diagnostics; include Qesercitazione in Jamfile
  • rename eosBase to eosCubicBase; add a parent eosBase; class eosphase is virtual public eosCubicBase; remove obsolete pcsaft members init, pertpar_, p_eos__, f_eos__, phieos_; add diagnostic;
  • merge in pcsaft stuff; get to compile
  • eosBase
  • remove obsolete betavmax, betalmin; implement kprss::deosdv; test krs
  • eosCubic::pseudoroot and Pcalc_; fine tune betalm_=0.8, eee = 3, kappa =
  • 50; remove PSEUDOROOTS and PSEUDOROOTS2 modes
  • added relaxed mode for bounds-exclusive
  • pseudo roots 3
  • stric range checking for bounds-exlusive scalers
  • fixed shorten for std::pair<int, int> stream_two<U, V, F>::test() [with U = phase_eos<(phasetype::type)1u>, V = phase_eos<(phasetype::type)2u>, F = flash_VL_Tx]
  • improve test robustness
  • prepare flashbase::setup_ to set bounds for beta_; bounds currently still set to zero .. one
  • rename eosBase to eosCubic
  • make constants const
  • fix pr alpha function
  • fix normalization of beta_, A and B in phase_eos; restore bounds-exclusive scaling (rational) for beta_
  • added 4 components, hydrocarbons test for stream_VL_ideal
  • fix fugcacity calculation in NRTL and ideal: fugacity should return the logarithm of the fugacity coefficient
  • clip alfa in flash_VL
  • fix pseudoroot code, but keep inactive
  • loosen tolerance for phase fractions in stream::calculateXnoflash;
  • stabilize tests; fix stream_two::calculate_equilibrium_residuals
  • improved documentation in genflash and compressor
  • support S(“A:B.c”) synthax; differentiate between valid tag and valid description; trap []:. characters in
  • non-vector, simple tags
  • fix stream_two convergence in ideal_ mode; add testcase and testcaselist objects
  • fix calling fillkvl properly for PT flash
  • fixing inconsisistencies in enthalpy calculations
  • improve pretty function formatting on gcc;
  • flash_VL_Tx::prepare_flash_residuals to override flash_VL so that it
  • does not write over kVLi_; stream_single::phasetype_, use friendly
  • typedefs; rename stream_two::firsttype_ and secondtype_ to
  • firstphasetype_ and secondphasetype_ respectively; stream_VL_NRTL2 and
  • stream_VL_eos; fix Jamroot
  • improve diagnostic; fix olga fluid file interface
  • olga fluid phase fix
  • do not generate HTML help
  • olga fluid interface wip
  • fix link::readValue and SyncWrite to handle case when the connection to OPC server was not successful; set pIOPCItemMgt_ and hServerItem_ to null in bridge::addLink if the connection to OPC server was not successful; allow verbosityGlobal = 10
  • fox MSG_CONFIGURATION message to display second parameter; remove obsolete linkType enum; remove unused link::TimeStamp; initialize all member variables; bypass reading from datfile if not ope; set goodQuality_ if bm_ == dummyBM in group::read; bypass  group::set_state if inputs_ list is empty; group::SyncWrite print results if bm_ == dummyBM; fix bridge::removeGroup tonot remove an unsetBM group; make sure bridge::addLink returns a valid pointer; use diagtrace in Qopc
  • remove simulationBM bridgeMode; do not release pErrors when they point to memory not dynamically allocated; in bridge::addLink initialie addedlink and pErrors, check return from AddItems against hr != S_OK, set group’s bm_ = unsetBM if ANY item can not be linked to the server
  • use unsetBM, enabled and isGoodQuality logic to disable calculation; silence modelBase::reset
  • add link::hr_; pass hr_ in link::readValue and link::SyncWrite; in link::readValue  set quality_ and    value_ if hr != S_OK - increment error count if pValue == NULL or pValue[0].vDataValue.vt == VT_EMPTY; use unsetBM, enabled and isGoodQuality logic to disable activation, deactivation, read, write; improve diagnostic
  • fix LoO_scm registering itself as service
  • 2010
  • reset models of there are errors
  • group::set_state also sets state for all variables; group has to be friend class to link because it needs to access the server handles
  • recursive modelBase::reset
  • move main function from winservice.cc to Qopc.cc to make it possible to reuse the other functions on winservice
  • silence bridge::add; instrument link::isGood; protect link::readValue from reading crap
  • update with test_newstream
  • move main function from winservice.cc to Qopc.cc to make it possible to reuse the other functions on winservice
  • utility to Install or remove LIBPFonOPC as a service
  • fix TRIM synthax for MySQL
  • fix compilation on Linux
  • remove default arg in stream_two::setFlash
  • make DEMO const ints; remove link::isBad; skip group calculation if any link is not good
  • fix flash_VL_T
  • make stream::test virtual and declare Tout
  • of_FADOO::xmin and xmax
  • in stream_two override stream::test
  • fixing flash_VL_Tx
  • remove obsolete flash::fillkvl(void)
  • add return for dummy flash::calculate_equilibrium_residuals
  • improve neareps
  • changed return type of calculate_eos_residuals; strea_V, stream_L, stream_V_eos, stream_L_eos, stream_VL_ideal;
  • flash_VL_T; flash_VL::firstpid_ and secondpid_; computealfaminmax is protected rather than private; setup_ to override flash;
  • calculate_equilibrium_residuals; clipbetweenalfaminmax
  • fix heatVaporDippr::sv derivative with P
  • changed return type of NLEauto::test and improved accuracy
  • make sure convergence is not achieved for RH/RT flashes when no vapor is present
  • RT flash
  • changed flashbase::calculate_eos_residuals signature; fixed RH flash
  • moved beta_ from flash to phase; fix bugs
  • flashbase::Fraction; flash_VL; stream_two::alfac1_, updateFlash (TBD), prepare_residuals and Fraction; move sumx_, sumy_ from flash to flash_VL
  • phasebase::setpid and pid; phase::pid_;
  • add smartenum::size and increment
  • calculate P- and T-dependent properties for all phases
  • stream::vphases_, lphases_ and sphases_ are protected rather than private; change stream::addphase signature and do not aler Tphase, phases; stream_two draft: does not calculate V and Lphases yet
  • phasebase::fugacity; make actBase::gamma const
  • add NRTL2 test
  • fix derivatives; use Adouble where possible in actBase
  • merge in NRTL stuff from stream_ac
  • fix dot path for Windows; add objectfactory.h; new doxygen setting for new{phase, flash, stream}
  • typo in siteID
  • check that the phasetype in phase_eos is vapor or liquid
  • single phase vapor and liquid phases with cubic eos properties
  • flashbase is virtual parent class of stream; move as much as possible away from stream and stream_single into flash
  • stream_single
  • move calculate_residuals to flash; implement flash::clip_ and estimate
  • stream::test
  • fix flashmode::RH
  • enhance __PRETTY_FUNCTION__ shortening on gcc
  • addphase(type)
  • phase_ideal is a class template
  • renamed phase_ideal idealphase; phasebase is virtual abstract; uniform function names i.e. calculate_rho vs. rhomol
  • fix UOM in stream::calculateXnoflash; move calculate_rho, P, H, S and Cp from stream_V to stream
  • phase::mwx and mww return Zero when required; call maketables from phase::phase
  • phase_total::~phase_total; stream::calculate
  • fix gcc ompilation; rearranged setFlash stuff
  • compile but not link
  • implementing new generation phase, stream and flash
  • opcuaLibpfObject::populate and recursively populate subobjects
  • errorOF::errorOF 3 params; modelBaseInterface::make{Integer/Qdouble/String]Vector catch n<0 case
  • compile and run opcua stuff
  • in multistage2D::multistage2D(-1) propagate nStreams to the T subobjects
  • in multihx::multihx(-1) set nMultiReactions to 0
  • ObjectFactory 1 param ::RegisterAbstract and isabstract; ObjectFactory::Create detects the attempt to instantiate an object belonging to an
  • abstract class
  • successful compile and link
  • befriend modelBaseInterface class with NmLibpf
  • add class ObjectFactory::exists
  • first draft OPC UA implementation
  • fix std::ostringstream
  • make opcuaLibpfObject friend to modelBaseInterface; instantiate static ObjectFactory 1 param member utio_
  • add unique type identification ordinal to ObjectFactory 1 param
  • improve diagnostic in logfile_activation
  • extend demo; fix overwriting of eventlog-related registry entries
  • add pges and fres as arguments to phieos_; fix memory corruption in phieos_ and in Qphieos_
  • fix missing fres in pcsaft::prepare_phi; converge PC-SAFT
  • flash test
  • stream_pcsaft, stream_VL_pcsaft classes
  • add genericphase::volume
  • added constructor to build Qdouble from Adouble
  • parameterize with NC; make ncomp, param and kij static
  • use Adouble instead of Qdouble in pcsaft inner calculations
  • strip const valuetype; fix operator? signatures for MSVC
  • add Active operators + and - with rhs valuetype; add Active operators + - * and / with lhs valuetype
  • add fugacity coefficients computation
  • draft PC-SAFT implementation
  • fix registry for event log
  • adde vaporphase and pilot_reactor::Tmin; demo until 20091010; fix activation
  • re-enable activation, fix compilation with gcc
  • uniform CURRENT_FUNCTION between gcc and msvc
  • fix compilation for gcc
  • restore old algorithm in eosflash::calculate_eos_liquid_root; update version
  • modelBaseInterface::I handles x.y synthax (dot-separated object-Integer paths)
  • readPublicKeyFromString and readPrivateKeyFromString have a std::string as argument; use BIO_write instead of BIO_puts and BIO_read instead of BIO_gets; update revision
  • implement {read,write}{Public,Private}Key{From,To}String
  • store keys in memory using PEM_read_bio_* and PEM_write_bio_*, but retain option to write keys to file (define USEKEYFILES macro)
  • rename readPublicKey to readPublicKeyFromFile; rename readPrivateKey ro readPrivateKeyFromFile; rename writePublicKey to writePublicKeyToFile; rename writePrivateKey to writePrivateKeyToFile;
  • do not write to logfile
  • call registrar_phases and registrar_streamEos
  • enhance error message for MSG_UNKNOWN_NAME
  • improve activation; avoid local static variables since initialization order can screw things up; upgrade Qopc
  • activation infrastructure
  • merge in activation stuff
  • registry_value::open with write_access == true; registry_value::set_value; fix registry_string::operator T(); registry_string < std::basic_string < TCHAR >::operator=
  • make checyfft and ichegyfft not inline
  • fix max min macro definitions conflicting with STL (http://support.microsoft.com/kb/143208 )
  • fix compilation on WIN32
  • revert change 274: sql coalesce function not supported on MS Access DB
  • split numeric.* in numeric_NLAE, numeric_DAE, numeric_optimization, numeric_distribution, scaler, spline
  • fixed genflash::addReaction; fixed persistency_*::insert_object; silenced registrars; added calls to registrars when required
  • fix compilation for !WIN32
  • ODBC 3.0 drivers return SQL_NO_DATA when insert does not insert any rows; added code to retrieve MSSQL Serve ODBC driver-specific diagnostic fields
  • add ifdefs around regisistrar instantiations
  • rearrange drop tables
  • simplify persistency_odbc::maxID; add svn properties where required
  • use singleton for register to avoid initialization dependencies across compilation units (Sutter Alexandrscu Item 21, Stroustrup 10.4.9)
  • extracted objectfactory classes from models to a separate file; rearranged model_factory as a static member of the registrar class, from which
  • modelBaseInterface derives
  • extract fuelcells and userreactions from usermodels, othermodels and Qpsofc; remove Q.h include directive from Q*.cc; remove register_* members and replace with registrar static member; add streamAc.h and streamAc.cc to Doxyfile*
  • stricter object factory error: prevent duplicate registration
  • update properties and add registrar skeleton
  • update doxyfiles; change cpp to cc; update dxygen @mainpage in models.cc
  • uncrustify; sort declarations / definitions in Q*
  • update doxyfiles
  • improve doxygen files
  • change extensions from cpp to cc; fixed some sign mismatch and conversions from size_t to int
  • minror fixes for compilation
  • convert all sources to strict 7bit ASCII; updated Doxygen files; updated Jamroot
  • renamed all hpp files to h, cpp to cc; factored from stream: phases, connectivity, reactions, flash; factored from othermodels: dummy; optimized header loading order
  • long int, short int => long, short
  • refactoring: rename Ilong to Integer
  • refactoring: renamed completeTag to fulltag
  • refactoring: renamed ca
  • refactoring: rename persistent_item::set_catalogid to set_parentid
  • support for Sundials 2.4.0
  • refactoring: rename persistent_item_interface::catalogid to parentid; rename persistent_item::catalogid_ to parentid_
  • fix certain memory leacks
  • added modelBaseInterface::removefromI, removefromS and removefromQ
  • fix int to bool warning message
  • fix warning for unused variables
  • fix sign mismatch warning
  • disable annoying warning C4250 in MSVC
  • fix erasing enableAssignment in flowsheetBase::~flowsheetBase; fix erasing embeddedIDreactions and embeddedTypeReactions in genflash::~genflash; fix erasing embeddedIDreactions, reactionSides and embeddedTypeReactions in hx::~hx; fix erasing embeddedIDreactions, embeddedIDmultiReactions, reactionSides, embeddedTypeReactions and embeddedTypeMultiReactions in multihx::~multihx; call modelBaseInterface::S and I in flowsheetBase::addcut; genflashN1::initializeNonPersistents; initialize myout_ to mixed in genflashNX::maketables rather than in genflashNX::setup_of; silence compressor::initializeNonPersistents
  • add comparison operators modelBaseInterface::operator!= and operator==
  • add modelBaseInterface::existsI, existsS, existsQ and existsO
  • make Qs, Is, Ss and Os protected in modelBaseInterface
  • move copynonembedded_and copyembedded_ from modelBase up to modelBaseInterface
  • in flashbase::flashbase initialize fm_, Pset_,Tset_, Sset_ and rhoset_;  in stream::addphase initialize x_ vector in added genericphase object
  • in persistency_odbc::insert_object and persistency_sqlite::insert_object set correctly PARENT field if catalogid() returns -1
  • clip betav_ and betal_ in eosflash::initLiquid and initVapor
  • ciclohexane
  • make firstpass_ private to modelBase; add modelBaseInterface::restored; fix restore of genflash from persistency
  • fix memory leak when called with “purge” command line
  • enhance modelBase::~modelBase, hx::maketables and flowsheet::~flowsheet by acting correctly on freestore persistent items; do not readtables in
  • modelBase::maketables, stream_L::maketables, stream_ideal::stream_ideal because these are no concrete classes AND no Qdoubles are defined here;
  • compressor::initializeNonPersistents estimate also myout_ to avoid T_ and P_ at default values
  • do not create Qdouble on freestore if not found in Qs while in read or readfast
  • move freestore member from Ilong up to parent class persistet_item; update String and Pointer constructors
  • add Qorc
  • include nheptane; remove TIT; add SPLIT, S00 (makeup) and S99 (purge) to avoid singularity in simultaneous mode; S03 is now stream_VL_ideal rather than stream_VL_eos<kprrs>> for debug purposes; addcut S04; fix sign of EVAP.duty in powerIn
  • renamed modelBaseInterface::estimateNow to initializeNonPersistents; estimate cut streams in flowsheetBase::restorecuts; group in genflash::setflash_; add CHECKPERSISTENCY option in Q.cc; make stream::solveFlash virtual to make sure stream_VL_eos::solveFlash etc. get called; compute Tphase->v in stream::calculateX; add stream_VL_ac and stream_VLe_ac::initializeNonPersistents; add eosflash::initVapor and initLiquid; add stream_VL_eos::vv and vl to persist the vapor roots; stream_VL_eos, stream_VLe_eos and stream_V_eos::initializeNonPersistents; stream_VL_ideal, stream_VLS_ideal, stream_VLe_ideal and stream_VLSe_ideal::initializeNonPersistents now call calculate_residuals
  • add new process library flowsheets
  • add length*time UOM; register stream_V_eos<kprrs> with object factory; fix verbosity in streamEos
  • flowsheet::check_inout
  • minor enhancements to stream::testPTflash and testPHflash
  • fix handling of boolean parameter passed from C to SQL via SQLBindParameter
  • revert purging tc and catalog in persistency::purge
  • fix overwriting unknowns in stream_VLe_eos::calculate_residuals
  • butane, pentane and benzene
  • fix Jamroot and qodbc strings for Linux
  • rename icheap to mcfcigcc
  • add set_parent as required; various fixes
  • removed obsolete dummypersistency; renamed ODBC source from retention to peristency; implemented persistency_odbc::insertfast dor Ss and Is
  • persistency_odbc; still missing the implementation of insertfast stbl and itbl
  • persistency::tc_onepass_ and tc_firstpass_ are private; added bound, catalog(), qtbl() stbl() itbl and tc() functions
  • persistency::push_transaction and pop_transaction
  • “begin exclusive transaction” and “commit transaction” in insertfast(Qdouble), String, Ilong and in update
  • single_filter
  • revert back to sqlite3_prepare due to older sqlite3 version on osx tiger
  • insertfast for String and Ilong
  • persistence::insertfast; use sqlite3_prepare_v2; call sqlite3_finalize as appropriate to destroy the prepared statement objects
  • also purge TC table
  • renamed retention to persistency
  • fixed for compilation on osx
  • change prototype for persistency::find in catalog to pass parentid by reference; increased buffers from 64/128 to 512 bytes; add calls to sqlite3_reset where required; modified ReadICallback and persistency_SQLite::read(long, std::map<std::string,Ilong*> &) to return descriptions;
  • initialize variable before use in modelBase::modelBase; set catalogid_ in modelBase::set_warning and set_error
  • fix compile on OSX
  • update to new persistency
  • removed persistency.cc
  • SQLITE
  • various icheap9 fixes
  • fix diagnostic levels
  • comment annoying assert in equilibriumReaction::calculate_residual
  • QTBL::readfast to also retrieve input and output
  • avoid overwriting coldT and hotT in hx
  • improved scaling in flashbase::calculate_flashmode_residual
  • various icheap9 fixes
  • “save t id d” synthax
  • setOutput in compressor
  • CTracer::Connect overload to override server and tracename
  • fix reportAnEvent constness
  • use SZAPPNAME rather than hardwired OPC client name; accept settings.xml without UOM field
  • use SZAPPNAME rather than LOGSOURCE
  • more UNICODE support
  • support _UNICODE and _MBCS
  • Qdgroup::calculate and setvalue; expound service-related stuff to winservice.h and cpp
  • std::wstring home_path, kernel_path, OPCServer_CLSID, tracePipe and traceServer; call modelBaseInterface::errors and warnings; simplify call to modelBaseInterface::I and Q
  • modelBaseInterface::errors and warnings const
  • reportAnEvent wchar_t and char
  • template<class T, class W> class group and bridge
  • remove references to Qdouble from opcbridge to Qopc.cc
  • template<class T> class group and bridge
  • template<class U, class V> class link
  • support multi-character (ANSI); move vaporflash and pilot_reactor from opcbridge to Qopc
  • restored betavmax and betalmin based on root of quartic
  • pseudoproperties adjustments
  • eostest now performs different tests depending on the first command line argument
  • eosflash_::logphivi, logphili, prepare_z
  • simplify  eosflash::calculate_eos_kvl
  • streamline kprrs::betavmax and betlmin; add factor
  • removed old-style betavmax and betalmin based on root of quartic
  • dumpsilo and test flash convergence over a T range
  • eosflash::Tcl_, pc_, vc_ and stream_VLe_eos::scanbetas; fix pseudoroot extrapolation
  • include eostest
  • fix various issues, generic testing
  • fix compilation with gcc
  • fixed Tphase::operator+ and operator- UOM error; created vfraction, lfraction and sfraction aliases
  • new errorSE::errorSE version; modelBaseInterface::Q_; modelBaseInterface::Q handles case of xxx[yyy] if yyy is numeric without calling
  • componentList.lookup
  • removed _2 and _NOODBC targets
  • prototype for model definition with XML
  • stuff and various tests
  • scalar_of: scalar objective function with scaling and automatic differentiation for unconstrained optimization; CGbase::test
  • GENERATE_XML
  • fix multihx::compute_reaction_conversions_ to call the calculate method of the actual multiReaction-derivative class rather than multiReaction<2>::calculate
  • initialize sumx_ and sumy_ in flashbase::flashbase
  • nheptane; fixe ethylene and nhexadecane name
  • ToUtf8 const wchar_t, fix UTF-8 encoding bug, update revision number
  • read readOnly and maxErrCount from registry; group:: and link::errorCount is unsigned; write the values of the input variables in the convergence error event
  • removed eosflash::vvv_and vvl_, added pvmax_, p1v_, p2v_, plmin_, p1l_, p2l_
  • fill kVL for non present components in flash::fillkvl
  • vdw::betamaxv and betaminl
  • acos
  • eosBase::a0_, b0_, bcrit_ and the virtual functions betamaxv() and betaminl(); init PR constants in kprss::kprss; kprrs::calc_gk(), betamaxv()m betaminl(); auxiliary variables for pseudoroot computations eosflash::Tcv_, Tcl_, betamaxv_ and betaminl_
  • remove MASSIVE_TEST and insert dummy values for 20090303 settings.xml
  • fixed compilation on gcc 4.3.2, added smartneum::tostring
  • ported from codeproject to boost::bimap
  • Atm -> atm
  • fix description stuff due to stricter synthax checking (valid)
  • schema and stylesheet for smartenums.xml
  • fix warning C4700: uninitialized local variable ‘cid’ used
  • MSG_CORE, MSG_CONVERGENCE_MAXERR; group::errorCount_; catch LIBPF CORE and convergence errors
  • error::message; moved valid from model.cc to types.cc; force validation of each and all tags / descriptions
  • quality_ set to bad in link::Read if case of read error; verify demo max run time against timestamp; print newline when tracer is in console mode
  • added registry support
  • trace convergence errors
  • integrate code from Simple Service
  • moved CTracer stuff to eventlog.*; duplicate event log messages to trace
  • CTracer::CTracer(sn, pn) and operator<<
  • initialize link::quality_ in constructor
  • link::quality, bool readValue, isGood, isBad, qualityString; group::goodQuality_
  • vaporflash and group::mp_
  • MSG_MISSING_MODEL
  • fix cathegory count in event log, added timestaps to traces; added time limit for demo; group description and enabled attributes
  • MSG_UNKNOWN_ATTRIBUTE, MSG_MISSING_ID, MSG_UNKNOWN_ATTRIBUTE_VALUE, MSG_DEMO_EXPIRED
  • big backup
  • pilot_reactor and more…
  • eosflash::estimate_vapor_beta and estimate_liquid_beta; eosflash::set_ideal; stream_eos overrides stream::solveFlash
  • genericphase::useeos_ and setvolume; fix genericphase::writephase to compute v; flashbase::calculate_singlephase_split now computes sumx_
  • added t/h unit for mass flow
  • enhance modelBaseInterface::Q to handle Tphase.T synthax
  • link::forcevalue; add  constant variabletype and group::constants_; embedded stream in group is now stream_VL_eos<kprrs>; group::linkmap_; initialize values in group::read if bm_ == dummyBM; report Iterations, Warnings, Errors and Vapor fraction at the end of the group::calculate
  • handle ndotcomps[H2O] synthax in modelBaseInterface::Q
  • add MSG_UNKNOWN_TAGTYPE
  • eosflash::set_ideal; fix unknowns / residuals resizing in stream_eos constructor; stream_VL_eos::estimate initializes betav_ and betal_
  • event logging
  • moved ObjectFactory::Create from graph.cc and modelBaseInterface::makeEmbedded from multi.cc to models.cc
  • update year in banner
  • ethylene
  • fcoption
  • mcfcd3s::option renamed to fcoption
  • sensitivity analysis
  • psofc model: isothermal proton solid oxide fuel cell; psofc2, psofc3
  • setOutput stuff
  • improvements to fuelcell: nstage_anode_length, nstage_cathode_length, nstage_anode_width, nstage_cathode_width, nx, ny, htoption, TsSet
  • unbundle fuelcell from mcfc
  • change prototype of multistage constructor to pass optionIlongList and optionStringList by value rather than by reference: required by psofc
  • remove useless multiReaction_H2crossover::calculate
  • multihx::reactionOrder
  • multiReaction_SOFC use Fabbri2008 for BCY / BCZY resistivity, mixed proton/oxyion conduction, override multiReaction<2>::calculate; psofc1 include multiReaction_H2crossover; sensitivit analysis
  • multiReaction_electrochemical::PowerDensity; use setOutput where required
  • W/m2
  • icheap9_F
  • include advapi32 with msvc to have GetUserNameA
  • fix convergence
  • fix duplicate Pset
  • icheap9_A to E
  • CO, Co2 and H2 have unsymmetric activity coefficient
  • updated jam file for Qicheap9
  • capstone_c30 and icheap9_A
  • Add new file for ICHEAP9
  • heatSolid::gs
  • fix co2 capture
  • stoich_ratio; set Thot using assignment; set metal makeup to keep air reactor temperature;
  • optional sensitivity
  • default number of streams for multihx set to 2; use {hot/cold}{in/out} synomyms for multihx
  • ports if
  • nStreams==2
  • add metal makeup/purge to avoid singularity
  • lower multiReaction diagnostic; estimate maxduty in hx also for Thot and Tcold specifications
  • conversion is a flowsheet<vertex<2,2>>; add clc preliminary implementation
  • nhexadecane, Fe2O3, improved Fe properties
  • bkk_group, heatSolid_bkk, solidComponent: constructors based on seven parameter set
  • Qco2capture target
  • C16H34; deltah; fixed LHV
  • stream_VLS::estimateNow; stream_VLSe_ideal::estimateNow; stream_VLS_ideal complete with stream_VLS_ideal::estimateNow
  • Qco2capture
  • added UOM for mass per unit work: kg/J
  • instantiate flowsheet<vertex<3,1>> and flowsheet<vertex<2,1>>
  • instantiate vertex<3,1>
  • fix compilation on UNIX
  • save id d synthax; create transitive closure also when saving;
  • getusername and update getGID
  • do not set input=true for coeff / coeffv variables in reactions / multiReactions
  • test with mysql on Debian Lenny
  • support mysql 5.0
  • bypass modelBaseInterface::readtables if CID < 0
  • stadio and attacco types
  • instantiate flowsheet <vertex<3,3> >
  • move instantiation of required templates to end of file; instantiate vertex<3,3>
  • ported to gcc 4.3.2 and postgresql 8.3 on Debian Lenny
  • column with liquid-only top-bottom streams and vapor-only bottom-top streams
  • multistage<T,U,V> allows using different stream type in top-bottom and in bottopm-top connections
  • silenced NLEauto::test
  • NRTL1::resizeArrays, NRTL2::resizeArrays; fix stream_VLe_ac::calculate_residuals memory access error; increase assertions in
  • NRTL1::setA, NRTL1::setB, NRTL2::setTABCD, NRTL2::setAAB
  • fixed Qethanol convergence; removed column1
  • flowsheetBase::smiter_precalc and maxit
  • define tag name for new flowsheet
  • fix connection of sp to sink in flowsheetBase::addcut
  • converge column using proper damping in directstep
  • assignement::directstep(double damping); sequentialassembly::damping_, set_damping and damping; modified sequentialassembly::directstep to use damping; removed boost/lambda stuff
  • exception trapping in CATALOG::find
  • recursively restore cut streams for flowsheets-in-flowsheets in flowsheetBase::restorecuts
  • rearrange sequential and simultaneous computation based on flowsheet::supports_simultaneous
  • column1
  • fix flowsheet::calculate to accurately set error and warning for mass flow imbalance
  • fix dummy::calculate ti calculate mdot* and duty only for non-cut streams
  • avoid assert in flash::computealfaminmax
  • edgeBase::cutdest
  • ijhe<mcfcd3s> and ijhe<mcfc>
  • phase fraction fix in genflash::calculate
  • instantiate repeat_unit<mcfcd3s>
  • moved id_ setting in persistent_item_interface to avoid parent NNN not
  • present in catalogRAM
  • fixed multistage<T,U>::streamname; debugging Qethanol
  • recorder revamp
  • flowsheet::seqErr

List of changes for the user interface

  • fix macro name
  • fix hierarchy for Qethanol
  • setNumericalPrecisionPolicy as QSql::LowPrecisionDouble to try and fix bug in Vista; fix bug on MYSQL that did not display correctly truncated completetags
  • use MySQL
  • fix MainWindow::kernel_path to default for a local types.txt if no setting can be retrieved from QSetting
  • make SvgNativeView::SvgNativeView more resilient when the svg file name has missing extension
  • fix UTF-16 caharacter dsicplay in About window
  • increment release
  • use ODBC driver
  • fix MainWindow::finished to display green icon when ignoreReturnCode; do not quote type and description in MainWindow::save_; MainWindow::delete call QProcess::start rather than execute
  • fix UTF-16 conversion for osx
  • MainWindow::home_path, kernel_path and kernel_name; changed save_ and purge_ from QProcess::execute to start
  • fix home and kernel paths
  • cast wchar_t literal to please gcc/darwin compiler
  • fix stripping and include the current root objects’ items when child_==true
  • update osx icon
  • renamed retention to persistency; added default home_path and kernel_path for osx
  • fix trim synthax
  • open retention.db from home_path
  • fix unicode string and update translations
  • fix sqlite database name
  • SQLITE
  • make stream icon transparent; MainWindow::ignoreReturnCode and fix behaviour when returning from failed kernel; quoting in MainWindow::save
  • updated major version number to 0.9; fix bug that caused save as command to always save current instance as default type; fixed bug that caused save as command to proceed even if user clicked on cancel
  • update for 2009 and trolltech copyright change
  • use named connection to QSqlDatabase
  • get rid of “QSqlDatabasePrivate::removeDatabase: connection ‘qt_sql_default_connection’ is still in use, all queries will cease to work”; add
  • username and password for X11
  • verify flawless compile against Qt 4.5 and update comments and minor stuff in consequence
  • fix tablew_output filter
  • update translations and enable japanese
  • Arabic, Korean and Chinese translations
  • fix gcc warnings for deprecated conversion from string constant to ‘char*
  • stream_VLS_ideal
  • added 14 icons; updated revision; credit to Language Icon and to Tango-icon-theme; Settings->languages SubMenu; updated all translations
  • included Hebrew translation by Aviv By; updated all other translations
  • setLayoutDirection to right-to-left for he and ar
  • support L command; support floating-point coordinates; support space after M, C or L command
  • fix optional diagnostic prints in hierarchy::hierarchy and add vertex<3,1>, flowsheet<vertex<3,1>> and
  • flowsheet<vertex<2,1>>
  • filter in MainWindow::updateLog
  • improve error messages and add vertex<3,3>, flowsheet<vertex<3,3>>
  • translations updated
  • fix SQL error in EditableIntSqlModel::go
  • pop up “Enter new description” input box when saving
  • add save as command; add command confimation before purge all; fix setEnabled/setDiasbled for certain commands
  • use DoubleEditDelegate in Q table
  • remove obsolete Delegate class
  • fix annoying Id column in Q and I table; fix table scroll to be reset in row 0 after cell edit in Q and I table
  • update de, fr, pt, it translations
  • included russian translation by Anastasya Vlasova
  • improve on message “Failure to start doods”; update translations
  • increase diagnostic messages; partial port to mysql on debian lenny
  • show a message in status bar after a new node has been openedd in treew
  • add es, ru, ar, he, ko, jp, zh empty translation files
  • ported to postgresql 8.3 on Debian Lenny; fix multistage type
  • update types
  • use default context menu in lower messages pane
  • fix compilation on Linux; fix About LIBPF UI message