From 3ab4089e5b71622367bda18c298ccb7c2bc5e689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Br=C3=BCggemann?= <nils.brueggemann@mpimet.mpg.de> Date: Mon, 17 Feb 2025 09:33:36 +0100 Subject: [PATCH] pyicon_tb.py and config_ckdtree_r2b11_oce_r0005.py: Added new R2B11 grid. --- .../config_ckdtree_r2b11_oce_r0005.py | 180 ++++++++++++++++++ pyicon/pyicon_tb.py | 9 + 2 files changed, 189 insertions(+) create mode 100644 config_ckdtree/config_ckdtree_r2b11_oce_r0005.py diff --git a/config_ckdtree/config_ckdtree_r2b11_oce_r0005.py b/config_ckdtree/config_ckdtree_r2b11_oce_r0005.py new file mode 100644 index 0000000..708395e --- /dev/null +++ b/config_ckdtree/config_ckdtree_r2b11_oce_r0005.py @@ -0,0 +1,180 @@ +import numpy as np +from netCDF4 import Dataset +import sys, os +import matplotlib +if len(sys.argv)>=2: + matplotlib.use('Agg') +import pyicon as pyic +print('Hey there!') + +print(sys.argv) +#grid_target = sys.argv[2] + +ts = pyic.timing([0], 'start') + +tgname = f'r2b11_oce_r0005' +gname = f'OceanOnly_Global_IcosSymmetric_1233m_rotatedZ37d_GEBCO_2023' +path_tgrid = f'/pool/data/ICON/oes/grids/OceanOnly/' +fname_tgrid = f'{gname}.nc' +path_ckdtree = f'/work/mh0033/m300602/icon/grids/{tgname}/ckdtree/' +path_rgrid = path_ckdtree + 'rectgrids/' +path_sections = path_ckdtree + 'sections/' + +all_grids = [ + 'global_1.0', + 'global_0.3', + 'global_0.1', + 'global_0.02', + 'global_0.01', + ] +#all_grids = [grid_target] + +all_secs = [ +# '30W_200pts', +# '170W_200pts', +# '30W_300pts', +# '170W_300pts', + ] + +load_cgrid=True, +load_egrid=True, +load_vgrid=True, + +if not os.path.exists(path_rgrid): + os.makedirs(path_rgrid) +if not os.path.exists(path_sections): + os.makedirs(path_sections) +fpath = f'{path_ckdtree}/../{tgname}_tgrid.nc' +if not os.path.exists(fpath): + os.symlink(path_tgrid+fname_tgrid, fpath) + +gnames = [gname] +print(gnames) +for gname in gnames: + ts = pyic.timing(ts, gname) + print(gname) + + # --- grids + sname = 'global_1.0' + if sname in all_grids: + pyic.ckdtree_hgrid(lon_reg=[-180.,180.], lat_reg=[-90.,90.], res=1.0, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_rgrid, + sname = sname, + gname = gname, + tgname = tgname, + load_cgrid=load_cgrid, + load_egrid=load_egrid, + load_vgrid=load_vgrid, + save_as='both', + ) + + sname = 'global_0.3' + if sname in all_grids: + pyic.ckdtree_hgrid(lon_reg=[-180.,180.], lat_reg=[-90.,90.], res=0.3, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_rgrid, + sname = sname, + gname = gname, + tgname = tgname, + load_cgrid=load_cgrid, + load_egrid=load_egrid, + load_vgrid=load_vgrid, + save_as='both', + ) + + sname = 'global_0.1' + if sname in all_grids: + pyic.ckdtree_hgrid(lon_reg=[-180.,180.], lat_reg=[-90.,90.], res=0.1, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_rgrid, + sname = sname, + gname = gname, + tgname = tgname, + load_cgrid=load_cgrid, + load_egrid=load_egrid, + load_vgrid=load_vgrid, + save_as='both', + ) + + sname = 'global_0.02' + if sname in all_grids: + pyic.ckdtree_hgrid(lon_reg=[-180.,180.], lat_reg=[-90.,90.], res=0.02, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_rgrid, + sname = sname, + gname = gname, + tgname = tgname, + load_cgrid=load_cgrid, + load_egrid=load_egrid, + load_vgrid=load_vgrid, + save_as='both', + ) + + sname = 'global_0.01' + if sname in all_grids: + pyic.ckdtree_hgrid(lon_reg=[-180.,180.], lat_reg=[-90.,90.], res=0.01, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_rgrid, + sname = sname, + gname = gname, + tgname = tgname, + load_cgrid=load_cgrid, + load_egrid=load_egrid, + load_vgrid=load_vgrid, + save_as='both', + ) + + + # --- sections + sname = '30W_200pts' + if sname in all_secs: + dckdtree, ickdtree, lon_sec, lat_sec, dist_sec = pyic.ckdtree_section(p1=[-30,-80], p2=[-30,80], npoints=200, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_sections, + sname = sname, + gname = gname, + tgname = tgname, + ) + + sname = '170W_200pts' + if sname in all_secs: + dckdtree, ickdtree, lon_sec, lat_sec, dist_sec = pyic.ckdtree_section(p1=[-170,-80], p2=[-170,80], npoints=200, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_sections, + sname = sname, + gname = gname, + tgname = tgname, + ) + + sname = '30W_300pts' + if sname in all_secs: + dckdtree, ickdtree, lon_sec, lat_sec, dist_sec = pyic.ckdtree_section(p1=[-30,-80], p2=[-30,80], npoints=300, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_sections, + sname = sname, + gname = gname, + tgname = tgname, + ) + + sname = '170W_300pts' + if sname in all_secs: + dckdtree, ickdtree, lon_sec, lat_sec, dist_sec = pyic.ckdtree_section(p1=[-170,-80], p2=[-170,80], npoints=300, + fname_tgrid = fname_tgrid, + path_tgrid = path_tgrid, + path_ckdtree = path_sections, + sname = sname, + gname = gname, + tgname = tgname, + ) + +print('make_ckdtree.py: All done!') +ts = pyic.timing(ts, 'All done!') diff --git a/pyicon/pyicon_tb.py b/pyicon/pyicon_tb.py index f3891ad..2eaac08 100644 --- a/pyicon/pyicon_tb.py +++ b/pyicon/pyicon_tb.py @@ -1685,6 +1685,15 @@ def identify_grid(fpath_data, path_grid='none', uuidOfHGrid='none'): Dgrid_list[grid_name]['uuidOfHGrid'] = 'b5bf1496-4493-11ed-9238-f9d43538dbe9' Dgrid_list[grid_name]['fpath_grid'] = f'{path_grid}/{grid_name}/{grid_name}_tgrid.nc' + grid_name = 'r2b11_oce_r0005'; Dgrid_list[grid_name] = dict() + Dgrid_list[grid_name]['name'] = grid_name + Dgrid_list[grid_name]['res'] = '1.25km' + Dgrid_list[grid_name]['long_name'] = 'OceanOnly_Global_IcosSymmetric_1233m_rotatedZ37d_GEBCO_2023' + Dgrid_list[grid_name]['size'] = 237416516 + #Dgrid_list[grid_name]['fpath_grid'] = path_grid + Dgrid_list[grid_name]['long_name'] + '/' + Dgrid_list[grid_name]['long_name'] + '.nc' + Dgrid_list[grid_name]['uuidOfHGrid'] = '2e7f2328-8a0f-11ee-8312-e7a9d15ccefa' + Dgrid_list[grid_name]['fpath_grid'] = f'{path_grid}/{grid_name}/{grid_name}_tgrid.nc' + grid_name = 'r2b11_atm_r0037'; Dgrid_list[grid_name] = dict() Dgrid_list[grid_name]['name'] = grid_name Dgrid_list[grid_name]['res'] = '1.25km' -- GitLab