mirror of
https://github.com/Cantera/cantera.git
synced 2026-08-05 02:43:16 -05:00
103 lines
3.3 KiB
Matlab
103 lines
3.3 KiB
Matlab
classdef ctTestTransport < ctTestCase
|
|
|
|
properties
|
|
phase
|
|
end
|
|
|
|
properties (SetAccess = protected)
|
|
rtol_min = 1e-8;
|
|
rtol_max = 1e-2;
|
|
atol = 1e-8;
|
|
end
|
|
|
|
methods (TestMethodSetup)
|
|
|
|
function createPhase(self)
|
|
src = 'h2o2.yaml';
|
|
self.phase = ct.Solution(src);
|
|
self.phase.TPX = {800, 2*ct.OneAtm, ...
|
|
[0.1, 1e-4, 1e-5, 0.2, 2e-4, 0.3, 1e-6, 5e-5, 1e-6, 0.4]};
|
|
end
|
|
|
|
end
|
|
|
|
methods (Test)
|
|
|
|
function testScalarProperties(self)
|
|
self.verifyGreaterThan(self.phase.viscosity, 0.0);
|
|
self.verifyGreaterThan(self.phase.thermalConductivity, 0.0);
|
|
end
|
|
|
|
function testUnityLewis(self)
|
|
self.phase.transportModel = 'unity-Lewis-number';
|
|
|
|
alpha = self.phase.thermalConductivity / (self.phase.D * self.phase.cp);
|
|
Dkm_prime = self.phase.mixDiffCoeffs;
|
|
|
|
self.verifyTrue(all(diff(Dkm_prime) < self.atol));
|
|
self.verifyEqual(Dkm_prime(1), alpha, 'AbsTol', self.atol);
|
|
end
|
|
|
|
function testMixtureAveraged(self)
|
|
self.verifyEqual(self.phase.transportModel, 'mixture-averaged');
|
|
|
|
Dkm1 = self.phase.mixDiffCoeffs;
|
|
Dbin1 = self.phase.binDiffCoeffs;
|
|
|
|
self.phase.transportModel = 'multicomponent';
|
|
Dkm2 = self.phase.mixDiffCoeffs;
|
|
Dbin2 = self.phase.binDiffCoeffs;
|
|
|
|
self.verifyEqual(Dkm1, Dkm2, 'AbsTol', self.atol);
|
|
self.verifyEqual(Dbin1, Dbin2, 'AbsTol', self.atol);
|
|
|
|
end
|
|
|
|
function testMixDiffCoeffsChange(self)
|
|
Dkm1 = self.phase.mixDiffCoeffs;
|
|
self.phase.TP = {self.phase.T + 1, self.phase.P};
|
|
Dkm2 = self.phase.mixDiffCoeffs;
|
|
self.verifyTrue(all(Dkm2 > Dkm1));
|
|
end
|
|
|
|
function testCKMode(self)
|
|
mu_ct = self.phase.viscosity;
|
|
cond_ct = self.phase.thermalConductivity;
|
|
diff_ct = self.phase.binDiffCoeffs;
|
|
|
|
self.phase.transportModel = 'mixture-averaged-CK';
|
|
self.verifyEqual(self.phase.transportModel, 'mixture-averaged-CK');
|
|
|
|
mu_ck = self.phase.viscosity;
|
|
cond_ck = self.phase.thermalConductivity;
|
|
diff_ck = self.phase.binDiffCoeffs;
|
|
|
|
self.verifyEqual(mu_ct, mu_ck, 'RelTol', self.rtol_max);
|
|
self.verifyNotEqual(mu_ct, mu_ck);
|
|
self.verifyEqual(cond_ct, cond_ck, 'RelTol', self.rtol_max);
|
|
self.verifyNotEqual(cond_ct, cond_ck);
|
|
self.verifyEqual(diff_ct, diff_ck, 'RelTol', self.rtol_max);
|
|
self.verifyNotEqual(diff_ct, diff_ck);
|
|
end
|
|
|
|
function testMultiComponent(self)
|
|
try
|
|
Dmulti = self.phase.multiDiffCoeffs;
|
|
catch ME
|
|
self.verifySubstring(ME.identifier, 'Cantera:ctError');
|
|
self.verifySubstring(ME.message, 'NotImplementedError');
|
|
end
|
|
|
|
self.phase.transportModel = 'multicomponent';
|
|
self.verifyTrue(all(self.phase.thermalDiffCoeffs(:) ~= 0.0));
|
|
|
|
Dmulti = self.phase.multiDiffCoeffs;
|
|
self.verifyTrue(all(Dmulti(:) >= 0.0));
|
|
self.verifyTrue(all(size(Dmulti) == self.phase.nSpecies));
|
|
self.verifyTrue(all(diag(Dmulti) == 0.0));
|
|
end
|
|
|
|
end
|
|
|
|
end
|