firemodels / fds

Fire Dynamics Simulator
https://pages.nist.gov/fds-smv/
Other
642 stars 616 forks source link

Bug with &INIT creating non-physical flow conditions #913

Closed gforney closed 9 years ago

gforney commented 9 years ago
Application Version: 5.4.2 Serial
SVN Revision Number: 4957
Compile Date: Mon, 19 Oct 2009
Operating System: Win XP

Describe details of the issue below:
When I initialize the mass fraction of a dense species using &INIT, a
non-physical flow condition results. This appears to be due to the
initialization of the pressure solver, and possibly the mass fraction
field. The density field appears to be correct.
At t=0, the volume fraction of the dense species in the slice file is 0.25
and not 1.0 as specified. Also, at t=0, the pressure field does not account
for the density field specified (p=1 atm everywhere at t=0).
At the first time step (t=0.022), the the simulation realizes the density
difference, and there is a step temperature and pressure change (via state
relation). The temperature in particular changes by 10s of C. This induces
a flow into the "canister" that is non-physical given that it is otherwise
closed and stably stratified. 
See attached input file.
Justin

Original issue reported on code.google.com by williamson.justin.wade on 2009-11-19 19:20:31


gforney commented 9 years ago
AIR need not be specified twice. A background species is not to be specified as a 
SPEC. I don't think this is the cause of the problem, however. I'll check it out.

Original issue reported on code.google.com by mcgratta on 2009-11-19 19:26:39

gforney commented 9 years ago
I wanted to override the default properties for "AIR" with my own properties for
"Air". It is unclear that I can actually do that, and it appears that I have three
species as a result. Is it possible to override the default parameters for any
species in Table 11.1? 

Original issue reported on code.google.com by williamson.justin.wade on 2009-11-20 16:52:50

gforney commented 9 years ago
Yes, you can specify your own properties of these gases.

Original issue reported on code.google.com by mcgratta on 2009-11-20 17:54:22

gforney commented 9 years ago
I do not believe that what you are seeing has to do with the equation of state. 
Given that 

p = rho*T*R/W

p and T (and R) can remain the same and rho and W can change. I think what you are

seeing has to do with the pressure solver. Do the following -- add VECTOR=.TRUE. to

one of the SLCF lines. Remove the OPEN boundary lines except for the one at the top.

Run the case. In Smokeview Alt-V to get an isometric view, load a vector slice of 
VOLUME FRACTION. Initially, you should see flow going down the pipe, and up through

the top of the tank. This is not physical, but that is a limitation of the pressure

solver -- solid boundaries are not completely solid except for external solid 
boundaries. So there is an initial "leaking" from the tank allowing air to flow 
down. This phenomena is something we have to live with to solve the pressure as fast

as we do. If you see anything else, let me know.

Original issue reported on code.google.com by mcgratta on 2009-11-24 21:13:51

gforney commented 9 years ago
I must admit that I am a bit confused by your decision to ignore this issue. As I see
it, this is a simple Verification exercise for the &INIT group. If the function
cannot pass a simple verification test, then it is broken and needs to be either
fixed or removed. The initial instability is quite large in the case that I
originally posted. The temperature changes from 20C to 6-60C in a single time step
purely based on the weakness of the pressure initialization. Do you find this
acceptable in a scenario with no energy generation or heat transfer?

As I see it, there is a relatively straightforward way to solve the issue. The
initial pressure field (t=0) does not recognize the initial density field. The
pressure solver needs to be invoked during the initialization process for a static
(constant velocity, since you can also specify U0, V0, and W0) fluid. That way the
pressure at t=0 is roughly the same as at the first time step. This should greatly
reduce the instability that is produced at the first time step.

Original issue reported on code.google.com by williamson.justin.wade on 2009-11-25 16:01:04

gforney commented 9 years ago
I wish it were relatively straightforward. It's not. There are a number of very 
difficult issues here -- pressure solver, molecular diffusion, unresolved gradients,

and so forth. I just fixed one problem -- the VOLUME FRACTION was initially 0.25 
because the converter from MASS to VOLUME FRACTION had not been initialized at time

t=0. It is done in the first time step. This just affects the output for the first

frame in Smokeview. Easy fix. For the pressure problem, I set DT-0.001 on the TIME

line and this allows the pressure field to iterate more quickly to what it should 
be. The temperature deviation is lessened somewhat by removing DNS=.TRUE. Your cells

are 1 cm, so DNS isn't really appropriate and the initial infinitely steep gradient

causes some trouble. It might lessen over time. Those Leonard-Jones potential 
parameters may not be appropriate either without DNS. 

I will put this issue On Hold. Some of these problems may not be resolved until FDS

6.

Original issue reported on code.google.com by mcgratta on 2009-11-25 19:29:13

