Beispiel #1
0
def DoubleLaguerre(name, N, center=0.0, stretch=1.0, dealias=1):
    b0 = de.Laguerre('b0',
                     int(N // 2),
                     edge=center,
                     stretch=-stretch,
                     dealias=dealias)
    b1 = de.Laguerre('b1',
                     int(N // 2),
                     edge=center,
                     stretch=stretch,
                     dealias=dealias)
    return de.Compound(name, (b0, b1), dealias=dealias)
Beispiel #2
0
def ChebLag(name, N, edge=0.0, stretch=1.0, cwidth=1.0, dealias=1):
    b1 = de.Chebyshev('b1',
                      int(N // 2),
                      interval=(edge, edge + cwidth),
                      dealias=dealias)
    b2 = de.Laguerre('b2',
                     int(N // 2),
                     edge=edge + cwidth,
                     stretch=stretch,
                     dealias=dealias)
    return de.Compound(name, (b1, b2), dealias=dealias)
Beispiel #3
0
def LCCL(name, N, center=0.0, stretch=1.0, cwidth=1.0, dealias=1):
    b1 = de.Laguerre('b1',
                     int(N // 4),
                     edge=center - cwidth,
                     stretch=-stretch,
                     dealias=dealias)
    b2 = de.Chebyshev('b2',
                      int(N // 4),
                      interval=(center - cwidth, center),
                      dealias=dealias)
    b3 = de.Chebyshev('b3',
                      int(N // 4),
                      interval=(center, center + cwidth),
                      dealias=dealias)
    b4 = de.Laguerre('b4',
                     int(N // 4),
                     edge=center + cwidth,
                     stretch=stretch,
                     dealias=dealias)
    return de.Compound(name, (b1, b2, b3, b4), dealias=dealias)
Beispiel #4
0
logger = logging.getLogger(__name__)

kx = 0.
ky = 0.438
nz = 500
Lz = 50

Re = 0.
Pr = 1
Ra = 25
use_Laguerre = False
find_crit = True

if use_Laguerre:
    logger.info("Running with Laguerre z-basis")
    z_basis = de.Laguerre('z', nz, dealias=3 / 2)
else:
    z_basis = de.Chebyshev('z', nz, interval=(0, Lz), dealias=3 / 2)

domain = de.Domain([z_basis], comm=MPI.COMM_SELF)

problem = de.EVP(domain,
                 variables=['p', 'θ', 'u', 'v', 'w', 'θz', 'uz', 'vz', 'wz'],
                 eigenvalue='sigma')
problem.parameters['Ra'] = Ra
problem.parameters['Re'] = Re
problem.parameters['Pr'] = Pr
problem.parameters['kx'] = kx
problem.parameters['ky'] = ky
problem.substitutions['Uz'] = '-Pr'
problem.substitutions['dt(A)'] = 'sigma*A'
Beispiel #5
0
stop_sim_time = run_params.getfloat('stop_sim_time')
stop_iteration = run_params.getint('stop_iteration')
dt = run_params.getfloat('dt')

threeD = True
if nx == 0:
    threeD = False
    logger.info("Running in 2D")
else:
    logger.info("Running in 3D")
# Create bases and domain
start_init_time = time.time()
y_basis = de.Fourier('y', ny, interval=(0, Ly), dealias=3 / 2)
if use_Laguerre:
    logger.info("Running with Laguerre z-basis")
    z_basis = de.Laguerre('z', nz, stretch=stretch, dealias=3 / 2)
else:
    Lz = params.getfloat('Lz')
    logger.info("Running with Chebyshev z-basis, Lz = {}".format(Lz))
    z_basis = de.Chebyshev('z', nz, interval=(0, Lz), dealias=3 / 2)
bases = [y_basis, z_basis]
if threeD:
    x_basis = de.Fourier('x', nx, interval=(0, Lx), dealias=3 / 2)
    bases.insert(0, x_basis)

domain = de.Domain(bases, grid_dtype=np.float64)
if domain.dist.comm.rank == 0:
    if not datadir.exists():
        datadir.mkdir()

problem = de.IVP(domain,