Coder Social home page Coder Social logo

cantera / cantera-website Goto Github PK

View Code? Open in Web Editor NEW
14.0 7.0 27.0 63.27 MB

Official Cantera Website

Home Page: https://cantera.org

License: Other

Python 87.25% HTML 6.62% CSS 0.94% JavaScript 1.85% C++ 3.33%
nikola python cantera thermodynamics transport kinetics static-site

cantera-website's Introduction

Cantera Website

This repository contains the source code for the cantera.org website. The site is built using the Nikola static site generator.

To build the website

  1. Create a virtual environment for Nikola (i.e., using conda or virtualenv)
  2. Clone the Cantera source: git clone https://github.com/Cantera/cantera.git
  3. Clone the Cantera Jupyter examples: git clone https://github.com/Cantera/cantera-jupyter.git
  4. Clone the Cantera website source: git clone https://github.com/Cantera/cantera-website.git
  5. Enter the website repo: cd cantera-website
  6. Copy the current development documentation: curl -O https://cantera.org/documentation/dev/dev-docs.tar.bz2
  7. Extract the dev docs: tar jxf dev-docs.tar.bz2 --strip-components=1 -C api-docs/dev
  8. Inside the website repo, install the required packages: pip install -r requirements.txt
  9. Build the website and open in browser: nikola auto -b or use nikola serve -p 9000 -b for different port

To add a language of examples

  1. Copy one of the existing render_*_examples.py and render_*_examples.plugin
  2. Add the source folder as the key and destination folder to the EXAMPLES_FOLDERS dictionary in conf.py
  3. Edit the render_*_examples.py file to build the examples
  4. See this blog post for more information about building Nikola tasks

To add an example category for Jupyter or Python

  1. New example categories are stored in folders in the Jupyter and Python example repositories
  2. If new categories (folders) are added to the examples, the appropriate renderer needs to be updated
  3. In the Jupyter and Python examples, there's a dictionary called *_headers. Each folder of examples has a key in that dictionary. The values are a nested dictionary with three keys:
    1. name: The name used on the index page for that category
    2. files: An empty list that gets filled with the names of the examples in this category
    3. summaries: A empty dictionary that gets filled with keys that are the example filename and values that are the summary from that example
  4. Add a new key to that dictionary with the folder name as the key and fill in the name key in the nested dictionary and set the files and summaries keys to the empty list and empty dictionary, respectively

To add a version's release notes

  • To add the latest version's release notes: nikola new_release
  • To add release notes for a version by its tag name: nikola new_release -t {tag_name}
    • Example: nikola new_release -t v2.4.0
  • To add release notes for a version by its release ID: nikola new_release -i {id}
    • Example: nikola new_release -i 12508904

Cheat sheet for linking to content in various places:

  • To link to another section on the same page (using the title of the section): Governing Equations for Single Reactors_
  • To link to an external site:
    • YAML 1.2 <https://yaml.org/spec/1.2/spec.html>__
  • To link to a Python class:
    • :py:class:ConstPressureReactor
  • To link to a C++ class:
    • ThermoPhase <{{% ct_docs doxygen/html/dc/d38/classCantera_1_1ThermoPhase.html %}}>__
  • To link to an example:
    • IC engine example </examples/python/reactors/ic_engine.py.html>__
  • To link to a label in the YAML API docs:
    • :ref:three-body <sec-yaml-three-body>

Apache configuration

To allow the version switcher to work smoothly between Cantera =< 3.0 and Cantera >= 3.1 (where the directory structure changed significantly), we rely on several mod_rewrite rules, implemented in .htaccess files:

  • /dev/.htaccess:
RewriteBase "/dev/"

RewriteRule "^cython/(.+)" "python/$1" [R]
  • /documentation/.htaccess:
RewriteBase "/documentation/"

