16 DustyGasTransport::DustyGasTransport(
thermo_t* thermo) :
72 for (
size_t n = 0; n <
m_nsp; n++) {
73 for (
size_t m = 0; m <
m_nsp; m++) {
86 for (
size_t k = 0; k <
m_nsp; k++) {
97 for (
size_t k = 0; k <
m_nsp; k++) {
99 for (
size_t j = 0; j <
m_nsp; j++) {
105 for (
size_t j = 0; j <
m_nsp; j++) {
115 const doublereal*
const state2,
116 const doublereal delta,
117 doublereal*
const fluxes)
120 doublereal*
const cbar =
m_spwork.data();
121 doublereal*
const gradc =
m_spwork2.data();
122 const doublereal t1 = state1[0];
123 const doublereal t2 = state2[0];
124 const doublereal rho1 = state1[1];
125 const doublereal rho2 = state2[1];
126 const doublereal*
const y1 = state1 + 2;
127 const doublereal*
const y2 = state2 + 2;
128 doublereal c1sum = 0.0, c2sum = 0.0;
130 for (
size_t k = 0; k <
m_nsp; k++) {
131 double conc1 = rho1 * y1[k] /
m_mw[k];
132 double conc2 = rho2 * y2[k] /
m_mw[k];
133 cbar[k] = 0.5*(conc1 + conc2);
134 gradc[k] = (conc2 - conc1) / delta;
142 doublereal pbar = 0.5*(p1 + p2);
143 doublereal gradp = (p2 - p1)/delta;
144 doublereal tbar = 0.5*(t1 + t2);
159 b = p*p*p*d*d/(72.0*t*(1.0-p)*(1.0-p));
183 throw CanteraError(
"DustyGasTransport::updateMultiDiffCoeffs",
184 "invert returned ierr = {}", ierr);
191 for (
size_t i = 0; i <
m_nsp; i++) {
192 for (
size_t j = 0; j <
m_nsp; j++) {
214 for (
size_t k = 0; k <
m_nsp; k++) {
doublereal m_pore_radius
Pore radius (meter)
const vector_fp & molecularWeights() const
Return a const reference to the internal vector of molecular weights.
virtual void getMultiDiffCoeffs(const size_t ld, doublereal *const d)
Return the Multicomponent diffusion coefficients. Units: [m^2/s].
Headers for the DustyGasTransport object, which models transport properties in porous media using the...
std::unique_ptr< Transport > m_gastran
Pointer to the transport object for the gas phase.
int invert(DenseMatrix &A, size_t nn)
invert A. A is overwritten with A^-1.
void divide_each(OutputIter x_begin, OutputIter x_end, InputIter y_begin)
Templated divide of each element of x by the corresponding element of y.
void updateTransport_T()
Update temperature-dependent quantities within the object.
virtual void setThermo(thermo_t &thermo)
Specifies the ThermoPhase object.
Transport & gasTransport()
Return a reference to the transport manager used to compute the gas binary diffusion coefficients and...
doublereal temperature() const
Temperature (K).
virtual void setState_TPX(doublereal t, doublereal p, const doublereal *x)
Set the temperature (K), pressure (Pa), and mole fractions.
doublereal m_diam
Particle diameter.
vector_fp m_x
mole fractions
thermo_t * m_thermo
pointer to the object representing the phase
DenseMatrix m_d
binary diffusion coefficients
Base class for transport property managers.
size_t nSpecies() const
Returns the number of species in the phase.
void increment(const DenseMatrix &A, const double *b, double *prod)
Multiply A*b and add it to the result in prod. Uses BLAS routine DGEMV.
vector_fp m_dk
Knudsen diffusion coefficients.
doublereal * ptrColumn(size_t j)
Return a pointer to the top of column j, columns are contiguous in memory.
void updateMultiDiffCoeffs()
Update the Multicomponent diffusion coefficients that are used in the approximation.
void eval_H_matrix()
Calculate the H matrix.
doublereal m_perm
Permeability of the media.
Base class for a phase with thermodynamic properties.
void updateTransport_C()
Update concentration-dependent quantities within the object.
void setPorosity(doublereal porosity)
Set the porosity (dimensionless)
void resize(size_t n, size_t m, doublereal v=0.0)
Resize the matrix.
bool m_knudsen_ok
Update-to-date variable for Knudsen diffusion coefficients.
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.
vector_fp m_spwork2
work space of size m_nsp;
void initialize(ThermoPhase *phase, Transport *gastr)
Initialization routine called by TransportFactory.
Base class for exceptions thrown by Cantera classes.
void setTortuosity(doublereal tort)
Set the tortuosity (dimensionless)
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.
void setMeanPoreRadius(doublereal rbar)
Set the mean pore radius (m)
void getMoleFractions(doublereal *const x) const
Get the species mole fraction vector.
doublereal m_porosity
Porosity.
doublereal m_tortuosity
Tortuosity.
void setPermeability(doublereal B)
Set the permeability of the media.
bool m_bulk_ok
Update-to-date variable for Binary diffusion coefficients.
void scale(InputIter begin, InputIter end, OutputIter out, S scale_factor)
Multiply elements of an array by a scale factor.
const doublereal Tiny
Small number to compare differences of mole fractions against.
const doublereal GasConstant
Universal Gas Constant. [J/kmol/K].
Contains declarations for string manipulation functions within Cantera.
size_t m_nsp
Number of species.
doublereal m_temp
temperature
virtual void setThermo(thermo_t &thermo)
Specifies the ThermoPhase object.
Namespace for the Cantera kernel.
void updateBinaryDiffCoeffs()
Private routine to update the dusty gas binary diffusion coefficients.
DenseMatrix m_multidiff
Multicomponent diffusion coefficients.
vector_fp m_mw
Local copy of the species molecular weights.
vector_fp m_spwork
work space of size m_nsp;
void setMeanParticleDiameter(doublereal dbar)
Set the mean particle diameter.
void updateKnudsenDiffCoeffs()
Update the Knudsen diffusion coefficients.