Skip to content

Commit 929e8fe

Browse files
committed
modify target_levels
1 parent db76fd3 commit 929e8fe

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

config/model_configs/diagnostic_edmfx_era5_initial_condition.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ z_elem: 63
44
dz_bottom: 30.0
55
dt: 120secs
66
t_end: 12hours
7-
# start_date: "20250627-0000"
8-
start_date: "20250831"
9-
era5_initial_condition_dir: "/net/sampo/data1/wxquest_data/initial_conditions"
7+
start_date: "20250627-0000"
108
initial_condition: "WeatherModel"
119
discrete_hydrostatic_balance: false # TODO: change to true once we fix discrete hydrostatic balance to work with orography
1210
topo_smoothing: true

src/initial_conditions/initial_conditions.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,10 @@ function overwrite_initial_conditions!(
380380
extrapolation_bc = (Intp.Periodic(), Intp.Flat(), Intp.Flat())
381381

382382
# Extract face coordinates and compute center midpoints
383-
384-
target_levels = Fields.field2array(Fields.coordinate_field(Y.c).z)[:, argmin(Fields.field2array(Fields.coordinate_field(Y.c).z))[2]]
383+
# Compute target levels on CPU to avoid GPU reductions
384+
z_arr_cpu = Array(Fields.field2array(Fields.coordinate_field(Y.c).z))
385+
icol = argmin(z_arr_cpu[1, :])
386+
target_levels = z_arr_cpu[:, icol]
385387

386388
file_path = weather_model_data_path(
387389
initial_condition.start_date,

src/utils/weather_model.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ function to_z_levels(source_file, target_file, target_levels, FT)
144144
# See https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/2017MS001059
145145
req3d = ["u", "v", "t", "q", "w"]
146146
for var_name in req3d
147-
var_obj = defVar(ncout, var_name, FT, ("lon", "lat", "z"), attrib = ncin[var_name].attrib)
147+
var_obj =
148+
defVar(ncout, var_name, FT, ("lon", "lat", "z"), attrib = ncin[var_name].attrib)
148149
if var_name == "w"
149150
var_obj[:, :, :] = zeros(FT, length(lon), length(lat), length(target_levels))
150151
else
@@ -160,7 +161,8 @@ function to_z_levels(source_file, target_file, target_levels, FT)
160161
# Simply repeat the surface values for all levels
161162
surf_map = Dict("skt" => "skt", "sp" => "p")
162163
for (src_name, dst_name) in surf_map
163-
var_obj = defVar(ncout, dst_name, FT, ("lon", "lat", "z"), attrib = ncin[src_name].attrib)
164+
var_obj =
165+
defVar(ncout, dst_name, FT, ("lon", "lat", "z"), attrib = ncin[src_name].attrib)
164166
for k in 1:length(target_levels)
165167
var_obj[:, :, k] = FT.(ncin[src_name][:, :, 1])
166168
end

0 commit comments

Comments
 (0)