CalebBell / fluids

Fluid dynamics component of Chemical Engineering Design Library (ChEDL)
MIT License
353 stars 74 forks source link

Plate Heat Exchanger #54

Closed AndreasMatthias closed 17 hours ago

AndreasMatthias commented 1 year ago

1. friction_plate_Martin_1999(Re, plate_enlargement_factor)

The second parameter of this function should be named chevron_angle (in radians) and not plate_enlargement_factor.

In Martin's equations an uppercase phi, $\Phi$, denotes the plate enlargement factor whereas a lowercase phi, $\phi$, denotes the chevron angle. The equations in the source code are correct, it's just the name of the parameter which is wrong or misleading.

Note, that chevron_angle must be given in radians here, whereas in friction_plate_Kumar() it is given in degree.

2. friction_plate_Martin_VDI(Re, plate_enlargement_factor)

  1. Same as for friction_plate_Martin_VDI(). Second parameter should be named chevron_angle.

  2. The equations for friction_plate_Martin_1999() and friction_plate_Martin_VDI() are almost the same. friction_plate_Martin_1999() calculates the Fanning friction factor and multiplies the result by 4 to return the Darcy friction factor, whereas friction_plate_Martin_VDI() calculates the Darcy friction factor directly. But there's one small discrepancy: In Martin 1999 the term 0.045⋅tanφ (in Fanning notation) would be 0.18⋅tanφ in Darcy notation, but in friction_plate_Martin_VDI() it is 0.28⋅tanφ. Is this a typo? According to the Heat Atlas, 2010, 2nd edition, the term 0.18⋅tanφ is correct. (But then friction_plate_Martin_1999() and friction_plate_Martin_VDI() calculate exactly the same.)

3. friction_plate_Kumar(Re, chevron_angle)

I believe chevron_angle in Kumar's equation is an angle with respect to the horizontal axis and not the vertical axis, as stated in the documentation. This is in contrast to Martin's equations where chevron_angle is an angle with respect to the vertical axis.

PierreLesouhaitier commented 1 year ago

Hello @AndreasMatthias,

Thank you for reporting. I have encountered the same problem as you. I have made a PR #57 that might fix some of the concerns you mentioned.

PierreLesouhaitier commented 1 year ago

I am not an expert of Plate Heat Exchanger. For the point 2.2 in your issue: I have checked that if you replace 0.28⋅tanφ with 0.18⋅tanφ in friction_plate_Martin_VDI() then friction_plate_Martin_VDI() and friction_plate_Martin_1999() return very close values. So why would we keep both functions ?

AndreasMatthias commented 1 year ago

In Heat Atlas 0.18⋅tanφ is used.

I haven't found any reference that uses 0.28⋅tanφ. That's why I suppose it could be a copy&paste error. If it is an error than the equations used in friction_plate_Martin_1999() and friction_plate_Martin_VDI() are mathematically equal, disregarding numerical differences.

PierreLesouhaitier commented 1 year ago

I'll keep friction_plate_Martin_1999() for my code. Thank you very much.

CalebBell commented 1 year ago

Hello, Thank you both for looking into it. I agree the equations are suspiciously close. The same author seems to have developed both, one in 1996 and the other in 1999. Maybe they are the same and there is a typo in the VDI heat atlas. I think I might be OK removing friction_plate_Martin_VDI if we knew for sure it had a typo in it (or redirecting calls in it to friction_plate_Martin_1999), but I don't think this is enough evidence. It is natural for authors to improve their models. Caleb

AndreasMatthias commented 1 year ago

It's really confusing. But as far as I can see, the equations are the same in VDI Heat Atlas and Martin's paper from 1996. And neither friction_plate_Martin_VDI() nor friction_plate_Martin_1999() seem to implement these equations.

I really don't want to nitpick about this. I was just interested and so stepped through the equations once again. Just for the records, here is a summary starting with the equations from VDI Heat Atlas and listing the differences in the python code:

VDI Heat Atlas, Second Edition, 2010

(VDI Heat Atlas, Second Edition, 2010, Part N6, Section §3.2.1)

Darcy coefficient $\xi$:

VDI Heat Atlas defines the Darcy friction coefficient, $\xi$, like this:

$$ \frac{1}{\sqrt{\xi}} = \frac{\cos\varphi}{\sqrt{b\tan\varphi + c\sin\varphi + \frac{\xi_0}{\cos\varphi}}} + \frac{1 - \cos\varphi}{\sqrt{a\cdot\xi_1}} $$

$$ \frac{1}{\sqrt{\xi}} = \frac{\cos\varphi}{\sqrt{0.18\tan\varphi + 0.36\sin\varphi + \frac{\xi_0}{\cos\varphi}}} + \frac{1 - \cos\varphi}{\sqrt{3.8\cdot\xi_1}} $$

