Exemplo n.º 1
0
def run(opt):
    """Run the systems."""
    
    Config = FloxConfiguration.fromfile(opt.configuration)
    Writer = HDF5Writer(opt.filename)
    
    iterations = int(Config["iterations"])
    chunks = Config["system.nt"] - 1
    
    Stable = initialize(Config, opt)
    Stable.Rayleigh = critical_raleigh_number(Stable, opt.mode) * 0.8
    print(Stable)
    LE_stable = LinearEvolverProcess(Stable, Writer, ('stable-{:d}'.format(opt.mode),), (Config['time'], iterations, chunks))
    LE_stable.name = "Stable-LinearEvolver"
    LE_stable.start()
    
    Critical = initialize(Config, opt)
    Critical.Rayleigh = critical_raleigh_number(Critical, opt.mode)
    print(Critical)
    LE_critical = LinearEvolverProcess(Critical, Writer, ('critical-{:d}'.format(opt.mode),), (Config['time'], iterations, chunks))
    LE_critical.name = "Critical-LinearEvolver"
    LE_critical.start()
    
    Unstable = initialize(Config, opt)
    Unstable.Rayleigh = critical_raleigh_number(Unstable, opt.mode) * 1.2
    print(Unstable)
    LE_unstable = LinearEvolverProcess(Unstable, Writer, ('unstable-{:d}'.format(opt.mode),), (Config['time'], iterations, chunks))
    LE_unstable.name = "Unstable-LinearEvolver"
    LE_unstable.start()
    
    LE_stable.join()
    LE_critical.join()
    LE_unstable.join()
