σ(ϵ(u(x)))⋅∇+bu(x)n⋅σ(ϵ(u(x)))=0,(x)x∈Ω=uD(x),x∈ΓD=tN(x),x∈ΓN The weak form is an integrated form of the strong form, which makes the problem possible to approximate using the Finite Element Method. To obtain this form, we apply two "tricks":
Scalar multiply the strong form with an arbitrary test displacement field δu(x)
Integrate over the domain Ω
Because the test displacement field δu(x) is arbitrary, the following weak form of the boundary value problem is in practice equivalent to Equation (1). (There are some restrictions wrt. to the smoothness of the functions u(x) and δu(x) from mathematics.) For brevity, from hereon we don't write out the dependence on x and ϵ for u, δu, σ, uD, and tN.
∫Ωδu⋅[σ⋅∇]dΩun⋅σ(ϵ(u))=−∫Ωδu⋅bdΩ=uDonΓD=tNonΓN If we then apply the Green-Gauss theorem to the first equation, we obtain
∫Γδu⋅σ⋅ndΓ−∫Ω[δu⊗∇]:σdΩ=−∫Ωδu⋅bdΩ and we can insert the known traction on the Neumann boundary ΓN as
∫ΓNδu⋅tNdΓN+∫ΓDδu⋅σ⋅ndΓD−∫Ω[δu⊗∇]:σdΩu=−∫Ωδu⋅bdΩ=uDonΓD while keeping the known displacements on ΓD.
The weak form in Equation (4) is also very difficult to solve, perhaps arguably more difficult than the strong form in Equation (1) since we need to deal with the arbitrary function δu. The main issue for both of these forms, is that the solution is a continuous function u. It would be much easier to solve if we could somehow parameterize the function, e.g. if we could write that (in 1D) u(x)=a1x+a2x2+a3x3 and then just determine the coefficients ai. This is what we will do, namely that we will approximate both u and δu using so-called base functions:
u(x)δu(x)≈Ni(x)ai≈Niδ(x)δai where ai and δai are the coefficients that we need to determine and Ni and Niδ are shape functions that we postulate can be used to describe the solution and test space. So we restrict our solution to solutions that can be described by this discretization. Here, we will use the standard Galerkin method of having Ni=Niδ, which is described in detail in specific finite element courses. Inserting these approximations into our weak form, we obtained the discretized FE-problem
δai[∫ΓNNi⋅tNdΓN+∫ΓDNi⋅σ⋅ndΓD−∫Ω[Ni⊗∇]:σdΩ]aiNi=uDonΓD=−δai∫ΩNi⋅bdΩ Since δu should be arbitrary, so should δai. So by letting δai=1 and δaj=0 for all j=i for all i (e.g. δa1=1, then δa2=δa3=⋯=δan=0 and δa2=1, then δa1=δa3=⋯=δan=0 and so on), we have n equations (i=1,2,⋯,n) that we can write as
fiintfiintfiext=fiext=∫Ω[Ni⊗∇]:σdΩ=∫ΓNNi⋅tNdΓN+∫ΓDNi⋅σ⋅ndΓD+∫ΩNi⋅bdΩ where fint and fext are the so-called internal (due to stresses) and external (due to applied loads) forces, respectively.
The base functions N have many names, e.g. basis, shape, test, trial, etc. functions. These are generally used interchangably, potentially leading to some confusion. In general, test often denote the functions approximating the test function, δu (yes, the same name), i.e. Nδ. Trial functions often describe the functions approximating the solution u, i.e. N. Shape function is often used to describe the geometry. Finally, base or basis functions are often used to describe all of the above. For the n equations fiint=fiext above to form a solvable equation system, we require (1) that the base functions are independent. That is, for each j∈[1,n], there doesn't exist coefficients ai where aj=0 such that Nj=aiNi. Secondly, we require that the solution is constrained by Dirichlet boundary conditions such that rigid body motions are prevented.
In practice, we often choose so-called nodal base functions. Consider the nodal positions xi. We then have a set of scalar base functions Ni, which are defined such that
Ni(xj)={10i=ji=j In one dimension for linear base functions, this choice looks like
for 3 elements. If we consider the definition of the base function inside one element, between nodes xi and xi+1, we have
Ni(x)=1−xi+1−xix−xi,Ni+1(x)=xi+1−xix−xi As we increase to two dimensions, we have a more complicated situation. The left figure below shows only the triangular element, and then each of the base function in the other three figures.
The linear base functions inside an element with nodal coordinates x1, x2, and x3, ordered counter-clockwise around the element as in the figure above, are
N1(x,y)N2(x,y)N3(x,y)=2Ax2y3−x3y2+[y2−y3]x+[x3−x2]y=2Ax3y1−x1y3+[y3−y1]x+[x1−x3]y=2Ax1y2−x2y1+[y1−y2]x+[x2−x1]y where A=[[x2y3−x3y2]−[x1y3−x3y1]+[x1y2−x2y1]]/2 is the element's area. It is left as an exercise for the reader to verify that Ni(xj,yj)=δij. For a detailed derivation, please see Niels Ottosen and Hans Petersson, 1992: "Introduction to the Finite Element Method", Section 7.3.1.
However, the base functions discussed so far are scalar base functions. But since we want to approximate vector functions, we need vector base functions. These are easily constructed for each node as
N[3i−2](x)N[3i−1](x)N[3i](x)=[Ni(x),0,0]=[0,Ni(x),0]=[0,0,Ni(x)] for three dimensions. More formally and short, we can write Ni(x)=Nj(x)ek where j is the node number, m is the dimension, 1≤k≤m, and i=m(j−1)+k. If we have nnod nodes, we then have n=mnnod base functions Ni. And as mentioned above, there are equally many coefficients ai and equations fiint=fiext as base functions.
The force vectors fiint and fiext in Equation (7) are calculated by solving the integral over the entire domain. But the construction of base functions above ensures that one base function is only non-zero in a few elements, as illustrated below.
This makes it possible to calculate contributions elementwise. If we evaluate Ni⊗∇, for the base functions above, this becomes a constant tensor as Nj(x) is linear inside the element. Consequently, the strain ϵ=[u⊗∇]sym=ai[Ni⊗∇]sym is also constant. And since the stress is a function of the strain, then σ(ϵ) is constant inside the element, implying that the entire integrand [Ni⊗∇]:σ is constant. So for triangular elements with linear base functions, the integrals are trivial to solve. For cases when the base functions are not linear, e.g. quadrilateral elements (4 nodes) or quadratic (6-noded) triangular elements, we need to use numerical integration techniques, see e.g. Niels Ottosen and Hans Petersson, 1992: "Introduction to the Finite Element Method", Chapter 20.
For the finite element problem to be linear, we require that the material behavior is linear. For this example, we will use linear elasticity, such that σ= E:ϵ. For this case, our fiint simplifies to
fiint=∫Ω[Ni⊗∇]sym: E:[Nj⊗∇]symdΩaj as E is minor symmetric and ϵ=[Nj⊗∇]symaj. Note that everything inside the integral is now independent of the solution aj, and we can write this as
Kijfiint=∫Ω[Ni⊗∇]sym: E:[Nj⊗∇]symdΩ=Kijaj We can then remind ourselves that fiext is given as
fiext=∫ΓNNi⋅tNdΓN+∫ΓDNi⋅σ⋅ndΓD+∫ΩNi⋅bdΩ which we will simply denote fi from now on. Our complete equation system is then
KijajKa=fi=f where the latter equation is just in matrix-vector form.
However, for degrees of freedom i on ΓD, fi is unknown. On the other hand, that implies that the corresponding ai is known. We can partition our equation system into "free" degrees of freedom, aF, where the solution ai is unknown (but fi is known) and prescribed degrees of freedom, aP, where the solution ai is known (but fi is unknown). This gives
[KFFKPFKFPKPP][aFaP]=[fFfP] where aP and fF are known, while aF and fP are unknown. We can then solve this by first solving the linear equation system
KFFaF=fF−KFPaP to find aF. fP is then given as
fP=KPFaF+KPPaP