$$ \xi_0 = \frac{64}{Re} \text{,\qquad} Re < 2000 $$

$$ \xi_0 = \frac{1}{(1.8\log Re - 1.5)^2} \text{,\qquad} Re ≥ 2000 $$

$$ \xi_{1} = \frac{597}{Re} + 3.85 \text{,\qquad} Re < 2000 $$

$$ \xi_{1} = \frac{39}{Re^{0.289}} \text{,\qquad} Re ≥ 2000 $$

Fanning coefficient, $f_f$:

Converting the above equations in terms of the Fanning friction coefficient, $f_f$, yields:

$$ f_f = \frac{\xi}{4} $$

$$ \frac{1}{\sqrt{f_f}} = \frac{\cos\varphi}{\sqrt{\frac{b}{4}\tan\varphi + \frac{c}{4}\sin\varphi + \frac{\xi_0}{4}\frac{1}{\cos\varphi}}} + \frac{1 - \cos\varphi}{\sqrt{a\cdot\frac{\xi_1}{4}}} $$

$$ \frac{1}{\sqrt{f_f}} =\frac{\cos\varphi}{\sqrt{0.045\tan\varphi + 0.09\sin\varphi + \frac{\xi_0}{4}\frac{1}{\cos\varphi}}} + \frac{1 - \cos\varphi}{\sqrt{3.8\cdot\frac{\xi_1}{4}}} $$

$$ \frac{\xi_0}{4} = \frac{16}{Re} \text{,\qquad} Re < 2000 $$

$$ \frac{\xi_0}{4} = \frac{1}{(3.6\log Re - 3.0)^2} \text{,\qquad} Re ≥ 2000 $$

$$ \frac{\xi_1}{4} = \frac{149.25}{Re} + 0.9625 \text{,\qquad} Re < 2000 $$

$$ \frac{\xi_1}{4} = \frac{9.75}{Re^{0.289}} \text{,\qquad} Re ≥ 2000 $$

friction_plate_Martin_VDI()

Definition in fluids/friction.py:

def friction_plate_Martin_VDI(Re, plate_enlargement_factor):
   if Re < 2000.:
        f0 = 64./Re
        f1 = 597./Re + 3.85
    else:
        f0 = (1.8*log10(Re) - 1.5)**-2
        f1 = 39.*Re**-0.289

    a, b, c = 3.8, 0.28, 0.36

    rhs = cos(phi)*1.0/sqrt(b*tan(phi) + c*sin(phi) + f0/cos(phi))
    rhs += (1. - cos(phi))*1.0/sqrt(a*f1)
    return rhs**-2.0

Differences relating to VDI Heat Atlas

VDI Heat Atlas friction_plate_Martin_VDI()
b = 0.18 b = 0.28

friction_plate_Martin_1999()

Definition in fluids/friction.py:

def friction_plate_Martin_1999(Re, plate_enlargement_factor):
   if Re < 2000.:
        f0 = 16./Re
        f1 = 149./Re + 0.9625
    else:
        f0 = (1.56*log(Re) - 3.0)**-2
        f1 = 9.75*Re**-0.289

    rhs = cos(phi)*1.0/sqrt(0.045*tan(phi) + 0.09*sin(phi) + f0/cos(phi))
    rhs += (1. - cos(phi))*1.0/sqrt(3.8*f1)
    ff = rhs**-2.
    return ff*4.0

Differences relating to VDI Heat Atlas

VDI Heat Atlas friction_plate_Martin_1999()
$\frac{\xi_0}{4} = (3.6\log Re$ ... f0 = (1.56 * log(Re) ...
$\frac{\xi_1}{4} = 149.25 / Re$ ... f1 = 149 / Re ...

Note

The same equation (and coefficients) as in VDI Heat Atlas are used in Martin's paper from 1996: A theoretical approach to predict the performance of chevron-type plate heat exchangers, Holger Martin, Chemical Engineering and Processing 35 (1996)

CalebBell commented 17 hours ago

I gave this issue another review. The 0.28 coefficient must have been a typo, I have corrected it to 0.18 in friction_plate_Martin_VDI. Thank you Andreas for the discovery. friction_plate_Martin_1999 is intended to implement the 1999 publication cited of the equation for friction factor. I have double checked that equations A, B, and C in the appendix of https://publikationen.bibliothek.kit.edu/1000034866/2579146 which is the 1999 Martin method, are those currently implemented. Pierre, Andreas: Thank you very much for the corrections. The changes will be in the next fluids release. I am resolving the issue. Caleb