File Exchange

image thumbnail

Fast FEM assembly: nodal elements

version 1.17.0.0 (813 KB) by Jan Valdman
Vectorized assembly of FEM matrices.

15 Downloads

Updated 04 Aug 2018

View License

This code demonstrates vectorization concepts from the paper:

Talal Rahman and Jan Valdman: Fast MATLAB assembly of FEM matrices in 2D and 3D: nodal elements, Applied Mathematics and Computation 219, 7151–7158 (2013).

A link to the paper can be found at the author web page located at http://sites.google.com/site/janvaldman/publications

Please cite the paper if you find the code useful.

Available scripts from the paper:

"start_compute_areas"

"start_assembly_P1_2D"

"start_assembly_P1_3D"

"start_assembly_P1_2D_elasticity"

"start_assembly_P1_3D_elasticity"

Additional script (provided by Tien Dat Ngo from EFPL Lausanne):

"start_assembly_Q1_3D_elasticity"

Comments and Ratings (7)

Jan Valdman

coeffs denotes a scalar coefficient in corresponding bilinear forms:
a(u,v) = (coeffs * grad u, grad v) (in the stiffness matrix function),
a(u,v) = (coeffs *u, v) (in the mass matrix function),
where u,v are P1 functions. Ignore it in the input of both functions to have coeffs=1.

Jan Valdman

It is straightforward to modify FEM assemblies to work with rectangular elements, but it is not done in this version. Read the paper and try it yourself :).

Ming Chen

What's the 'coeffs' mean in function 'stifness_matrixP1' and 'mass_matrixP1'?

can this create a mass matrix for a rectangular (2 dimensional) mesh?

Updates

1.17.0.0

Description simplified, 'stifness' changed to 'stiffness'.

1.16.0.0

Title and summary update.

1.15.0.0

P1 coefficients for mass matrices (both 2D and 3D) added

1.14.0.0

P0 coefficients added to assemblies of mass matrices in both 2D and 3D

1.14.0.0

new functionality added: elementwise constant coefficients

1.13.0.0

paper info completed

1.12.0.0

improved description

1.11.0.0

Q1 assembly in 3D for linear elasticity added thanks to Tien Dat Ngo.

1.10.0.0

Paper information added

1.4.0.0

report link add, extended to work for linear elasticity

1.3.0.0

tested for both linux and windows

1.2.0.0

added start_calculate_areas

1.1.0.0

2D functionality added

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux