Added tests for Cython Transport class

This commit is contained in:
Ray Speth 2012-09-06 20:00:05 +00:00
parent 4ff9e61e0d
commit 051a08933f
2 changed files with 56 additions and 4 deletions

View file

@ -1,4 +1,5 @@
import unittest
import numpy as np
import cantera as ct
from . import utilities
@ -6,12 +7,61 @@ from . import utilities
class TestTransport(utilities.CanteraTest):
def setUp(self):
self.phase = ct.Solution('h2o2.xml')
self.phase.X = [0.1, 1e-4, 1e-5, 0.2, 2e-4, 0.3, 1e-6, 5e-5, 0.4]
self.phase.TP = 800, 2*ct.OneAtm
def test_viscosity(self):
def test_scalar_properties(self):
self.assertTrue(self.phase.viscosity > 0.0)
self.assertTrue(self.phase.thermalConductivity > 0.0)
def test_mixtureAveraged(self):
self.assertEqual(self.phase.transportModel, 'Mix')
Dkm1 = self.phase.mixDiffCoeffs
Dkm1b = self.phase.mixDiffCoeffsMole
Dkm1c = self.phase.mixDiffCoeffsMass
Dbin1 = self.phase.binaryDiffCoeffs
self.phase.transportModel = 'Multi'
Dkm2 = self.phase.mixDiffCoeffs
Dkm2b = self.phase.mixDiffCoeffsMole
Dkm2c = self.phase.mixDiffCoeffsMass
Dbin2 = self.phase.binaryDiffCoeffs
self.assertArrayNear(Dkm1, Dkm2)
self.assertArrayNear(Dkm1b, Dkm2b)
self.assertArrayNear(Dkm1c, Dkm2c)
self.assertArrayNear(Dbin1, Dbin2)
self.assertArrayNear(Dbin1, Dbin1.T)
def test_multiComponent(self):
self.assertRaises(Exception,
lambda: self.phase.MultiDiffCoeffs)
self.assertArrayNear(self.phase.thermalDiffCoeffs,
np.zeros(self.phase.nSpecies))
self.phase.transportModel = 'Multi'
self.assertTrue(all(self.phase.multiDiffCoeffs.flat >= 0.0))
self.assertTrue(all(self.phase.thermalDiffCoeffs.flat != 0.0))
class TestDustyGas(utilities.CanteraTest):
def test_methods(self):
def setUp(self):
self.phase = ct.DustyGas('h2o2.xml')
self.phase.porosity = 0.2
self.phase.tortuosity = 0.3
self.phase.meanPoreRadius = 1e-4
self.phase.meanParticleDiameter = 5e-4
self.Dref = self.phase.multiDiffCoeffs
self.phase.setPorosity(0.2)
def test_porosity(self):
self.phase.porosity = 0.4
D = self.phase.multiDiffCoeffs
self.assertArrayNear(self.Dref * 2, D)
def test_tortuosity(self):
self.phase.tortuosity = 0.6
D = self.phase.multiDiffCoeffs
self.assertArrayNear(self.Dref * 0.5, D)
# The other parameters don't have such simple relationships to the diffusion
# coefficients, so we can't test them as easily

View file

@ -14,6 +14,8 @@ class CanteraTest(unittest.TestCase):
def assertArrayNear(self, A, B, rtol=1e-8, atol=1e-12, msg=None):
if len(A) != len(B):
self.fail("Arrays are of different lengths ({0}, {0})".format(len(A), len(B)))
A = np.asarray(A)
B = np.asarray(B)
for a,b in zip(A,B):
for a,b in zip(A.flat, B.flat):
self.assertNear(a,b, rtol, atol, msg)