Identifying landfast ice
Below, I describe how I mark landfast sea ice (silandfast) using sea ice concentration (siconc) and sea ice speed (sispeed) for the EC-Earth3P-HR and HadGEM3-GC31 models.
This assumes you have already gone through Trimming data to the CAA region and Calculating ‘siconc’ from ‘sithick’ and ‘sivol’.
Contents
Introduction
When choke points form, the sea ice in that area is locked in place, meaning that it is densely packed together and moving very slowly, if at all. Laliberté et al. 2018[1] investigated landfast ice, which is packed and slow-moving, in models. However, models generally do not have an output variable which identifies landfast ice.
“To circumvent this limitation, we use daily sea ice thickness (hereafter,
sit), sea ice concentration (hereafter,sic) and sea ice velocities (hereafter,usiandvsi) to synthetically characterize landfast sea ice conditions using the following procedure:
On the original model grid, we set the land mask to its nearest neighbour and remap using a nearest-neighbour remapping
usi,vsiandsitto thesicnative grid. Finally, we use a nearest-neighbour remapping to put all variables on a EASE 2.0 grid.The sea ice speed (hereafter,
speedsi) is computed fromusiandvsion this new grid.Daily
speedsi,sitandsicare averaged to weekly means.A grid cell is identified as having “packed ice” if the remapped weekly mean
sicis larger than 85 %.A grid cell is identified as having “slow ice” if the remapped weekly mean
speedsiis less than 1 cm s\(^{−1}\) (\(\sim\) 1 km day\(^{−1}\)).Slow, packed ice is used as a proxy for landfast ice.
At each grid cell we then compute the number of months in each year with slow, packed ice. Using slow, packed ice is representative because we are interested in one specific aspect of landfast ice: the fact that its growth is primarily driven by thermodynamics and not by the import/export of sea ice.” [1] (on page 2-3 / 3578-3579)
Below, I implement this scheme for identifying landfast ice in the models I investigate for this project.
Calculating landfast ice for an example dataset
Here, I’ll calculate landfast ice for one year of monthly data as an example, choosing the year 2000 from EC-Earth3P-HR.
That model has sispeed available, which I will use instead of calculating the speed from siu and siv manually.
Because I’m starting with monthly data and the siconc and sispeed variables are on the same grid, I’ll follow Laliberté et al. 2018’s[1] procedure starting at step 4.
import xarray as xr
month_index = 6
from arctichoke.params import CAA_BBOX
# Define the boundaries of the CAA
CAA_BBOX
Packed ice
Here, I’ll identify packed ice as sea ice concentration values above 85%. First, I’ll load an example sea ice concentration file. Then, I’ll plot this data in July such that I can see a good pattern of data.
EC_Earth3P_HR_hist_siconc_2000 = '/arctichoke_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/siconc/gn/v20181212/siconc_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc'
from arctichoke.dataset.trim_dataset import trim_latlon
EC_Earth3P_HR_hist_siconc_2000_xr_trim = trim_latlon(
xr.open_dataset(EC_Earth3P_HR_hist_siconc_2000),
map_bbox = CAA_BBOX,
precise_trim = False,
)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_siconc_2000_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_siconc_2000_xr_trim.isel(time=month_index),
'siconc',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_siconc_2000_trim_map
![]()
Next, I’ll use a function I made, which employs the cdo function setrtoc2 to mark just the packed ice, which is where sea ice concentration is over 85%.
from arctichoke.analysis.landfast import find_packed_ice
EC_Earth3P_HR_hist_sipacked_2000_xr_trim = find_packed_ice(
EC_Earth3P_HR_hist_siconc_2000_xr_trim,
packed_threshold = 85,
)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_sipacked_2000_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_sipacked_2000_xr_trim.isel(time=month_index),
'sipacked',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_sipacked_2000_trim_map

This makes sense to me as it shows packed ice mainly in the Beaufort Sea, the CAA and the coast of Greenland.
Slow ice
Here, I’ll identify slow ice as sea ice speed values below 1 cm/s. First, I’ll load an example sea ice speed file, then plot it in July, just as above.
EC_Earth3P_HR_hist_sispeed_2000 = '/arctichoke_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/sispeed/gn/v20181212/sispeed_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc'
from arctichoke.dataset.trim_dataset import trim_latlon
EC_Earth3P_HR_hist_sispeed_2000_xr_trim = trim_latlon(
xr.open_dataset(EC_Earth3P_HR_hist_sispeed_2000),
map_bbox = CAA_BBOX,
precise_trim = False,
)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_sispeed_2000_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_sispeed_2000_xr_trim.isel(time=month_index),
'sispeed',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_sispeed_2000_trim_map

