Index
Exported
ExtendableFEM
— ModuleExtendableFEM
ExtendableFEM
High Level API Finite Element Methods based on ExtendableGrids.jl (for grid management) and ExtendableFEMBase.jl (for finite element basis functions and dof management). It offers a ProblemDescription interface, that basically involves assigning Unknowns and Operators. Such operators usually stem from a weak formulation of the problem and mainly consist of three types that can be customized via kernel functions:
- BilinearOperator,
- LinearOperator,
- NonlinearOperator (that automatically assemble Newton's method by automatic differentiation)
Quick Example
The following minimal example demonstrates how to setup a Poisson problem.
using ExtendableFEM
using ExtendableGrids
# build/load any grid (here: a uniform-refined 2D unit square into triangles)
xgrid = uniform_refine(grid_unitsquare(Triangle2D), 4)
# create empty PDE description
PD = ProblemDescription()
# create and assign unknown
u = Unknown("u"; name = "potential")
assign_unknown!(PD, u)
# assign Laplace operator
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 boundary data (here: u = 0)
assign_operator!(PD, HomogeneousBoundaryData(u; regions = 1:4))
# discretise = choose FESpace
FEType = H1Pk{1,2,3} # cubic H1-conforming element with 1 component in 2D
FES = FESpace{FEType}(xgrid)
# solve
sol = solve!(Problem, [FES])
# plot
using PyPlot
plot(id(u), sol; Plotter = PyPlot)
Types and Constructors
ExtendableFEM.Average
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperator
ExtendableFEM.BilinearOperatorDG
ExtendableFEM.BilinearOperatorDG
ExtendableFEM.CallbackOperator
ExtendableFEM.CombineDofs
ExtendableFEM.DiscontinuousFunctionOperator
ExtendableFEM.FaceInterpolator
ExtendableFEM.FixDofs
ExtendableFEM.HomogeneousData
ExtendableFEM.InterpolateBoundaryData
ExtendableFEM.ItemIntegrator
ExtendableFEM.ItemIntegratorDG
ExtendableFEM.Jump
ExtendableFEM.Left
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperator
ExtendableFEM.LinearOperatorDG
ExtendableFEM.LinearOperatorDG
ExtendableFEM.NonlinearOperator
ExtendableFEM.ProblemDescription
ExtendableFEM.Right
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.assign_operator!
ExtendableFEM.assign_unknown!
ExtendableFEM.average
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_unknown_id
ExtendableFEM.grad
ExtendableFEM.grid
ExtendableFEM.hessian
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.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.Δ