OptFEM2D  0.1
Matlab optimized FEM2D
 All Files Functions Groups Pages
MassWAssemblingP1base.m
Go to the documentation of this file.
1 function M=MassWAssemblingP1base(nq,nme,me,areas,Tw)
2 % function M=MassWAssemblingP1base(nq,nme,me,areas,Tw)
3 % Assembling Mass Weight Matrix by `P_1`-Lagrange finite elements
4 % using "base" version (see report).
5 %
6 % The Mass Weight Matrix is given by
7 % ``\MasseF{w}_{i,j}=\int_\DOMH w(\q)\FoncBase_i(\q) \FoncBase_j(\q) d\q,\ \forall (i,j)\in\ENS{1}{\nq}^2``
8 % where `\FoncBase_i` are `P_1`-Lagrange basis functions.
9 % Parameters:
10 % nq: total number of nodes of the mesh, also noted `\nq`,
11 % nme: number of triangles, also noted `\nme`,
12 % me: `3\times\nme` 'int32' array,`\me(\jl,k)` index of storage, in the array `q`, of the `\jl`-th
13 % vertex of the triangle of index `k`, `\jl\in\{1,2,3\}` and `k\in\{1,\hdots,\nme\}.`
14 % Also noted `\me`.
15 % areas: `1\times\nme` array, areas(k) is the area of triangle k.
16 % Tw: `\nme` 'double' array, `Tw(i)=w(\q^i),` `\forall i\in\ENS{1}{\nq}`.
17 %
18 % Return values:
19 % M: `\nq\times\nq` sparse matrix
20 %
21 % Example:
22 % @verbatim
23 % Th=SquareMesh(10);
24 % w=@(x,y) cos(x+y);
25 % Tw=w(Th.q(1,:),Th.q(2,:));
26 % Mw=MassWAssemblingP1base(Th.nq,Th.nme,Th.me,Th.areas,Tw);
27 % @endverbatim
28 %
29 % See also:
30 % #SquareMesh
31 M=sparse(nq,nq);
32 for k=1:nme
33  for il=1:3
34  i=me(il,k);
35  Twloc(il)=Tw(i);
36  end
37  E=ElemMassWMatP1(areas(k),Twloc);
38  for il=1:3
39  i=me(il,k);
40  for jl=1:3
41  j=me(jl,k);
42  M(i,j)=M(i,j)+E(il,jl);
43  end
44  end
45 end