Skip to content

Commit 5d45df5

Browse files
committed
make nodal reductions work with distributed multi-volume (example)
1 parent 981fa35 commit 5d45df5

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

examples/multivolume-mpi.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -359,19 +359,26 @@ def my_get_timestep(step, t, state):
359359
wall_dt = actx.to_numpy(
360360
nodal_min(
361361
discr, dd_vol_wall,
362-
wall_lengthscales**2 * current_cfl/wall_alpha))[()]
362+
wall_lengthscales**2 * current_cfl/wall_alpha,
363+
initial=np.inf))[()]
363364
else:
364365
wall_dt = current_dt
365366
return min(fluid_dt, wall_dt)
366367

367368
def my_write_status(step, t, dt, fluid_state, wall_temperature):
368369
dv = fluid_state.dv
369-
p_min = actx.to_numpy(nodal_min(discr, dd_vol_fluid, dv.pressure))
370-
p_max = actx.to_numpy(nodal_max(discr, dd_vol_fluid, dv.pressure))
371-
fluid_t_min = actx.to_numpy(nodal_min(discr, dd_vol_fluid, dv.temperature))
372-
fluid_t_max = actx.to_numpy(nodal_max(discr, dd_vol_fluid, dv.temperature))
373-
wall_t_min = actx.to_numpy(nodal_min(discr, dd_vol_wall, wall_temperature))
374-
wall_t_max = actx.to_numpy(nodal_max(discr, dd_vol_wall, wall_temperature))
370+
p_min = actx.to_numpy(
371+
nodal_min(discr, dd_vol_fluid, dv.pressure, initial=np.inf))
372+
p_max = actx.to_numpy(
373+
nodal_max(discr, dd_vol_fluid, dv.pressure, initial=0.))
374+
fluid_t_min = actx.to_numpy(
375+
nodal_min(discr, dd_vol_fluid, dv.temperature, initial=np.inf))
376+
fluid_t_max = actx.to_numpy(
377+
nodal_max(discr, dd_vol_fluid, dv.temperature, initial=0.))
378+
wall_t_min = actx.to_numpy(
379+
nodal_min(discr, dd_vol_wall, wall_temperature, initial=np.inf))
380+
wall_t_max = actx.to_numpy(
381+
nodal_max(discr, dd_vol_wall, wall_temperature, initial=0.))
375382
if constant_cfl:
376383
fluid_cfl = current_cfl
377384
wall_cfl = current_cfl
@@ -380,12 +387,14 @@ def my_write_status(step, t, dt, fluid_state, wall_temperature):
380387
fluid_cfl = actx.to_numpy(
381388
nodal_max(
382389
discr, dd_vol_fluid, get_viscous_cfl(
383-
discr, dt, fluid_state, volume_dd=dd_vol_fluid)))
390+
discr, dt, fluid_state, volume_dd=dd_vol_fluid),
391+
initial=0.))
384392
wall_alpha = wall_time_scale * wall_model.thermal_diffusivity()
385393
wall_cfl = actx.to_numpy(
386394
nodal_max(
387395
discr, dd_vol_wall,
388-
wall_alpha * dt/wall_lengthscales**2))
396+
wall_alpha * dt/wall_lengthscales**2,
397+
initial=0.))
389398
if rank == 0:
390399
logger.info(f"Step: {step}, T: {t}, DT: {dt}\n"
391400
f"----- Fluid CFL: {fluid_cfl}, Wall CFL: {wall_cfl}\n"
@@ -471,8 +480,10 @@ def my_health_check(pressure):
471480
health_pres_min, health_pres_max),
472481
op="lor"):
473482
health_error = True
474-
p_min = actx.to_numpy(nodal_min(discr, dd_vol_fluid, pressure))
475-
p_max = actx.to_numpy(nodal_max(discr, dd_vol_fluid, pressure))
483+
p_min = actx.to_numpy(
484+
nodal_min(discr, dd_vol_fluid, pressure, initial=np.inf))
485+
p_max = actx.to_numpy(
486+
nodal_max(discr, dd_vol_fluid, pressure, initial=0.))
476487
logger.info(f"Pressure range violation ({p_min=}, {p_max=})")
477488
return health_error
478489

0 commit comments

Comments
 (0)