Skip to content

Commit 7cecd10

Browse files
committed
pull _get_variable_point back outside llcmodel class
1 parent 002e808 commit 7cecd10

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

xmitgcm/llcreader/llcmodel.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,22 @@ def _get_var_metadata(extra_variables=None):
6565
return var_metadata
6666

6767

68+
def _get_variable_point(vname, dims, mask_override):
69+
# fix for https://github.com/MITgcm/xmitgcm/issues/191
70+
if vname in mask_override:
71+
return mask_override[vname]
72+
if 'i' in dims and 'j' in dims:
73+
point = 'c'
74+
elif 'i_g' in dims and 'j' in dims:
75+
point = 'w'
76+
elif 'i' in dims and 'j_g' in dims:
77+
point = 's'
78+
elif 'i_g' in dims and 'j_g' in dims:
79+
raise ValueError("Don't have masks for corner points!")
80+
else:
81+
raise ValueError("Variable `%s` is not a horizontal variable." % vname)
82+
return point
83+
6884

6985
def _decompress(data, mask, dtype):
7086
data_blank = np.full_like(mask, np.nan, dtype=dtype)
@@ -405,7 +421,7 @@ def _chunks(l, n):
405421

406422

407423
def _get_facet_chunk(store, varname, iternum, nfacet, klevels, nx, nz, nfaces,
408-
dtype, mask_override, domain, pad_before, pad_after):
424+
dtype, mask_override, domain, pad_before, pad_after, dims):
409425

410426
fs, path = store.get_fs_and_full_path(varname, iternum)
411427

@@ -423,7 +439,7 @@ def _get_facet_chunk(store, varname, iternum, nfacet, klevels, nx, nz, nfaces,
423439
if (store.shrunk and iternum is not None) or \
424440
(store.shrunk_grid and iternum is None):
425441
# the store tells us whether we need a mask or not
426-
point = _get_variable_point(varname, mask_override)
442+
point = _get_variable_point(varname, dims, mask_override)
427443
mykey = nx if domain == 'global' else f'{domain}_{nx}'
428444
index = all_index_data[mykey][point]
429445
zgroup = store.open_mask_group()
@@ -593,22 +609,6 @@ def _is_vgrid(self, vname):
593609
dims = self.var_metadata[vname]['dims']
594610
return len(dims)==1 and dims[0][0]=='k'
595611

596-
def _get_variable_point(self, vname, mask_override):
597-
# fix for https://github.com/MITgcm/xmitgcm/issues/191
598-
if vname in mask_override:
599-
return mask_override[vname]
600-
dims = self.var_metadata[vname]['dims']
601-
if 'i' in dims and 'j' in dims:
602-
point = 'c'
603-
elif 'i_g' in dims and 'j' in dims:
604-
point = 'w'
605-
elif 'i' in dims and 'j_g' in dims:
606-
point = 's'
607-
elif 'i_g' in dims and 'j_g' in dims:
608-
raise ValueError("Don't have masks for corner points!")
609-
else:
610-
raise ValueError("Variable `%s` is not a horizontal variable." % vname)
611-
return point
612612

613613
def _get_scalars_and_vectors(self, varnames, type):
614614

@@ -701,10 +701,11 @@ def _key_and_task(n_k, these_klevels, n_iter=None, iternum=None):
701701
key = name, n_k, 0, 0, 0
702702
else:
703703
key = name, n_iter, n_k, 0, 0, 0
704+
dims = self.var_metadata[varname]['dims']
704705
task = (_get_facet_chunk, self.store, varname, iternum,
705706
nfacet, these_klevels, self.nx, self.nz, self.nface,
706707
dtype, self.mask_override, self.domain,
707-
self.pad_before, self.pad_after)
708+
self.pad_before, self.pad_after, dims)
708709
return key, task
709710

710711
if iters is not None:

0 commit comments

Comments
 (0)