import numpy as np from Flox.system import NDSystem2D from Flox.input import FloxConfiguration from Flox.linear import LinearEvolver from Flox.io import HDF5Writer from Flox.ic import stable_temperature_gradient, standard_linear_perturbation, single_mode_linear_perturbation from pyshell.util import ipydb def filename(extension=".yml"): """docstring for filename""" base = os.path.splitext(__file__)[0] return base + extension if __name__ == '__main__': ipydb() Config = FloxConfiguration.fromfile(filename(".yml")) System = NDSystem2D.from_params(Config["system"]) iterations = int(Config["iterations"]) chunks = System.nt - System.it - 1 Writer = HDF5Writer(filename(".hdf5")) System.Rayleigh = 779.27 stable_temperature_gradient(System) single_mode_linear_perturbation(System, mode=1) print(System) print(System.diagnostic_string()) LE = LinearEvolver.from_system(System) LE.step(LE.delta_time()) LE.evolve_system(System, Config['time'], iterations, chunks) print("")
"""Analyze the data, showing the late time values of the stability criterion.""" import matplotlib.pyplot as plt Config = FloxConfiguration.fromfile(opt.configuration) Writer = HDF5Writer(opt.filename) for i, system in enumerate("stable critical unstable".split()): System = NDSystem2D.from_params(Config["system"]) Writer.read(System, "{}-{:d}".format(system, opt.mode)) print(System) print(System.diagnostic_string()) print(System.nz // 3) for array in System.list_arrays(): if array == "Time": continue data = System.engine[array][System.nz // 3, 1] ln_data = np.log(np.abs(data)) print("{:15.15s}: {}".format(array, data[-5:])) print("{:15.15s}: {}".format(array, np.diff(ln_data)[-4:])) if __name__ == '__main__': opt = parse_options() ipydb() if "run" in opt.action: run(opt) if "plot" in opt.action: plot(opt) if "animate" in opt.action: animate(opt) if "analyze" in opt.action: analyze(opt)