Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates for 2.3.0 beta #399

Merged
merged 6 commits into from
Nov 30, 2016
Merged

Updates for 2.3.0 beta #399

merged 6 commits into from
Nov 30, 2016

Conversation

speth
Copy link
Member

@speth speth commented Nov 26, 2016

This PR is for updates that should coincide with the start of the 2.3.0 beta period. Feel free to push additional updates to this branch, or let me know if there's anything missing.

@speth speth force-pushed the release-prep branch 2 times, most recently from ad8449c to f4d5235 Compare November 26, 2016 18:55
@bryanwweber bryanwweber added this to the Cantera 2.3.0 milestone Nov 28, 2016
@bryanwweber
Copy link
Member

I pushed a fix for #335 in #400

@speth
Copy link
Member Author

speth commented Nov 29, 2016

Cantera 2.3 Changelog (full)

Bugs Fixed

Thermo / Species / Elements

Kinetics

Transport

Reactor networks

1D flames

  • Fix transient mask after Jacobian update to improve timestepping convergence (d767049)
  • Always switch to "steady mode" before attempting steady-state solve (9353a79)

Python package

Matlab toolbox

Examples / Samples

  • Fix compilation errors and warnings in the C++ examples (571eaed)
  • Fix syntax error in extract_submechanism.py example (eb2df78)
  • Fix Python multiprocessing example (7ca9327, 6514f7a)
  • Save correct system state after integration step (8ffbbea)
  • Link Fortran sample programs to the correct standard library (3261b41)
  • Fix Makefiles generated for C++ examples (bc609ce)

Other

Changes to existing capabilities

Thermo / Species / Elements

Kinetics

  • Prevent positive feedback in negative species concentrations (60b98b3)

Transport

Reactor networks

1D flames

  • Improve fixed temperature selection for FreeFlame (7484827, 22537b9)
  • Use better default initial grids (de8348e, f0a1e25, 87a8419, 8e81292, 77e3775)
  • Use better initial guess for FreeFlame mass flow rate (a9293c3, 5a08cf0, 85c3bf5)
  • Only reset Jacobian age after successful steady-state solve (39a6819)
  • Improve finite-difference Jacobian by preserving sign of perturbed components (011c9cb)
  • Tighten default negative species bounds (5a576a7)
  • Improve handling of negative species concentrations (318fa04, 2d82c78, b99ba44)
  • Set limit on number of timesteps without reaching steady state (29b7049, 4c5301d)
  • Increase default value for maximum timestep (7ba6681)
  • Improve Jacobian evaluation for ReactingSurf1D (af5bbf7)
  • Use most prevalent species to impose sum-of-mass-fractions constraint (9f3821d)
  • Use better guess for CounterflowDiffusionFlame initial position (6c466f6)
  • Use new default values for Jacobian and time stepping settings (059e657, b56094b)
  • Make Jacobian atol independent of compiler optimizations (a288d5c)
  • Sim1D::setProfile checks range of position array (f4ad150)
  • Make exceeding the max number of grid points an error (0a363a1, c91bdee)
  • Change the default max number of grid points to 1000 from 3000 (0b9a741)
  • Remove default arguments from setMaxGridPoints (44b2186)

Python package

Matlab toolbox

  • Move lowercase air.m to uppercase Air.m to be consistent with the other PureFluid functions (cf49649)
  • Deprecate importPhase function in favor of constructor for class Solution (5b24064, 1e08d74)

