def test(): sim = Simulation() # Geometry and Model Equations sim.geomy = 'periodic' sim.stepper = Step.AB3 sim.method = 'Spectral' sim.dynamics = 'Linear' sim.flux_method = Flux.spectral_sw # Specify paramters sim.Ly = 4000e3 sim.Ny = 256 sim.f0 = 0. sim.Hs = [100.] sim.rho = [1025.] sim.end_time = sim.Ly/(np.sqrt(sim.Hs[0]*sim.g)) # Plotting parameters sim.animate = 'None' sim.output = False sim.diagnose = False # Initialize the grid and zero solutions sim.initialize() for ii in range(sim.Nz): sim.soln.h[:,:,ii] = sim.Hs[ii] # Gaussian initial conditions x0 = 1.*sim.Lx/2. W = 200.e3 amp = 1. sim.soln.h[:,:,0] += amp*np.exp(-(sim.Y)**2/(W**2)) IC = sim.soln.h[:,:,0].copy() sim.run() # Compare final state to initial conditions # error_h is normalized using the triangle inequality error_h = np.linalg.norm(IC - sim.soln.h[:,:,0])/(np.linalg.norm(IC) + np.linalg.norm(sim.soln.h[:,:,0])) error_v = np.linalg.norm(sim.soln.v[:,:,0]) assert (error_h < 1e-6) and (error_v < 5e-5)
def test(): sim = Simulation() # Create a simulation object # Geometry and Model Equations sim.geomx = 'walls' sim.geomy = 'walls' sim.stepper = Step.AB3 sim.method = 'Spectral' sim.dynamics = 'Nonlinear' sim.flux_method = Flux.spectral_sw # Specify paramters sim.Lx = 4000e3 sim.Ly = 4000e3 sim.Nx = 128 sim.Ny = 128 sim.Nz = 1 sim.g = 9.81 sim.f0 = 1.e-4 sim.beta = 0e-11 sim.cfl = 0.1 sim.Hs = [100.] sim.rho = [1025.] sim.end_time = 5. * minute sim.animate = 'None' sim.output = False sim.diagnose = False # Initialize the grid and zero solutions sim.initialize() for ii in range(sim.Nz): # Set mean depths sim.soln.h[:, :, ii] = sim.Hs[ii] # Gaussian initial conditions W = 200.e3 # Width amp = 1. # Amplitude sim.soln.h[:, :, 0] += amp * np.exp(-(sim.X / W)**2 - (sim.Y / W)**2) # Run the simulation sim.run()
def test(): sim = Simulation() # Create a simulation object # Geometry and Model Equations sim.geomx = 'periodic' sim.geomy = 'periodic' sim.stepper = Step.AB3 sim.method = 'Spectral' sim.dynamics = 'Nonlinear' sim.flux_method = Flux.spectral_sw # Specify paramters sim.Lx = 4000e3 sim.Ly = 4000e3 sim.Nx = 128 sim.Ny = 128 sim.Nz = 1 sim.g = 9.81 sim.f0 = 1.e-4 sim.beta = 0e-11 sim.cfl = 0.1 sim.Hs = [100.] sim.rho = [1025.] sim.end_time = 5.*minute sim.animate = 'None' sim.output = False sim.diagnose = False # Initialize the grid and zero solutions sim.initialize() for ii in range(sim.Nz): # Set mean depths sim.soln.h[:,:,ii] = sim.Hs[ii] # Gaussian initial conditions W = 200.e3 # Width amp = 1. # Amplitude sim.soln.h[:,:,0] += amp*np.exp(-(sim.X/W)**2 - (sim.Y/W)**2) # Run the simulation sim.run()
def test(): sim = Simulation() # Geometry and Model Equations sim.geomy = 'periodic' sim.stepper = Step.AB2 sim.method = 'Spectral' sim.dynamics = 'Nonlinear' sim.flux_method = Flux.spectral_sw # Specify paramters sim.Ly = 4000e3 sim.Ny = 128 sim.cfl = 0.5 sim.Hs = [100.] sim.rho = [1025.] sim.end_time = 5. * minute # Plotting parameters sim.animate = 'None' sim.output = False sim.diagnose = False # Initialize the grid and zero solutions sim.initialize() for ii in range(sim.Nz): sim.soln.h[:, :, ii] = sim.Hs[ii] # Gaussian initial conditions x0 = 1. * sim.Lx / 2. W = 200.e3 amp = 1. sim.soln.h[:, :, 0] += amp * np.exp(-(sim.Y)**2 / (W**2)) sim.run()
def test(): sim = Simulation() # Geometry and Model Equations sim.geomy = 'periodic' sim.stepper = Step.Euler sim.method = 'Spectral' sim.dynamics = 'Nonlinear' sim.flux_method = Flux.spectral_sw # Specify paramters sim.Ly = 4000e3 sim.Ny = 128 sim.cfl = 0.5 sim.Hs = [100.] sim.rho = [1025.] sim.end_time = 5.*minute # Plotting parameters sim.animate = 'None' sim.output = False sim.diagnose = False # Initialize the grid and zero solutions sim.initialize() for ii in range(sim.Nz): sim.soln.h[:,:,ii] = sim.Hs[ii] # Gaussian initial conditions x0 = 1.*sim.Lx/2. W = 200.e3 amp = 1. sim.soln.h[:,:,0] += amp*np.exp(-(sim.Y)**2/(W**2)) sim.run()
sim.Ny = 128 # Grid points in y sim.Nz = 1 # Number of layers sim.g = 9.81 # Gravity (m/sec^2) sim.f0 = 1.e-4 # Coriolis (1/sec) sim.beta = 0e-11 # Coriolis beta parameter (1/m/sec) sim.cfl = 0.1 # CFL coefficient (m) sim.Hs = [100.] # Vector of mean layer depths (m) sim.rho = [1025.] # Vector of layer densities (kg/m^3) sim.end_time = 2.*24.*hour # End Time (sec) # Parallel? Only applies to the FFTWs sim.num_threads = 4 # Plotting parameters sim.plott = 15.*minute # Period of plots sim.animate = 'Anim' # 'Save' to create video frames, # 'Anim' to animate, # 'None' otherwise sim.plot_vars = ['h'] #sim.plot_vars = ['vort','div'] #sim.clims = [[-0.015, 0.015],[-0.001, 0.001]] # Output parameters sim.output = False # True or False sim.savet = 1.*hour # Time between saves # Diagnostics parameters sim.diagt = 2.*minute # Time for output sim.diagnose = False # True or False # Initialize the grid and zero solutions
sim.Nx = 128 # Grid points in x sim.Ny = 128 # Grid points in y sim.Nz = 1 # Number of layers sim.g = 9.81 # Gravity (m/sec^2) sim.f0 = 1.e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta (1/m/sec) sim.Hs = [500.] # Vector of mean layer depths (m) sim.rho = [1025.] # Vector of layer densities (kg/m^3) sim.end_time = 20 * 24. * hour # End Time (sec) # Parallel? Only applies to the FFTWs sim.num_threads = 32 # Plotting parameters sim.plott = 12. * hour # Period of plots sim.animate = 'Save' # 'Save' to create video frames, # 'Anim' to animate, # 'None' otherwise sim.plot_vars = ['vort', 'v', 'u', 'h'] sim.clims = [[-0.8, 0.8], [-0.5, 0.5], [], []] # Output parameters sim.output = True # True or False sim.savet = 10. * day # Time between saves # Diagnostics parameters sim.diagt = 2. * minute # Time for output sim.diagnose = False # True or False # Initialize the grid and zero solutions sim.initialize()
sim.Ny = 512 # Grid points in y sim.Nz = 1 # Number of layers sim.g = 9.81 # Gravity (m/sec^2) sim.f0 = 1.0e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta parameter (1/m/sec) sim.cfl = 0.15 # CFL coefficient (m) sim.Hs = [100.0] # Vector of mean layer depths (m) sim.rho = [1025.0] # Vector of layer densities (kg/m^3) sim.end_time = 6.0 * 24.0 * hour # End Time (sec) # Parallel? Only applies to the FFTWs sim.num_threads = 4 # Plotting parameters sim.plott = 20.0 * minute # Period of plots sim.animate = "Anim" # 'Save' to create video frames, # 'Anim' to animate, # 'None' otherwise sim.plot_vars = ["vort", "div", "h"] # Specify which variables to plot # sim.plot_vars = ['u','v','h'] # Specify which variables to plot # Specify manual ylimits if desired # An empty list uses default limits sim.ylims = [[-0.01, 0.01], [-2.0, 2.0], [-1.0, 1.0]] # sim.ylims=[[-0.3,0.3],[-0.2,0.2],[-1.0,1.0]] # Output parameters sim.output = False # True or False sim.savet = 1.0 * hour # Time between saves # Diagnostics parameters
# Specify paramters sim.Lx = 200e3 # Domain extent (m) sim.Ly = 200e3 # Domain extent (m) # sim.Nx = 128 # Grid points in x sim.Ny = 128 # Grid points in y sim.Nz = 1 # Number of layers sim.g = 9.81 # Gravity (m/sec^2) sim.f0 = 1.0e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta (1/m/sec) sim.cfl = 0.2 # CFL coefficient (m) sim.Hs = [100.0] # Vector of mean layer depths (m) sim.rho = [1025.0] # Vector of layer densities (kg/m^3) sim.end_time = 14 * 24.0 * hour # End Time (sec) # Initialize the grid and zero solutions sim.animate = "None" sim.diagnose = False sim.output = False sim.initialize() # Define Differentiation Matrix and grid Dy, y = cheb(sim.Ny) y = (y[:, 0] + 1) * sim.Ly / 2 Dy = Dy * (2 / sim.Ly) # Define Basic State: Bickley Jet Ljet = 20e3 # Jet width Umax = 0.5 # Maximum speed amp = Umax * sim.f0 * Ljet / sim.g # Elevation of free-surface in basic state sim.UB = sim.g * amp / (sim.f0 * Ljet) / (np.cosh((y - sim.Ly / 2.0) / Ljet) ** 2)
# Specify paramters sim.Lx = 200e3 # Domain extent (m) sim.Ly = 200e3 # Domain extent (m) #sim.Nx = 128 # Grid points in x sim.Ny = 128 # Grid points in y sim.Nz = 1 # Number of layers sim.g = 9.81 # Gravity (m/sec^2) sim.f0 = 1.e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta (1/m/sec) sim.cfl = 0.2 # CFL coefficient (m) sim.Hs = [100.] # Vector of mean layer depths (m) sim.rho = [1025.] # Vector of layer densities (kg/m^3) sim.end_time = 14 * 24. * hour # End Time (sec) # Initialize the grid and zero solutions sim.animate = 'None' sim.diagnose = False sim.output = False sim.initialize() # Define Differentiation Matrix and grid Dy, y = cheb(sim.Ny) y = (y[:, 0] + 1) * sim.Ly / 2 Dy = Dy * (2 / sim.Ly) # Define Basic State: Bickley Jet Ljet = 20e3 # Jet width Umax = 0.5 # Maximum speed amp = Umax * sim.f0 * Ljet / sim.g # Elevation of free-surface in basic state sim.UB = sim.g * amp / (sim.f0 * Ljet) / (np.cosh((y - sim.Ly / 2.) / Ljet)**2) sim.HB = sim.Hs[0] - amp * np.tanh((y - sim.Ly / 2.) / Ljet)