MA471 Lecture 7
-
Upload
grant-fernandez -
Category
Documents
-
view
26 -
download
0
description
Transcript of MA471 Lecture 7
![Page 1: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/1.jpg)
MA471MA471Lecture 7Lecture 7
Introduction to a basic finite element elliptic solver
![Page 2: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/2.jpg)
04/19/23 2
Poisson’s EquationPoisson’s Equation
• We wish to solve the following partial differential equation, with homogeneous boundary conditions, for u in the two-dimensional subspace of the plane Omega:
2 2
2 2, in
with
u x,y 0 for (x,y)
u uf x y
x y
![Page 3: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/3.jpg)
04/19/23 3
Sobolev Spaces of FunctionsSobolev Spaces of Functions
2 2
222 2
Define the first order Sobolev space as the set of functions which
are L integrable on and whose derivatives are L integrable on :
u uH ( ) = u: such that u , ,
x y
This will be the space of functions we are goingto approximate for the solution of the pde.
![Page 4: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/4.jpg)
04/19/23 4
Domain of the Laplace OperatorDomain of the Laplace Operator
2 2
22 22 2
2
Define the second order Sobolev space as the set of functions which
are L integrable on and whose derivatives are L integrable on :
u u uH ( ) = u: such that u , , ,
x xy
2 2 22 2
2
u u, , ,
x y x
The Laplacian operator is a linear unbounded operator in L2(Omega). Supplemented with the homogeneous Dirichlet boundary conditions its domain of definition is the dense subspace of
2 : , 0 ( , )BD L v H v x y x y
2 2
2 2L
x y
![Page 5: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/5.jpg)
04/19/23 5
Variational Form of Poisson’s EquationVariational Form of Poisson’s Equation(also known as the weak form)(also known as the weak form)
B
2 21
2 2
Find u D such that:
v vf for all v H
and u(x,y)=0 for all (x,y)
u u
x y
v is known as the test function and u is known as the trial function
![Page 6: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/6.jpg)
04/19/23 6
Symmetric Variational Form Symmetric Variational Form of Poisson’s Equationof Poisson’s Equation(also known as the weak form)(also known as the weak form)
1B
B
1
Since v H and u D we can integrate by parts to obtain:
Find u D such that
vf for all v H
and u(x,y)=0 for all (x,y)
v u v u
x x y y
However, we are not able to solve this for all functions in the infinite set of functions in the Sobolev space.
![Page 7: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/7.jpg)
04/19/23 7
Approximation SpaceApproximation Space
• Since we are unable to represent all the functions in the infinite dimensional Sobolev spaces and subspaces we are going to use a subset of these functions.
• We will also restrict our search for u to a subset of H1 which satisfies the homogeneous Dirichlet boundary conditions.
• We will look for continuous solutions, locally represented by linear functions.
![Page 8: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/8.jpg)
04/19/23 8
Plain-ish SpeakPlain-ish Speak
• We first break up Omega into a set of triangles.
• On each triangle we are going to represent H1 with a basis of linear polynomials in the x,y variables
• In fact we are going to think of each triangle as being the map from a reference triangle (also known as the master triangle).
• For instance the physical coordinates (x,y) in terms of the reference coordinates (r,s) are related by:
31 2
31 2
1 1
2 2 2
xx x
yy y
x vv vr s r s
y vv v
![Page 9: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/9.jpg)
04/19/23 9
Example DomainExample Domain
Square domaindivided into a setof non-overlappingtriangles
![Page 10: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/10.jpg)
04/19/23 10
Reference TriangleReference Triangle
r
s
r=-1s=-1
r=1s=-1
r=-1s=1
(r,s) are Cartesian coordinates for the reference triangle
![Page 11: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/11.jpg)
04/19/23 11
Reference TriangleReference TriangleMapped To Physical TriangleMapped To Physical Triangle
r
s
31 2
31 2
1 1
2 2 2
xx x
yy y
x vv vr s r s
y vv v
1
1
x
y
v
v
2
2
x
y
v
v
3
3
x
y
v
v
r=-1s=-1
r=1s=-1
r=-1s=1
![Page 12: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/12.jpg)
04/19/23 12
Basis for Test and Trial SpacesBasis for Test and Trial Spaces
• We construct a linear polynomial basis with respect to the reference triangle as the following three functions:
• Functions will be represented in each element k by:
• In fact we will use a collocation representation so the fk1, fk2, fk3, are the values of the approximate field at the three corners of the k’th element.
1 2 3
1 1, ,
2 2 2
r s r s
3
1
( , ), ( , ) ( , )i
i kii
f x r s y r s r s f
![Page 13: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/13.jpg)
04/19/23 13
Recall Variational FormulationRecall Variational Formulation
B
1
Find u D such that
vf for all v H
and u(x,y)=0 for all (x,y)
v u v u
x x y y
We replace this by the following:
1 1
Find constants such that:
k k
kj
k Ntri k Ntrij j k ki i
j i j jk kT T
u
u fx x y y
![Page 14: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/14.jpg)
04/19/23 14
Notes on DifferentiationNotes on Differentiation
• For each element we know:
• So we can calculate:
31 2
31 2
1 1
2 2 2
xx x
yy y
x vv vr s r s
y vv v
2 1 3 1
2 1 3 1
,2 2
,2 2
x x x x
y y y y
x v v x v v
r s
y v v y v v
r s
![Page 15: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/15.jpg)
04/19/23 15
Notes on DifferentiationNotes on Differentiation
• From which we can evaluate:
• So we can calculate:
3 1 3 1
2 1 2 1
3 1 3 12 1 2 1
1 1,
2 2
1,
2 2
2 2 2 2
y y x x
y y x x
x x y yy y x x
v v v vr r
x J y J
s v v s v v
x J y
v v v vv v v vJ
r s
x x r x sr s
y y r y s
![Page 16: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/16.jpg)
04/19/23 16
Summary of DifferentiationSummary of Differentiation
• Given the physical coordinates of the three vertices of a triangle we can calculate the derivative of a function using the chain rule – whose coefficients are given by the previous formula.
![Page 17: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/17.jpg)
04/19/23 17
The The Linear Linear Finite Element MethodFinite Element Method
• A basic variant of the linear finite element method is implemented in Matlab in 4 script files available from the class web site
• umMESH.m• umStartUp.m• umMatrix.m• umSolve.m
![Page 18: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/18.jpg)
04/19/23 18
Running The Finite Element Solver Inside Matlab
![Page 19: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/19.jpg)
04/19/23 19
umMESH.mumMESH.m
• umMESH reads in a set of (umVertX,umVertY) coordinates for a set of nodes in the two-dimensional plane
• It also reads in a list of triples (elmttonode) which specify which three nodes lie in the list of umNel triangles
• It generates an elmttoelmt connectivity array, which represents the intersections of triangle faces.
• … and some other stuff
![Page 20: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/20.jpg)
04/19/23 20
umStartUp.mumStartUp.m
• Sets up the reference element information
• Builds the coordinates of nodes
• Calculates the coefficients used in the chain rule
![Page 21: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/21.jpg)
04/19/23 21
%--------------------------------------------------------- umNpts = 3; %--------------------------------------------------------- umR = [-1.0; 1.0; -1.0]; umS = [-1.0; -1.0; 1.0]; umDr = [[-0.5, 0.5, 0.0];[-0.5, 0.5, 0.0];[-0.5, 0.5, 0.0]]; umDs = [[-0.5, 0.0, 0.5];[-0.5, 0.0, 0.5];[-0.5, 0.0, 0.5]];
umMassMatrix = [[1./3., 1./6., 1./6.];[1./6.,1./3.,1./6.];[1./6.,1./6.,1./3.]]; %--------------------------------------------------------- % build coordinates of all the nodes umX = zeros(umNpts, umNel); umY = zeros(umNpts, umNel);
for thiselmt=1:umNel % note NO change of orientation va = elmttonode(thiselmt,1); vb = elmttonode(thiselmt,2); vc = elmttonode(thiselmt,3); umX(:,thiselmt) = (-0.5*(umR+umS)*umVertX(va)+0.5*(1+umR)*umVertX(vb)+0.5*(1+umS)*umVertX(vc)); umY(:,thiselmt) = (-0.5*(umR+umS)*umVertY(va)+0.5*(1+umR)*umVertY(vb)+0.5*(1+umS)*umVertY(vc));
end %--------------------------------------------------------- % calculate geometric factors xr = umDr*umX; xs = umDs*umX; yr = umDr*umY; ys = umDs*umY;
jac = -xs(1,:).*yr(1,:) + xr(1,:).*ys(1,:); rx = ys(1,:)./jac; sx = -yr(1,:)./jac; ry = -xs(1,:)./jac; sy = xr(1,:)./jac; %---------------------------------------------------------
![Page 22: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/22.jpg)
04/19/23 22
umMatrix.mumMatrix.m
• Assembles the matrix mat which represents the left hand side premultiplier of the unknown u coefficients
• Which will turn up in: mat*u = rhs
1 1
Find constants such that:
k k
kj
k Ntri k Ntrij j k ki i
j i j jk kT T
u
u fx x y y
![Page 23: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/23.jpg)
umRR = transpose(umDr)*(umMassMatrix*(umDr));umRS = transpose(umDr)*(umMassMatrix*(umDs));umSR = transpose(umDs)*(umMassMatrix*(umDr));umSS = transpose(umDs)*(umMassMatrix*(umDs));
mat = spalloc(umNnodes,umNnodes, 9*umNel);
for thiselmt=1:umNel ljac = jac(thiselmt); lrx = rx(thiselmt); lsx = sx(thiselmt); lry = ry(thiselmt); lsy = sy(thiselmt);
locmat = (lrx*lrx+lry*lry)*umRR; locmat = locmat+(lrx*lsx+lry*lsy)*umRS; locmat = locmat+(lsx*lrx+lsy*lry)*umSR; locmat = locmat+(lsx*lsx+lsy*lsy)*umSS; locmat = locmat*ljac;
nodeid1 = umElmtToGnode(thiselmt,1); nodeid2 = umElmtToGnode(thiselmt,2); nodeid3 = umElmtToGnode(thiselmt,3); mat(nodeid1,nodeid1) = mat(nodeid1,nodeid1)+locmat(1,1); mat(nodeid1,nodeid2) = mat(nodeid1,nodeid2)+locmat(1,2); mat(nodeid1,nodeid3) = mat(nodeid1,nodeid3)+locmat(1,3);
mat(nodeid2,nodeid1) = mat(nodeid2,nodeid1)+locmat(2,1); mat(nodeid2,nodeid2) = mat(nodeid2,nodeid2)+locmat(2,2); mat(nodeid2,nodeid3) = mat(nodeid2,nodeid3)+locmat(2,3);
mat(nodeid3,nodeid1) = mat(nodeid3,nodeid1)+locmat(3,1); mat(nodeid3,nodeid2) = mat(nodeid3,nodeid2)+locmat(3,2); mat(nodeid3,nodeid3) = mat(nodeid3,nodeid3)+locmat(3,3);
end
mat = mat(1:umNUnknown, 1:umNUnknown);
umMatrix.m:
Builds the global bilinear matrix
![Page 24: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/24.jpg)
04/19/23 24
umSolve.mumSolve.m
• Builds the right hand side and inverts the linear system of equations.
![Page 25: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/25.jpg)
rhs = zeros(umNnodes,1); locrhs = -2*pi*pi*sin(pi*umX).*sin(pi*umY); locrhs = umMassMatrix*locrhs; rhs = zeros(umNnodes,1); for thiselmt=1:umNel nodeid1 = umElmtToGnode(thiselmt,1); nodeid2 = umElmtToGnode(thiselmt,2); nodeid3 = umElmtToGnode(thiselmt,3);
rhs(nodeid1) = rhs(nodeid1)+jac(thiselmt)*locrhs(1,thiselmt);
rhs(nodeid2) = rhs(nodeid2)+jac(thiselmt)*locrhs(2,thiselmt);
rhs(nodeid3) = rhs(nodeid3)+jac(thiselmt)*locrhs(3,thiselmt);
end
soln = mat\(-rhs(1:umNUnknown)); % pad soln for knowns soln = [soln;zeros(umNKnown,1)];
locsoln = zeros(3,umNel); for thiselmt=1:umNel nodeid1 = umElmtToGnode(thiselmt,1); nodeid2 = umElmtToGnode(thiselmt,2); nodeid3 = umElmtToGnode(thiselmt,3); locsoln(1,thiselmt) = soln(nodeid1); locsoln(2,thiselmt) = soln(nodeid2); locsoln(3,thiselmt) = soln(nodeid3); end umTRI = delaunay(umX,umY); trisurf(umTRI,umX,umY,locsoln);
umSolve.m:
1) Assembles right hand side
2) Solves system
3) Scatters solution back to local elements
4) Plots results
![Page 26: MA471 Lecture 7](https://reader035.fdocuments.in/reader035/viewer/2022062718/56812d65550346895d9274f9/html5/thumbnails/26.jpg)
04/19/23 26
Group Project #2Group Project #2
• A team leader should be nominated to construct a driving routine and create a set of appropriate stucts for implementing the project.
• Each member should take responsibility for implementing one of the .m scripts
• There are a couple of routines we need for implementing the code. I have included them in the release in umLINALG.c
• These include matrix multiplication and inverting a matrix