def testEuler(order=9): """Test euler formulations, with different flux types, slopelimiters, and curved integrations""" import globalVar2D as glb glb.globalInit() import mesh2D # Order of polynomials used for approximation glb.N = order # Define Simulation Data fluxType = 'HLL' gssState = 'on' cubState = 'on' limiter = 'on' simData = [fluxType, gssState, cubState, limiter] # Read in Mesh #filename = 'Grid/neu/Euler2D/vortexA04.neu' #InitialSolution = isentropicVortexIC2D #ExactSolution = isentropicVortexIC2D #BCSolution = isentropicVortexBC2D # Read in Mesh filename = 'Grid/msh/2Dcyl.msh' #filename = 'Grid/neu/Euler2D/fstepA001.neu' InitialSolution = fwdStepIC2D ExactSolution = fwdStepIC2D BCSolution = fwdStepBC2D # read mesh from file [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.readGmsh(filename) #[glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.createBC(filename) # set up nodes and basic operations execfile("initiate2D.py") # turn cylinders into walls # There are no curved elements in isentropic vortex case ids = numpy.nonzero(glb.BCType == glb.Cyl) glb.BCType[ids] = glb.Wall glb.straight = range(glb.K) functions2D.BuildBCMaps2D() # compute initial condition Q = InitialSolution(glb.x, glb.y, 0.) # Solve Problem FinalTime = 1.0 Q = Euler2D(Q, FinalTime, ExactSolution, BCSolution, simData) # Calculate error err = Q - ExactSolution(glb.x, glb.y, FinalTime) L2Err = [(numpy.average((err[:, :, i]**2).flatten()))**0.5 for i in range(4)] return (Q, L2Err)
def testEuler(order=9): """Test euler formulations, with different flux types, slopelimiters, and curved integrations""" import globalVar2D as glb glb.globalInit() import mesh2D # Order of polynomials used for approximation glb.N = order # Define Simulation Data fluxType = 'HLL' gssState = 'on' cubState = 'on' limiter = 'on' simData = [fluxType,gssState,cubState,limiter] # Read in Mesh #filename = 'Grid/neu/Euler2D/vortexA04.neu' #InitialSolution = isentropicVortexIC2D #ExactSolution = isentropicVortexIC2D #BCSolution = isentropicVortexBC2D # Read in Mesh filename = 'Grid/msh/2Dcyl.msh' #filename = 'Grid/neu/Euler2D/fstepA001.neu' InitialSolution = fwdStepIC2D ExactSolution = fwdStepIC2D BCSolution = fwdStepBC2D # read mesh from file [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.readGmsh(filename) #[glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.createBC(filename) # set up nodes and basic operations execfile("initiate2D.py") # turn cylinders into walls # There are no curved elements in isentropic vortex case ids = numpy.nonzero(glb.BCType==glb.Cyl) glb.BCType[ids] = glb.Wall glb.straight=range(glb.K) functions2D.BuildBCMaps2D() # compute initial condition Q = InitialSolution(glb.x, glb.y, 0.) # Solve Problem FinalTime = 1.0 Q = Euler2D(Q, FinalTime, ExactSolution, BCSolution, simData) # Calculate error err=Q-ExactSolution(glb.x,glb.y,FinalTime) L2Err=[(numpy.average((err[:,:,i]**2).flatten()))**0.5 for i in range(4)] return(Q,L2Err)
def testBasicEuler(order=9): """Driver script for solving the 2D Euler Isentropic vortex equations""" import globalVar2D as glb glb.globalInit() import mesh2D # Order of polynomials used for approximation glb.N = order # Read in Mesh filename = 'Grid/neu/Euler2D/vortexA04.neu' InitialSolution = isentropicVortexIC2D ExactSolution = isentropicVortexIC2D BCSolution = isentropicVortexBC2D # read mesh from file [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.createBC(filename) # set up nodes and basic operations execfile("initiate2D.py") # turn cylinders into walls ids = numpy.nonzero(glb.BCType == glb.Cyl) glb.BCType[ids] = glb.Wall functions2D.BuildBCMaps2D() # compute initial condition Q = InitialSolution(glb.x, glb.y, 0.) # Solve Problem FinalTime = 1.0 Q = basicEulerSolve(Q, FinalTime, BCSolution) # Calculate error err = Q - ExactSolution(glb.x, glb.y, FinalTime) L2Err = [(numpy.average((err[:, :, i]**2).flatten()))**0.5 for i in range(4)] return (Q, L2Err)
def testBasicEuler(order=9): """Driver script for solving the 2D Euler Isentropic vortex equations""" import globalVar2D as glb glb.globalInit() import mesh2D # Order of polynomials used for approximation glb.N = order # Read in Mesh filename = 'Grid/neu/Euler2D/vortexA04.neu' InitialSolution = isentropicVortexIC2D ExactSolution = isentropicVortexIC2D BCSolution = isentropicVortexBC2D # read mesh from file [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.createBC(filename) # set up nodes and basic operations execfile("initiate2D.py") # turn cylinders into walls ids = numpy.nonzero(glb.BCType==glb.Cyl) glb.BCType[ids] = glb.Wall functions2D.BuildBCMaps2D() # compute initial condition Q = InitialSolution(glb.x, glb.y, 0.) # Solve Problem FinalTime = 1.0 Q = basicEulerSolve(Q, FinalTime, BCSolution) # Calculate error err=Q-ExactSolution(glb.x,glb.y,FinalTime) L2Err=[(numpy.average((err[:,:,i]**2).flatten()))**0.5 for i in range(4)] return(Q,L2Err)
# Codes for Nodal Discontinuous Galerkin Methods #Written by: Achyut Panchal # Aerospace Engineering, Indian Institute of Technology Bombay # The codes are inspired , and examples are followed from reference #Jan S. Hesthaven. Nodal Discontinuous Galerkin Methods. Springer, 2008 # Driver script for solving 2D advection # This currently does not work properly! Work on boundary condition implementation import globalVar2D as glb import math import numpy import matplotlib.pyplot as plt import functions2D glb.globalInit() # Polynomial order used for approximation glb.N = 10 # Read in Mesh import mesh2D [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.create('Grid/neu/Maxwell2D/Maxwell1.neu') # Initialize solver and construct grid and metric execfile("initiate2D.py") # Set initial conditions u = numpy.vectorize(math.sin)(math.pi * glb.x) * numpy.vectorize(math.sin)( math.pi * glb.y) #u=numpy.array([(abs(glb.x.flatten()[i])<0.1) and (abs(glb.y.flatten()[i])<0.1) for i in range(len(glb.x.flatten()))]).reshape(glb.x.shape) uinit = u.copy()
# Codes for Nodal Discontinuous Galerkin Methods #Written by: Achyut Panchal # Aerospace Engineering, Indian Institute of Technology Bombay # The codes are inspired , and examples are followed from reference #Jan S. Hesthaven. Nodal Discontinuous Galerkin Methods. Springer, 2008 # Driver script for solving 2D advection # This currently does not work properly! Work on boundary condition implementation import globalVar2D as glb import math import numpy import matplotlib.pyplot as plt import functions2D glb.globalInit() # Polynomial order used for approximation glb.N = 10 # Read in Mesh import mesh2D [glb.Nv, glb.VX, glb.VY, glb.K, glb.EToV, glb.BCType] = mesh2D.create('Grid/neu/Maxwell2D/Maxwell1.neu') # Initialize solver and construct grid and metric execfile("initiate2D.py") # Set initial conditions u=numpy.vectorize(math.sin)(math.pi*glb.x)*numpy.vectorize(math.sin)(math.pi*glb.y) #u=numpy.array([(abs(glb.x.flatten()[i])<0.1) and (abs(glb.y.flatten()[i])<0.1) for i in range(len(glb.x.flatten()))]).reshape(glb.x.shape) uinit=u.copy() functions2D.plot2D(uinit)