|
[Sponsors] |
June 12, 2012, 16:15 |
how to add a new gas
|
#1 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
hi everyone, I am a new openfoam user. I wonder how to add a gas and how to define its properties in the openfoam. The gas is not defined in openfoam dictionary, so I got to define it by myself. Below is the error message. Thanks your guys' help!
Selecting chemistryReader chemkinReader [5] [5] [5] --> FOAM FATAL ERROR: [5] C12H26 not found in table. Valid entries: 820 ( CL3SISICL A2C2HB* SIF3NH2 ...) |
|
June 12, 2012, 21:51 |
|
#2 |
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Karnataka, India
Posts: 187
Rep Power: 16 |
It seems you are running a solver like reactingFoam, and using CHEMKIN input.
You probably have a species defined in the chem.inp file that is missing in the therm.dat file. Just make sure the two files are compatible, and you should be good to go. |
|
June 12, 2012, 23:22 |
|
#3 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
thanks dude!yep, you are right, I should check the two files.but the question is how can I reach the two files? I mean, in the thermophysicalProperties it states that
CHEMKINFile "$FOAM_CASE/chemkin/chem.inp"; CHEMKINThermoFile "~OpenFOAM/thermoData/therm.dat"; while if I enter "cd $FOAM_CASE/chemkin/chem.inp" or "cd ~OpenFOAM/thermoData/therm.dat" in linux the system errors there is no such variable. Meanwhile, I've already modified the chem.inp and therm.dat files which are included in the chemkin file. But it doesn't work. So what should I do? |
|
June 13, 2012, 23:47 |
|
#4 | ||
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Karnataka, India
Posts: 187
Rep Power: 16 |
The tag
Quote:
For the other one, maybe you do not have a directory with the name. Just copy both files to a directory (say chemkin under the case directory) and then edit the paths in the constant/thermophysicalProperties file. For instance, if you have both the chem.inp and therm.dat under chemkin directory, this is what you need: Quote:
|
|||
June 14, 2012, 00:40 |
|
#5 | |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Quote:
I did do that modification, but later I met a new problem.when the case runs a few steps, it cracks. It stopped at 0.00151s.The error is like below: Courant Number mean: 3.71158e-05 max: 0.0695979 deltaT = 1.25e-06 Time = 0.001515 Solving cloud sprayCloud --> Cloud: sprayCloud Added 6 new parcels [6] #0 Foam::error:rintStack(Foam::Ostream&) in "/usr/apps1/openfoam-2.1.0/OpenFOAM-2.1.0/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so" [6] #1 Foam::sigFpe::sigHandler(int) in "/usr/apps1/openfoam-2.1.0/OpenFOAM-2.1.0/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so" [6] #2 __restore_rt at sigaction.c:0 [6] #3 __ieee754_exp at interp.c:0 [6] #4 exp in "/lib64/libm.so.6" [6] #5 Foam::LiquidEvaporation<Foam::ReactingCloud<Foam:: ThermoCloud<Foam::KinematicCloud<Foam::Cloud<Foam: :SprayParcel<Foam::ReactingParcel<Foam::ThermoParc el<Foam::KinematicParcel<Foam:article> > > > > > > > >::calculate(double, int, double, double, double, double, double, double, Foam::Field<double>&) const in "/usr/apps1/openfoam-2.1.0/OpenFOAM-2.1.0/platforms/linux64Gcc44DPOpt/lib/liblagrangianSpray.so" [6] #6 void Foam::ReactingParcel<Foam::ThermoParcel<Foam::Kine maticParcel<Foam:article> > >::calc<Foam::ReactingParcel<Foam::ThermoParcel< Fo am::KinematicParcel<Foam:article> > >::TrackingData<Foam::SprayCloud<Foam::ReactingC lo ud<Foam::ThermoCloud<Foam::KinematicCloud<Foam::Cl oud<Foam::SprayParcel<Foam::ReactingParcel<Foam::T hermoParcel<Foam::KinematicParcel<Foam:article> > > > > > > > > > >(Foam::ReactingParcel<Foam::ThermoParcel<Foam:: Ki nematicParcel<Foam:article> > >::TrackingData<Foam::SprayCloud<Foam::ReactingC lo ud<Foam::ThermoCloud<Foam::KinematicCloud<Foam::Cl oud<Foam::SprayParcel<Foam::ReactingParcel<Foam::T hermoParcel<Foam::KinematicParcel<Foam:article> > > > > > > > > >&, double, int) in "/usr/apps1/openfoam-2.1.0/OpenFOAM-2.1.0/platforms/linux64Gcc44DPOpt/bin/sprayFoam" ...... what's the problem here? I guess it should be caused by particle or parcel parameters set in spraycloudProperties file, so I attached it. It can be open by word. Thanks ! |
||
June 15, 2012, 05:03 |
|
#6 |
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Karnataka, India
Posts: 187
Rep Power: 16 |
Seems like floating point exception; I'd check the case set up, and numerical parameters for the case.
I am not familiar with the spray models and stuff, so unfortunately I cannot help with that. |
|
June 15, 2012, 13:37 |
|
#7 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
Debugging the spray class can be quite painful since everything is templated to allow a completely runtime selectable spray model. I would recommend running the debug version so that you can find the line number of where things go wrong.
Just from the surface, it appears that the exponential function in the math library is having problems. Maybe the argument is far too large (or small). What is happening with your temperature and pressure at this point; judging from the time of the error and your dictionary the spray must already be evolving? |
|
June 15, 2012, 13:49 |
|
#8 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Yes, you're right, it's the floating point error. I forgot to copy this message.
But still thank man! |
|
June 16, 2012, 17:46 |
|
#9 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Thanks your help man! I'm gona try debug version. But what does "the spray must already be evolving?" mean at last? Sorry I didn't get you..
|
|
June 16, 2012, 18:26 |
|
#10 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Oh by the way is it true that if I want to run the debug version the openfoam should be installed on my own computer? I mean my openfoam is installed on the service computer, so I can't modify the bashrc file.
|
|
June 16, 2012, 18:41 |
|
#11 | |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Quote:
__________________
|
||
June 21, 2012, 13:24 |
|
#12 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Hi man, I have checked with debug version. I believe it's caused by the NSRDSfunction. Can you tell me the meaning of a,b,c,d,e,f in the function? Thanks. Below is the error message by debug version.
[6] #0 Foam::error:rintStack(Foam::Ostream&) at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/OSspecific/POSIX/printStack.C:201 [6] #1 Foam::sigFpe::sigHandler(int) at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/OSspecific/POSIX/signals/sigFpe.C:117 [6] #2 __restore_rt at sigaction.c:0 [6] #3 __ieee754_exp at interp.c:0 [6] #4 exp in "/lib64/libm.so.6" [6] #5 Foam::exp(double) at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/OpenFOAM/lnInclude/Scalar.H:260 [6] #6 Foam::NSRDSfunc1::f(double, double) const at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/thermophysicalModels/thermophysicalFunctions/lnInclude/NSRDSfunc1.H:108 [6] #7 Foam::C12H26:v(double, double) const at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/thermophysicalModels/properties/liquidProperties/C12H26/C12H26I.H:34 [6] #8 Foam::LiquidEvaporation<Foam::ReactingCloud<Foam:: ThermoCloud<Foam::KinematicCloud<Foam::Cloud<Foam: :SprayParcel<Foam::ReactingParcel<Foam::ThermoParc el<Foam::KinematicParcel<Foam:article> > > > > > > > >::calculate(double, int, double, double, double, double, double, double, double, double, Foam::Field<double> const&, Foam::Field<double>&) const at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/lagrangian/intermediate/lnInclude/LiquidEvaporation.C:172 [6] #9 void Foam::ReactingParcel<Foam::ThermoParcel<Foam::Kine maticParcel<Foam:article> > >::calcPhaseChange<Foam::ReactingParcel<Foam::Th er moParcel<Foam::KinematicParcel<Foam:article> > >::TrackingData<Foam::SprayCloud<Foam::ReactingC lo ud<Foam::ThermoCloud<Foam::KinematicCloud<Foam::Cl oud<Foam::SprayParcel<Foam::ReactingParcel<Foam::T hermoParcel<Foam::KinematicParcel<Foam:article> > > > > > > > > > >(Foam::ReactingParcel<Foam::ThermoParcel<Foam:: Ki nematicParcel<Foam:article> > >::TrackingData<Foam::SprayCloud<Foam::ReactingC lo ud<Foam::ThermoCloud<Foam::KinematicCloud<Foam::Cl oud<Foam::SprayParcel<Foam::ReactingParcel<Foam::T hermoParcel<Foam::KinematicParcel<Foam:article> > > > > > > > > >&, double, int, double, double, double, double, double, double, double, int, double, Foam::Field<double> const&, Foam::Field<double>&, double&, double&, double&, Foam::Field<double>&) at /usr/apps1/openfoam-2.1.1/OpenFOAM-2.1.1/src/lagrangian/intermediate/lnInclude/ReactingParcel.C:517 ... [pn1:29034] [21] sprayFoam [0x472099] [pn1:29034] *** End of error message *** -------------------------------------------------------------------------- mpiexec noticed that process rank 6 with PID 29034 on node pn1 exited on signal 8 (Floating point exception). ------------------------------------------ |
|
June 21, 2012, 13:40 |
|
#13 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
The NSRDS function are mathematical fomulas that are frequently used when calculating material properties. You can find what the form of the function is by src/thermophysicalModels/thermophysicalFunctions/ NSRDSfunctions/NSRDSfunc1/NSRDSfunc1.H.
This tells you where the code is crashing, but I'm sure the problem is with the values you are passing to the NSRDS function. Look at the code in src/thermophysicalModels/properties/liquidProperties/C12H26, and look at what scalars are being passed to calculate the vapour pressure (pressure, temperature and the constant coefficients of the NSRDS function). One of these is causing the call to exp() to fail, which usually means there is something wrong with your case setup or boundary conditions that your pressure or temperature manages to get in that range. When I mentioned spray evolution, I meant that your spray had already been injecting parcels into the domain for a few timesteps before the crash. In the solver code, you'll see the function that causes the spray to be calculated is called parcels.evolve(). |
|
June 21, 2012, 17:47 |
|
#14 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Thanks at first.
I checked with the error message and found the bug should be caused by pv(p,T) function and NSRDS function1. The NSRDS function1, which returns the value exp(a_ + b_/T + c_*log(T) + d_*pow(T, e_)) with the coefficients pv_(137.47, -11976.0, -16.698, 8.0906e-06, 2.0), was calculated by myself and the value is 1235.9759. So I didn't see any problem here. But I am not sure about the T in the function. Should it be the fuel initial temperature or ambient temperature? In the pv(p,T) function, the vapour pressure looks to be calculated by pressure and temperature, are they fuel's values or ambient values? Thanks |
|
June 21, 2012, 17:51 |
|
#15 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
I think its the ambient temperature, as we want to know what the vapour pressure should be to determine how much to evaporate (if call to pv happens through the liquidEvaporation model).
|
|
June 21, 2012, 18:12 |
|
#16 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
Then I really can't find where's wrong. The ambient temperature is 900k and pressure is 6MPa,which is set as follows:
FoamFile { version 2.0; format ascii; class volScalarField; object p; } // ************************************************** *********************** // dimensions [ 1 -1 -2 0 0 0 0 ]; internalField uniform 6e+06; boundaryField { walls { type zeroGradient; } } FoamFile { version 2.0; format ascii; class volScalarField; object T; } // ************************************************** *********************** // dimensions [ 0 0 0 1 0 0 0 ]; internalField uniform 900; boundaryField { walls { type zeroGradient; } } |
|
June 21, 2012, 18:16 |
|
#17 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
Your initial internal fields seem reasonable (though why are your walls zero gradient), but you should be looking at the pressure and temperature right before you crash (try writing every timestep for 10 timesteps before you crash).
|
|
June 21, 2012, 18:50 |
|
#18 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
If using the temperature ambient, the NSRDS fuction1 value should be 27517468.395187, it seems quite large. Previously I used the fuel temperature so the value is much smaller. But I don't think it has sth. to do with the floating point error.
By the way, how can I find the calculated pressure and temperature data? I mean in every time sub-file the results are binary files |
|
June 21, 2012, 19:01 |
|
#19 |
Senior Member
Marco A. Turcios
Join Date: Mar 2009
Location: Vancouver, BC, Canada
Posts: 740
Rep Power: 28 |
You can post-process the results to find the values. Or switch to write ASCII to have the actual numbers output. This results in bigger files, but for debugging its quite useful.
Write out the last few timesteps before the crash and have a look. Exp usually only returns an error if the argument is out of bounds/wrong type/etc. There is a log(T), pow(T,e) and 1/T inside the exponential, which are the first culprits with this kind of thing. If your temperature becomes very small (or even <= 0) you could end up with problems here. |
|
June 21, 2012, 19:08 |
|
#20 |
Member
Join Date: Jun 2012
Posts: 65
Rep Power: 14 |
OK, I got you. Yes, if T is too small then floating point error occurs. But isn't T the ambient temperature? Then it should be a constant. I mean which file is calculating the temperature? And is the input of the calculation the initial ambient temperature?
Thanks |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
mass flow in is not equal to mass flow out | saii | CFX | 12 | March 19, 2018 06:21 |
error message | cuteapathy | CFX | 14 | March 20, 2012 07:45 |
Constant velocity of the material | Sas | CFX | 15 | July 13, 2010 09:56 |
Two-Phase Buoyant Flow Issue | Miguel Baritto | CFX | 4 | August 31, 2006 13:02 |
Gas pressure question | Dan Moskal | Main CFD Forum | 0 | October 24, 2002 23:02 |