Exemplo n.º 2
0
def analyze(opt):
    """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:]))
Exemplo n.º 3
0
def plot(opt):
    """Plot just the stability criteria."""
    import matplotlib.pyplot as plt
    Config = FloxConfiguration.fromfile(opt.configuration)
    Writer = HDF5Writer(opt.filename)
    
    fig = plt.figure(figsize=(11, 8.5))
    
    for i,system in enumerate("stable critical unstable".split()):
        MVC = MultiViewController(fig, 3, 3, wspace=0.6, hspace=0.4)
        System = NDSystem2D.from_params(Config["system"])
        Writer.read(System, "{}-{:d}".format(system, opt.mode))
        print(System)
        MVC[0,i] = EvolutionViewStabilityTest("Temperature", opt.mode, System.nz//3)
        MVC[1,i] = EvolutionViewStabilityTest("Vorticity", opt.mode, System.nz//3)
        MVC[2,i] = EvolutionViewStabilityTest("Stream", opt.mode, System.nz//3)
        MVC.views[0].ax.text(0.5, 1.25, system.capitalize(), transform=MVC.views[0].ax.transAxes, ha='center')
        MVC.update(System)
    
    fig.savefig(opt.plot, dpi=300)
Exemplo n.º 4
0
def animate(opt):
    """Animate the data sets."""
    from astropy.utils.console import ProgressBar
    import matplotlib
    matplotlib.rcParams['text.usetex'] = False
    import matplotlib.pyplot as plt
    Config = FloxConfiguration.fromfile(opt.configuration)
    Writer = HDF5Writer(opt.filename)
    
    fig = plt.figure(figsize=(11, 8.5))
    
    Plots = []
    
    for i,system in enumerate("stable critical unstable".split()):
        MVC = MultiViewController(fig, 3, 3, wspace=0.6, hspace=0.4)
        System = NDSystem2D.from_params(Config["system"])
        Writer.read(System, "{}-{:d}".format(system, opt.mode))
        print(System)
        MVC[0,i] = EvolutionViewStabilityTest("Temperature", opt.mode, System.nz//3)
        MVC[1,i] = EvolutionViewStabilityTest("Vorticity", opt.mode, System.nz//3)
        MVC[2,i] = EvolutionViewStabilityTest("Stream", opt.mode, System.nz//3)
        System.it = 2
        MVC.update(System)
        Plots.append((MVC, System))
        
    with ProgressBar(System.nit-2) as pbar:
        def update(i):
            """Animation"""
            for MVC, System in Plots:
                System.it = i+2
                MVC.update(System)
            pbar.update(i)
        
        anim = animation.FuncAnimation(fig, update, frames=int(System.nit)-2, repeat=False)
        # anim.save(opt.movie, writer='ffmpeg')
        plt.show()
Exemplo n.º 5
0
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("")
    print(System)
    print(System.diagnostic_string())
Exemplo n.º 6
0
from matplotlib.colors import SymLogNorm

def filename(extension=".yml", base=None):
    """Filenames related to this file!"""
    directory = os.path.dirname(__file__)
    base = os.path.splitext(os.path.basename(__file__))[0] if base is None else base
    return os.path.join(directory, base + extension)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('base', nargs="?", default='linear_op')
    opt = parser.parse_args()
    rcParams['text.usetex'] = False
    ipydb()
    Config = FloxConfiguration.fromfile(filename(".yml", base=opt.base))
    System = NDSystem2D.from_params(Config["system"])
    Writer = HDF5Writer(filename(".hdf5", base=opt.base))
    Writer.read(System, 'main')
    System.it = 1
    print(System)
    print(System.diagnostic_string())
    fig = plt.figure(figsize=(10, 10))
    MVC = MultiViewController(fig, 2, 2)
    MVC[0,0] = GridView("Temperature")
    MVC[1,0] = EvolutionViewStabilityTest("Temperature", 1, 33)
    MVC[0,1] = GridView("Vorticity", cmap='Blues', vmin=-1e-7, vmax=1e-7, norm=SymLogNorm(1e-9), perturbed=True)
    MVC[1,1] = EvolutionViewStabilityTest("Vorticity", 1, 33)
    MVC.update(System)
    plt.show()
    
Exemplo n.º 7
0
from astropy.utils.console import ProgressBar
import multiprocessing as mp
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import animation
from Flox.process.evolver import EvolverProcessing

from pyshell.util import ipydb, askip



if __name__ == '__main__':
    
    mode = 1
    
    Config = FloxConfiguration.fromfile(os.path.join(os.path.dirname(__file__),"linear_op.yml"))
    System = NDSystem2D.from_params(Config["system"])
    System.Rayleigh = 1e6
    System.Prandtl = 0.5
    System.nz = 100
    system.nn = 50
    System.aspect = 3
    System.nt = 500
    System.initialize_arrays()
    stable_temperature_gradient(System)
    for m in range(1, system.nn//10):
        single_mode_linear_perturbation(System, m, eps=5e-3)
    # single_mode_linear_perturbation(System, 1, eps=5e-1)
    matplotlib.rcParams['text.usetex'] = False
    MVC = setup_movie(plt.figure(figsize=(10, 10)))
    MVC.update(System)
Exemplo n.º 8
0
import astropy.units as u

from Flox.magneto.system import MagnetoSystem
from Flox.input import FloxConfiguration
from Flox.magneto import MagnetoEvolver
from Flox.process._threads import omp_set_num_threads
# from pyshell.util import ipydb

def filename(extension=".yml"):
    """Make a filename"""
    base = os.path.splitext(__file__)[0]
    return base + extension

if __name__ == '__main__':
    
    
    Config = FloxConfiguration.fromfile(filename(".yml"))
    System = MagnetoSystem.from_params(Config["system"])
    iterations = int(Config["iterations"])
    time = Config["time"].to(u.s).value / 100
    ME = MagnetoEvolver.from_system(System)
    print("Profiling {} for {:d} iterations".format(ME, iterations))
    cProfile.runctx("omp_set_num_threads(int(Config.get('threads',1)))\nME.evolve(time, iterations)", globals(), locals(), filename(".prof"))
    s = pstats.Stats(filename(".prof"))
    s.strip_dirs().sort_stats("time").print_stats()
    if os.path.exists(filename("-old.prof")):
        s = pstats.Stats(filename("-old.prof"))
        s.strip_dirs().sort_stats("time").print_stats()
    
    
Exemplo n.º 9
0
def filename(extension=".yml", base=None):
    """Filenames related to this file!"""
    directory = os.path.dirname(__file__)
    base = os.path.splitext(os.path.basename(__file__))[0] if base is None else base
    return os.path.join(directory, base + extension)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('base', nargs="?", default='nonlinear')
    parser.add_argument('-s','--stability', type=int, help='Show stability plots')
    opt = parser.parse_args()
    rcParams['text.usetex'] = False
    ipydb()
    Config = FloxConfiguration.fromfile(filename(".yml", base="linear_op"))
    System = NDSystem2D.from_params(Config["system"])
    Writer = HDF5Writer(filename(".hdf5", base=opt.base))
    Writer.read(System, 'nonlinear')
    print(System)
    fig = plt.figure(figsize=(6,3.5))
    MVC = setup_movie(fig, kwargs=[dict(cmap="hot", interpolation='bilinear')])
    System.it = 2
    MVC.update(System)
    System.infer_iteration()
    with ProgressBar(System.it) as PBar:
        def update(i):
            System.it = i
            MVC.update(System)
            PBar.update(i)
        
Exemplo n.º 10
0
    base = os.path.splitext(
        os.path.basename(__file__))[0] if base is None else base
    return os.path.join(directory, base + extension)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('base', nargs="?", default='nonlinear')
    parser.add_argument('-s',
                        '--stability',
                        type=int,
                        help='Show stability plots')
    opt = parser.parse_args()
    rcParams['text.usetex'] = False
    ipydb()
    Config = FloxConfiguration.fromfile(filename(".yml", base="linear_op"))
    System = NDSystem2D.from_params(Config["system"])
    Writer = HDF5Writer(filename(".hdf5", base=opt.base))
    Writer.read(System, 'nonlinear')
    print(System)
    fig = plt.figure(figsize=(6, 3.5))
    MVC = setup_movie(fig, kwargs=[dict(cmap="hot", interpolation='bilinear')])
    System.it = 2
    MVC.update(System)
    System.infer_iteration()
    with ProgressBar(System.it) as PBar:

        def update(i):
            System.it = i
            MVC.update(System)
            PBar.update(i)
Exemplo n.º 11
0
import os, os.path
import queue
from astropy.utils.console import ProgressBar
import multiprocessing as mp
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import animation
from Flox.process.evolver import EvolverProcessing

from pyshell.util import ipydb, askip

if __name__ == '__main__':

    mode = 1

    Config = FloxConfiguration.fromfile(
        os.path.join(os.path.dirname(__file__), "linear_op.yml"))
    System = NDSystem2D.from_params(Config["system"])
    System.Rayleigh = 1e6
    System.Prandtl = 0.5
    System.nz = 100
    system.nn = 50
    System.aspect = 3
    System.nt = 500
    System.initialize_arrays()
    stable_temperature_gradient(System)
    for m in range(1, system.nn // 10):
        single_mode_linear_perturbation(System, m, eps=5e-3)
    # single_mode_linear_perturbation(System, 1, eps=5e-1)
    matplotlib.rcParams['text.usetex'] = False
    MVC = setup_movie(plt.figure(figsize=(10, 10)))
    MVC.update(System)
Exemplo n.º 12
0
import matplotlib.pyplot as plt
import matplotlib

def filename(extension=".yml", base=None):
    """Filenames related to this file!"""
    directory = os.path.dirname(__file__)
    base = os.path.splitext(os.path.basename(__file__))[0] if base is None else base
    return os.path.join(directory, base + extension)
    


if __name__ == '__main__':
    ipydb()
    plt.ion()
    
    Config = FloxConfiguration.fromfile(filename(".yml", "nonlinear_op"))
    System = NDSystem2D.from_params(Config["system"])
    LSystem = NDSystem2D.from_params(Config["system"])
    iterations = int(Config["iterations"])
    chunks = System.nt - System.it - 1
    stable_temperature_gradient(System)
    LSystem.read_packet(System.create_packet())
    
    
    print("INITIAL")
    print(System)
    print(System.diagnostic_string())
    LE = LinearEvolver.from_system(LSystem)
    LE.read_packet(LSystem.create_packet())
    NLE = NonlinearEvolver.from_system(System)
    NLE.read_packet(System.create_packet())
Exemplo n.º 13
0
    base = os.path.splitext(
        os.path.basename(__file__))[0] if base is None else base
    return os.path.join(directory, base + extension)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('base', nargs="?", default='linear_op')
    parser.add_argument('-s',
                        '--stability',
                        type=int,
                        help='Show stability plots')
    opt = parser.parse_args()
    rcParams['text.usetex'] = False
    ipydb()
    Config = FloxConfiguration.fromfile(filename(".yml", base=opt.base))
    System = NDSystem2D.from_params(Config["system"])
    Writer = HDF5Writer(filename(".hdf5", base=opt.base))
    Writer.read(System, 'main')
    print(System)
    fig = plt.figure(figsize=(10, 10))
    rows = 2 if opt.stability else 1
    MVC = MultiViewController(fig, rows, 3)
    MVC[0, 0] = GridView("Temperature", perturbed=False)
    MVC[0, 1] = GridView("Vorticity", cmap='Blues')
    MVC[0, 2] = GridView("Stream", cmap='Greens')
    if opt.stability:
        MVC[1, 0] = EvolutionViewStabilityTest("Temperature", opt.stability,
                                               33)
        MVC[1, 1] = EvolutionViewStabilityTest("Vorticity", opt.stability, 33)
        MVC[1, 2] = EvolutionViewStabilityTest("Stream", opt.stability, 33)