Cantera / cantera

Chemical kinetics, thermodynamics, and transport tool suite
https://cantera.org
Other
582 stars 342 forks source link

Invalid default arguments for Solution.to_chemkin #1611

Closed speth closed 9 months ago

speth commented 10 months ago

Problem description

The Solution.write_chemkin method defines some default arguments that are not accepted by yaml2ck.convert. All the unit tests seem to use yaml2ck.convert directly, leaving Solution.write_chemkin untested and letting this bug slip through.

Steps to reproduce

import cantera as ct
gas = ct.Solution('h2o2.yaml')
gas.write_chemkin('test.ck') # Error - see first traceback 
gas.write_chemkin('test.ck', sort_species='alphabetical') # error - see second traceback

Behavior

Traceback for gas.write_chemkin('test.ck'):

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In [7], line 1
----> 1 gas.write_chemkin('test.ck')

File ~/src/cantera/build/python/cantera/solutionbase.pyx:345, in cantera.solutionbase._SolutionBase.write_chemkin()
    343 
    344         from cantera import yaml2ck
--> 345         output_paths = yaml2ck.convert(
    346             self,
    347             mechanism_path=mechanism_path,

File ~/src/cantera/build/python/cantera/yaml2ck.py:642, in convert(solution, phase_name, mechanism_path, thermo_path, transport_path, sort_elements, sort_species, overwrite)
    640     all_species = solution.species()
    641 else:
--> 642     raise ValueError(
    643         "sort_species must be None, 'alphabetical', or 'molar-mass'. "
    644         f"Got '{sort_species}'"
    645     )
    647 all_elements = [ct.Element(e) for e in solution.element_names]
    648 if sort_elements == "alphabetical":

ValueError: sort_species must be None, 'alphabetical', or 'molar-mass'. Got 'False'

Traceback for gas.write_chemkin('test.ck', sort_species='alphabetical')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In [8], line 1
----> 1 gas.write_chemkin('test.ck', sort_species='alphabetical')

File ~/src/cantera/build/python/cantera/solutionbase.pyx:345, in cantera.solutionbase._SolutionBase.write_chemkin()
    343 
    344         from cantera import yaml2ck
--> 345         output_paths = yaml2ck.convert(
    346             self,
    347             mechanism_path=mechanism_path,

File ~/src/cantera/build/python/cantera/yaml2ck.py:653, in convert(solution, phase_name, mechanism_path, thermo_path, transport_path, sort_elements, sort_species, overwrite)
    651     all_elements = sorted(all_elements, key=lambda e: e.weight)
    652 elif sort_elements is not None:
--> 653     raise ValueError(
    654         "sort_elements must be None, 'alphabetical', or 'molar-mass'. "
    655         f"Got '{sort_elements}'"
    656     )
    658 # Write output files
    659 header_wrapper = HeaderTextWrapper(
    660     [solution_name.name],
    661     width=120,
   (...)
    665     break_on_hyphens=False,
    666 )

ValueError: sort_elements must be None, 'alphabetical', or 'molar-mass'. Got 'False'

System information

Additional context

Discovered while isolating #1610.