From ec935d541ce2533707483e2a17c3802d3d876ecf Mon Sep 17 00:00:00 2001
From: sbiri <sbiri@noc.ac.uk>
Date: Thu, 22 Jul 2021 07:41:31 +0100
Subject: [PATCH] Update flux_subs.py

---
 flux_subs.py | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/flux_subs.py b/flux_subs.py
index ad7709c..11ea16e 100755
--- a/flux_subs.py
+++ b/flux_subs.py
@@ -596,21 +596,21 @@ def cs_C35(sst, qsea, rho, Rs, Rnl, cp, lv, delta, usr, tsr, qsr, lat):
     # density of water, specific heat capacity of water, water viscosity,
     # thermal conductivity of water
     rhow, cpw, visw, tcw = 1022, 4000, 1e-6, 0.6
-    aw = 2.1e-5*np.power(np.maximum(sst+3.2, 0), 0.79)
-    bigc = 16*g*cpw*np.power(rhow*visw, 3)/(np.power(tcw, 2)*np.power(rho, 2))
-    wetc = 0.622*lv*qsea/(287.1*np.power(sst+273.16, 2))
-    Rns = 0.945*Rs  # albedo correction
-    shf = -rho*cp*usr*tsr
-    lhf = -rho*lv*usr*qsr
-    Qnsol = Rnl+shf+lhf
-    fs = 0.065+11*delta-6.6e-5/delta*(1-np.exp(-delta/8.0e-4))
-    qcol = Qnsol-Rns*fs
-    alq = aw*qcol+0.026*lhf*cpw/lv
-    xlamx = 6*np.ones(sst.shape)
-    xlamx = np.where(alq > 0, 6/(1+(bigc*alq/usr**4)**0.75)**0.333, 6)
-    delta = np.where(alq > 0, xlamx*visw/(np.sqrt(rho/rhow)*usr),
-                   np.where(xlamx*visw/(np.sqrt(rho/rhow)*usr) > 0.01, 0.01,
-                   xlamx*visw/(np.sqrt(rho/rhow)*usr)))
+    for i in range(5):
+        aw = 2.1e-5*np.power(np.maximum(sst+3.2, 0), 0.79)
+        bigc = 16*g*cpw*np.power(rhow*visw, 3)/(np.power(tcw, 2)*np.power(rho, 2))
+        wetc = 0.622*lv*qsea/(287.1*np.power(sst+273.16, 2))
+        Rns = 0.945*Rs  # albedo correction
+        shf = -rho*cp*usr*tsr
+        lhf = -rho*lv*usr*qsr
+        Qnsol = shf+lhf+Rnl
+        fs = 0.065+11*delta-6.6e-5/delta*(1-np.exp(-delta/8.0e-4))
+        qcol = Qnsol-Rns*fs
+        alq = aw*qcol+0.026*lhf*cpw/lv
+        xlamx = 6*np.ones(sst.shape)
+        xlamx = np.where(alq > 0, 6/(1+(bigc*alq/usr**4)**0.75)**0.333, 6)
+        delta =  np.minimum(xlamx*visw/(np.sqrt(rho/rhow)*usr), 0.01)
+        delta = np.where(alq > 0, xlamx*visw/(np.sqrt(rho/rhow)*usr), delta)
     dter = qcol*delta/tcw
     dqer = wetc*dter
     return dter, dqer, delta
@@ -694,7 +694,7 @@ def cs_ecmwf(rho, Rs, Rnl, cp, lv, usr, tsr, qsr, sst, lat):
     lhf = -rho*lv*usr*qsr
     Qnsol = shf+lhf+Rnl  # eq. 8.152
     d = delta(aw, Qnsol, usr, lat)
-    for jc in range(10): # because implicit in terms of delta...
+    for jc in range(5): # because implicit in terms of delta...
         # # fraction of the solar radiation absorbed in layer delta eq. 8.153
         # and Eq.(5) Zeng & Beljaars, 2005
         fs = 0.065+11*d-6.6e-5/d*(1-np.exp(-d/8e-4))
-- 
GitLab