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

update cantera version to remove need for x86 emulation on arm mac #2751

Open
wants to merge 27 commits into
base: feat/py39_rebase
Choose a base branch
from

Conversation

JacksonBurns
Copy link
Contributor

WIP

would resolve #2676

hwpang and others added 16 commits January 14, 2025 11:49
These squashed commits contain all of the initial efforts by HWP to switch from pythoncall to JuliaCall
These were the first commits to change to Python 3.9, and they do not work on their own but instead open the door to finding issues to make the rest of the changes
here are all the solutions that were implemented:
 - in a couple places we were implicitly casting a double to a numpy float, now need to explicitly grad the _real_ part of the double
 - Cython does not allow nested function declaration inside cpdef functions, move all of these outside of their parent functions or redefine them to be purely functional where practical
 - similar to the above, lambda function are no longer allowed - get the same treatment. what's different here is that usually we are using lambda in sorting calls, so we can replace these with operator.itemgetter or attrgetter, where relevant. this also involves re-writing a couple reduce calls, which also used lambda
 - modern cython does not allow re-declaring existing Cython variables (in previous versions this was a warning I think), so I just remove these where needed. (btw Cython is super cool, actually points out both of the declaration so that you can delete one)

i made these fixes while listening to The Metal by Tenacious D, Talk Too Much by Renee Rapp, BEST INTEREST by Tyler, The Creator (love the bass line), mos thoser by food house, and Doritos & Fritos by 100 Gecs
These commits are the second (and final) round of attempting JuliaCall debugging by HWP
These commits reflect the initial effort by XD to re-implement the MILP for Clar optimization in SciPy. They were unsuccessful because at the time RMG could not actually run a required version of Python to install SciPy with MILP.
These commits rescued some abandoned work from another branch
This is a collection of largely unordered commits which implement all of the changes discussed in the commit name
@JacksonBurns
Copy link
Contributor Author

I am using this script to change our CTI blocks into YAML:

from cantera.cti2yaml import convert

convert(text="""species(name=u'Ar',
        atoms='Ar:1',
        thermo=(NASA([200.00, 1000.00],
                     [ 2.50000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00, -7.45375000E+02,
                       4.37967000E+00]),
                NASA([1000.00, 6000.00],
                     [ 2.50000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00, -7.45375000E+02,
                       4.37967000E+00])),
        transport=gas_transport(geom='atom',
                                diam=3.33,
                                well_depth=136.501,
                                dipole=2.0,
                                polar=1.0,
                                rot_relax=15.0))""",
                                output_name="temp_yaml.yaml"
         )

@JacksonBurns
Copy link
Contributor Author

Here are the other errors which must be resolved:

 FAILED test/rmgpy/reactionTest.py::TestReactionToCantera::test_pdep_arrhenius - AttributeError: 'cantera.reaction.Reaction' object has no attribute 'rates'
FAILED test/rmgpy/reactionTest.py::TestReactionToCantera::test_multi_pdep_arrhenius - AttributeError: 'cantera.reaction.Reaction' object has no attribute 'rates'
FAILED test/rmgpy/reactionTest.py::TestReactionToCantera::test_falloff - AttributeError: module 'cantera' has no attribute 'FalloffReaction'
FAILED test/rmgpy/speciesTest.py::TestSpecies::test_cantera - cantera._utils.CanteraError: 
*******************************************************************************
InputFileError thrown by AnyMap::operator[]:
Error on line 1 of input string:
Key 'composition' not found.
Existing keys: species, date, generator, cantera-version, description
|  Line |
>     1 > 
          ^
|     2 | description: |-
|     3 |   Argon
|     4 | 
*******************************************************************************
FAILED test/rmgpy/transportDataTest.py::TestTransportData::test_to_cantera - AttributeError: type object 'cantera.thermo.Species' has no attribute 'fromCti'
ERROR test/rmgpy/tools/canteramodelTest.py::RMGToCanteraTest::test_species_conversion - AttributeError: module 'cantera' has no attribute 'FalloffReaction'
ERROR test/rmgpy/tools/canteramodelTest.py::RMGToCanteraTest::test_reaction_conversion - AttributeError: module 'cantera' has no attribute 'FalloffReaction'
ERROR test/rmgpy/tools/canteramodelTest.py::RMGToCanteraTest::test_surface_species_conversion - AttributeError: module 'cantera' has no attribute 'FalloffReaction'
ERROR test/rmgpy/tools/canteramodelTest.py::RMGToCanteraTest::test_surface_reaction_conversion - AttributeError: module 'cantera' has no attribute 'FalloffReaction'

@JacksonBurns
Copy link
Contributor Author

FalloffReaction has been merged with Reaction: https://cantera.org/3.0/doxygen/html/da/d58/deprecated.html#_deprecated000043

@JacksonBurns JacksonBurns force-pushed the py39/cantera3 branch 2 times, most recently from fddd38d to 206d426 Compare January 23, 2025 16:41
@JacksonBurns JacksonBurns changed the base branch from feat/py39_rebase-julia_fix to py39/juliacall-fix January 25, 2025 21:53
 - CI updates: run CI on all platforms with and without RMS, split regression tests into separate job after that so that regression is only checked on one platform
- installation updates: make RMG-Py actually `pip`-installable as `reactionmechanismgenerator` to avoid having to set the `PYTHONPATH` variable, which breaks `juliacall`, add a convenience script for installing RMS
 - code changes: fix some small bugs in the new optional-rms setup (one missed `requires_rms` and one incorrect rebase)
@JacksonBurns JacksonBurns force-pushed the py39/cantera3 branch 2 times, most recently from ee73300 to 33bd6f2 Compare January 26, 2025 02:20
jonwzheng and others added 5 commits January 27, 2025 17:01
passing an empty dict for third_body results in the attribute being None, but we need it to just be an unpopulated ThirdBody to indicate that the Reaction is a third body reaction
it seems that Cantera 3 seems to be a little bit pickier about the syntax for chemkin files
@JacksonBurns
Copy link
Contributor Author

 - cantera3 can only read if there is a name
 - rmg can't read if there is a name
 - update rmg to ignore the name
@JacksonBurns JacksonBurns mentioned this pull request Feb 25, 2025
Base automatically changed from py39/juliacall-fix to feat/py39_rebase February 25, 2025 21:55
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.

We should replace cantera.Species.fromCti() calls with cantera.Species.from_yaml() calls
4 participants