diff --git a/modules/util/util.py b/modules/util/util.py
index 872d45d17d6a3d72d81faa32e316df12c059940b..f781d510b8e727ae1863d087e5275e9661f82fd6 100644
--- a/modules/util/util.py
+++ b/modules/util/util.py
@@ -615,6 +615,61 @@ def make_for_full_domain_predict(h5f, name_list=None, satellite='GOES16', domain
     return grd_dct, ll, cc
 
 
+def make_for_full_domain_predict_viirs_clavrx(h5f, name_list=None, res_fac=1):
+    w_x = 16
+    w_y = 16
+    i_0 = 0
+    j_0 = 0
+    s_x = int(w_x / res_fac)
+    s_y = int(w_y / res_fac)
+
+    ylen = h5f['scan_lines_along_track_direction'].shape[0]
+    xlen = h5f['pixel_elements_along_scan_direction'].shape[0]
+
+    grd_dct = {name: None for name in name_list}
+
+    cnt_a = 0
+    for ds_name in name_list:
+        gvals = get_grid_values(h5f, ds_name, j_0, i_0, None, num_j=ylen, num_i=xlen)
+        if gvals is not None:
+            grd_dct[ds_name] = gvals
+            cnt_a += 1
+
+    if cnt_a > 0 and cnt_a != len(name_list):
+        raise GenericException('weirdness')
+
+    grd_dct_n = {name: [] for name in name_list}
+
+    n_x = int(xlen/s_x) - 1
+    n_y = int(ylen/s_y) - 1
+
+    r_x = xlen - (n_x * s_x)
+    x_d = 0 if r_x >= w_x else int((w_x - r_x)/s_x)
+    n_x -= x_d
+
+    r_y = ylen - (n_y * s_y)
+    y_d = 0 if r_y >= w_y else int((w_y - r_y)/s_y)
+    n_y -= y_d
+
+    ll = [j_0 + j*s_y for j in range(n_y)]
+    cc = [i_0 + i*s_x for i in range(n_x)]
+
+    for ds_name in name_list:
+        for j in range(n_y):
+            j_ul = j * s_y
+            j_ul_b = j_ul + w_y
+            for i in range(n_x):
+                i_ul = i * s_x
+                i_ul_b = i_ul + w_x
+                grd_dct_n[ds_name].append(grd_dct[ds_name][j_ul:j_ul_b, i_ul:i_ul_b])
+
+    grd_dct = {name: None for name in name_list}
+    for ds_name in name_list:
+        grd_dct[ds_name] = np.stack(grd_dct_n[ds_name])
+
+    return grd_dct, ll, cc
+
+
 def make_for_full_domain_predict2(h5f, satellite='GOES16', domain='FD', res_fac=1):
     w_x = 16
     w_y = 16