"""Set an initial condition with a constant value, for x0<x<x1 """ def __init__(self, x0=0.25, x1=0.5, h=1.0): self.x0 = x0 self.x1 = x1 self.h = h def __call__(self, x, y): return self.h * ((x > self.x0) & (x < self.x1)) domain.set_quantity('stage', Set_IC(200.0, 300.0, 5.0)) try: domain.initialise_visualiser() except: print 'No visualiser' else: domain.visualiser.scale_z['stage'] = 0.2 domain.visualiser.scale_z['elevation'] = 0.05 #Boundaries R = Reflective_boundary(domain) domain.set_boundary({'left': R, 'right': R, 'top': R, 'bottom': R}) # Evolution print 'Minimal allowed water height = ', domain.minimum_allowed_height for t in domain.evolve(yieldstep=yieldstep, finaltime=finaltime): print 'Integral stage = ', domain.quantities['stage'].get_integral( ), ' Time = ', domain.time
# Boundary conditions # log.critical('Boundaries') Br = Reflective_boundary(domain) Bt = Transmissive_boundary(domain) #Constant inflow Bd = Dirichlet_boundary([inflow_stage, 0.0, 0.0]) #Time dependent inflow from math import sin, pi Bw = Time_boundary(domain=domain, f=lambda x: [(1 + sin(x*pi/4))*\ (inflow_stage*(sin(2.5*x*pi)+0.7)),0,0]) #Set boundary conditions domain.set_boundary({'left': Bd, 'right': Br, 'bottom': Br, 'top': Br}) ###################### #Initial condition # log.critical('Initial condition') domain.set_quantity('stage', Z) #Evolve for t in domain.evolve(yieldstep=0.1, finaltime=30): domain.write_time(track_speeds=True) domain.write_boundary_statistics(['stage'], 'left') log.critical('Done')
END\n\ 2 ?? ??\n\ 10.0 80.0\n\ 10.0 90.0\n\ 20.0 90.0\n\ 10.0 80.0\n\ END\n\ END\n") file.close() # import the ungenerate file m.import_ungenerate_file(fileName) os.remove(fileName) m.generate_mesh(maximum_triangle_area=max_area,verbose=False) mesh_filename = "mesh.tsh" m.export_mesh_file(mesh_filename) # Run a simulation on the mesh domain = Domain(mesh_filename, use_cache = False) Br = Reflective_boundary(domain) Bd = Dirichlet_boundary([3,0,0]) domain.set_boundary( {'wall': Br, 'wave': Bd} ) yieldstep = 0.1 finaltime = 20 for t in domain.evolve(yieldstep, finaltime): domain.write_time()
# log.critical('Boundaries') Br = Reflective_boundary(domain) Bt = Transmissive_boundary(domain) #Constant inflow Bd = Dirichlet_boundary([inflow_stage, 0.0, 0.0]) #Time dependent inflow from math import sin, pi Bw = Time_boundary(domain=domain, f=lambda x: [(1 + sin(x*pi/4))*\ (inflow_stage*(sin(2.5*x*pi)+0.7)),0,0]) #Set boundary conditions domain.set_boundary({'left': Bd, 'right': Br, 'bottom': Br, 'top': Br}) ###################### #Initial condition # log.critical('Initial condition') domain.set_quantity('stage', Z) #Evolve for t in domain.evolve(yieldstep = 0.1, finaltime = 30): domain.write_time(track_speeds=True) domain.write_boundary_statistics(['stage'],'left') log.critical('Done')
self.x0 = x0 self.x1 = x1 self.h = h def __call__(self, x, y): return self.h*((x>self.x0)&(x<self.x1)) domain.set_quantity('stage', Set_IC(200.0,300.0,5.0)) try: domain.initialise_visualiser() except: print 'No visualiser' else: domain.visualiser.scale_z['stage'] = 0.2 domain.visualiser.scale_z['elevation'] = 0.05 #Boundaries R = Reflective_boundary(domain) domain.set_boundary( {'left': R, 'right': R, 'top':R, 'bottom': R} ) # Evolution print 'Minimal allowed water height = ', domain.minimum_allowed_height for t in domain.evolve(yieldstep = yieldstep, finaltime = finaltime): print 'Integral stage = ', domain.quantities['stage'].get_integral(),' Time = ',domain.time