1 //! @file vcs_SpeciesProperties.h 2 3 // This file is part of Cantera. See License.txt in the top-level directory or 4 // at https://cantera.org/license.txt for license and copyright information. 5 6 #ifndef VCS_SPECIES_PROPERTIES_H 7 #define VCS_SPECIES_PROPERTIES_H 8 9 #include "cantera/base/ct_defs.h" 10 11 namespace Cantera 12 { 13 14 class VCS_SPECIES_THERMO; 15 class vcs_VolPhase; 16 17 //! Properties of a single species. 18 class vcs_SpeciesProperties 19 { 20 public: 21 size_t IndexPhase; 22 size_t IndexSpeciesPhase; 23 vcs_VolPhase* OwningPhase; 24 size_t NumElements; 25 26 //! Name of the species 27 std::string SpName; 28 29 //! Pointer to the thermo structure for this species 30 VCS_SPECIES_THERMO* SpeciesThermo; 31 32 //! Molecular Weight of the species (gm/mol) 33 double WtSpecies; 34 35 //! Column of the formula matrix, comprising the 36 //! element composition of the species 37 vector_fp FormulaMatrixCol; 38 39 //! Charge state of the species -> This may be duplication of what's in the 40 //! FormulaMatrixCol entries. However, it's prudent to separate it out. 41 double Charge; 42 43 //! True if this species belongs to a surface phase 44 int SurfaceSpecies; 45 46 /* 47 * Various Calculated Quantities that are appropriate to keep copies of at 48 * this level. 49 */ 50 51 //! Partial molar volume of the species 52 double VolPM; 53 54 //! Representative value of the mole fraction of this species in a phase. 55 //! This value is used for convergence issues and for calculation of 56 //! numerical derivatives 57 double ReferenceMoleFraction; 58 vcs_SpeciesProperties(size_t indexPhase,size_t indexSpeciesPhase,vcs_VolPhase * owning)59 vcs_SpeciesProperties(size_t indexPhase, size_t indexSpeciesPhase, 60 vcs_VolPhase* owning) 61 : IndexPhase(indexPhase) 62 , IndexSpeciesPhase(indexSpeciesPhase) 63 , OwningPhase(owning) 64 , SpeciesThermo(0) 65 , WtSpecies(0.0) 66 , Charge(0.0) 67 , SurfaceSpecies(0) 68 , VolPM(0.0) 69 , ReferenceMoleFraction(1.0E-6) 70 { 71 } 72 ~vcs_SpeciesProperties()73 virtual ~vcs_SpeciesProperties() {} 74 }; 75 76 } 77 78 #endif 79