Next, I’ll use a function I made, which employs the cdo function setrtoc2 to mark just the slow ice, which is where sea ice speed is below 1 cm/s. Note, this includes areas with no sea ice.
from arctichoke.analysis.landfast import find_slow_ice
EC_Earth3P_HR_hist_sislow_2000_xr_trim = find_slow_ice(
EC_Earth3P_HR_hist_sispeed_2000_xr_trim,
slow_threshold = 0.01,
)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_sislow_2000_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_sislow_2000_xr_trim.isel(time=month_index),
'sislow',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_sislow_2000_trim_map

This also makes sense to me as it shows slow ice along the shores of landmasses.
It also shows “slow ice” in regions that aren’t actually covered in sea ice, as can be seen from the sea ice concentration plot above.
This is because the default value for sispeed is 0 and, in those areas, since there is no sea ice, the value of sispeed defaults to 0.
Landfast ice
Next, I’ll combine my functions for finding packed and slow ice. Where they overlap, I’ll call that landfast ice, following Laliberté et al. 2018[1].
from arctichoke.analysis.landfast import find_landfast_ice
EC_Earth3P_HR_hist_silandfast_2000_xr_trim = find_landfast_ice(
siconc_dataset = EC_Earth3P_HR_hist_siconc_2000_xr_trim,
sispeed_dataset = EC_Earth3P_HR_hist_sispeed_2000_xr_trim,
)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_silandfast_2000_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_silandfast_2000_xr_trim.isel(time=month_index),
'silandfast',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_silandfast_2000_trim_map

