I don’t know if this is related, but I am getting a long error message when I run
But I know this code used to work no problems and the files are in the correct place!
“ValueError Traceback (most recent call last)
Cell In[19], line 8
6 #raw_boundaries_path=Path(tmp_dir),
7 from pathlib import Path
----> 8 expt.setup_ocean_state_boundaries(
9 raw_boundaries_path=Path(tmp_dir),
10 varnames=ocean_varnames,
11 arakawa_grid=“B”
12 )
File ~/.local/lib/python3.10/site-packages/regional_mom6/regional_mom6.py:1621, in experiment.setup_ocean_state_boundaries(self, raw_boundaries_path, varnames, arakawa_grid, bathymetry_path, rotational_method)
1619 # Now iterate through our four boundaries
1620 for orientation in self.boundaries:
→ 1621 self.setup_single_boundary(
1622 Path(raw_boundaries_path / (orientation + “unprocessed.nc")),
1623 varnames,
1624 orientation, # The cardinal direction of the boundary
1625 self.find_MOM6_rectangular_orientation(
1626 orientation
1627 ), # A number to identify the boundary; indexes from 1
1628 arakawa_grid=arakawa_grid,
1629 bathymetry_path=bathymetry_path,
1630 rotational_method=rotational_method,
1631 )
File ~/.local/lib/python3.10/site-packages/regional_mom6/regional_mom6.py:1685, in experiment.setup_single_boundary(self, path_to_bc, varnames, orientation, segment_number, arakawa_grid, bathymetry_path, rotational_method)
1669 raise FileNotFoundError(
1670 f"Boundary file not found at {path_to_bc}. Please ensure that the files are named in the format east_unprocessed.nc
."
1671 )
1672 self.segments[orientation] = segment(
1673 hgrid=self.hgrid,
1674 bathymetry_path=bathymetry_path,
(…)
1682 repeat_year_forcing=self.repeat_year_forcing,
1683 )
→ 1685 self.segments[orientation].regrid_velocity_tracers(
1686 rotational_method=rotational_method
1687 )
1689 print(“Done.”)
1690 return
File ~/.local/lib/python3.10/site-packages/regional_mom6/regional_mom6.py:3057, in segment.regrid_velocity_tracers(self, rotational_method)
3053 segment_out = xr.merge([rotated_ds, regridded.drop_vars([self.u, self.v])])
3055 if self.arakawa_grid == “B”:
3056 ## All tracers on one grid, all velocities on another
→ 3057 regridder_velocity = rgd.create_regridder(
3058 rawseg[self.u].rename({self.xq: “lon”, self.yq: “lat”}),
3059 coords,
3060 self.outfolder
3061 / f"weights/bilinear_velocity_weights{self.orientation}.nc”,
3062 )
3063 regridder_tracer = rgd.create_regridder(
3064 rawseg[self.tracers[“salt”]].rename({self.xh: “lon”, self.yh: “lat”}),
3065 coords,
3066 self.outfolder
3067 / f"weights/bilinear_tracer_weights_{self.orientation}.nc”,
3068 )
3070 velocities_out = regridder_velocity(
3071 rawseg[[self.u, self.v]].rename({self.xq: “lon”, self.yq: “lat”})
3072 )
File ~/.local/lib/python3.10/site-packages/regional_mom6/regridding.py:243, in create_regridder(forcing_variables, output_grid, outfile, method, locstream_out, periodic)
217 “”"
218 Basic regridder for any forcing variables. This is essentially a wrapper for
219 the xesmf regridder with some default parameter choices.
(…)
239 The regridding object
240 “”"
241 regridding_logger.info(“Creating Regridder”)
→ 243 regridder = xe.Regridder(
244 forcing_variables,
245 output_grid,
246 method=method,
247 locstream_out=locstream_out,
248 periodic=periodic,
249 filename=outfile,
250 reuse_weights=False,
251 )
253 return regridder
File ~/.local/lib/python3.10/site-packages/xesmf/frontend.py:928, in Regridder.init(self, ds_in, ds_out, method, locstream_in, locstream_out, periodic, parallel, **kwargs)
925 grid_out, shape_out, output_dims = ds_to_ESMFgrid(ds_out, need_bounds=need_bounds)
927 # Create the BaseRegridder
→ 928 super().init(
929 grid_in,
930 grid_out,
931 method,
932 input_dims=input_dims,
933 output_dims=output_dims,
934 parallel=parallel,
935 **kwargs,
936 )
938 # Record output grid and metadata
939 lon_out, lat_out = _get_lon_lat(ds_out)
File ~/.local/lib/python3.10/site-packages/xesmf/frontend.py:372, in BaseRegridder.init(self, grid_in, grid_out, method, filename, reuse_weights, extrap_method, extrap_dist_exponent, extrap_num_src_pnts, weights, ignore_degenerate, input_dims, output_dims, unmapped_to_nan, parallel)
370 if not parallel:
371 if not reuse_weights and weights is None:
→ 372 weights = self._compute_weights() # Dictionary of weights
373 else:
374 weights = filename if filename is not None else weights
File ~/.local/lib/python3.10/site-packages/xesmf/frontend.py:439, in BaseRegridder._compute_weights(self)
438 def _compute_weights(self):
→ 439 regrid = esmf_regrid_build(
440 self.grid_in,
441 self.grid_out,
442 self.method,
443 extrap_method=self.extrap_method,
444 extrap_dist_exponent=self.extrap_dist_exponent,
445 extrap_num_src_pnts=self.extrap_num_src_pnts,
446 ignore_degenerate=self.ignore_degenerate,
447 )
449 w = regrid.get_weights_dict(deep_copy=True)
450 esmf_regrid_finalize(regrid) # only need weights, not regrid object
File ~/.local/lib/python3.10/site-packages/xesmf/backend.py:484, in esmf_regrid_build(sourcegrid, destgrid, method, filename, extra_dims, extrap_method, extrap_dist_exponent, extrap_num_src_pnts, ignore_degenerate)
481 if allow_masked_values:
482 kwargs.update(dict(src_mask_values=[0], dst_mask_values=[0]))
→ 484 regrid = ESMF.Regrid(sourcefield, destfield, **kwargs)
486 return regrid
File /g/data/hh5/public/apps/miniconda3/envs/analysis3-24.04/lib/python3.10/site-packages/esmpy/util/decorators.py:59, in initialize..new_func(*args, **kwargs)
56 from esmpy.api import esmpymanager
58 esmp = esmpymanager.Manager(debug = False)
—> 59 return func(*args, **kwargs)
File /g/data/hh5/public/apps/miniconda3/envs/analysis3-24.04/lib/python3.10/site-packages/esmpy/api/regrid.py:179, in Regrid.init(self, srcfield, dstfield, filename, rh_filename, src_mask_values, dst_mask_values, regrid_method, pole_method, regrid_pole_npoints, line_type, norm_type, extrap_method, extrap_num_src_pnts, extrap_dist_exponent, extrap_num_levels, unmapped_action, ignore_degenerate, create_rh, filemode, src_file, dst_file, src_file_type, dst_file_type, factors, large_file, src_frac_field, dst_frac_field)
176 fil = None
177 num_factors = None
→ 179 self._routehandle = ESMP_FieldRegridStore(
180 srcfield,
181 dstfield,
182 srcMaskValues=src_mask_values,
183 dstMaskValues=dst_mask_values,
184 regridmethod=regrid_method,
185 polemethod=pole_method,
186 regridPoleNPnts=regrid_pole_npoints,
187 lineType=line_type,
188 normType=norm_type,
189 extrapMethod=extrap_method,
190 extrapNumSrcPnts=extrap_num_src_pnts,
191 extrapDistExponent=extrap_dist_exponent,
192 extrapNumLevels=extrap_num_levels,
193 unmappedaction=unmapped_action,
194 ignoreDegenerate=ignore_degenerate,
195 factorList=fl,
196 factorIndexList=fil,
197 numFactors=num_factors,
198 srcFracField=src_frac_field,
199 dstFracField=dst_frac_field
200 )
202 # If we are returning factors, store them and cast/convert from
203 # ctypes
204 if factors:
File /g/data/hh5/public/apps/miniconda3/envs/analysis3-24.04/lib/python3.10/site-packages/esmpy/interface/cbindings.py:2133, in ESMP_FieldRegridStore(srcField, dstField, srcMaskValues, dstMaskValues, regridmethod, polemethod, regridPoleNPnts, lineType, normType, extrapMethod, extrapNumSrcPnts, extrapDistExponent, extrapNumLevels, unmappedaction, ignoreDegenerate, factorList, factorIndexList, numFactors, srcFracField, dstFracField)
2109 arg_factorIndexList = ct.byref(factorIndexList)
2111 rc = _ESMF.ESMC_FieldRegridStore(srcField.struct.ptr,
2112 dstField.struct.ptr,
2113 srcMaskValues_i,
(…)
2130 srcFracField,
2131 dstFracField)
→ 2133 handle_esmf_error(rc, ‘ESMC_FieldRegridStore’)
2135 # Assign the outgoing pointer for the factor count if we are returning
2136 # factors.
2137 if not isinstance(factorList, type(None)):
File /g/data/hh5/public/apps/miniconda3/envs/analysis3-24.04/lib/python3.10/site-packages/esmpy/interface/cbindings.py:26, in handle_esmf_error(rc, esmf_name)
24 if rc != constants._ESMP_SUCCESS:
25 msg = esmf_name + ’ failed with rc = ’ + str(rc) + '. ’ + constants._errmsg
—> 26 raise ValueError(msg)
ValueError: ESMC_FieldRegridStore failed with rc = 6. Please check the log files (named “*ESMF_LogFile”).
"