def __init__(self, friction='manning', nx=1, ny=1, mesh=None, input_dir=None, output_dir=None, **kwargs): self.timestepper = 'CrankNicolson' super(BeachOptions, self).__init__(**kwargs) try: assert friction in ('nikuradse', 'manning') except AssertionError: raise ValueError("Friction parametrisation '{:s}' not recognised.".format(friction)) self.friction = friction self.lx = 220 self.ly = 10 if output_dir is not None: self.di = output_dir self.default_mesh = RectangleMesh(np.int(220*nx), np.int(10*ny), self.lx, self.ly) self.friction_coeff = Constant(0.02) self.set_up_morph_model(self.default_mesh) # Initial self.uv_init, self.elev_init = initialise_hydrodynamics(input_dir, outputdir=output_dir, op=self) self.plot_pvd = True self.hessian_recovery = 'L2' self.grad_depth_viscosity = True self.num_hours = 3600 # Stabilisation self.stabilisation = 'lax_friedrichs' self.stabilisation_sediment = 'lax_friedrichs' self.morphological_acceleration_factor = Constant(10000) # Boundary conditions h_amp = 0.25 # Ocean boundary forcing amplitude v_amp = 0.5 # Ocean boundary foring velocity omega = 0.5 # Ocean boundary forcing frequency self.ocean_elev_func = lambda t: (h_amp * np.cos(-omega*(t+(100.0)))) self.ocean_vel_func = lambda t: (v_amp * np.cos(-omega*(t+(100.0)))) self.tracer_init = Constant(0.0) # Time integration self.dt = 0.5 self.end_time = float(self.num_hours*3600.0/self.morphological_acceleration_factor) self.dt_per_mesh_movement = 72 self.dt_per_export = 72 self.implicitness_theta = 1.0
def __init__(self, friction='nik_solver', nx=1, ny=1, input_dir=None, output_dir=None, **kwargs): self.timestepper = 'CrankNicolson' super(TrenchSedimentOptions, self).__init__(**kwargs) self.default_mesh = RectangleMesh(np.int(16 * 5 * nx), 5 * ny, 16, 1.1) self.plot_pvd = True self.num_hours = 15 if output_dir is not None: self.di = output_dir # Physical self.base_viscosity = Constant(1e-6) self.wetting_and_drying = False self.solve_sediment = True self.solve_exner = True try: assert friction in ('nikuradse', 'manning', 'nik_solver') except AssertionError: raise ValueError( "Friction parametrisation '{:s}' not recognised.".format( friction)) self.friction = friction self.average_size = Constant(160e-6) # Average sediment size self.friction_coeff = Constant(0.025) self.ksp = Constant(3 * self.average_size) self.norm_smoother = Constant(0.1) # Stabilisation self.stabilisation = 'lax_friedrichs' self.stabilisation_sediment = 'lax_friedrichs' # Initialisation self.uv_init, self.elev_init = initialise_hydrodynamics( input_dir, outputdir=output_dir, op=self, ) self.set_up_morph_model(input_dir, self.default_mesh) self.morphological_acceleration_factor = Constant(100) # Time integration self.dt = 0.25 if nx < 4 else 0.1 self.end_time = self.num_hours * 3600.0 / float( self.morphological_acceleration_factor) self.dt_per_mesh_movement = 40 self.dt_per_export = 40 self.implicitness_theta = 1.0 self.family = 'dg-dg'