gforney commented 9 years ago
This problem was initially intended as a simulation of pure molecular diffusion, with
no, or negligible bulk fluid motion. The only gradient that should exist is in
species concentration, therefore relatively coarse grids should be appropriate given
that I do not have to resolve any turbulent motion. I have also verified that 1cm
grid is reasonable for a similar geometry which has a nice analytical solution (i.e.
equimolar counterdiffusion). Using DNS=T was necessary to control the diffusion
coefficients in a similar way to the analytical method. I have not explored an LES
method as the prescription of the diffusion coefficient would be substantially different.

I have checked a few things related to your comments. These may help you if/when you
pick up the issue again.
1. The issue is grid independent. I have checked at 1cm, 5mm, and 2mm and the
non-physical behavior remains.
2. Setting DT as small does not resolve the issue. The non-physical behavior is
apparent after about 1 second of total simulation time.
3. I also checked the effect of the initially steep gradient by imposing a linear
gradient across the channel from z=0.2 to 0.4 and the issue remains.

There are some work-arounds that I have explored which seem reasonable. The most
obvious is to gradually fill the reservoir with dense species, which works somewhat,
but not so well with 1cm grid because it produces temperature irregularities (with
improved results at finer grids). Another method I just considered is to fill the
entire domain with dense species, and just let the open portion of the domain dilute
over time. I'm not sure if that works yet. 

Original issue reported on code.google.com by williamson.justin.wade on 2009-12-22 15:57:26

gforney commented 9 years ago
I worked on this a bit over the holidays. Ask Jason Floyd to compile you the latest

version of FDS. Run the attached version of your case. Note that I added FDS6=.TRUE.

to improve the diffusion/transport, and VELOCITY_TOLERANCE, which is designed to 
better enforce the no-flux solid boundary condition. Let me know if it helps.

Original issue reported on code.google.com by mcgratta on 2009-12-28 22:30:58


gforney commented 9 years ago
Did the changes I made help?

Original issue reported on code.google.com by mcgratta on 2010-01-28 22:37:47

gforney commented 9 years ago
With no response, I'll assume things are working.

Original issue reported on code.google.com by mcgratta on 2010-03-02 14:52:41

gforney commented 9 years ago
Sorry for the late response.

I checked this with FDS 5.5.0, and the problem is still present, though it has
improved. Using your input file (attached above from Dec. 28) and removing the
VELOCITY_TOLERANCE (not valid for the current version) line illustrates the issue.

Look at the pressure slice at time t=0 s. The pressure field should be defined by
p(z,t=0) = integral(rho*g*z)dz, but it is initially p(z,t=0)=0. At time t=0+dt, the
pressure solution changes to reflect rho*g*z, and you have a rapid inflow of air as
a
result. 

I understand that this is issue is not critical, so I just want you to be aware that
it exists. This issue is tied into issue 730, so I'm not worried about it. Would you
like me to add some information to issue 730 as a reminder of the pressure
initialization?

Original issue reported on code.google.com by williamson.justin.wade on 2010-04-12 16:11:00

gforney commented 9 years ago
VELOCITY_TOLERANCE is now on the PRES line:

&PRES VELOCITY_TOLERANCE=... /

This is needed to force FDS to iterate the pressure solution. Try it and let me know

if it works.

Original issue reported on code.google.com by mcgratta on 2010-04-12 16:42:09

gforney commented 9 years ago
The VELOCITY_TOLERANCE has vastly improved the results. The initial fluctuations are
small now, but there are some perplexing behaviors that remain.

1. The pressure output still indicates a step behavior, p(z,t=0) =/= p(z,t=0+dt).
Minor, but may have some impact on 2...

2. There are some velocity fluctuations, mostly in W inside the tube, that persist
for about 3 seconds of simulation before they dissipate. Very minor.

3. There is an odd temperature variation at the internal solid boundaries that I
cannot explain. It appears to be grid independent (see attached). I'm speculating
that this is caused by some error in Ghost cells because there is no mode for heat
transfer in this system.

The attached input file is slow at the beginning (overhead), but very fast after the
first 10 time steps.

Original issue reported on code.google.com by williamson.justin.wade on 2010-04-13 15:11:05


gforney commented 9 years ago
I suggest you only use 1 SPEC line. AIR would be the default background species. 
Also, why do you need so many INIT lines? Why not just 2?

Original issue reported on code.google.com by mcgratta on 2010-04-13 18:34:52

gforney commented 9 years ago
Good news for FDS 5.5.0. I removed FDS6=T, and issue number three above went away.
The current model is giving me acceptable results. Randy may be interested in the
FDS6 bug, which I think is in the wall model.

I removed the air spec line, and it makes no difference in the outcome of the simulation.

I added INIT lines to make the initial solution similar to the expected steady
solution. This eliminates the initially steep gradient in species concentration that
you get with only 2 INIT lines. I didn't want that to be the cause of any numerical
errors I was observing.

Thanks for your help!

Original issue reported on code.google.com by williamson.justin.wade on 2010-04-14 13:23:05

gforney commented 9 years ago
OK, thanks for checking on this.

Original issue reported on code.google.com by mcgratta on 2010-04-14 14:32:04