fem2d_project_function, an Octave code which projects a function W(X,Y), given as a formula, into a given finite element space of piecewise linear triangular elements.
The result is that the function W(x,y) is approximated by a finite element function U(x,y) formed using piecewise linear triangular elements.
The computational region is a rectangle, which is divided up into a mesh of triangles using a grid of NX by NY points. For node K at grid point (I,J) in the interior, the associated basis function Vk(x,y) is used to pose the equation:
Integral U(x,y) Vk(x,y) dx = Integral W(x,y) Vk(x,y) dxwhile, for node K at grid point (I,J) on the boundary, the associated degree of freedom is determined by the boundary condition
U(x,y) = W(x,y),
The conditions define a linear system for the coefficients Uk in the finite element expansion of U(x,y):
U(x,y) = sum ( 1 <= K <= M*N ) Uk * Vk(x,y)
The program computes these coefficients, compares U and W pointwise at the nodes, and computes the L2 norms of U, W and U-W.
The computer code and data files described and made available on this web page are distributed under the MIT license
fem2d_project_function is available in a C++ version and a Fortran90 version and a MATLAB version and an Octave version.
fem2d, a data directory which contains examples of 2D FEM files, text files that describe a 2D finite element geometry and associated nodal values;
fem2d_pack, an Octave code which is useful for 2D finite element calculations.
fem2d_project, an Octave code which projects a function F(X,Y), given as a data, into a given finite element space of piecewise linear triangular elements.
fem2d_sample, an Octave code which evaluates a finite element function defined on an order 3 or order 6 triangulation.