Skip to content

Commit 8068cd2

Browse files
committed
blending routine runs with new data structures
I have not yet checked if the initial blending results are correct; will do this via the diagnostics module, but it does not work yet, as I have not yet generalised the target generation features.
1 parent a4c7b5c commit 8068cd2

File tree

2 files changed

+33
-53
lines changed

2 files changed

+33
-53
lines changed

src/flow_solver/discretisation/time_update.py

+2-8
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,9 @@ def do(
161161
# Blending : Do blending before timestep
162162
######################################################
163163
swe_to_lake, Sol, mpv, t = schemes.blending_before_timestep(
164-
# Sol,
165-
# flux,
166-
# mpv,
167-
bld,
164+
sst,
168165
mem,
169-
# elem,
170-
# node,
171-
# th,
172-
ud,
166+
bld,
173167
label,
174168
writer,
175169
step,

src/interfaces/dynamics_blending/schemes.py

+31-45
Original file line numberDiff line numberDiff line change
@@ -114,34 +114,32 @@ def do_comp_to_psinc_conv(Sol, mpv, bld, elem, node, th, ud, label, writer):
114114

115115

116116
def do_psinc_to_comp_conv(
117-
Sol, flux, mpv, bld, elem, node, th, ud, label, writer, step, window_step, t, dt
117+
sst, mem, bld, label, writer, step, tout,
118118
):
119119
from ...flow_solver.discretisation import time_update
120120

121121
logging.info(f"Blending... step = {step}")
122-
Sol_freeze = copy.deepcopy(Sol)
123-
mpv_freeze = copy.deepcopy(mpv)
122+
Sol_freeze = copy.deepcopy(mem.sol)
123+
mpv_freeze = copy.deepcopy(mem.mpv)
124+
125+
mem.time.step -= 1
126+
mem.time.window_step = 0
124127

125128
ret = time_update.do(
126-
Sol,
127-
flux,
128-
mpv,
129-
t,
130-
t + dt,
131-
ud,
132-
elem,
133-
node,
134-
[0, step - 1],
135-
th,
129+
sst,
130+
mem,
131+
tout,
136132
bld=None,
137133
writer=None,
138134
debug=False,
139135
)
140136

137+
ud = sst.ud
138+
141139
fac_old = ud.blending_weight
142140
fac_new = 1.0 - fac_old
143-
dp2n_0 = fac_new * ret[2].p2_nodes_half + fac_old * mpv_freeze.p2_nodes_half
144-
dp2n_1 = fac_new * ret[2].p2_nodes + fac_old * mpv_freeze.p2_nodes
141+
dp2n_0 = fac_new * ret.mpv.p2_nodes_half + fac_old * mpv_freeze.p2_nodes_half
142+
dp2n_1 = fac_new * ret.mpv.p2_nodes + fac_old * mpv_freeze.p2_nodes
145143

146144
if ud.blending_type == "half":
147145
dp2n = dp2n_0
@@ -159,6 +157,8 @@ def do_psinc_to_comp_conv(
159157
Sol = Sol_freeze
160158
mpv = mpv_freeze
161159

160+
elem, node, _, _, _, th, _ = mem
161+
162162
if writer != None:
163163
writer.populate(str(label) + "_after_full_step", "dp2n", dp2n)
164164
logging.info("Converting PSINC to COMP")
@@ -382,15 +382,9 @@ def do_hydro_to_nonhydro_conv(
382382
# Blending calls from data.py
383383
######################################################
384384
def blending_before_timestep(
385-
# Sol,
386-
# flux,
387-
# mpv,
388-
bld,
385+
sst,
389386
mem,
390-
# elem,
391-
# node,
392-
# th,
393-
ud,
387+
bld,
394388
label,
395389
writer,
396390
step,
@@ -404,7 +398,8 @@ def blending_before_timestep(
404398
# Blending : Do full regime to limit regime conversion
405399
######################################################
406400
# do unpacking
407-
elem, node, Sol, flux, mpv, th, time = mem
401+
elem, node, Sol, flux, mpv, th, _ = mem
402+
ud = sst.ud
408403

409404
# these make sure that we are the correct window step
410405
if bld is not None and window_step == 0:
@@ -419,6 +414,10 @@ def blending_before_timestep(
419414
Sol, mpv, bld, elem, node, th, ud, label, writer
420415
)
421416

417+
418+
mem.Sol = Sol
419+
mem.mpv = mpv
420+
422421
######################################################
423422
# Blending : Do full steps or transition steps?
424423
######################################################
@@ -434,21 +433,15 @@ def blending_before_timestep(
434433
if c_init and bld.cb and ud.blending_conv is not None:
435434
# distinguish between Euler and SWE blending
436435
if ud.blending_conv != "swe":
437-
Sol, mpv = do_psinc_to_comp_conv(
438-
Sol,
439-
flux,
440-
mpv,
436+
do_psinc_to_comp_conv(
437+
sst,
438+
mem,
441439
bld,
442-
elem,
443-
node,
444-
th,
445440
ud,
446441
label,
447442
writer,
448443
step,
449-
window_step,
450-
t,
451-
dt,
444+
t + dt,
452445
)
453446

454447
######################################################
@@ -496,21 +489,14 @@ def blending_before_timestep(
496489
):
497490
# Distinguish between SWE and Euler blendings
498491
if ud.blending_conv != "swe":
499-
Sol, mpv = do_psinc_to_comp_conv(
500-
Sol,
501-
flux,
502-
mpv,
492+
do_psinc_to_comp_conv(
493+
sst,
494+
mem,
503495
bld,
504-
elem,
505-
node,
506-
th,
507-
ud,
508496
label,
509497
writer,
510498
step,
511-
window_step,
512-
t,
513-
dt,
499+
t + dt,
514500
)
515501
ud.is_compressible = 1
516502
ud.compressibility = 1.0

0 commit comments

Comments
 (0)