RewriteRule "^dev/sphinx/html/cython/(.*)" "../dev/python/$1" [R]
RewriteRule "^docs-3.0/sphinx/html/python/(.*)" "docs-3.0/sphinx/html/cython/$1" [R]
RewriteRule "^dev/sphinx/html/(.+)"  "../dev/$1" [R]
  • /stable/.htaccess:
RewriteBase "/stable/"

RewriteRule "^cxx(.*)"  "../documentation/docs-3.0/doxygen/html/$1"
RewriteRule "^(.*)"  "../documentation/docs-3.0/sphinx/html/$1"

cantera-website's People

Contributors

12chao avatar agarwalrounak avatar anthony-walker avatar band-a-prend avatar bangshiuh avatar bryanwweber avatar chinahg avatar corykinney avatar decaluwe avatar funnelferry avatar g3bk47 avatar gkogekar avatar imitrichev avatar ischoegl avatar jithendra-roy avatar jiweiqi avatar jsantner avatar kyleniemeyer avatar mefuller avatar nishikeshkardak avatar paulblum avatar petrkle avatar rwest avatar speth avatar thomasfiala avatar tsikes avatar vdevgan avatar yurivict avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cantera-website's Issues

Need to add a site-wide search

Currently, the only search options available are in the Documentation section, one for the Sphinx/Matlab docs and one for the Doxygen docs. However, with the idea of moving more documentation to the Science section of this site, being able to search all of this content will become more important.

Update NumFOCUS affiliation text

NumFOCUS have asked us to standardize on the following text:

[Project Name] is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity
in the United States. NumFOCUS provides [Project Name] with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit
numfocus.org for more information.

Donations to [Project Name] are managed by NumFOCUS. For donors in the United
States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.”

The build_examples plugin needs to be refactored

