//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // PPPPP H H EEEEE N N GGGGG L EEEEE III + // P P H H E NN N G L E I + // PPPPP HHHHH EEEEE N N N G GG L EEEEE I + // P H H E N N N G G L E I + // P H H EEEEE N N GGGGG LLLLL EEEEE III + //------------------------------------------------------------------------+ // Platform for Hybrid Engineering Simulation of Flows + // China Aerodynamics Research and Development Center + // (C) Copyright, Since 2010 + //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //! @file IncomGas.h //! @brief Explain this file briefly. //! @author Ming Pingjian, Sun Huawen, Huang Jin. #pragma once #include "Precision.h" #include "PerfectGas.h" #include "Geo_UnstructGrid.h" #include using namespace std; namespace PHSPACE { namespace GAS_SPACE { class IncomGas :public PerfectGas { public: IncomGas(); ~IncomGas(); typedef enum { rhoConstant = 0, rhoIncompressibleIdealGas, rhoIdealGas, rhoVolumnWeightedMixingLaw }RhoProperty; typedef enum { muConstant = 0, muSutherLand, muIdealGasMixingLaw, muMassWeightedMixingLaw, muPiecewiseLinear, muPiecewisePolynomial, muPolynomial, muPowerLaw }MuProperty; typedef enum { cpConstant = 0, cpMixing, cpPiecewiseLinear, cpPiecewisePolynomial, cpPolynomial }CpProperty; typedef enum { kConstant = 0, kMassWeightedMixingLaw, kIdealGasMixingLaw, kPiecewiseLinear, kPiecewisePolynomial, kPolynomial }KProperty; typedef enum { massDiffConstantDiluteApprox = 0, massDiffDiluteApprox, massDiffMulticomponent, massDiffUnityLewisNumber }MassDiffProperty; public: void InitCommonParameter(); void InitParameterForMu(); void InitParameterForK(); void InitParameterForMassdiff(); void SetGasName(string gasName); void SetGasMolarMass(string gasMolarMass); void SetGasRho(string gasRho); void SetGasMu(string gasMu); void SetGasCp(string gasCp); void SetGasK(string gasK); string* GetGasName() { return gasNameList; } RDouble* GetGasMolarMass() { return gasMolarMassList; } RDouble* GetGasRho() { return gasRhoList; } RDouble* GetGasMu() { return gasMuList; } RDouble* GetGasCp() { return gasCpList; } RDouble* GetGasK() { return gasKList; } public: void UpdateRg(UnstructGrid* grid, RDouble* Rg); void UpdateRho(UnstructGrid* grid, RDouble* rho); void UpdateMu(UnstructGrid* grid, RDouble* mu); void UpdateCp(UnstructGrid* grid, RDouble* cp); void UpdateK(UnstructGrid* grid, RDouble* k); void UpdateMassDiff(UnstructGrid* grid, int iGas, RDouble* massdiff); protected: void ComputePhiIJ(); void ComputeAmountOfSubstance(UnstructGrid* grid, RDouble** amountOfSubstance, RDouble** amountFracOfSubstance); void SetPropertyLib(); private: vector componentLib; typedef struct { RDouble molarMass; RDouble rho; RDouble mu; RDouble cp; RDouble k; } propertySp; map propertyLib; enum propertyIndex { sp_rho = 0, sp_mu = 1, sp_k = 2, sp_cp = 3, sp_molarMass = 4, }; }; } }