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
3 changes: 3 additions & 0 deletions pyro/compressible/derives.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ def derive_primitives(myd, varnames):
elif var == "soundspeed":
derived_vars.append(np.sqrt(gamma*p/dens))

elif var == "machnumber":
derived_vars.append(np.sqrt(u**2 + v**2) / np.sqrt(gamma*p/dens))

elif var == "vorticity":
derived_vars.append(vort)

Expand Down
21 changes: 14 additions & 7 deletions pyro/util/io_pyro.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,13 +127,20 @@ def read(filename):

sim.read_extras(f)

# check if there are derived variables
try:
derives = importlib.import_module(f"pyro.{solver_name}.derives")
sim.cc_data.add_derived(derives.derive_primitives)

except ModuleNotFoundError:
pass
# check if there are derived variables -- since we do a lot of
# inheritance, we want to start with the deepest class and
# work backwards through the inheritance until we find a derives
# module
for mod in [cls.__module__ for cls in type(sim).__mro__ if cls is not object]:
try:
derives = importlib.import_module(f"{mod.replace('simulation', 'derives')}")
sim.cc_data.add_derived(derives.derive_primitives)

except ModuleNotFoundError:
continue

else:
break

if solver_name is not None:
return sim
Expand Down
Loading