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()
# pythonpath environment variable sys.path.append('../src') import Steppers as Step import Fluxes as Flux from PyRsw import Simulation from constants import minute, hour, day sim = Simulation() # Create a simulation object sim.run_name = '2D GeoAdjust' # Geometry and Model Equations sim.geomx = 'periodic' # Geometry Types: 'periodic' or 'walls' sim.geomy = 'periodic' sim.stepper = Step.AB3 # Time-stepping algorithm: Euler, AB2, RK4 sim.method = 'Spectral' # Numerical method: 'Spectral' sim.dynamics = 'Nonlinear' # Dynamics: 'Nonlinear' or 'Linear' sim.flux_method = Flux.spectral_sw # Flux method: spectral_sw is only option currently # Specify paramters sim.Lx = 4000e3 # Domain extent (m) sim.Ly = 3000e3 # 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-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)
# pythonpath environment variable sys.path.append('../src') import Steppers as Step import Fluxes as Flux from PyRsw import Simulation from constants import minute, hour, day sim = Simulation() # Create a simulation object sim.run_name = '2D_Bickley_Jet_H500' # Geometry and Model Equations sim.geomx = 'periodic' # Geometry Types: 'periodic' or 'walls' sim.geomy = 'walls' sim.stepper = Step.AB3 # Time-stepping algorithm: Euler, AB2, RK4 sim.method = 'Spectral' # Numerical method: 'Spectral' sim.dynamics = 'Nonlinear' # Dynamics: 'Nonlinear' or 'Linear' sim.flux_method = Flux.spectral_sw # Flux method: spectral_sw is only option currently # 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.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)
# In the future, it could also be added to the # pythonpath environment variable sys.path.append('../src') import Steppers as Step from PyRsw import Simulation from constants import minute, hour, day sim = Simulation() # Create a simulation object sim.run_name = '1D_Sadourny' # Geometry and Model Equations sim.geomy = 'walls' # Geometry Types: 'periodic' or 'walls' sim.stepper = Step.AB3 # Time-stepping algorithm: Euler, AB2, RK4 sim.dynamics = 'Nonlinear' # Dynamics: 'Nonlinear' or 'Linear' sim.method = 'Sadourny' # Numerical method: 'Sadourny' sim.method = 'Spectral' # Specify paramters sim.Lx = 4000e3 # Domain extent (m) sim.Ly = 4000e3 # Domain extent (m) sim.Nx = 1 # 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 = 0.e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta parameter (1/m/sec) sim.Hs = [100.] # Vector of mean layer depths (m) sim.rho = [1025.] # Vector of layer densities (kg/m^3) sim.end_time = 1.0 * 24. * hour # End Time (sec)
# pythonpath environment variable sys.path.append('../src') import Steppers as Step import Fluxes as Flux from PyRsw import Simulation from constants import minute, hour, day sim = Simulation() # Create a simulation object sim.run_name = '1D GeoAdjust' # Geometry and Model Equations sim.geomy = 'periodic' # Geometry Types: 'periodic' or 'walls' sim.stepper = Step.AB3 # Time-stepping algorithm: Euler, AB2, RK4 sim.dynamics = 'Linear' # Dynamics: 'Nonlinear' or 'Linear' sim.method = 'Sadourny' # Numerical method: 'Sadourny' sim.flux_method = Flux.sadourny_sw # Flux method: # Specify paramters sim.Lx = 4000e3 # Domain extent (m) sim.Ly = 4000e3 # 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 = 0.e-4 # Coriolis (1/sec) sim.beta = 0e-10 # Coriolis beta parameter (1/m/sec) sim.Hs = [100.] # Vector of mean layer depths (m) sim.rho = [1025.] # Vector of layer densities (kg/m^3) sim.end_time = 1.0*24.*hour # End Time (sec)
# At the moment it is given explicitely. # In the future, it could also be added to the # pythonpath environment variable sys.path.append("../src") import Steppers as Step import Fluxes as Flux from PyRsw import Simulation from constants import minute, hour, day sim = Simulation() # Create a simulation object # Geometry and Model Equations sim.geomy = "walls" # Geometry Types: 'periodic' or 'walls' sim.stepper = Step.AB3 # Time-stepping algorithm: Euler, AB2, RK4 sim.method = "Spectral" # Numerical method: 'Spectral' sim.dynamics = "Nonlinear" # Dynamics: 'Nonlinear' or 'Linear' sim.flux_method = Flux.spectral_sw # Flux method: spectral_sw is only option currently # Specify paramters sim.Ly = 4000e3 # Domain extent (m) sim.Nx = 1 # Grid points in x 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)