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)
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)
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)
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'
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,