Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions configs/TCO95_CORE3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# OCP-Tool Configuration
# OpenIFS Coupling Preparation Tool
# Configuration: TCO319 + CORE3 (with ice cavities)

# Atmosphere grid settings
atmosphere:
resolution_list: [95] # TCO319
truncation_type: "cubic-octahedral"
experiment_name: "ab45" # IMPORTANT: abns for TCO319, ab45 for TCO95

# Ocean grid settings
ocean:
grid_name: "CORE3"
has_ice_cavities: true # CORE3 has ice cavities
mesh_file: "/work/ab0246/a270092/input/fesom2/core3/mesh.nc"

# Basin modifications for runoff
runoff:
manual_basin_removal:
- "caspian-sea"

# Paths (relative to auto-detected root_dir, or absolute)
# Output dirs auto-computed as: output/{TCO|TL}{resolution}_{ocean_grid}/
paths:
input:
fesom_mesh: "input/fesom_mesh/"
gaussian_grids_full: "input/gaussian_grids_full/"
gaussian_grids_octahedral_reduced: "input/gaussian_grids_octahedral_reduced/"
gaussian_grids_linear_reduced: "input/gaussian_grids_linear_reduced/"
openifs_default: "input/openifs_input_default/"
runoff_default: "input/runoff_map_default/"
lpj_guess: "input/lpj-guess/"

# Processing options
options:
verbose: true
parallel_workers: 4
use_dask: true
12 changes: 11 additions & 1 deletion ocp_tool/field_interpolation.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,12 @@ def interpolate_co2_emissions(input_grib_file, icmgg_init_file, output_file, var
# Second pass: read, interpolate and prepare each variable for writing
interpolated_emissions = {}

# Parameter ID mapping for CO2 emissions
# Map input paramIds to desired output paramIds
param_id_mapping = {
228083: 210068, # fco2nee -> co2nbf
}

with open(input_grib_file, 'rb') as f:
while True:
gid = eccodes.codes_grib_new_from_file(f)
Expand All @@ -129,10 +135,14 @@ def interpolate_co2_emissions(input_grib_file, icmgg_init_file, output_file, var
# Create source points for interpolation
source_points = np.column_stack((lons, lats))

# Get the original paramId and apply mapping if necessary
original_param_id = eccodes.codes_get(gid, 'paramId')
mapped_param_id = param_id_mapping.get(original_param_id, original_param_id)

# Store the original GRIB message information for template
template_info = {
'short_name': short_name,
'param_id': eccodes.codes_get(gid, 'paramId'),
'param_id': mapped_param_id,
'level_type': eccodes.codes_get(gid, 'typeOfLevel'),
'level': eccodes.codes_get(gid, 'level'),
'grid_type': eccodes.codes_get(gid, 'gridType')
Expand Down
6 changes: 3 additions & 3 deletions ocp_tool/lsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,11 +342,11 @@ def create_slt_output_for_lpjg(

input_file = config.get_icmgg_output_file()

# Generate output filename
# Generate output filename with ocean grid name
if config.atmosphere.truncation_type == 'cubic-octahedral':
slt_output_name = f'slt_TCO{resolution}.nc'
slt_output_name = f'slt_TCO{resolution}_{config.ocean.grid_name}.nc'
elif config.atmosphere.truncation_type == 'linear':
slt_output_name = f'slt_TL{resolution}.nc'
slt_output_name = f'slt_TL{resolution}_{config.ocean.grid_name}.nc'
else:
raise ValueError(f"Unknown truncation type: {config.atmosphere.truncation_type}")

Expand Down
Loading