View Issue Details

IDProjectCategoryView StatusLast Update
0000950OpenFOAMBugpublic2013-08-14 13:49
Reporterdkxls Assigned Touser2 
PrioritynormalSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
PlatformLinux x86_64OSopenSUSEOS Version12.2
Summary0000950: [ReactingParcel][LiquidEvaporationBoil]: Immediately evaporate mass that has reached critical condition
DescriptionParcels that have reached critical conditions should be evaporated immediately.
The attached patch implements this for the LiquidEvaporationBoil class.

This should probably be implemented in LiquidEvaporation too?
Additional InformationAccording to Stiesch (2003), the evaporation equation in LiquidEvaporationBoil is based on the model by Borman and Johnson (1962). The reference(s) could be added to the header file.

Stiesch, G., Modeling Engine Spray and Combustion Processes, Springer, New York, 2003.

Borman, G. and Johnson, J., "Unsteady Vaporization Histories and Trajectories of Fuel Drops Injected into Swirling Air," SAE Technical Paper 620271, 1962, doi:10.4271/620271.
Tagscritical condition, Evaporation, Lagrangian, spray, sprayEngineFoam, sprayFoam

Activities

dkxls

2013-08-07 12:30

reporter  

LiquidEvaporationBoil.patch (1,351 bytes)   
--- LiquidEvaporationBoil.C.org	2013-08-07 13:46:54.780906438 +0300
+++ LiquidEvaporationBoil.C	2013-08-07 13:48:06.294096459 +0300
@@ -151,18 +151,37 @@ void Foam::LiquidEvaporationBoil<CloudTy
     scalarField& dMassPC
 ) const
 {
-    // construct carrier phase species volume fractions for cell, cellI
-    const scalarField XcMix(calcXc(cellI));
-
     // liquid volume fraction
     const scalarField X(liquids_.X(Yl));
 
+    // immediately evaporate mass that has reached critical condition
+    if (mag(T - liquids_.Tc(X)) < SMALL)
+    {
+        if (debug)
+        {
+            WarningIn
+            (
+                "void Foam::LiquidEvaporationBoil<CloudType>::calculate"
+            )   << "Parcel reached critical conditions" << endl;
+        }
+
+        forAll(activeLiquids_, i)
+        {
+            const label lid = liqToLiqMap_[i];
+            dMassPC[lid] = GREAT;
+        }
+        return;
+    }
+
     // droplet surface pressure assumed to surface vapour pressure
     scalar ps = liquids_.pv(pc, Ts, X);
 
     // vapour density at droplet surface [kg/m3]
     scalar rhos = ps*liquids_.W(X)/(specie::RR*Ts);
 
+    // construct carrier phase species volume fractions for cell, cellI
+    const scalarField XcMix(calcXc(cellI));
+
     // carrier thermo properties
     scalar Hsc = 0.0;
     scalar Hc = 0.0;
LiquidEvaporationBoil.patch (1,351 bytes)   

user2

2013-08-09 13:10

  ~0002382

Thanks for the report - fixed by commit 356d6b

dkxls

2013-08-14 10:29

reporter   ~0002406

Sorry to reopen this bug, but similarly to bug #960 the if statement for critical mass should be revise.
Even though it works right now correctly, the new patch makes the check more robust.

dkxls

2013-08-14 10:29

reporter  

0001-Revise-check-for-crit-mass.patch (1,155 bytes)   
From e215f19926038940914c1cf4308ae63494aa6ae9 Mon Sep 17 00:00:00 2001
From: Armin Wehrfritz <armin.wehrfritz@aalto.fi>
Date: Wed, 14 Aug 2013 12:21:16 +0300
Subject: [PATCH] Revise check for crit mass

---
 .../PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C   |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C
index d78d6b1..adde074 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C
@@ -155,7 +155,7 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
     const scalarField X(liquids_.X(Yl));
 
     // immediately evaporate mass that has reached critical condition
-    if (mag(T - liquids_.Tc(X)) < SMALL)
+    if ((liquids_.Tc(X) - T) < SMALL)
     {
         if (debug)
         {
-- 
1.7.10.4

user2

2013-08-14 13:49

  ~0002409

Thanks - updated by commit 5c4e7fd

Issue History

Date Modified Username Field Change
2013-08-07 12:30 dkxls New Issue
2013-08-07 12:30 dkxls File Added: LiquidEvaporationBoil.patch
2013-08-07 12:36 dkxls Tag Attached: Evaporation
2013-08-07 12:36 dkxls Tag Attached: Lagrangian
2013-08-07 12:36 dkxls Tag Attached: spray
2013-08-07 12:36 dkxls Tag Attached: sprayEngineFoam
2013-08-07 12:36 dkxls Tag Attached: sprayFoam
2013-08-07 12:36 dkxls Tag Attached: critical condition
2013-08-09 13:09 user2 Priority urgent => normal
2013-08-09 13:10 user2 Note Added: 0002382
2013-08-09 13:10 user2 Status new => resolved
2013-08-09 13:10 user2 Fixed in Version => 2.2.x
2013-08-09 13:10 user2 Resolution open => fixed
2013-08-09 13:10 user2 Assigned To => user2
2013-08-14 10:29 dkxls Note Added: 0002406
2013-08-14 10:29 dkxls Status resolved => feedback
2013-08-14 10:29 dkxls Resolution fixed => reopened
2013-08-14 10:29 dkxls File Added: 0001-Revise-check-for-crit-mass.patch
2013-08-14 13:49 user2 Note Added: 0002409
2013-08-14 13:49 user2 Status feedback => resolved
2013-08-14 13:49 user2 Resolution reopened => fixed