12
12
import xarray as xr
13
13
14
14
from ctsm .utils import abort
15
- from ctsm .config_utils import lon_range_0_to_360
15
+ from ctsm .config_utils import convert_lon_0to360
16
16
17
17
logger = logging .getLogger (__name__ )
18
18
@@ -29,7 +29,9 @@ class ModifyMeshMask:
29
29
# /glade/work/slevis/git/mksurfdata_toolchain/tools/modify_input_files ...
30
30
# ... /islas_examples/modify_fsurdat/fill_indian_ocean/
31
31
# Read mod_lnd_props here only for consistency checks
32
- def __init__ (self , my_data , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname ):
32
+ def __init__ (
33
+ self , my_data , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname , lon_type
34
+ ):
33
35
34
36
self .file = my_data
35
37
@@ -46,6 +48,7 @@ def __init__(self, my_data, landmask_file, lat_dimname, lon_dimname, lat_varname
46
48
self .lonvar = self ._landmask_file [lon_varname ][..., :]
47
49
self .lsmlat = self ._landmask_file .dims [lat_dimname ]
48
50
self .lsmlon = self ._landmask_file .dims [lon_dimname ]
51
+ self .lon_type = lon_type
49
52
50
53
lonvar_first = self .lonvar [..., 0 ].data .max ()
51
54
lonvar_last = self .lonvar [..., - 1 ].data .max ()
@@ -75,12 +78,14 @@ def __init__(self, my_data, landmask_file, lat_dimname, lon_dimname, lat_varname
75
78
76
79
@classmethod
77
80
def init_from_file (
78
- cls , file_in , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname
81
+ cls , file_in , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname , lon_type
79
82
):
80
83
"""Initialize a ModifyMeshMask object from file_in"""
81
84
logger .info ("Opening file to be modified: %s" , file_in )
82
85
my_file = xr .open_dataset (file_in )
83
- return cls (my_file , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname )
86
+ return cls (
87
+ my_file , landmask_file , lat_dimname , lon_dimname , lat_varname , lon_varname , lon_type
88
+ )
84
89
85
90
def set_mesh_mask (self , var ):
86
91
"""
@@ -134,13 +139,13 @@ def set_mesh_mask(self, var):
134
139
+ f"{ len (self .latvar .sizes )} "
135
140
)
136
141
abort (errmsg )
137
- # ensure lon range of 0-360 rather than -180 to 180
138
- lonvar_scalar = lon_range_0_to_360 (lonvar_scalar )
139
142
# lon and lat from the mesh file
140
143
lat_mesh = float (self .file ["centerCoords" ][ncount , 1 ])
141
144
lon_mesh = float (self .file ["centerCoords" ][ncount , 0 ])
142
145
# ensure lon range of 0-360 rather than -180 to 180
143
- lon_mesh = lon_range_0_to_360 (lon_mesh )
146
+ if self .lon_type == 180 :
147
+ lonvar_scalar = convert_lon_0to360 (lonvar_scalar )
148
+ lon_mesh = convert_lon_0to360 (lon_mesh )
144
149
145
150
errmsg = (
146
151
"Must be equal: "
0 commit comments