74 for (
size_t n = 0; n <
m_nsp; n++) {
75 for (
size_t m = 0; m <
m_nsp; m++) {
88 for (
size_t k = 0; k <
m_nsp; k++) {
99 for (
size_t k = 0; k <
m_nsp; k++) {
101 for (
size_t j = 0; j <
m_nsp; j++) {
107 for (
size_t j = 0; j <
m_nsp; j++) {
117 const doublereal*
const state2,
118 const doublereal delta,
119 doublereal*
const fluxes)
122 doublereal*
const cbar =
m_spwork.data();
123 doublereal*
const gradc =
m_spwork2.data();
124 const doublereal t1 = state1[0];
125 const doublereal t2 = state2[0];
126 const doublereal rho1 = state1[1];
127 const doublereal rho2 = state2[1];
128 const doublereal*
const y1 = state1 + 2;
129 const doublereal*
const y2 = state2 + 2;
130 doublereal c1sum = 0.0, c2sum = 0.0;
132 for (
size_t k = 0; k <
m_nsp; k++) {
133 double conc1 = rho1 * y1[k] /
m_mw[k];
134 double conc2 = rho2 * y2[k] /
m_mw[k];
135 cbar[k] = 0.5*(conc1 + conc2);
136 gradc[k] = (conc2 - conc1) / delta;
144 doublereal pbar = 0.5*(p1 + p2);
145 doublereal gradp = (p2 - p1)/delta;
146 doublereal tbar = 0.5*(t1 + t2);
152 for (
size_t k = 0; k <
m_nsp; k++) {
163 b = p*p*p*d*d/(72.0*t*(1.0-p)*(1.0-p));
187 throw CanteraError(
"DustyGasTransport::updateMultiDiffCoeffs",
188 "invert returned ierr = {}", ierr);
195 for (
size_t i = 0; i <
m_nsp; i++) {
196 for (
size_t j = 0; j <
m_nsp; j++) {
218 for (
size_t k = 0; k <
m_nsp; k++) {
Headers for the DustyGasTransport object, which models transport properties in porous media using the...
Header file for class ThermoPhase, the base class for phases with thermodynamic properties,...
doublereal * ptrColumn(size_t j)
Return a pointer to the top of column j, columns are contiguous in memory.
Base class for exceptions thrown by Cantera classes.
void resize(size_t n, size_t m, doublereal v=0.0)
Resize the matrix.
void setMeanPoreRadius(doublereal rbar)
Set the mean pore radius (m)
virtual void setThermo(ThermoPhase &thermo)
Specifies the ThermoPhase object.
vector_fp m_mw
Local copy of the species molecular weights.
DenseMatrix m_multidiff
Multicomponent diffusion coefficients.
bool m_bulk_ok
Update-to-date variable for Binary diffusion coefficients.
vector_fp m_x
mole fractions
vector_fp m_spwork2
work space of size m_nsp;
std::unique_ptr< Transport > m_gastran
Pointer to the transport object for the gas phase.
virtual void getMultiDiffCoeffs(const size_t ld, doublereal *const d)
Return the Multicomponent diffusion coefficients. Units: [m^2/s].
DustyGasTransport(ThermoPhase *thermo=0)
default constructor
doublereal m_perm
Permeability of the media.
virtual void getMolarFluxes(const doublereal *const state1, const doublereal *const state2, const doublereal delta, doublereal *const fluxes)
Get the molar fluxes [kmol/m^2/s], given the thermodynamic state at two nearby points.
doublereal m_temp
temperature
void setPermeability(doublereal B)
Set the permeability of the media.
void updateTransport_T()
Update temperature-dependent quantities within the object.
bool m_knudsen_ok
Update-to-date variable for Knudsen diffusion coefficients.
void initialize(ThermoPhase *phase, Transport *gastr)
Initialization routine called by TransportFactory.
void updateBinaryDiffCoeffs()
Private routine to update the dusty gas binary diffusion coefficients.
void setTortuosity(doublereal tort)
Set the tortuosity (dimensionless)
void eval_H_matrix()
Calculate the H matrix.
void updateTransport_C()
Update concentration-dependent quantities within the object.
void updateMultiDiffCoeffs()
Update the Multicomponent diffusion coefficients that are used in the approximation.
doublereal m_tortuosity
Tortuosity.
void updateKnudsenDiffCoeffs()
Update the Knudsen diffusion coefficients.
doublereal m_porosity
Porosity.
Transport & gasTransport()
Return a reference to the transport manager used to compute the gas binary diffusion coefficients and...
doublereal m_diam
Particle diameter.
doublereal m_pore_radius
Pore radius (meter)
void setPorosity(doublereal porosity)
Set the porosity (dimensionless)
vector_fp m_dk
Knudsen diffusion coefficients.
vector_fp m_spwork
work space of size m_nsp;
DenseMatrix m_d
binary diffusion coefficients
void setMeanParticleDiameter(doublereal dbar)
Set the mean particle diameter.
size_t nSpecies() const
Returns the number of species in the phase.
const vector_fp & molecularWeights() const
Return a const reference to the internal vector of molecular weights.
void getMoleFractions(double *const x) const
Get the species mole fraction vector.
doublereal temperature() const
Temperature (K).
Base class for a phase with thermodynamic properties.
virtual void setState_TPX(doublereal t, doublereal p, const doublereal *x)
Set the temperature (K), pressure (Pa), and mole fractions.
Base class for transport property managers.
virtual void setThermo(ThermoPhase &thermo)
Specifies the ThermoPhase object.
ThermoPhase * m_thermo
pointer to the object representing the phase
size_t m_nsp
Number of species.
Namespace for the Cantera kernel.
void increment(const DenseMatrix &A, const double *const b, double *const prod)
Multiply A*b and add it to the result in prod. Uses BLAS routine DGEMV.
const double Tiny
Small number to compare differences of mole fractions against.
void multiply(const DenseMatrix &A, const double *const b, double *const prod)
Multiply A*b and return the result in prod. Uses BLAS routine DGEMV.
int invert(DenseMatrix &A, size_t nn=npos)
invert A. A is overwritten with A^-1.
void scale(InputIter begin, InputIter end, OutputIter out, S scale_factor)
Multiply elements of an array by a scale factor.
const double GasConstant
Universal Gas Constant [J/kmol/K].
Contains declarations for string manipulation functions within Cantera.
Various templated functions that carry out common vector operations (see Templated Utility Functions)...