Skip to content

Commit c2ecf50

Browse files
authored
implement a clean_state routine for compressible (#329)
this will enforce small_dens
1 parent 7ee23e1 commit c2ecf50

File tree

7 files changed

+17
-0
lines changed

7 files changed

+17
-0
lines changed

pyro/compressible/_defaults

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ grav = 0.0 ; gravitational acceleration (in y-direction)
2121

2222
riemann = HLLC ; HLLC or CGF
2323

24+
small_dens = -1.e200 ; minimum allowed density
25+
small_eint = -1.e200 ; minimum allowed specific internal energy
2426

2527
[sponge]
2628
do_sponge = 0 ; do we include a sponge source term

pyro/compressible/simulation.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,8 @@ def evolve(self):
293293
timestep dt.
294294
"""
295295

296+
self.clean_state(self.cc_data.data)
297+
296298
tm_evolve = self.tc.timer("evolve")
297299
tm_evolve.begin()
298300

@@ -437,6 +439,12 @@ def evolve(self):
437439

438440
tm_evolve.end()
439441

442+
def clean_state(self, U):
443+
"""enforce minimum density and eint on the conserved state U"""
444+
445+
U.v(n=self.ivars.idens)[:, :] = np.maximum(U.v(n=self.ivars.idens),
446+
self.rp.get_param("compressible.small_dens"))
447+
440448
def dovis(self):
441449
"""
442450
Do runtime visualization.

pyro/compressible_fv4/_defaults

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ grav = 0.0 ; gravitational acceleration (in y-direction)
2323

2424
riemann = CGF
2525

26+
small_dens = -1.e200 ; minimum allowed density
2627

2728
[sponge]
2829
do_sponge = 0 ; do we include a sponge source term

pyro/compressible_fv4/simulation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ def substep(self, myd):
1919
compute the advective source term for the given state
2020
"""
2121

22+
self.clean_state(myd.data)
23+
2224
myg = myd.grid
2325

2426
# compute the source terms -- we need to do this first

pyro/compressible_rk/_defaults

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ riemann = HLLC ; HLLC or CGF
2525

2626
well_balanced = 0 ; use a well-balanced scheme to keep the model in hydrostatic equilibrium
2727

28+
small_dens = -1.e200 ; minimum allowed density
2829

2930
[sponge]
3031
do_sponge = 0 ; do we include a sponge source term

pyro/compressible_rk/simulation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ def substep(self, myd):
1515
conservative state defined as part of myd
1616
"""
1717

18+
self.clean_state(myd.data)
19+
1820
myg = myd.grid
1921

2022
# source terms -- note: this dt is the entire dt, not the

pyro/compressible_sdc/_defaults

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ grav = 0.0 ; gravitational acceleration (in y-direction)
1919

2020
riemann = CGF
2121

22+
small_dens = -1.e200 ; minimum allowed density
2223

2324
[sponge]
2425
do_sponge = 0 ; do we include a sponge source term

0 commit comments

Comments
 (0)