def para_init(n_steps, C): ''' Like init, but takes a complex array of dimension (Nz, 2, dimR, Nx/2) as an input for the initial condition instead of a restart file. Used in parallel LSS. ''' global __is_initialized__ assert not __is_initialized__ __is_initialized__ = True assert n_steps >= 0 c_channel.c_init(int(Nx),int(Ny),int(Nz), float(Lx),float(Lz),float(Re), float(meanU*2),float(dt),int(n_steps)) assert C.shape == (c_channel.c_Nz(), 2, c_channel.c_dimR(), c_channel.c_Nx() / 2) c_channel.c_primal(0, C)
def init(n_steps, ru_steps=0, restart=None): ''' Must be called before any other calls in this module. n_steps: the number of time steps to run and save ru_steps: the number of run up time steps (not including n_steps). These steps are not saved. restart: If None (default), start from a perturbed laminar solution. If a filename, read the .hd5 file as the restart file. ''' global __is_initialized__ assert not __is_initialized__ __is_initialized__ = True assert n_steps >= 0 and ru_steps >= 0 c_channel.c_init(int(Nx),int(Ny),int(Nz), float(Lx),float(Lz),float(Re), float(meanU*2),float(dt),int(n_steps)) if restart is None: c_channel.c_primal(int(ru_steps), np.zeros([0,0,0,0], complex)) else: C = read_solution(restart) assert C.shape == (c_channel.c_Nz(), 2, c_channel.c_dimR(), c_channel.c_Nx() / 2) c_channel.c_primal(int(ru_steps), C)