Other

  • Remove unimplemented option to use QR factorization in BandMatrix (c08c365)
  • Simplify error handling to eliminate need for global error stack (ee95c60)
  • Fix get_modified_time to avoid race condition on Windows (05198dd)
  • Show messages from std::exception in CVODES residual function (e454c51)
  • Improve error message generated by XML parser (26b9376, ca2a330, Enhanced error output when XML reads run into errors #40)
  • Check index bounds for known problems in VCS_SOLVE (2561ab8)
  • Move CANTERA_DATA environment variable up in search path (dac5345)
  • Add notices to documentation for classes with no tests or examples (5af1dfd)
  • Add buffer length argument to all clib functions returning strings (8a9eabe)
  • Remove trailing commas when printing Array2D and BandMatrix (43f7bc8)
  • Failures in BandMatrix raise exceptions; eliminate bandmatrix.csv (b9ac39b)
  • Deprecate various unused functions and classes and arguments (many; see http://cantera.github.io/dev-docs/doxygen/html/deprecated.html for details)
  • Many Documentation updates

New Features

Thermo / Species / Elements

Kinetics

Transport

  • Automatically reinitialize after change in number of species (178b452, 46b97be)

Reactor networks

1D flames

Input file handling (ck2cti, cti, ctml_writer)

Python package

Matlab toolbox

Examples / Samples

  • Add C++ example showing initializaton of Kinetics and Transport (a2aade2)
  • Generate CMakeLists.txt files for C++ and F90 samples (f959fa6)

Other

Other code improvements

Thermo / Species / Elements

  • Convert Shomate coefficients when creating objects (b7a5aff)
  • Consistently use ThermoPhase::RT() (ceefc5e, 5e69a99)
  • Simplify ThermoPhase constructors (7fe8f0f, 7bcbbaa)
  • Simplify adding species for most phase types (9c4a0ba)
  • Introduce Phase::compositionChanged (32b3543)
  • Add function 'resetHf298' (0e2ea09)
  • Consolidate duplicate species checks in Phase::addSpecies (11f6c2f)
  • Make tolerances used in state setters more consistent (478a62d)

Kinetics

Equilibrium solvers

  • Standardize VCS solver to always use MKS units (511a39f)
  • Fix formatting of some VCS debug output (d1a58e1)

Reactor networks

  • Move sensitivity parameter vector into FuncEval (032bb9c)
  • Eliminate re-ordering of sensitivity parameters (c7a1a57)

1D flames

Input file handling (ck2cti, cti, ctml_writer)

Python package

  • Move composite classes out of Cython (8a86fed)

Matlab toolbox

  • Switch PureFluids to use liquidvapor xml file (9977fd6)

Examples / Samples

  • Update C++ flamespeed to use current best-practices (b50ef03)
  • SConstruct for C++ demos inherits compiler and options (0a3927a)
  • Install data file for LiC6 electrode example (ec38f58)
  • Generate SConstruct and Makefile for LiC6 electrode example (8b62a59)

Test suite

Build system improvements

Other

@speth
Copy link
Member Author

speth commented Nov 30, 2016

I tried to make an abbreviated version, and even this ended up being long. Maybe we need to make releases more frequently. Feel free to edit this to make it shorter.

I'm just going to use this comment to draft the announcement for 2.3.0, since it lets me keep all the nice automagic links to Github issues and commits if I do it this way.


Dear all,

I am pleased to announce the release of Cantera 2.3.0. There have been many changes and improvements since Cantera 2.2.0 was released in June 2015. A somewhat abbreviated Changelog is included below, in addition to note on installing Cantera 2.3.0 using a variety of methods.

Regards,
Ray

Installing Cantera 2.3.0

Cantera 2.3.0 introduces a new installation option for the Python package, which is the conda package manager for the Anaconda / Miniconda Python distributions. If you already have an existing conda environment, you can install Cantera 2.3.0 by running

conda install -c cantera cantera

For more details on installing conda and using Cantera with conda, see http://cantera.github.io/docs/sphinx/html/install.html#conda.

The source code and Windows binaries can be downloaded from Github: https://github.com/Cantera/cantera/releases. To use the Matlab toolbox on Windows, install both Cantera-2.3.0-x64.msi and one of the Python modules. The Python installers are standalone and do not require the base Cantera package. Installers are available Python 2.7, Python 3.4, Python 3.5, and Python 3.6. Additional installation instructions for Windows can be found at: http://cantera.github.io/docs/sphinx/html/install.html#windows.

For Ubuntu users, Cantera 2.3.0 packages for both 16.04 (Xenial Xerus) and 16.10 (Yakkety Yak) are available via the PPA at https://launchpad.net/~speth/+archive/ubuntu/cantera. See http://cantera.github.io/docs/sphinx/html/install.html#ubuntu for additional details.

For macOS users, Cantera 2.3.0 will be available pending resolution of Homebrew/homebrew-science#4860. See http://cantera.github.io/docs/sphinx/html/install.html#homebrew for additonal instructions.

And of course, you can also just check out the source code directly using Git from https://github.com/Cantera/cantera. Compilation instructions for all platforms are located at: http://cantera.github.io/docs/sphinx/html/compiling.html.

Documentation

Documentation for Cantera 2.3 can be found at: http://cantera.github.io/docs/sphinx/html/index.html.

Issues & Feedback

Please report any issues on the Github issue tracker at https://github.com/Cantera/cantera/issues. When making a bug report, please specify the exact version of Cantera you are using (i.e.
list the last git commit hash if you are using a git checkout) in addition to providing information about the operating system, compiler versions, Python version, etc. that you are using.

There are number of rarely used or redundant features which have been slated for deprecation. Using these methods in Cantera 2.3 will show a deprecation warning, and these methods will be removed before the following release of Cantera. You can examine the list of deprecated functions at: http://cantera.github.io/docs/doxygen/html/deprecated.html. If you believe any of these deprecations are unwarranted, please create an issue on Github.

In addition, there are a number of classes and features that have been identified as being potentially unused. They are not used internally within Cantera, have no test coverage, and have no examples available. These classes are identified in Issue #267. If you utilize any of these classes, please consider providing tests or examples which can be integrated into Cantera. If these classes and features remain in their current state, they are likely to be deprecated and removed in a future release.

Changes in Cantera 2.3.0

Highlights are listed here. See the full changelog for more.

  • Add ability to modify species data for existing Phase objects
  • Make species names case-preserving instead of case-sensitive, and allow colons in species names
  • Add option for Motz & Wise correction to sticking reactions
  • Implement enthalpy of formation sensitivity analysis for reactor networks
  • Implement the Cython function advance_to_steady_state for reactor networks
  • Eliminate most known 1D flame solver failures by improving Jacobian evaluation, and using better default initial grids and initial guesses
  • Introduce 'auto' option to Sim1D.solve to automatically try multiple initial grids
  • Generalize initial profile generation for diffusion flames for arbitrary fuel/oxidizer combinations
  • Add general support for calculating adjoint sensitivities for 1D flames
  • Add a Twin Premixed Counterflow Flame class and example
  • Support conversion of surface mechanism files
  • Provide better error message for problematic reaction and thermo entries when converting input files
  • Add 'nonreactant_orders' option to allow non-reactant orders
  • Allow adding species / reactions from Python
  • Add new classes Quantity and SolutionArray to Python
  • Make Python test suite runnable from an installed copy of the Python module
  • Introduced Continuous Integration testing using Travis CI and AppVeyor
  • Use Git submodules for Sundials, Eigen, Google Test, and libfmt if system versions are not installed
  • Use Sundials and Eigen to eliminate the need for bundled LAPACK
  • Added Conda build recipe and made binaries available through anaconda.org
  • Add support for Sundials 2.7
  • Deprecate unused classes, functions, arguments, and constants (see http://cantera.github.io/dev-docs/doxygen/html/deprecated.html for details)
  • Add notices to documentation for classes with no tests or examples (see Improve test suite coverage or remove unused code #267)
  • Make clib usable as a pure C (not C++) interface and add tests

@speth
Copy link
Member Author

speth commented Nov 30, 2016

First-cut Windows binaries are at: http://gir.mit.edu:8010/nightlies/. I've only had a chance to test a couple of them, but I think they're good enough to make the beta announcement.

@bryanwweber Unless you have any further comments, I'm ready to merge this and then we can trigger the conda builds.

@bryanwweber
Copy link
Member

I'm 👍 on the merge and release. I'd suggest we do more frequent bugfix patch releases so the Changelog doesn't get quite so long between releases.

Once you merge, I'll take a look at what we should do for the conda recipes. I think we need a new recipe/branch for 2.3.0 that uploads to the main label (but that should wait for the final release).

@speth speth merged commit 1b4ea04 into Cantera:master Nov 30, 2016
@speth speth deleted the release-prep branch November 30, 2016 01:36
@speth
Copy link
Member Author

speth commented Nov 30, 2016

Right, I think the conda builds for the beta should still be on the master branch and use the dev label, and we should create a branch for the stable builds when 2.3.0 final is ready, such that the branch structure for the conda recipes matches the structure of the main cantera repo.

Should we reset the build number on the conda build since the version has gone from 2.3.0a3 to 2.3.0b1?

@bryanwweber
Copy link
Member

OK creating the branch structure should work because the CI builds on all the branches, not just master. For that, I think it would be better to have the source tarball downloaded from the official release page, so the conda package always matches an actual release, and not a random commit on the 2.3.0 branch.

I think we should check that 2.3.0b1 is read as a newer version than 2.3.0a3, and if it is, reset the build number. Alternatively, we can delete the existing files from anaconda.org and reset the build number.

@speth
Copy link
Member Author

speth commented Nov 30, 2016 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants