Index
Exported
ExtendableFEM
— ModuleExtendableFEM
ExtendableFEM.jl is a high-level, extensible finite element method (FEM) library for Julia, supporting flexible problem descriptions, custom operators, and advanced grid management.
Features
- High-level, extensible API for solving PDE problems by finite element methods
- Flexible
ProblemDescription
interface for assigning unknowns and operators - Supports custom kernel functions for bilinear, linear, and nonlinear forms
- Automatic assembly and Newton's method for NonlinearOperators
- Builds upon ExtendableGrids.jl and low level structures from ExtendableFEMBase.jl
Quick Example
The following minimal example demonstrates how to set up and solve a Poisson problem:
using ExtendableFEM
using ExtendableGrids
# Build a uniform-refined 2D unit square grid with triangles
xgrid = uniform_refine(grid_unitsquare(Triangle2D), 4)
# Create a new PDE description
PD = ProblemDescription()
# Define and assign the unknown
u = Unknown("u"; name = "potential")
assign_unknown!(PD, u)
# Assign Laplace operator (diffusion term)
assign_operator!(PD, BilinearOperator([grad(u)]; factor = 1e-3))
# Assign right-hand side data
function f!(fval, qpinfo)
x = qpinfo.x # global coordinates of quadrature point
fval[1] = x[1] * x[2]
end
assign_operator!(PD, LinearOperator(f!, [id(u)]))
# Assign Dirichlet boundary data (u = 0)
assign_operator!(PD, HomogeneousBoundaryData(u; regions = 1:4))
# Discretize: choose finite element space
FEType = H1Pk{1,2,3} # cubic H1-conforming element with 1 component in 2D
FES = FESpace{FEType}(xgrid)
# Solve the problem
sol = solve!(PD, [FES])
# Plot the solution
using PyPlot
plot(id(u), sol; Plotter = PyPlot)
Citing
If you use ExtendableFEM.jl in your research, please cite this Zenodo record.
License
ExtendableFEM.jl is licensed under the MIT License. See LICENSE for details.
Types and Constructors
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperatorDG
ExtendableFEM.BilinearOperatorDG
ExtendableFEM.CallbackOperator
ExtendableFEM.CombineDofs
ExtendableFEM.CombineDofs
ExtendableFEM.FaceInterpolator
ExtendableFEM.FixDofs
ExtendableFEM.HomogeneousData
ExtendableFEM.InterpolateBoundaryData
ExtendableFEM.ItemIntegrator
ExtendableFEM.ItemIntegratorDG
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperatorDG
ExtendableFEM.LinearOperatorDG
ExtendableFEM.NonlinearOperator
ExtendableFEM.ProblemDescription
ExtendableFEM.SolverConfiguration
ExtendableFEM.TDMatrix
ExtendableFEM.TDRank3
ExtendableFEM.TDRank4
ExtendableFEM.TDScalar
ExtendableFEM.TDVector
ExtendableFEM.TensorDescription
ExtendableFEM.Unknown
ExtendableFEM.Unknown
Constants
Methods
ExtendableFEM.HomogeneousBoundaryData
ExtendableFEM.L2NormIntegrator
ExtendableFEM.apply
ExtendableFEM.apply!
ExtendableFEM.apply_penalties!
ExtendableFEM.assemble!
ExtendableFEM.assemble!
ExtendableFEM.assemble!
ExtendableFEM.assemble!
ExtendableFEM.assign_operator!
ExtendableFEM.assign_unknown!
ExtendableFEM.average
ExtendableFEM.broken_scalarplot!
ExtendableFEM.curl1
ExtendableFEM.curl2
ExtendableFEM.curl3
ExtendableFEM.dofgrid
ExtendableFEM.eval_jacobian!
ExtendableFEM.eval_rhs!
ExtendableFEM.evaluate
ExtendableFEM.evaluate
ExtendableFEM.fixed_dofs
ExtendableFEM.fixed_vals
ExtendableFEM.generate_ODEProblem
ExtendableFEM.generate_ODEProblem
ExtendableFEM.get_periodic_coupling_info
ExtendableFEM.get_periodic_coupling_matrix
ExtendableFEM.grad
ExtendableFEM.grid
ExtendableFEM.hessian
ExtendableFEM.id
ExtendableFEM.id
ExtendableFEM.iterate_until_stationarity
ExtendableFEM.jac_prototype
ExtendableFEM.jump
ExtendableFEM.laplace
ExtendableFEM.normalflux
ExtendableFEM.other
ExtendableFEM.plot
ExtendableFEM.plot!
ExtendableFEM.plot_convergencehistory
ExtendableFEM.plot_convergencehistory!
ExtendableFEM.plot_unicode
ExtendableFEM.print_convergencehistory
ExtendableFEM.print_table
ExtendableFEM.replace_operator!
ExtendableFEM.residual
ExtendableFEM.symgrad_voigt
ExtendableFEM.tangentialflux
ExtendableFEM.tangentialgrad
ExtendableFEM.tensor_view
ExtendableFEM.tensor_view
ExtendableFEM.tensor_view
ExtendableFEM.tensor_view
ExtendableFEM.tensor_view
ExtendableFEM.tensor_view
ExtendableFEM.this
ExtendableFEM.tmul!
ExtendableFEM.Δ
ExtendableFEM.εV