Then, I’ll take that dataset and get the mean over time, which can give me an idea of which locations have landfast ice and how often.
EC_Earth3P_HR_hist_silandfast_2000_mean_xr_trim = EC_Earth3P_HR_hist_silandfast_2000_xr_trim.mean(dim='time', skipna=False)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_silandfast_2000_mean_trim_map = quadmesh_map(
EC_Earth3P_HR_hist_silandfast_2000_mean_xr_trim,
'silandfast',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_silandfast_2000_mean_trim_map

I can check to confirm that the values of this mean in silandfast over time fall between 0 and 1.
from arctichoke.dataset.get_min_max import get_min_max
get_min_max(EC_Earth3P_HR_hist_silandfast_2000_mean_xr_trim, 'silandfast')
(0.0, 1.0)
Writing landfast ice to file
In order to have access to the landfast data more easily, I’ll save the result of the calculation to file.
I’ll give the file the prefix trim_CAA_ because I will trim the data to the CAA in the process.
I’ll also follow the naming conventions of EC-Earth3P-HR and the directory structure given by esgpull.
Example with one file
Below, I’ll demonstrate doing a precise trim around the CAA for the year 2000.
siconc_filepath = '/arctichoke_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/siconc/gn/v20181212/siconc_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc'
sispeed_filepath = '/arctichoke_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/sispeed/gn/v20181212/sispeed_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc'
from arctichoke.analysis.landfast import make_landfast_files
from arctichoke.params import CAA_BBOX
make_landfast_files(
siconc_files = siconc_filepath,
sispeed_files = sispeed_filepath,
map_bbox = CAA_BBOX,
precise_trim = True,
)
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc`.
The above function created a new directory (if needed) for silandfast in the existing directory structure given by the provided files, then created a new netCDF file in that directory.
import xarray as xr
EC_Earth3P_HR_hist_silandfast_2000_CAA = '/arctichoke_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_200001-200012.nc'
EC_Earth3P_HR_hist_silandfast_2000_CAA_xr = xr.open_dataset(EC_Earth3P_HR_hist_silandfast_2000_CAA)
from arctichoke.plot.hvplots import quadmesh_map
EC_Earth3P_HR_hist_silandfast_2000_CAA_map = quadmesh_map(
EC_Earth3P_HR_hist_silandfast_2000_CAA_xr.isel(time=month_index),
'silandfast',
map_projection = 'Orthographic',
)
EC_Earth3P_HR_hist_silandfast_2000_CAA_map

This matches what I saw before, just trimmed precisely around the CAA bounding box.
Writing all files for EC-Earth3P-HR
Below, I have written a loop to calculate and write the landfast ice files for all of the ensemble members of EC-Earth3P-HR.
I have specified precise_trim = False to both speed up the computations as well as keep more of the spatial area in the files.
This took 70 minutes to complete.
from arctichoke.path import list_variable_files
from arctichoke.analysis.landfast import make_landfast_files
from arctichoke.params import CAA_BBOX
this_model = 'EC-Earth3P-HR'
for this_variant_label in [
'r1i1p2f1',
'r2i1p2f1',
'r3i1p2f1',
]:
for this_experiment in ['hist-1950']:#, 'highres-future']:
siconc_list = list_variable_files(
source_id = this_model,
variable_id = 'siconc',
experiment_id = this_experiment,
variant_label = this_variant_label,
)
sispeed_list = list_variable_files(
source_id = this_model,
variable_id = 'sispeed',
experiment_id = this_experiment,
variant_label = this_variant_label,
)
make_landfast_files(
siconc_files = siconc_list,
sispeed_files = sispeed_list,
map_bbox = CAA_BBOX,
precise_trim = False,
)
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_195001-195012.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r1i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r1i1p2f1_gn_195101-195112.nc`.
...
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r3i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r3i1p2f1_gn_201301-201312.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/EC-Earth-Consortium/EC-Earth3P-HR/hist-1950/r3i1p2f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_EC-Earth3P-HR_hist-1950_r3i1p2f1_gn_201401-201412.nc`.
I can confirm how many landfast ice files were created using the list_available_variables() function.
from arctichoke.path.variable_paths import list_available_variables
list_available_variables(
source_id = 'EC-Earth3P-HR',
experiment_id = 'hist-1950',
list_var_mods = True,
)
{'EC-Earth-Consortium/EC-Earth3P-HR': {'hist-1950': {
'r1i1p2f1': {'SImon': {'siu': {'': 65},
'siv': {'': 65},
'sithick': {'': 65, 'trim_NWP_': 65},
'siage': {'': 65},
'siconc': {'': 65, 'trim_NWP_': 65},
'sispeed': {'': 65, 'trim_NWP_': 65},
'silandfast': {'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65}}},
'r2i1p2f1': {'SImon': {'siage': {'': 65},
'sithick': {'': 65, 'trim_NWP_': 65},
'siv': {'': 65},
'siu': {'': 65},
'siconc': {'': 65, 'trim_NWP_': 65},
'sispeed': {'': 65, 'trim_NWP_': 65},
'silandfast': {'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65}}},
'r3i1p2f1': {'SImon': {'sithick': {'': 65, 'trim_NWP_': 65},
'siage': {'': 65, 'trim_NWP_': 65},
'siu': {'': 65},
'siv': {'': 65},
'siconc': {'': 65, 'trim_NWP_': 65},
'sispeed': {'': 65, 'trim_NWP_': 65},
'silandfast': {'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65}}}}}}
Writing all files for HadGEM3-GC31-MM
from arctichoke.path import list_variable_files
from arctichoke.analysis.landfast import make_landfast_files
from arctichoke.params import CAA_BBOX
this_model = 'HadGEM3-GC31-MM'
for this_variant_label in [
'r1i1p1f1',
'r1i2p1f1',
'r1i3p1f1',
]:
for this_experiment in ['hist-1950']:
siconc_list = list_variable_files(
source_id = this_model,
variable_id = 'siconc2',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
sispeed_list = list_variable_files(
source_id = this_model,
variable_id = 'sispeed',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
make_landfast_files(
siconc_files = siconc_list,
sispeed_files = sispeed_list,
precise_trim = False,
siconc_var = 'siconc2',
)
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-MM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-MM_hist-1950_r1i3p1f1_gn_195001-195012.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-MM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-MM_hist-1950_r1i3p1f1_gn_195101-195112.nc`.
...
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-MM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-MM_hist-1950_r1i3p1f1_gn_201301-201312.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-MM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-MM_hist-1950_r1i3p1f1_gn_201401-201412.nc`.
from arctichoke.path.variable_paths import list_available_variables
list_available_variables(
source_id = 'MOHC/HadGEM3-GC31-MM',
experiment_id = 'hist-1950',
list_var_mods = True,
)
{'MOHC/HadGEM3-GC31-MM': {'hist-1950': {
'r1i1p1f1': {'Ofx': {'areacello': {'': 1}},
'SImon': {'siu': {'': 65},
'sithick': {'': 65},
'siage': {'': 65},
'siconc': {'': 65},
'siv': {'': 65},
'sispeed': {'': 65, 'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65},
'silandfast': {'trim_CAA_': 65}}},
'r1i2p1f1': {'SImon': {'sithick': {'': 65},
'siv': {'': 65},
'siu': {'': 65},
'siage': {'': 65},
'siconc': {'': 65},
'sispeed': {'': 65, 'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65},
'silandfast': {'trim_CAA_': 65}}},
'r1i3p1f1': {'SImon': {'siu': {'': 65},
'siconc': {'': 65},
'sithick': {'': 65},
'siage': {'': 65},
'siv': {'': 65},
'sispeed': {'': 65, 'trim_CAA_': 65},
'sivol': {'': 65},
'siconc2': {'trim_CAA_': 65},
'silandfast': {'trim_CAA_': 65}}}}}}
Writing all files for HadGEM3-GC31-HM
from arctichoke.path import list_variable_files
from arctichoke.analysis.landfast import make_landfast_files
from arctichoke.params import CAA_BBOX
this_model = 'HadGEM3-GC31-HM'
for this_variant_label in [
'r1i1p1f1',
'r1i2p1f1',
'r1i3p1f1',
]:
for this_experiment in ['hist-1950']:
siconc_list = list_variable_files(
source_id = this_model,
variable_id = 'siconc2',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
sispeed_list = list_variable_files(
source_id = this_model,
variable_id = 'sispeed',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
make_landfast_files(
siconc_files = siconc_list,
sispeed_files = sispeed_list,
precise_trim = False,
siconc_var = 'siconc2',
)
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HM/hist-1950/r1i2p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HM_hist-1950_r1i2p1f1_gn_195001-195012.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HM/hist-1950/r1i2p1f1/SImon/silandfast/gn/v20260617/
...
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-HM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HM_hist-1950_r1i3p1f1_gn_201301-201312.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/MOHC/HadGEM3-GC31-HM/hist-1950/r1i3p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HM_hist-1950_r1i3p1f1_gn_201401-201412.nc`.
Writing all files for HadGEM3-GC31-HH
from arctichoke.path.variable_paths import list_available_variables
list_available_variables(
source_id = 'NERC/HadGEM3-GC31-HH',
experiment_id = 'hist-1950',
list_var_mods = True,
)
{'NERC/HadGEM3-GC31-HH': {'hist-1950': {
'r1i1p1f1': {'SImon': {'sithick': {'': 65,
'trim_CAA_': 65},
'siv': {'': 65},
'siu': {'': 65},
'siconc': {'': 64},
'siage': {'': 65, 'trim_CAA_': 65},
'sispeed': {'': 65, 'trim_CAA_': 65},
'sivol': {'': 65, 'trim_CAA_': 65},
'siconc2': {'trim_CAA_': 65}}}}}}
from arctichoke.path import list_variable_files
from arctichoke.analysis.landfast import make_landfast_files
from arctichoke.params import CAA_BBOX
this_model = 'HadGEM3-GC31-HH'
for this_variant_label in [
'r1i1p1f1',
]:
for this_experiment in ['hist-1950']:
siconc_list = list_variable_files(
source_id = this_model,
variable_id = 'siconc2',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
sispeed_list = list_variable_files(
source_id = this_model,
variable_id = 'sispeed',
experiment_id = this_experiment,
variant_label = this_variant_label,
with_modification = 'trim_CAA_',
)
make_landfast_files(
siconc_files = siconc_list,
sispeed_files = sispeed_list,
precise_trim = False,
siconc_var = 'siconc2',
)
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HH/hist-1950/r1i1p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HH_hist-1950_r1i1p1f1_gn_195001-195012.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HH/hist-1950/r1i1p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HH_hist-1950_r1i1p1f1_gn_195101-195112.nc`.
...
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HH/hist-1950/r1i1p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HH_hist-1950_r1i1p1f1_gn_201301-201312.nc`.
(make_landfast_files) Writing file `/seaicecp_data/bergybits/data/CMIP6/HighResMIP/NERC/HadGEM3-GC31-HH/hist-1950/r1i1p1f1/SImon/silandfast/gn/v20260617/trim_CAA_silandfast_SImon_HadGEM3-GC31-HH_hist-1950_r1i1p1f1_gn_201401-201412.nc`.
Now, with all the landfast ice files created, I can move on to Calculating trends in landfast ice over time.