Skip to content

Commit

Permalink
Fixes ConstDensityThermo::standardConcentration()
Browse files Browse the repository at this point in the history
`ConstDensityThermo::standardConcentration(k)` is now calculated
as `density()/molecularWeight(k)`, rather than the previously
incorrect `molarDemsity()`.

Note that this causes a problem for any species where
`molecularWeight(k)=0` (i.e. vacancies).  Such species should be
avoided, in this phase model.

For that reason, `sofc-test.xml` is changed so that the oxide bulk
is modeled as an `IdealSolidSolution`
  • Loading branch information
decaluwe committed Dec 5, 2017
1 parent 17dfa2d commit 90474dd
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 32 deletions.
2 changes: 1 addition & 1 deletion src/thermo/ConstDensityThermo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ void ConstDensityThermo::getActivityCoefficients(doublereal* ac) const

doublereal ConstDensityThermo::standardConcentration(size_t k) const
{
return molarDensity();
return density()/molecularWeight(k);
}

void ConstDensityThermo::getChemPotentials(doublereal* mu) const
Expand Down
69 changes: 38 additions & 31 deletions test/data/sofc-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,19 @@

<!-- phase oxide_bulk -->
<phase dim="3" id="oxide_bulk">
<elementArray datasrc="elements.xml">O E</elementArray>
<speciesArray datasrc="#species_data">Ox VO**</speciesArray>
<state>
<temperature units="K">1073.15</temperature>
<pressure units="Pa">101325.0</pressure>
<moleFractions>Ox:0.95 VO**:0.05</moleFractions>
</state>
<thermo model="Incompressible">
<density units="g/cm3">0.7</density>
</thermo>
<transport model="None"/>
<kinetics model="none"/>
<elementArray datasrc="elements.xml">O E</elementArray>
<speciesArray datasrc="#species_data">Ox VO**</speciesArray>
<state>
<temperature units="K">1073.15</temperature>
<pressure units="Pa">101325.0</pressure>
<moleFractions>Ox:0.95 VO**:0.05</moleFractions>
</state>
<thermo model="IdealSolidSolution">
<density units="g/cm3">0.7</density>
</thermo>
<standardConc model="unity"/>
<transport model="None"/>
<kinetics model="none"/>
</phase>

<!-- phase metal_surface -->
Expand Down Expand Up @@ -123,29 +124,35 @@

<!-- species VO** -->
<species name="VO**">
<atomArray/>
<thermo>
<const_cp Tmax="5000.0" Tmin="100.0">
<t0 units="K">298.15</t0>
<h0 units="kJ/mol">0.0</h0>
<s0 units="J/mol/K">0.0</s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
</thermo>
<atomArray/>
<thermo>
<const_cp Tmax="5000.0" Tmin="100.0">
<t0 units="K">298.15</t0>
<h0 units="kJ/mol">0.0</h0>
<s0 units="J/mol/K">0.0</s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
</thermo>
<standardState>
<molarVolume>0.0018</molarVolume>
</standardState>
</species>

<!-- species Ox -->
<species name="Ox">
<atomArray>E:2 O:1 </atomArray>
<charge>-2</charge>
<thermo>
<const_cp Tmax="5000.0" Tmin="100.0">
<t0 units="K">298.15</t0>
<h0 units="kJ/mol">-170.0</h0>
<s0 units="J/K/mol">50.0</s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
</thermo>
<atomArray>E:2 O:1 </atomArray>
<charge>-2</charge>
<thermo>
<const_cp Tmax="5000.0" Tmin="100.0">
<t0 units="K">298.15</t0>
<h0 units="kJ/mol">-170.0</h0>
<s0 units="J/K/mol">50.0</s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
</thermo>
<standardState>
<molarVolume>0.0018</molarVolume>
</standardState>
</species>

<!-- species (m) -->
Expand Down

0 comments on commit 90474dd

Please sign in to comment.