From 3e9b8c55494cd8c07f49064345225cfb9976af91 Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Mon, 9 Nov 2020 14:40:57 -0600
Subject: [PATCH] snapshot...

---
 modules/util/util.py | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/modules/util/util.py b/modules/util/util.py
index 2e93ee97..5b5d8853 100644
--- a/modules/util/util.py
+++ b/modules/util/util.py
@@ -61,7 +61,7 @@ def get_breaks(t, threshold):
     return idxs
 
 
-def pressure_to_altitude(pres, temp, prof_pres, prof_temp, sfc_pres, sfc_temp, sfc_elev=0):
+def pressure_to_altitude(pres, temp, prof_pres, prof_temp, sfc_pres=None, sfc_temp=None, sfc_elev=0):
     if not np.all(np.diff(prof_pres) > 0):
         raise MyGenericException("target pressure profile must be monotonic increasing")
 
@@ -79,22 +79,25 @@ def pressure_to_altitude(pres, temp, prof_pres, prof_temp, sfc_pres, sfc_temp, s
     pres_s = [pres] + pres_s[i_top:]
     temp_s = [temp] + temp_s[i_top:]
 
-    prof_pres = np.array(pres_s)
-    prof_temp = np.array(temp_s)
-
-    i_bot = prof_pres.shape[0] - 1
-
-    if sfc_pres > prof_pres[i_bot]:
-        pres_s = pres_s + [sfc_pres]
-        temp_s = temp_s + [sfc_temp]
-    else:
-        idx = np.argmax(np.extract(prof_pres <= sfc_pres, prof_pres))
-        if sfc_temp is None:
-            sfc_temp = np.interp(sfc_pres, prof_pres, prof_temp)
-        pres_s = prof_pres.tolist()
-        temp_s = prof_temp.tolist()
-        pres_s = pres_s[0:idx] + [sfc_pres]
-        temp_s = temp_s[0:idx] + [sfc_temp]
+    if sfc_pres is not None:
+        if pres > sfc_pres: # incoming pressure below surface
+            return -1
+
+        prof_pres = np.array(pres_s)
+        prof_temp = np.array(temp_s)
+        i_bot = prof_pres.shape[0] - 1
+
+        if sfc_pres > prof_pres[i_bot]:
+            pres_s = pres_s + [sfc_pres]
+            temp_s = temp_s + [sfc_temp]
+        else:
+            idx = np.argmax(np.extract(prof_pres < sfc_pres, prof_pres))
+            if sfc_temp is None:
+                sfc_temp = np.interp(sfc_pres, prof_pres, prof_temp)
+            pres_s = prof_pres.tolist()
+            temp_s = prof_temp.tolist()
+            pres_s = pres_s[0:idx+1] + [sfc_pres]
+            temp_s = temp_s[0:idx+1] + [sfc_temp]
 
     prof_pres = np.array(pres_s)
     prof_temp = np.array(temp_s)
-- 
GitLab