Beruflich Dokumente
Kultur Dokumente
Object Models
System Assembly
Examples
Derek Gaston
drgasto@sandia.gov
1 Univ.
of Texas at Austin
2 Sandia
National Laboratories
Albuquerque,NM
Summary
Introduction
Object Models
System Assembly
Outline
1
2
Introduction
Object Models
Core Classes
BVP Framework
System Assembly
Basic Example
Coupled Variables
Essential Boundary Conditions
Examples
Fluid Dynamics
Biology
Material Science
Summary
Examples
Summary
Introduction
Object Models
Goals
libMesh is not
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Goals
libMesh is not
A physics implementation.
Examples
Summary
Introduction
Object Models
System Assembly
Goals
libMesh is not
A physics implementation.
A stand-alone application.
Examples
Summary
Introduction
Object Models
System Assembly
Goals
libMesh is not
A physics implementation.
A stand-alone application.
libMesh is
Examples
Summary
Introduction
Object Models
System Assembly
Goals
libMesh is not
A physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Goals
libMesh is not
A physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptive
finite element applications.
Summary
Introduction
Object Models
System Assembly
Examples
Goals
libMesh is not
A physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptive
finite element applications.
An interface to linear algebra, meshing, partitioning,
etc. libraries.
Summary
=
=
=
=
D
System Assembly
N
0
uD D
0 N
u0 (x)
= F(u)
u
M
t
G(u)
u
N(u)
u(x, 0)
Object Models
Introduction
Examples
Summary
Introduction
Object Models
Associated to is the
Mesh data structure
A Mesh is basically a
collection of geometric
elements and nodes
[
h :=
e
e
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Node
Elem
#_nodes: Node **
#_neighbors: Elem **
#_parent: Elem *
#_children: Elem **
#_*flag: RefinementState
#_p_level: unsigned char
#_subdomain_id: unsigned char
+n_{faces,sides,vertices,edges,children}(): unsigned int
+centroid(): Point
+hmin,hmax(): Real
NodeElem
Edge
Prism
Hex8
Face
Cell
Hex
Pyramid
Hex20
InfQuad
Hex27
Tet
InfCell
Abstract interface
gives mesh topology
Concrete
instantiations of
mesh geometry
Hides element type
from most
applications
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Lagrange
Hermite
Hierarchic
Monomial
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Core Features
Summary
Introduction
Object Models
System Assembly
Core Classes
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
uF = uC
X
uCj Cj
uFi Fi =
Aki ui = Bkj uj
ui = A1
ki Bkj uj
1
Integrated values (and fluxes, for C continuity) give
element-independent matrices:
Aki (Fi , Fk )
Bkj (Cj , Ck )
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
Summary
Introduction
Object Models
System Assembly
Core Classes
libMesh Parallelization
Parallel code
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial code
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial code
Mesh storage on every node
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial code
Mesh storage on every node
DoF renumbering, constraint calculations
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial code
Mesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for Linear
Algebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial code
Mesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Mesh, solution I/O
Summary
Introduction
Object Models
System Assembly
Examples
Core Classes
ParallelMesh
Parallel subclassing of MeshBase
Start from unstructured Mesh class
Add methods to delete, reconstruct non-semilocal
Elem and Node objects
Parallelize DofMap methods
Parallelize MeshRefinement methods
Add parallel or chunked I/O support
Add load balancing support
Also want parallel BoundaryInfo, BoundaryMesh, Data,
Function, Generation, Modification, Smoother, and Tools
classes
Summary
Introduction
Object Models
System Assembly
Examples
Summary
BVP Framework
Introduction
Object Models
System Assembly
Examples
BVP Framework
FEMSystem
+elem_solution: DenseVector<Number>
+elem_residual: DenseVector<Number>
+elem_jacobian: DenseMatrix<Number>
#elem_fixed_solution: DenseVector<Number>
#*_fe_var: std::vector<FEBase *>
#elem: Elem *
+*_time_derivative(request_jacobian)
+*_constraint(request_jacobian)
+*_postprocess()
NavierStokesSystem
CahnHilliardSystem
LaplaceYoungSystem
SurfactantSystem
Generalized IBVP
representation
FEMSystem does all
initialization, global
assembly
User code only
needs weighted time
derivative residuals
( u
, vi ) = Fi (u) and/or
t
constraints
Gi (u, vi ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
BVP Framework
TimeSolver
+*_residual(request_jacobian)
+solve()
+advance_timestep()
SteadySolver
AdamsMoultonSolver
EulerSolver
EigenSolver
Summary
Introduction
Object Models
System Assembly
Examples
BVP Framework
NonlinearSolver
+*_tolerance
+*_max_iterations
+solve()
LinearSolver
ContinuationSolver
QuasiNewtonSolver
Acquires residuals,
jacobians from
FEMSystem
assembly
Handles inner loops,
inner solvers and
tolerances,
convergence tests,
etc
Summary
Introduction
Object Models
System Assembly
Examples
Basic Example
System Assembly
vh V h
Summary
Introduction
Object Models
System Assembly
Basic Example
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Basic Example
Z
j i dx
uj
e
f i dx ,
e
i = 1, . . . , Ns
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Z
j i dx
uj
e
f i dx ,
i = 1, . . . , Ns
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
element.
x()
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
element.
x()
Z
=
Z
f i dx =
f (x())i |J|d
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
element.
x()
Introduction
Object Models
System Assembly
Examples
Basic Example
Summary
Introduction
Object Models
System Assembly
Examples
Basic Example
Summary
Introduction
Object Models
System Assembly
Examples
Basic Example
Fei
Z
=
e
Nq
X
q=1
f i |J|d
f (x(q ))i (q )|J(q )|wq
Summary
Introduction
Object Models
System Assembly
Examples
Basic Example
K eij
Z
=
e
Nq
X
q=1
j i |J|d
j (q ) i (q )|J(q )|wq
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Code
Math
Description
JxW[q]
|J(q )|wq
phi[i][q]
i (q )
dphi[i][q]
i (q )
d2phi[i][q]
xyz[q]
x(q )
normals[q]
~n(x(q ))
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
j (q )
i (q )|J(q )|wq
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
j (q )
i (q )|J(q )|wq
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Nq
X
q=1
j (q )
i (q )|J(q )|wq
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Convection-Diffusion Equation
The matrix assembly routine for the linear
convection-diffusion equation,
ku + b u = f
for (q=0; q<Nq; ++q)
for (i=0; i<Ns; ++i) {
Fe(i)
+= JxW[q]*f(xyz[q])*phi[i][q];
for (j=0; j<Ns; ++j)
Ke(i,j) += JxW[q]*(k*(dphi[j][q]*dphi[i][q])
+ (b*dphi[j][q])*phi[i][q]);
}
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Convection-Diffusion Equation
The matrix assembly routine for the linear
convection-diffusion equation,
ku + b u = f
for (q=0; q<Nq; ++q)
for (i=0; i<Ns; ++i) {
Fe(i)
+= JxW[q]*f(xyz[q])*phi[i][q];
for (j=0; j<Ns; ++j)
Ke(i,j) += JxW[q]*(k*(dphi[j][q]*dphi[i][q])
+ (b*dphi[j][q])*phi[i][q]);
}
Introduction
Object Models
System Assembly
Examples
Summary
Basic Example
Convection-Diffusion Equation
The matrix assembly routine for the linear
convection-diffusion equation,
ku + b u = f
for (q=0; q<Nq; ++q)
for (i=0; i<Ns; ++i) {
Fe(i)
+= JxW[q]*f(xyz[q])*phi[i][q];
for (j=0; j<Ns; ++j)
Ke(i,j) += JxW[q]*(k*(dphi[j][q]*dphi[i][q])
+ (b*dphi[j][q])*phi[i][q]);
}
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
p u = f
u = 0
R2
Introduction
Object Models
System Assembly
Examples
Summary
Coupled Variables
Stokes Flow
The matrix assembly can proceed in essentially the
same way.
For the momentum equations:
for (q=0; q<Nq; ++q)
for (d=0; d<2; ++d)
for (i=0; i<Ns; ++i) {
Fe[d](i) += JxW[q]*f(xyz[q],d)*phi[i][q];
for (j=0; j<Ns; ++j)
Ke[d][d](i,j) +=
JxW[q]*nu*(dphi[j][q]*dphi[i][q]);
}
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
2
3
Summary
Introduction
Object Models
System Assembly
Examples
2
3
4
Summary
Introduction
Object Models
System Assembly
Examples
Summary
2
3
4
f1
1 0 0
.
. f2
0 k22 k23
,
0 k32 k33
. f3
.
0 .
.
.
0
g1
.
, f2 k21 g1
. f3 k31 g1
.
.
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary face
that has shape function values phi f[][]
for (qf=0; qf<Nqf; ++qf) {
for (i=0; i<Nf; ++i) {
Fe(i) += JxW_f[qf]*
penalty*uD(xyz[q])*phi_f[i][qf];
for (j=0; j<Nf; ++j)
Ke(i,j) += JxW_f[qf]*
penalty*phi_f[j][qf]*phi_f[i][qf];
}
}
Summary
Introduction
Object Models
System Assembly
Examples
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary face
that has shape function values phi f[][]
for (qf=0; qf<Nqf; ++qf) {
for (i=0; i<Nf; ++i) {
Fe(i) += JxW_f[qf]*
penalty*uD(xyz[q])*phi_f[i][qf];
for (j=0; j<Nf; ++j)
Ke(i,j) += JxW_f[qf]*
penalty*phi_f[j][qf]*phi_f[i][qf];
}
}
Summary
Introduction
Object Models
System Assembly
Examples
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary face
that has shape function values phi f[][]
for (qf=0; qf<Nqf; ++qf) {
for (i=0; i<Nf; ++i) {
Fe(i) += JxW_f[qf]*
penalty*uD(xyz[q])*phi_f[i][qf];
for (j=0; j<Nf; ++j)
Ke(i,j) += JxW_f[qf]*
penalty*phi_f[j][qf]*phi_f[i][qf];
}
}
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects for
enclosed liquids.
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects for
enclosed liquids.
Combining surface tension, gravity and contact the energy
functional for Laplace-Young is:
Z
Z
Z q
1 2
2
1 + |u| d +
u d
u ds
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects for
enclosed liquids.
Combining surface tension, gravity and contact the energy
functional for Laplace-Young is:
Z
Z
Z q
1 2
2
1 + |u| d +
u d
u ds
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects for
enclosed liquids.
Combining surface tension, gravity and contact the energy
functional for Laplace-Young is:
Z
Z
Z q
1 2
2
1 + |u| d +
u d
u ds
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects for
enclosed liquids.
Combining surface tension, gravity and contact the energy
functional for Laplace-Young is:
Z
Z
Z q
1 2
2
1 + |u| d +
u d
u ds
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Instead of explicitly finding the Jacobian, well use FEMSystem to finite difference the weak form.
element constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
Number u = interior_value(0, qp);
Gradient grad_u = interior_gradient(0, qp);
Number K = 1. / sqrt(1. + (grad_u * grad_u));
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) += JxW[qp] * ((_kappa * u * phi[i][qp]) +
(K * grad_u * dphi[i][qp]));
}
}
side constraint()
for (unsigned int qp=0; qp != n_qpoints; qp++) {
for (unsigned int i=0; i != n_u_dofs; i++) {
Fu(i) -= JxW[qp] * _gamma * phi[i][qp];
}
}
1
u
B
C
, A
@q
1 + |u|2
+ (u, ) (1, ) = 0
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Solution
An overkill solution containing 200,000 DOFs.
(a) 2D.
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shock
generated by a 10o wedge angle.
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shock
generated by a 10o wedge angle.
This problem has an exact solution for density which
is a step function.
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shock
generated by a 10o wedge angle.
This problem has an exact solution for density which
is a step function.
Utilizing libmeshs exact solution capability the exact
L2 error can be solved for.
Summary
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shock
generated by a 10o wedge angle.
This problem has an exact solution for density which
is a step function.
Utilizing libmeshs exact solution capability the exact
L2 error can be solved for.
The exact solution is shown below:
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
0.8
0.8
0.6
0.6
r
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
0.4
0.4
0.2
0.2
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
H-Adapted Solutions
A flux jump indicator was employed as the error
indcator along with a statistical flagging scheme.
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
H-Adapted Solutions
A flux jump indicator was employed as the error
indcator along with a statistical flagging scheme.
Here is a mesh and solution after 2 adaptive
refinements containing 10800 DOFs:
1
0.8
0.8
0.6
0.6
r
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
0.4
0.4
0.2
0.2
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Redistributed Solutions
Redistribution utilizing the same flux jump indicator.
1
0.8
0.8
0.6
0.6
r
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
0.4
0.4
0.2
0.2
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
0.8
0.8
0.6
0.6
r
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
0.4
0.4
0.2
0.2
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Solution Comparison
For a better comparison here are 3 of the solutions,
each with around 11000 DOFs:
1
1
r
0.81.45
0.6
0.4
0.4
0.2
0.2
0.2
0.2
0.4
0.6
0.8
(m) Uniform.
0.2
0.4
0.6
0.8
(n) Adaptive.
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
1.4
1.35
1.3
1.25
0.61.2
1.15
1.1
1.05
1
0.4
0.81.45
1.4
1.35
1.3
1.25
0.61.2
1.15
1.1
1.05
1
0.8
0.2
0.4
0.6
(o) R + H.
0.8
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Error Plot
libmesh provides capability for computing error norms
against an exact solution.
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Error Plot
libmesh provides capability for computing error norms
against an exact solution.
The exact solution is not in H 1 therefore we only
obtain the L2 convergence plot:
Uniform
Adaptivity
Redist + Adapt
-1.2
log10(L2Error)
-1.4
-1.6
-1.8
-2.0
-2.2
3.5
4.0
4.5
log10(N Dofs)
5.0
Introduction
Fluid Dynamics
Object Models
System Assembly
Examples
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Natural Convection
Introduction
Object Models
System Assembly
Examples
Fluid Dynamics
Surface-Tension-Driven Flow
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Fluid Dynamics
Double-Diffusive Convection
Introduction
Object Models
System Assembly
Examples
Biology
Tumor Angiogenesis
Summary
Introduction
Object Models
System Assembly
Examples
Summary
Material Science
c
= Mc f00 (c) 2c c
t
Introduction
Object Models
System Assembly
Examples
Summary
Material Science
Introduction
Object Models
System Assembly
Examples
Summary
libMesh Development
Open Source (LGPL)
Leveraging existing libraries
Public site, mailing lists, CVS tree, examples, etc. at
http://libmesh.sf.net/
18 examples including:
Infinite Elements for the wave equation.
Helmholtz with complex numbers.
Laplace in L-Shaped Domain.
Biharmonic Equation.
Using SLEPc for an Eigen Problem.
Unsteady Navier Stokes.
And More!
Summary