CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   How to get partial pressure of oxygen? (https://www.cfd-online.com/Forums/fluent-udf/73216-how-get-partial-pressure-oxygen.html)

sega March 2, 2010 07:49

How to get partial pressure of oxygen?
 
Hello World.

Can anybody tell me how I can access the partial pressure of a species / componente?
In my case I need the partial pressure of oxgen!

Cheers. S.

vinaynitrkl March 2, 2010 17:52

i too need the same!

gearboy March 3, 2010 01:51

Quote:

Originally Posted by sega (Post 248113)
Hello World.

Can anybody tell me how I can access the partial pressure of a species / componente?
In my case I need the partial pressure of oxgen!

Cheers. S.

You can use the following equation
pi=C_P(c,t)*gas_molar_fraction
where, pi is the partial pressure, C_P(c,t) gets the mixed gas pressure.
gas_molar_fraction is the mole fraction of a species in the mixture, which can be calculated by
- first summing up [mass fraction / molecular weight] of all species and
- then dividing the same quotient for the individual species by the calculated sum.
This is done automatically by the following function call (including variables and preparation):
Material *mix_mat = mixture_material(Get_Domain(1));
Material *spe_mat = NULL;
real all_mass_fracts[MAX_SPE_EQNS];
real all_mole_fracts[MAX_SPE_EQNS];
int i = -1;
mixture_species_loop(mix_mat, spe_mat, i)
{
all_mass_fracts[i] = C_YI(c,t,i);
}
Mole_Fraction(mix_mat, all_mass_fracts, all_mole_fracts)
After this, the mole fractions of all species can be found in the array "all_mole_fracts".

sega March 4, 2010 10:31

Great, Thank you.

This leads me to the question to determine which position in the array corresponds to which species?

Any idea how I can know this?

gearboy March 4, 2010 10:59

Quote:

Originally Posted by sega (Post 248581)
Great, Thank you.

This leads me to the question to determine which position in the array corresponds to which species?

Any idea how I can know this?

The index of the first species in the list of the Fluent interface is 0.
If the list in the Fluent is : O2, CO, CO2......, then
all_mass_fracts[0] means the mass fraction of O2, all_mass_fracts[1] means that of CO , and so on.

sega March 4, 2010 11:07

Quote:

Originally Posted by gearboy (Post 248592)
The index of the first species in the list of the Fluent interface is 0.
If the list in the Fluent is : O2, CO, CO2......, then
all_mass_fracts[0] means the mass fraction of O2, all_mass_fracts[1] means that of CO , and so on.

Ok. I got this.
And how do I know the actual list?

sega March 4, 2010 11:29

Ok. I put this so far into my code

Code:

    Material *mixtureMaterial = mixture_material(Get_Domain(1));
    Material *speciesMaterial = NULL;
    real massFractions[MAX_SPE_EQNS];
    real moleFractions[MAX_SPE_EQNS];
    real partialPressures[MAX_SPE_EQNS];
         
    int i = -1;
    mixture_species_loop(mixtureMaterial, speciesMaterial, i)
    {
        massFractions[i] = C_YI(cell,thread,i);
    }
   
    Mole_Fraction(mixtureMaterial, massFractions, moleFractions);
   
    int i = -1;
    mixture_species_loop(mixtureMaterial, speciesMaterial, i)
    {
        partialPressures[i] = C_P(cell,thread) * moleFractions[i];     
    }

Now the code is killing me. It want's a ; bevor the second int i = -1.
But there is one - right after Mole_Fraction( ... ).

So what may be wrong?

Dr.Montazer March 7, 2010 04:55

How to get partial pressure of oxygen?
 
Hi,

Well, as new member in OpenFoam (days of experience in OpenFoam) I would say using dsmcFoam (Direct simulation Monte Carlo (DSMC) solver for 3D, transient, multi- species flows) might help

Back in my Fluent experience, you have to use the Multiphase model and depends to the nature of component (mixture, Eulerian or VOF) will works fine. Looks the same approach is working in OpenFoam:

-compressibleInterFoam: Solver for 2 compressible, isothermal immiscible fluids using a VOF (volume of fluid) phase-fraction based interface capturing approach, )

More could be find at Standard solvers: http://www.openfoam.com/features/standard-solvers.php

