Appendix A. Some basic computations between reference and real elements

Volume integral

One has

T f(x) dx = T' f'(x') |vol((∂τ(x'))/(∂x'0) ;(∂τ(x'))/(∂x'1); ...; (∂τ(x'))/(∂x'P-1 ))| dx'.

Denoting Jτ(x') the jacobian

Jτ(x') := |vol((∂τ(x'))/(∂x'0) ;(∂τ(x'))/(∂x'1); ...; (∂τ(x'))/(∂x'P-1 ))| = (det(K(x')T K(x')))1/2,

one finally has

T f(x) dx = T' f'(x') Jτ(x')dx'.

When P = N, the expression of the jacobian reduces to Jτ(x') = |det(K(x'))|.

Surface integral

With Γ a part of the boundary of T a real element and Γ' the corresponding boundary on the reference element T', one has

Γ f(x) dσ= Γ' f'(x') ||B(x')n'|| Jτ(x') dσ',

where n' is the unit normal to T' on Γ'. In a same way

Γ F(x).n dσ= Γ' F'(x').(B(x')n') Jτ(x') dσ'.

Derivative computation

One has

∇f(x) = B(x') ∇'f'(x').

Second derivative computation

Denoting

2 f = ((∂2 f)/(∂xi ∂xj))ij,

the N ×N matrix and

X'(x') = ∑k = 0N-1 ∇'2 τk(x') (∂f)/(∂xk)(x) = ∑k = 0N-1i = 0P-1 ∇'2 τk(x') Bki (∂f')/(∂x'i)(x'),

the P ×P matrix, then

∇'2 f'(x') = X'(x') + K(x')T2 f(x) K(x'),

and thus

2 f(x) = B(x') (∇'2 f'(x') - X'(x')) B(x')T.

In order to have uniform methods for the computation of elementary matrices, the Hessian is computed as a column vector H f whose components are (∂2 f)/(∂x20), (∂2 f)/(∂x1 ∂x0), ... (∂2 f)/(∂x2N-1). Then, with B2 the P2 ×P matrix defined as

(B2(x'))ij = ∑k = 0N-1 (∂2 τk(x'))/(∂x'i / P ∂x'i  mod  P ) Bkj(x'),

and B3 the N2 ×P2 matrix defined as

(B3(x'))ij = Bi / N, j / P(x') Bi  mod  N, j  mod  P(x'),

one has

H f(x) = B3(x') (H'f'(x') - B2(x')∇'f'(x')).

Example of elementary matrix

Assume one needs to compute the elementary "matrix":

t(i0, i1, ..., i7) = T φi1i0i4 φi3i22i7 / P, i7  mod  P φi6i5 dx,

The computations to be made on the reference elements are

t'0(i0, i1, ..., i7) = T' φ'i1i0i4 φ'i3i22i7 / P, i7  mod  P φ'i6i5 J(x') dx',

and

t'1(i0, i1, ..., i7) = T' φ'i1i0i4 φ'i3i2i7 φ'i6i5 J(x') dx',

Those two tensor can be computed once on the whole reference element if the geometric transformation is linear (because J(x') is constant). If the geometric transformation is non-linear, what has to be stored is the value on each integration point. To compute the integral on the real element a certain number of reductions have to be made:

The reductions are to be made on each integration point if the geometric transformation is non-linear. Once those reductions are done, an addition of all the tensor resulting of those reductions is made (with a factor equal to the load of each integration point if the geometric transformation is non-linear).

If the finite element is non-τ-equivalent, a supplementary reduction of the resulting tensor with the matrix M has to be made.