"""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')
예제 #3
0
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