sega March 7, 2010 05:02

Quote:

Originally Posted by Dr.Montazer (Post 248863)
Hi,

Well, as new member in OpenFoam (days of experience in OpenFoam) I would say using dsmcFoam (Direct simulation Monte Carlo (DSMC) solver for 3D, transient, multi- species flows) might help

Back in my Fluent experience, you have to use the Multiphase model and depends to the nature of component (mixture, Eulerian or VOF) will works fine. Looks the same approach is working in OpenFoam:

-compressibleInterFoam: Solver for 2 compressible, isothermal immiscible fluids using a VOF (volume of fluid) phase-fraction based interface capturing approach, )

More could be find at Standard solvers: http://www.openfoam.com/features/standard-solvers.php

I'm not sure this is related to the topic.
Maybe you have mixed up your answers ...:)

m.beh August 8, 2011 04:12

Quote:

Originally Posted by gearboy (Post 248243)
You can use the following equation
pi=C_P(c,t)*gas_molar_fraction
where, pi is the partial pressure, C_P(c,t) gets the mixed gas pressure.
gas_molar_fraction is the mole fraction of a species in the mixture, which can be calculated by
- first summing up [mass fraction / molecular weight] of all species and
- then dividing the same quotient for the individual species by the calculated sum.
This is done automatically by the following function call (including variables and preparation):
Material *mix_mat = mixture_material(Get_Domain(1));
Material *spe_mat = NULL;
real all_mass_fracts[MAX_SPE_EQNS];
real all_mole_fracts[MAX_SPE_EQNS];
int i = -1;
mixture_species_loop(mix_mat, spe_mat, i)
{
all_mass_fracts[i] = C_YI(c,t,i);
}
Mole_Fraction(mix_mat, all_mass_fracts, all_mole_fracts)
After this, the mole fractions of all species can be found in the array "all_mole_fracts".

Hi every body

I want to have my species' partial pressure but the problem is that I have back flow in my simulating.(I simulate a 2D bubble column). so the static pressure that I recive from (c_P()) is negetive in some cells.
do you think using the absolute of static pressure is ok? my codeis becom:
Po2= abs(C_P(c,t))*mol_fraction_o2

hossein65 April 10, 2017 10:21

You can also calculate the molar concentration first:
Code:

mol_conc = yi[0] * C_R(c, t) / mw[0];
where:

mol_conc: molar concentration
yi[PHASE_INDEX]: mass fraction of species i in the phase you are working on
C_R(c, t): MACRO for Gas constan
mw_i [0]: Molecular weight of species i

Then, with the ideas gas law you can convert the molar concentration to partial pressure:

PV=nRT ---> P=\frac{nRT}{V}
P_{i}=(\frac{n}{V})_{i}RT

where (\frac{n}{V})_{i} is the molar concentration calculated above.

Goenitz June 13, 2019 07:04

Quote:

Originally Posted by hossein65 (Post 644370)
You can also calculate the molar concentration first:
Code:

mol_conc = yi[0] * C_R(c, t) / mw[0];
where:

mol_conc: molar concentration
yi[PHASE_INDEX]: mass fraction of species i in the phase you are working on
C_R(c, t): MACRO for Gas constan
mw_i [0]: Molecular weight of species i

Then, with the ideas gas law you can convert the molar concentration to partial pressure:

PV=nRT ---> P=\frac{nRT}{V}
P_{i}=(\frac{n}{V})_{i}RT

where (\frac{n}{V})_{i} is the molar concentration calculated above.

How to use partial pressure in rate equation? For example As CFX is saying prefix to 'p' is not recognised
LIBRARY:
CEL:
EXPRESSIONS:
kconst=Arr*((CH4.p)^0.47)*((H2O.p)^0.01)
END
END
END

LIBRARY:
CEL:
EXPRESSIONS:
Arr= 0.390 [mol s^-1 Pa^-0.46]
END
END
END

LIBRARY:
CEL:
EXPRESSIONS:
Eact = 43200 [J mol^-1]
END
END
END


LIBRARY:
CEL:
EXPRESSIONS:
Rate= kconst* e^(-Eact/R/T)
END
END


All times are GMT -4. The time now is 16:23.