The build_examples.py plugin is a mess of spaghetti code that I wrote when I didn't understand how Nikola plugins worked. It needs to be refactored so that we can actually add new examples to it more easily and so someone else can help maintain it. Some improvements that are needed are

  1. Rename dir variable that shadows the built-in function
  2. Find a way to extract common example processing to another function. When I first built this, I couldn't find a way to get the gen_tasks function to reliably call another function, despite that it calls the render function reliably. It was probably something to do with the function result being not "out of date" according to doit.
  3. Either use pathlib or os.path consistently throughout
  4. Figure out a good way to re-process the examples when they fall out of date (not critical since the production site is generated from scratch every time)
  5. Add table of contents to examples index pages (#45)

Broken Travis CI pipeline

The CI build script errors with

The command "pip install -r requirements.txt" failed and exited with 1 during .

(see #104 error log). This appears to be related to @bryanwweber's custom pygment archive

  HTTP error 404 while getting https://github.com/bryanwweber/pygments/archive/matlabsession-line-continuation.zip 

  Could not install requirement https://github.com/bryanwweber/pygments/archive/matlabsession-line-continuation.zip (from -r requirements.txt (line 6)) because of error 404 Client Error: Not Found for url: https://codeload.github.com/bryanwweber/pygments/zip/matlabsession-line-continuation

UnicodeDecodeError on building website

While executing the command nikola build && nikola serve -b to build the Cantera website, I got the UnicodeDecodeError twice

TaskError - taskid:process_ref_targets:pages\dave-goodwin.rst
PythonAction Error
Traceback (most recent call last):
  File "d:\gitpro\env\lib\site-packages\doit\action.py", line 424, in execute
    returned_value = self.py_callable(*self.args, **kwargs)
  File "D:\GitPro\cantera-website\plugins\process_ref_targets.py", line 110, in process_targets
    data = in_file.read()
  File "d:\gitpro\env\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 3533: character maps to <undefined>

########################################
process_ref_targets:pages\dave-goodwin.rst <stdout>:

and

TaskError - taskid:parse_docs:matlab
PythonAction Error
Traceback (most recent call last):
  File "d:\gitpro\env\lib\site-packages\doit\action.py", line 424, in execute
    returned_value = self.py_callable(*self.args, **kwargs)
  File "D:\GitPro\cantera-website\plugins\parse_docs.py", line 56, in process_targets
    tree = parse(html_file)
  File "d:\gitpro\env\lib\site-packages\lxml\html\__init__.py", line 939, in parse
    return etree.parse(filename_or_url, parser, base_url=base_url, **kw)
  File "src\lxml\etree.pyx", line 3435, in lxml.etree.parse
  File "src\lxml\parser.pxi", line 1861, in lxml.etree._parseDocument
  File "src\lxml\parser.pxi", line 1881, in lxml.etree._parseFilelikeDocument
  File "src\lxml\parser.pxi", line 1776, in lxml.etree._parseDocFromFilelike
  File "src\lxml\parser.pxi", line 1187, in lxml.etree._BaseParser._parseDocFromFilelike
  File "src\lxml\parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src\lxml\parser.pxi", line 707, in lxml.etree._handleParseResult
  File "src\lxml\etree.pyx", line 314, in lxml.etree._ExceptionContext._raise_if_stored
  File "src\lxml\parser.pxi", line 370, in lxml.etree._FileReaderContext.copyToBuffer
  File "d:\gitpro\env\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2979: character maps to <undefined>

########################################
parse_docs:matlab <stdout>:

Operating System

Windows 10

Note

I figured how to resolve the error and have the website succesfully running on my localhost. I will send a PR soon.

Make a script that parses SConstruct to get the config options

The config-options.rst file contains the text of the configuration options from the main Cantera SConstruct file. To prevent it getting out of date, we should make a script that parses the SConstruct and writes the config-options.rst file.

The ast module will be useful since SConstruct is just a Python file. See also https://greentreesnakes.readthedocs.io/en/latest/

In the end, this should be turned into a plugin that runs on every bulid of the website.

Link to C++ code in 'ChemEquil.h' is broken

https://cantera.org/tutorials/python-tutorial.html

Clicking the link for ChemEquil.h [directing to: https://cantera.org/documentation/docs-2.4/doxygen/html/ChemEquil_8h.html] under the Chemical Equilibrium section returns:

404: Page Not Found

What you’re looking for isn’t here.

Please check the URL.

If you clicked a link on cantera.org and ended up here, please file an issue on the GitHub repository for this website.

Having the bare files/license.txt breaks nikola auto

Trying to run nikola auto results in the following traceback (before or after running nikola build):

$ nikola auto -b
[2018-12-22T21:02:22Z] INFO: auto: Rebuilding the site...
Scanning posts..........done!
.  parse_docs:matlab
.  parse_docs:cti
.  parse_docs:cython
Traceback (most recent call last):
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/doit/doit_cmd.py", line 177, in run
    return command.parse_execute(args)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/doit/cmd_base.py", line 127, in parse_execute
    return self.execute(params, args)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/nikola/plugin_categories.py", line 148, in execute
    return self._execute(options, args)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/nikola/plugins/command/auto/__init__.py", line 209, in _execute
    self.wd_observer.schedule(NikolaEventHandler(self.run_nikola_build, loop), p, recursive=True)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/watchdog/observers/fsevents.py", line 172, in schedule
    return BaseObserver.schedule(self, event_handler, path, recursive)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/watchdog/observers/api.py", line 290, in schedule
    timeout=self.timeout)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/watchdog/observers/fsevents.py", line 73, in __init__
    self.snapshot = DirectorySnapshot(watch.path, watch.is_recursive)
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/watchdog/utils/dirsnapshot.py", line 235, in __init__
    for p, st in walk(path):
  File "/Users/bryan/miniconda3/envs/nikola/lib/python3.7/site-packages/watchdog/utils/dirsnapshot.py", line 212, in walk
    paths = [os.path.join(root, name) for name in listdir(root)]
NotADirectoryError: [Errno 20] Not a directory: 'files/license.txt'

Seems like the cause is the watchdog package assumes that everything in the files directory is also a directory. However, I rewrote the copy_files plugin to handle bare files.

Add search to documentation/index.html

It would be very useful to be able to search the Sphinx API docs from the main documentation index page, rather than having to click a link to access the docs, and then being able to search. Not sure how to tie in the JS from the search functionality from the Sphinx generated pages into the main page, but it can't be that hard

Move docs and dev-docs out of api-docs folder to make updating easier

I think the docs and dev-docs submodules should no longer be submodules, but instead should be their own repos at the same level as the main website repo (this repo), so the file tree looks like

|- /home/user/repos
|--- cantera-website
|--- dev-docs
|--- docs

This way, the Travis build can push to the dev-docs and the cantera-website repos using ssh (similar to how it's being done to push to GitHub). (To do this, we'll need to enable a configuration option on these repositories locally: https://blog.github.com/2015-02-06-git-2-3-has-been-released/). I think it makes most sense to manually push/pull in the docs repo, since that will only be updated for tagged releases.

Then we have a post-receive hook in the dev-docs and cantera-website repos on cantera.org that triggers a rebuild of the website and copies the output of the build to the appropriate directory to be served. One potential challenge of this is handling failed builds - one reason to do this only after pushing from Travis is the build should fail on Travis first, so the code won't ever be pushed. Another challenge is that the push from Travis doesn't release the connection until the post-receive script finishes, so we'd need to find a way to work around that.

Error on building website

I was building the website using the steps mentioned here. I get the following error on executing the command nikola auto -b:

[2019-03-11T13:31:58Z] INFO: auto: Rebuilding the site...
Scanning posts..........done!
[2019-03-11T13:32:05Z] ERROR: Nikola: Error loading tasks. An unhandled exception occurred.
[2019-03-11T13:32:05Z] ERROR: Nikola: KeyError: 'electrochemistry'
[2019-03-11T13:32:05Z] NOTICE: Nikola: To see more details, run Nikola in debug mode (set environment variable NIKOLA_DEBUG=1) or use NIKOLA_SHOW_TRACEBACKS=1
Traceback (most recent call last):
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/doit/doit_cmd.py", line 177, in run
    return command.parse_execute(args)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/doit/cmd_base.py", line 127, in parse_execute
    return self.execute(params, args)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/nikola/plugin_categories.py", line 148, in execute
    return self._execute(options, args)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/nikola/plugins/command/auto/__init__.py", line 215, in _execute
    self.wd_observer.start()
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/observers/api.py", line 255, in start
    emitter.start()
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/utils/__init__.py", line 110, in start
    self.on_thread_start()
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/observers/inotify.py", line 121, in on_thread_start
    self._inotify = InotifyBuffer(path, self.watch.is_recursive)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/observers/inotify_buffer.py", line 35, in __init__
    self._inotify = Inotify(path, recursive)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/observers/inotify_c.py", line 199, in __init__
    self._add_dir_watch(path, recursive, event_mask)
  File "/home/rounak/NumCantera/env/lib/python3.6/site-packages/watchdog/observers/inotify_c.py", line 379, in _add_dir_watch
    raise OSError('Path is not a directory')
OSError: Path is not a directory

Python version

Python 3.6.3

Operating System

Ubuntu 17.10

Note

Instead of cloning the original repositories, I was cloning the forked repositories though that should not make a difference

Quick note on installation instructions on Mac

I have recently installed Cantera on my Mac using the installation instructions available at
https://www.cantera.org/install/macos-install.html

There are appears to be a typo in the last command for the installation:

Instead of
$HOME/miniconda/bin/conda create -n cantera24 -c cantera cantera
It should read
$HOME/miniconda3/bin/conda create -n cantera24 -c cantera cantera
Matei

Dr. Matei I Radulescu, P.Eng.,
Professor, Department of Mechanical Engineering,
University of Ottawa,
770 King Edward Ave, Ottawa, Ontario, Canada K1N 6N5
Tel. (613) 562-5800 ext. 6720, [email protected], office Colonel By A712

Turn on header auto-links

Nikola has an option to turn on auto-links to headers a la Sphinx. This feature turns out to be very useful for documentation, so we should enable it here.

Links from cards broken on many pages

With the update triggered by merging #136, the website is no longer correctly rendering "cards" on many (but not all) pages, and what is rendered no longer has a working link. For example, the "Tutorials" page now shows this:
image

Some pages are fine, though. For example, the "Science" page:
image

"Caps" typogrify filter in Nikola is breaking rendering of LaTeX with strings of capital letters.

I notice in the release notes of Nikola 8.1.2 "Restore caps typogrify filter (wraps strings of capital letters with <span class="caps"> (via Issue #3405)".

This is being applied to things like RT and AB which then breaks the mathjax rendering and screws up all the LaTeX math for any equations with two or more consecutive capital letters.
Screen Shot 2021-02-05 at 10 57 01 AM

Screenshot of documentation page https://cantera.org/science/reactions.html attached. OK math in green, broken math in red, with the offending letters circled. Same in Safari and Chrome.
Screen Shot 2021-02-05 at 10 52 05 AM

I don't know enough about Nikola to turn off this filter, but I think that's the problem.

Add C++ examples from Cantera/cantera

The C++ (and other language) examples from the Cantera/cantera/samples directory should be added to the website. The main question is how to show files that are split into header/source files? @speth Any thoughts?

Negative A factors in multiple PLOG expressions fail validation

Cantera version

2.4.0

Operating System

Mac OS

Python/MATLAB version

3.7.1

Expected Behavior

Could use a published chemkin file

Actual Behavior

Fails during validation due to negative pre-exponential factor in a multiple PLOG expression.

Steps to reproduce

  1. Download the chemkin file from a paper such as https://doi.org/10.1016/j.combustflame.2016.07.016
    and try to convert it using ck2cti.

It has this reaction:

CH2CHOO=CO2+CH3                                  6.03E-03        3.46    17420.0
  PLOG/1.000E-02    5.09E+33       -7.95    31290.0/
  PLOG/1.000E-02    4.20E+122      -39.75    43640.0/
  PLOG/1.000E-01    1.21E+118      -33.13    73790.0/
  PLOG/1.000E-01    1.96E+29       -6.29    30920.0/
  PLOG/3.160E-01    8.56E+32       -7.21    33550.0/
  PLOG/3.160E-01    5.10E-66       21.37    -11110.0/
  PLOG/1.000E+00    3.27E+33       -7.22    34990.0/
  PLOG/1.000E+00    1.76E-47       15.85    -5283.0/
  PLOG/3.160E+00    3.49E-79       25.01    -21020.0/
  PLOG/3.160E+00    3.82E+32       -6.80    35690.0/
  PLOG/1.000E+01    8.16E+32       -6.76    37270.0/
  PLOG/1.000E+01    4.62E+00        2.10    17170.0/
  PLOG/3.160E+01    7.01E+37       -8.06    42200.0/
  PLOG/3.160E+01    3.49E+14       -1.58    26470.0/
  PLOG/1.000E+02    -2.51E+03        1.41    14420.0/
  PLOG/1.000E+02    4.05E-09        5.14    10480.0/
   ! Goldsmith et al., 2015, J. Phys. Chem. A 2015, 119, 7766-7779 (DOI: 10.1021/acs.jpca.5b01088)

which gets converted to this by ck2cti:

# Reaction 567
pdep_arrhenius('CH2CHOO <=> CO2 + CH3',
               [(0.01, 'atm'), 5.090000e+33, -7.95, 31290.0],
               [(0.01, 'atm'), 4.200000e+122, -39.75, 43640.0],
               [(0.1, 'atm'), 1.210000e+118, -33.13, 73790.0],
               [(0.1, 'atm'), 1.960000e+29, -6.29, 30920.0],
               [(0.316, 'atm'), 8.560000e+32, -7.21, 33550.0],
               [(0.316, 'atm'), 5.100000e-66, 21.37, -11110.0],
               [(1.0, 'atm'), 3.270000e+33, -7.22, 34990.0],
               [(1.0, 'atm'), 1.760000e-47, 15.85, -5283.0],
               [(3.16, 'atm'), 3.490000e-79, 25.01, -21020.0],
               [(3.16, 'atm'), 3.820000e+32, -6.8, 35690.0],
               [(10.0, 'atm'), 8.160000e+32, -6.76, 37270.0],
               [(10.0, 'atm'), 4.620000e+00, 2.1, 17170.0],
               [(31.6, 'atm'), 7.010000e+37, -8.06, 42200.0],
               [(31.6, 'atm'), 3.490000e+14, -1.58, 26470.0],
               [(100.0, 'atm'), -2.510000e+03, 1.41, 14420.0],
               [(100.0, 'atm'), 4.050000e-09, 5.14, 10480.0])
#  Goldsmith et al., 2015, J. Phys. Chem. A 2015, 119, 7766-7779 (DOI: 10.1021/acs.jpca.5b01088)

but then when you try to use it (or during the validation) you get this error

***********************************************************************
CanteraError thrown by Plog::validate:
Invalid rate coefficient for reaction 'CH2CHOO <=> CH3 + CO2'
at P = 1.01325e+07, T = 500
***********************************************************************

presumably because of the negative A-factor on the first 100 atm rate expression.

Add detailed changelog link to documentation page

We would like to publish the detailed change logs that we generate for each release on the website. These detailed change logs contain comments for nearly all of the git commits and pull requests since the last release. The links to the change logs could be in the "Other documentation" section of the main Documentation page.

I think the best way to solve this issue is to write a plugin that automatically takes a markdown file with git hashes, GitHub usernames, and GitHub issue/PR numbers and writes the correct links. The markdown file with the change log should be stored in the repository for the website somewhere, perhaps in a posts/changelogs directory.

Further updates needed for 2.5.1 release

How should we handle updates to website content for the development version?

As discussed in #23, #86, Cantera/cantera#667, and Cantera/cantera#682, certain updates to Cantera/cantera will require updates to the content on the website. The question is, how should that content be shown? The options that I think have been discussed so far:

  1. A separate branch in this repository to house the updates that only apply to the development edition. This could work like it does at Cantera/cantera, where the main/"default" website is stored in a branch named for the current release and ongoing work goes onto master, or master can remain the default version and new updates go onto a dev branch. This would probably result in two separate versions of the website deployed at two URLs (e.g., https://cantera.org and https://devel.cantera.org or some such).
  2. Add all new materials to master, and have a special box or other mechanism to note that the material only applies to an unreleased version of Cantera. I'm not exactly sure how this would work, and it would certainly require quite a bit of maintenance to make sure that when a new release happened, everything was updated properly, but this might be able to be automated, and could serve as a neat flag on the website ("added in 2.5.0").
  3. Store the related materials in a separate repository, with content on two branches (one for the current release, one for the development version). This would minimize the amount of duplication in building the website (i.e., option 1 results in two whole websites), but would require a bit more CI wrangling and would make building the website locally more annoying.

This issue refers specifically to the science, equations, supported models, and tutorials. API developer documentation is already available.

In my opinion, examples should always be shown from the current released version of Cantera, since that content should continue to work in the developer version of Cantera, while the converse is not true; in addition, advanced users who're using the development version should be able to get updated examples from their copy of the source.

A related point that I want to quote here specifically from @speth (#86 (comment)):

[We should try to avoid the case where] a new category of examples is added that breaks the web site in some way which isn't discovered until we update for the release.

To that point, examples that only use existing features (in the current stable release) should be added to the release branch in Cantera/cantera, and if this involves new categories, that should be able to be shown on the website.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.