Exemple #1
0
# 2. Read the mesh from the given mesh file. We can handle geometrically
#    periodic meshes in this code.

meshfile = expanduser(join(path, 'data', 'periodic-hexagon.mesh'))
if not exists(meshfile):
    path = dirname(dirname(__file__))
    meshfile = expanduser(join(path, 'data', 'periodic-hexagon.mesh'))    
mesh = mfem.Mesh(meshfile, 1,1)
dim = mesh.Dimension()

# 3. Define the ODE solver used for time integration. Several explicit
#    Runge-Kutta methods are available.
ode_solver = None
if ode_solver_type == 1:   ode_solver = mfem.ForwardEulerSolver()
elif ode_solver_type == 2: ode_solver = mfem.RK2Solver(1.0)
elif ode_solver_type == 3: ode_solver = mfem.RK3SSolver()
elif ode_solver_type == 4: ode_solver = mfem.RK4Solver()
elif ode_solver_type == 6: ode_solver = mfem.RK6Solver()
else:
    print( "Unknown ODE solver type: " + str(ode_solver_type))
    exit
    
# 4. Refine the mesh to increase the resolution. In this example we do
#    'ref_levels' of uniform refinement, where 'ref_levels' is a
#    command-line parameter. If the mesh is of NURBS type, we convert it to
#    a (piecewise-polynomial) high-order mesh.
for lev in range(ref_levels):
    mesh.UniformRefinement();
    if mesh.NURBSext:
        mesh.SetCurvature(max(order, 1))
Exemple #2
0
parser.print_options(args)

# 2. Read the mesh from the given mesh file. We can handle triangular,
#    quadrilateral, tetrahedral and hexahedral meshes with the same code.
meshfile = expanduser(join(path, 'data', args.mesh))
mesh = mfem.Mesh(meshfile, 1, 1)
dim = mesh.Dimension()

# 3. Define the ODE solver used for time integration. Several implicit
#    singly diagonal implicit Runge-Kutta (SDIRK) methods, as well as
#    explicit Runge-Kutta methods are available.
if ode_solver_type == 1: ode_solver = BackwardEulerSolver()
elif ode_solver_type == 2: ode_solver = mfem.SDIRK23Solver(2)
elif ode_solver_type == 3: ode_solver = mfem.SDIRK33Solver()
elif ode_solver_type == 11: ode_solver = ForwardEulerSolver()
elif ode_solver_type == 12: ode_solver = mfem.RK2Solver(0.5)
elif ode_solver_type == 13: ode_solver = mfem.RK3SSPSolver()
elif ode_solver_type == 14: ode_solver = mfem.RK4Solver()
elif ode_solver_type == 22: ode_solver = mfem.ImplicitMidpointSolver()
elif ode_solver_type == 23: ode_solver = mfem.SDIRK23Solver()
elif ode_solver_type == 24: ode_solver = mfem.SDIRK34Solver()
else:
    print("Unknown ODE solver type: " + str(ode_solver_type))
    exit
# 4. Refine the mesh to increase the resolution. In this example we do
#    'ref_levels' of uniform refinement, where 'ref_levels' is a
#    command-line parameter.
for lev in range(ref_levels):
    mesh.UniformRefinement()
# 5. Define the vector finite element space representing the current and the
#    initial temperature, u_ref.