firemodels / fds

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

Inconsistent particle Reynolds number #8276

Closed ruddymell closed 4 years ago

ruddymell commented 4 years ago

It appears that particle Reynolds number computed in wall.f90 for the convective heat transfer coefficient: RE = ONE_DX%RHO_GONE_DX%U_TANGSFX%CONV_LENGTH/MU_G is a factor of 1/2 smaller than RE in the pyrolysis section: RE_L = RHO(IIG,JJG,KKG)U_TANG2._EB*(2._EB/SF%SURFACE_VOLUME_RATIO(SF%LAYER_INDEX(I_INDEX)))/MU_AIR due to the choice of the length scale. It seems that the particle radius is used in the convective heat transfer Re and (correctly) the particle diameter in the pyrolysis Re.

mcgratta commented 4 years ago

CONV_LENGTH for cylinders and spheres is the diameter.

      SELECT CASE(SF%GEOMETRY)
         CASE(SURF_SPHERICAL)
            SF%CONV_LENGTH = 2._EB*(SF%INNER_RADIUS+SF%THICKNESS)
         CASE(SURF_CYLINDRICAL)
            SF%CONV_LENGTH = 2._EB*SF%THICKNESS
         CASE DEFAULT
            SF%CONV_LENGTH = 1._EB
      END SELECT

The THICKNESS is the radius.

ruddymell commented 4 years ago

From what I can see, the length scale L in Re=rhouL/mu is, when the particle model for vegetation is used, L = SFX%CONV_LENGTH = 2/SURFACE_VOLUME_RATIO in computation of the convective heat transfer coefficient and L = 2 * SFX%CONV_LENGTH in the vegetation particle pyrolysis

mcgratta commented 4 years ago

This is the vegetation pyrolysis routine. The length scale is 2(2/sigma)=2r for a cylinder.

      CASE (PYROLYSIS_VEGETATION)

            ! Tech Guide: r_alpha,beta (1/s)
            REACTION_RATE = ML%A(J)*(RHO_S(N)/RHO_S0)**ML%N_S(J)*EXP(-ML%E(J)/(R0*TMP_S))
            ! power term
            IF (ABS(ML%N_T(J))>=TWO_EPSILON_EB) REACTION_RATE = REACTION_RATE * TMP_S**ML%N_T(J)
            ! Oxidation reaction?
            IF ( (ML%NU_O2_CHAR(J)>0._EB) .AND. (O2_INDEX > 0)) THEN
               ! Get oxygen mass fraction
               ZZ_GET(1:N_TRACKED_SPECIES) = MAX(0._EB,ZZ(IIG,JJG,KKG,1:N_TRACKED_SPECIES))
               CALL GET_MASS_FRACTION(ZZ_GET,O2_INDEX,Y_O2)
               CALL GET_VISCOSITY(ZZ_GET,MU_AIR,TMP(IIG,JJG,KKG))
               U_TANG = SQRT(2._EB*KRES(IIG,JJG,KKG))
               RE_L   = RHO(IIG,JJG,KKG)*U_TANG*2._EB*(2._EB/SF%SURFACE_VOLUME_RATIO(SF%LAYER_INDEX(I_INDEX)))/MU_AIR
ruddymell commented 4 years ago

Right, but this length scale (cylinder diameter) is not used to compute the Re used in the empirical correlation for convective heat transfer on a cylinder. The radius of the cylinder is used instead.

mcgratta commented 4 years ago

OK, so you're saying that the vegetative pyro correlation is right, but the convective HT is not?

mcgratta commented 4 years ago

An other way of saying this -- it appears that currently FDS is using the diameter for all these different Re formulations. Are you saying that it should use radius for one of them?

ruddymell commented 4 years ago

The length scale in the Reynolds number is the diameter for pyrolysis Re and the radius for the Re in convective HT. So, yes, correct in pyro, incorrect in convective HT. I think the Re length scale is correct in the drag. I don't think the cylinder radius should be used as the length scale in any of these, it should be the diameter.

mcgratta commented 4 years ago

Yes, but do you mean to say that FDS is incorrectly using a radius when it should be using a diameter? That is, have we improperly coded something, and if so, what line exactly?

rmcdermo commented 4 years ago

In the FUNCTION HEAT_TRANSFER_COEFFICIENT, the Reynolds number for particles is computed in two places:

  1. DEFAULT, RE = ONE_DX%RHO_GONE_DX%U_TANGSFX%CONV_LENGTH/MU_G, and CONV_LENGTH = 2 * THICKNESS

  2. BLOWING_SPHERE, where RE = RHO_AIRVRELLENGTH/MU_AIR, and LENGTH = 2 * R_DROP

So, looks like diameter in both places. But this brings up a separate issue, which is that for pyrolyzing particles, it would be good to use the BLOWING versions, which will decrease the rate of heat and mass transfer.

mcgratta commented 4 years ago

Sure, but are the current correlations correct? Let's first make sure of that.

rmcdermo commented 4 years ago

@mcgratta I assume you are commenting on the blowing versions of HTC. All I can tell you is that they are more accurate than using a correlation without blowing. If you are somehow getting the right answer with correlations that don't include blowing it is pure luck. We should fix this before we keep marching down the road of tuning a code to match data with faulty underlying assumptions.

mcgratta commented 4 years ago

What is mean to say is that I want to resolve the original issue---whether or not we are using the correct and consistent formulation of Re in these various particles routines. Then we can open up a new issue and explore the use of BLOWING.

rmcdermo commented 4 years ago

So, we are asking: are the vege and particle formulations consistent? In other words, we have two places in the code where we should just have the same code? Let's take this opportunity to make sure there is only one code.

mcgratta commented 4 years ago

No, we are asking if the various Re numbers used in HT, pyrolysis, drag are consistent. That is, are we using the particle diameter in each, or are we using both r and/or D inconsistently. I believe that we are using D consistently, but I want to check with Ruddy. This is the original issue. Even if we create a function call for Re, we still have to send it the right length scale. That's what we're trying to nail down here.

ruddymell commented 4 years ago

I went through the code and ran a simple test for the particle model and boundary fuel model. The numbers work out for the particle model, but not for the boundary fuel model. For a particle, the length scale used in the Re computations is the diameter of a cylinder, as it should be. However, for the boundary fuel model this definition of the length scale IF (ANY(PACKING_RATIO>0._EB)) CONVECTION_LENGTH_SCALE = 2._EB/SURFACE_VOLUME_RATIO(1) should be multiplied by 2 to get the diameter. My apologies, I was confused earlier because I thought the above definition for CONVECTION_LENGTH_SCALE was used for both the particle and boundary fuel models.

mcgratta commented 4 years ago

OK. I'll have to check whether that's just a coding error or if I picked it up in a paper.

mcgratta commented 4 years ago

Good catch. I made the fix.

mcgratta commented 4 years ago

Alas, two wrongs made a right. Fixing the CONVECTIVE_LENGTH threw the case called WUI/ground_vegetation_conv.fds out of tolerance. This case worked before because the convective length was too low, but the amount of mass to heat up was too high. That is, the air mixed with the vegetation in the Boundary Fuel Model does have an appreciable mass. So I now make its specific heat artificially low so that the AIR mixed with vegetation does not consume energy. We already have the air in the first gas phase grid cell. Including it in the boundary led to double couning.