示例#1
0
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)
示例#2
0
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()
示例#3
0
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() 
示例#4
0
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()
示例#5
0
文件: test_Euler.py 项目: PyRsw/PyRsw
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()      
示例#6
0
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)
sim.end_time = 2.*24.*hour   # End Time                    (sec)
示例#7
0
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)
示例#8
0
# 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)