finite elements libmesh
TRANSCRIPT
Introduction Object Models System Assembly Examples Summary
libMesh Finite Element Library
Derek [email protected]
1Univ. of Texas at Austin
2Sandia National LaboratoriesAlbuquerque,NM
August 22, 2007
Introduction Object Models System Assembly Examples Summary
Outline1 Introduction2 Object Models
Core ClassesBVP Framework
3 System AssemblyBasic ExampleCoupled VariablesEssential Boundary Conditions
4 ExamplesFluid DynamicsBiologyMaterial Science
5 Summary
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is not
A physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh is
A software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh isA software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh isA software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
Goals
libMesh is notA physics implementation.
A stand-alone application.
libMesh isA software library and toolkit.
Classes and functions for writing parallel adaptivefinite element applications.
An interface to linear algebra, meshing, partitioning,etc. libraries.
Introduction Object Models System Assembly Examples Summary
For most applications weassume there is a BoundaryValue Problem to beapproximated in a FiniteElement function space
M∂u∂t
= F(u) ∈ Ω
G(u) = 0 ∈ Ω
u = uD ∈ ∂ΩD
N(u) = 0 ∈ ∂ΩN
u(x, 0) = u0(x)
δΩD
δΩN
Ω
Introduction Object Models System Assembly Examples Summary
Associated to Ω is theMesh data structure
A Mesh is basically acollection of geometricelements and nodes
Ωh :=⋃
e
Ωe
Ωh
Introduction Object Models System Assembly Examples Summary
Object Oriented Programming
Abstract Base Classes define user interfaces.
Concrete Subclasses implement functionality.
One physics code can work with manydiscretizations.
Introduction Object Models System Assembly Examples Summary
Object Oriented Programming
Abstract Base Classes define user interfaces.
Concrete Subclasses implement functionality.
One physics code can work with manydiscretizations.
Introduction Object Models System Assembly Examples Summary
Object Oriented Programming
Abstract Base Classes define user interfaces.
Concrete Subclasses implement functionality.
One physics code can work with manydiscretizations.
Introduction Object Models System Assembly Examples Summary
Object Oriented Programming
Abstract Base Classes define user interfaces.
Concrete Subclasses implement functionality.
One physics code can work with manydiscretizations.
Introduction Object Models System Assembly Examples Summary
Core Classes
Geometric Element Classes
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 FaceEdge Cell InfQuad InfCell
Prism Hex Pyramid Tet
Hex8 Hex20 Hex27
DofObject-_n_systems: unsigned char-_n_vars: unsigned char *-_n_comp: unsigned char **-_dof_ids: unsigned int **-_id: unsigned int-_processor_id: unsigned short int
NodeAbstract interfacegives mesh topology
Concreteinstantiations ofmesh geometry
Hides element typefrom mostapplications
Introduction Object Models System Assembly Examples Summary
Core Classes
Finite Element Classes
FEBase
+phi, dphi, d2phi
+quadrature_rule, JxW
+reinit(Elem)
+reinit(Elem,side)
Lagrange
Hermi te
Hierarchic
Monomial
Finite Element objectbuilds data for eachGeometric object
User only deals withshape function,quadrature data
Introduction Object Models System Assembly Examples Summary
Core Classes
Core Features
Mixed element geometries in unstructured grids
Adaptive mesh h refinement with hanging nodes, prefinement
Integration w/ PETSc, LASPack, METIS, ParMETIS,Triangle, TetGen
Support for UNV, ExodusII, Tecplot, GMV, UCD files
Mesh creation, modification utilities
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Degree of Freedom Handling
DofObject subclasses store global Degree ofFreedom indices
DofMap class assigns indices to a partitioned mesh
FE classes calculate hanging node, periodicconstraints
DofMap class applies constraints
System class handles AMR/C projections
Introduction Object Models System Assembly Examples Summary
Core Classes
Generic Constraint Calculations
To maintain function space continuity, constrain “hangingnode” Degrees of Freedom coefficients on fine elementsin terms of DoFs on coarse neighbors.
uF = uC∑i
uFi φF
i =∑
j
uCj φC
j
Akiui = Bkjuj
ui = A−1ki Bkjuj
Integrated values (and fluxes, for C1 continuity) giveelement-independent matrices:
Aki ≡ (φFi , φF
k )
Bkj ≡ (φCj , φC
k )
Introduction Object Models System Assembly Examples Summary
Core Classes
Generic Projection Calculations
Upon element coarsening (or refinement in non-nestedspaces):
Copy nodal Degree of Freedom coefficients
Project edge DoFs, holding nodal DoFs constant
Project face DoFs, holding nodes/edges constant
Project interior DoFs, holding boundaries constant
Advantages / Disadvantages
Requires only local solves
Consistent in parallel
May violate physical conservation laws
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel code
PetscVector, DistributedVector classes for LinearAlgebra
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
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
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
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
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
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
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
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
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
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial codeMesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Mesh, solution I/O
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial codeMesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Mesh, solution I/O
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial codeMesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Mesh, solution I/O
Introduction Object Models System Assembly Examples Summary
Core Classes
libMesh Parallelization
Parallel codePetscVector, DistributedVector classes for LinearAlgebra
Parallel assembly, error indicators, etc.
Mesh partitioning with ParMETIS, etc.
Serial codeMesh storage on every node
DoF renumbering, constraint calculations
Refinement/Coarsening flagging
Mesh, solution I/O
Introduction Object Models System Assembly Examples Summary
Core Classes
ParallelMesh
Parallel subclassing of MeshBase
Start from unstructured Mesh class
Add methods to delete, reconstruct non-semilocalElem 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 Toolsclasses
Introduction Object Models System Assembly Examples Summary
BVP Framework
Boundary Value Problem Framework Goals
GoalsImproved test coverage and reliability
Hiding implementation details from user code
Rapid prototyping of new formulations
Physics-dependent error estimators
MethodsObject-oriented System and Solver subclasses
Factoring common patterns into library code
Per-element Numerical Jacobian verification
Introduction Object Models System Assembly Examples Summary
BVP Framework
FEM System Classes
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
LaplaceYoungSystem
CahnHilliardSystem
SurfactantSystem
Generalized IBVPrepresentation
FEMSystem does allinitialization, globalassembly
User code onlyneeds weighted timederivative residuals(∂u
∂t , vi) = Fi(u) and/orconstraintsGi(u, vi) = 0
Introduction Object Models System Assembly Examples Summary
BVP Framework
ODE Solver Classes
TimeSolver
+*_residual(request_jacobian)+solve()+advance_timestep()
SteadySolver EulerSolver
AdamsMoultonSolver EigenSolver
Calls user code oneach element
Assembleselement-by-elementtime derivatives,constraints, andweighted oldsolutions
Introduction Object Models System Assembly Examples Summary
BVP Framework
Nonlinear Solver Classes
NonlinearSolver+*_tolerance+*_max_iterations
+solve()
QuasiNewtonSolverLinearSolver
ContinuationSolver
Acquires residuals,jacobians fromFEMSystemassembly
Handles inner loops,inner solvers andtolerances,convergence tests,etc
Introduction Object Models System Assembly Examples Summary
Basic Example
System Assembly
For simplicity we will focus on the weighted residualstatement arising from the Poisson equation, with∂ΩN = ∅,
(R(uh), vh) :=∫Ωh
[∇uh · ∇vh − fvh
]dx = 0 ∀vh ∈ Vh
Introduction Object Models System Assembly Examples Summary
Basic Example
The element integrals . . .∫Ωe
[∇uh · ∇vh − fvh
]dx
are written in terms of the local “φi” basis functions
Ns∑j=1
uj
∫Ωe
∇φj · ∇φi dx−∫
Ωe
fφi dx , i = 1, . . . , Ns
This can be expressed naturally in matrix notation as
KeUe− Fe
Introduction Object Models System Assembly Examples Summary
Basic Example
The element integrals . . .∫Ωe
[∇uh · ∇vh − fvh
]dx
are written in terms of the local “φi” basis functions
Ns∑j=1
uj
∫Ωe
∇φj · ∇φi dx−∫
Ωe
fφi dx , i = 1, . . . , Ns
This can be expressed naturally in matrix notation as
KeUe− Fe
Introduction Object Models System Assembly Examples Summary
Basic Example
The element integrals . . .∫Ωe
[∇uh · ∇vh − fvh
]dx
are written in terms of the local “φi” basis functions
Ns∑j=1
uj
∫Ωe
∇φj · ∇φi dx−∫
Ωe
fφi dx , i = 1, . . . , Ns
This can be expressed naturally in matrix notation as
KeUe− Fe
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals are performed on a “reference” elementΩe, transformed via Lagrange basis to the geometricelement.
eΩx ξ)x(
ξ
eΩ
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals are performed on a “reference” elementΩe, transformed via Lagrange basis to the geometricelement.
eΩx x(ξ)
ξ
Ωe
The Jacobian of the map x(ξ) is J.
Fei =
∫Ωe
fφidx =
∫Ωe
f (x(ξ))φi|J|dξ
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals are performed on a “reference” elementΩe, transformed via Lagrange basis to the geometricelement.
eΩx ξ)x(
ξ
Ωe
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals on the “reference” element areapproximated via numerical quadrature.
The quadrature rule has Nq points “ξq” and weights“wq”.
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals on the “reference” element areapproximated via numerical quadrature.
The quadrature rule has Nq points “ξq” and weights“wq”.
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals on the “reference” element areapproximated via numerical quadrature.
The quadrature rule has Nq points “ξq” and weights“wq”.
Fei =
∫Ωe
fφi|J|dξ
≈Nq∑
q=1
f (x(ξq))φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The integrals on the “reference” element areapproximated via numerical quadrature.
The quadrature rule has Nq points “ξq” and weights“wq”.
Keij =
∫Ωe
∇φj · ∇φi |J|dξ
≈Nq∑
q=1
∇φj(ξq) · ∇φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
At the qth quadrature point, LibMesh can providevariables including:
Code Math Description
JxW[q] |J(ξq)|wq Jacobian times weight
phi[i][q] φi(ξq) value of i th shape fn.
dphi[i][q] ∇φi(ξq) value of i th shape fn. gradient
d2phi[i][q] ∇∇φi(ξq) value of i th shape fn. Hessian
xyz[q] x(ξq) location of ξq in physical space
normals[q] ~n(x(ξq)) normal vector at x on a side
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Fei =
Nq∑q=1
f (x(ξq))φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Fei =
Nq∑q=1
f (x(ξq))φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Fei =
Nq∑q=1
f (x(ξq))φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Fei =
Nq∑q=1
f (x(ξq))φi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Keij =
Nq∑q=1
∇ξφj(ξq) · ∇ξφi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Keij =
Nq∑q=1
∇ξφj(ξq) · ∇ξφi(ξq)|J(ξq)|wq
Introduction Object Models System Assembly Examples Summary
Basic Example
The LibMesh representation of the matrix and rhsassembly is similar to the mathematical statements.
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] *( dphi[j][q]*dphi[i][q] );
Keij =
Nq∑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 linearconvection-diffusion equation,
−k∆u + 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 linearconvection-diffusion equation,
−k∆u + 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 linearconvection-diffusion equation,
−k∆u + 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
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
We have an array of submatrices: Ke[ ][ ]
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
We have an array of submatrices: Ke[ 1][ 1]
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
We have an array of submatrices: Ke[ 2][ 2]
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
We have an array of submatrices: Ke[ 3][ 2]
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
And an array of right-hand sides: Fe[] .
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
And an array of right-hand sides: Fe[ 1] .
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
For multi-variable systems like Stokes flow,
∇p− ν∆u = f∇ · u = 0
∈ Ω ⊂ R2
The element stiffness matrix concept can extended toinclude sub-matrices Ke
u1u1Ke
u1u2Ke
u1p
Keu2u1
Keu2u2
Keu2p
Kepu1
Kepu2
Kepp
Ueu1
Ueu2
Uep
− Fe
u1
Feu2
Fep
And an array of right-hand sides: Fe[ 2] .
Introduction Object Models System Assembly Examples Summary
Coupled Variables
Stokes Flow
The matrix assembly can proceed in essentially thesame 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
Essential Boundary Conditions
Essential Boundary Data
Dirichlet boundary conditions can be enforced afterthe global stiffness matrix K has been assembledThis usually involves
1 placing a “1” on the main diagonal of the globalstiffness matrix
2 zeroing out the row entries3 placing the Dirichlet value in the rhs vector4 subtracting off the column entries from the rhs
k11 k12 k13 .k21 k22 k23 .k31 k32 k33 .. . . .
,
f1f2f3.
→
1 0 0 00 k22 k23 .0 k32 k33 .0 . . .
,
g1
f2 − k21g1
f3 − k31g1
.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Essential Boundary Data
Dirichlet boundary conditions can be enforced afterthe global stiffness matrix K has been assembledThis usually involves
1 placing a “1” on the main diagonal of the globalstiffness matrix
2 zeroing out the row entries
3 placing the Dirichlet value in the rhs vector4 subtracting off the column entries from the rhs
k11 k12 k13 .k21 k22 k23 .k31 k32 k33 .. . . .
,
f1f2f3.
→
1 0 0 00 k22 k23 .0 k32 k33 .0 . . .
,
g1
f2 − k21g1
f3 − k31g1
.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Essential Boundary Data
Dirichlet boundary conditions can be enforced afterthe global stiffness matrix K has been assembledThis usually involves
1 placing a “1” on the main diagonal of the globalstiffness matrix
2 zeroing out the row entries3 placing the Dirichlet value in the rhs vector
4 subtracting off the column entries from the rhs
k11 k12 k13 .k21 k22 k23 .k31 k32 k33 .. . . .
,
f1f2f3.
→
1 0 0 00 k22 k23 .0 k32 k33 .0 . . .
,
g1
f2 − k21g1
f3 − k31g1
.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Essential Boundary Data
Dirichlet boundary conditions can be enforced afterthe global stiffness matrix K has been assembledThis usually involves
1 placing a “1” on the main diagonal of the globalstiffness matrix
2 zeroing out the row entries3 placing the Dirichlet value in the rhs vector4 subtracting off the column entries from the rhs
k11 k12 k13 .k21 k22 k23 .k31 k32 k33 .. . . .
,
f1f2f3.
→
1 0 0 00 k22 k23 .0 k32 k33 .0 . . .
,
g1
f2 − k21g1
f3 − k31g1
.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Essential Boundary Data
Dirichlet boundary conditions can be enforced afterthe global stiffness matrix K has been assembledThis usually involves
1 placing a “1” on the main diagonal of the globalstiffness matrix
2 zeroing out the row entries3 placing the Dirichlet value in the rhs vector4 subtracting off the column entries from the rhs
k11 k12 k13 .k21 k22 k23 .k31 k32 k33 .. . . .
,
f1f2f3.
→
1 0 0 00 k22 k23 .0 k32 k33 .0 . . .
,
g1
f2 − k21g1
f3 − k31g1
.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Cons of this approach :
Works for an interpolary finite element basis but not ingeneral.May be inefficient to change individual entries oncethe global matrix is assembled.
Need to enforce boundary conditions for a genericfinite element basis at the element stiffness matrixlevel.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Cons of this approach :Works for an interpolary finite element basis but not ingeneral.
May be inefficient to change individual entries oncethe global matrix is assembled.
Need to enforce boundary conditions for a genericfinite element basis at the element stiffness matrixlevel.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Cons of this approach :Works for an interpolary finite element basis but not ingeneral.May be inefficient to change individual entries oncethe global matrix is assembled.
Need to enforce boundary conditions for a genericfinite element basis at the element stiffness matrixlevel.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
Cons of this approach :Works for an interpolary finite element basis but not ingeneral.May be inefficient to change individual entries oncethe global matrix is assembled.
Need to enforce boundary conditions for a genericfinite element basis at the element stiffness matrixlevel.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
A “penalty” term is added to the standard weightedresidual statement
(R(u), v) +1ε
∫∂ΩD
(u− uD)v dx︸ ︷︷ ︸penalty term
= 0 ∀v ∈ V
Here ε 1 is chosen so that, in floating pointarithmetic, 1
ε+ 1 = 1
ε.
This weakly enforces u = uD on the Dirichletboundary, and works for general finite element bases.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
A “penalty” term is added to the standard weightedresidual statement
(R(u), v) +1ε
∫∂ΩD
(u− uD)v dx︸ ︷︷ ︸penalty term
= 0 ∀v ∈ V
Here ε 1 is chosen so that, in floating pointarithmetic, 1
ε+ 1 = 1
ε.
This weakly enforces u = uD on the Dirichletboundary, and works for general finite element bases.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
A “penalty” term is added to the standard weightedresidual statement
(R(u), v) +1ε
∫∂ΩD
(u− uD)v dx︸ ︷︷ ︸penalty term
= 0 ∀v ∈ V
Here ε 1 is chosen so that, in floating pointarithmetic, 1
ε+ 1 = 1
ε.
This weakly enforces u = uD on the Dirichletboundary, and works for general finite element bases.
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary facethat 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];
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary facethat 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];
Introduction Object Models System Assembly Examples Summary
Essential Boundary Conditions
LibMesh provides:
A quadrature rule with Nqf points and JxW f[]
A finite element coincident with the boundary facethat 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];
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects forenclosed liquids.
Combining surface tension, gravity and contact the energyfunctional for Laplace-Young is:∫
Ω
√1 + |∇u|2 dΩ +
∫Ω
12κu2 dΩ−
∫∂Ω
σu ds
Where κ is the ratio of surface energy to gravitationalenergy and u is the height of the liquid.
While the weak formulation of the stationary condition isgiven by:(
∇u√1 + |∇u|2
,∇ϕ
)Ω
+ κ (u, ϕ)Ω = σ (1, ϕ)∂Ω (1)
By specifying the parameter σ = cos(γ) (where γ is thecontact angle) along the boundary, the liquid height u canbe solved for.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects forenclosed liquids.
Combining surface tension, gravity and contact the energyfunctional for Laplace-Young is:∫
Ω
√1 + |∇u|2 dΩ +
∫Ω
12κu2 dΩ−
∫∂Ω
σu ds
Where κ is the ratio of surface energy to gravitationalenergy and u is the height of the liquid.
While the weak formulation of the stationary condition isgiven by:(
∇u√1 + |∇u|2
,∇ϕ
)Ω
+ κ (u, ϕ)Ω = σ (1, ϕ)∂Ω (1)
By specifying the parameter σ = cos(γ) (where γ is thecontact angle) along the boundary, the liquid height u canbe solved for.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects forenclosed liquids.
Combining surface tension, gravity and contact the energyfunctional for Laplace-Young is:∫
Ω
√1 + |∇u|2 dΩ +
∫Ω
12κu2 dΩ−
∫∂Ω
σu ds
Where κ is the ratio of surface energy to gravitationalenergy and u is the height of the liquid.
While the weak formulation of the stationary condition isgiven by:(
∇u√1 + |∇u|2
,∇ϕ
)Ω
+ κ (u, ϕ)Ω = σ (1, ϕ)∂Ω (1)
By specifying the parameter σ = cos(γ) (where γ is thecontact angle) along the boundary, the liquid height u canbe solved for.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects forenclosed liquids.
Combining surface tension, gravity and contact the energyfunctional for Laplace-Young is:∫
Ω
√1 + |∇u|2 dΩ +
∫Ω
12κu2 dΩ−
∫∂Ω
σu ds
Where κ is the ratio of surface energy to gravitationalenergy and u is the height of the liquid.
While the weak formulation of the stationary condition isgiven by:(
∇u√1 + |∇u|2
,∇ϕ
)Ω
+ κ (u, ϕ)Ω = σ (1, ϕ)∂Ω (1)
By specifying the parameter σ = cos(γ) (where γ is thecontact angle) along the boundary, the liquid height u canbe solved for.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction
Laplace-Young equation model surface tension effects forenclosed liquids.
Combining surface tension, gravity and contact the energyfunctional for Laplace-Young is:∫
Ω
√1 + |∇u|2 dΩ +
∫Ω
12κu2 dΩ−
∫∂Ω
σu ds
Where κ is the ratio of surface energy to gravitationalenergy and u is the height of the liquid.
While the weak formulation of the stationary condition isgiven by:(
∇u√1 + |∇u|2
,∇ϕ
)Ω
+ κ (u, ϕ)Ω = σ (1, ϕ)∂Ω (1)
By specifying the parameter σ = cos(γ) (where γ is thecontact angle) along the boundary, the liquid height u canbe solved for.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Instead of explicitly finding the Jacobian, we’ll 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] ;
0B@ ∇uq1 + |∇u|2
,∇ϕ
1CAΩ
+ κ (u, ϕ)Ω − σ (1, ϕ)∂Ω = 0 ∀ϕ ∈ V
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Solution
An overkill solution containing 200,000 DOFs.
(a) 2D. (b) Contour Elevation.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Compressible Shocked Flow
Original compressible flow code written by Ben Kirkutilizing libMesh.
Solves both Compressible Navier Stokes and InviscidEuler.Includes both SUPG and a shock capturing scheme.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Compressible Shocked Flow
Original compressible flow code written by Ben Kirkutilizing libMesh.
Solves both Compressible Navier Stokes and InviscidEuler.
Includes both SUPG and a shock capturing scheme.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Compressible Shocked Flow
Original compressible flow code written by Ben Kirkutilizing libMesh.
Solves both Compressible Navier Stokes and InviscidEuler.Includes both SUPG and a shock capturing scheme.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shockgenerated by a 10o wedge angle.
This problem has an exact solution for density whichis a step function.Utilizing libmesh’s exact solution capability the exactL2 error can be solved for.The exact solution is shown below:
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shockgenerated by a 10o wedge angle.
This problem has an exact solution for density whichis a step function.
Utilizing libmesh’s exact solution capability the exactL2 error can be solved for.The exact solution is shown below:
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shockgenerated by a 10o wedge angle.
This problem has an exact solution for density whichis a step function.Utilizing libmesh’s exact solution capability the exactL2 error can be solved for.
The exact solution is shown below:
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Problem Specification
The problem studied is that of an oblique shockgenerated by a 10o wedge angle.
This problem has an exact solution for density whichis a step function.Utilizing libmesh’s exact solution capability the exactL2 error can be solved for.The exact solution is shown below:
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Uniformly Refined Solutions
For comparison purposes, here is a mesh and asolution after 1 uniform refinement with 10890 DOFs.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
(c) Mesh after 1 uniformrefinement.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(d) Solution after 1 uni-form refinement.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
H-Adapted Solutions
A flux jump indicator was employed as the errorindcator along with a statistical flagging scheme.
Here is a mesh and solution after 2 adaptiverefinements containing 10800 DOFs:
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
(e) Mesh after 2 adapta-tions.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(f) Solution after 2 adap-tations.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
H-Adapted Solutions
A flux jump indicator was employed as the errorindcator along with a statistical flagging scheme.Here is a mesh and solution after 2 adaptiverefinements containing 10800 DOFs:
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
(g) Mesh after 2 adapta-tions.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(h) Solution after 2 adap-tations.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Redistributed Solutions
Redistribution utilizing the same flux jump indicator.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
(i) Mesh after 8 redistri-butions.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(j) Solution after 8 redis-tributions.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Redistributed and Adapted
Now combining the two, here are the mesh andsolution after 2 adaptations beyond the previousredistribution containing 10190 DOFs.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
(k) Mesh after 2 adap-tions.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(l) Solution after 2 adap-tations.
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:
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(m) Uniform.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(n) Adaptive.
x
y
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
r
1.451.41.351.31.251.21.151.11.051
(o) R + H.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Error Plot
libmesh provides capability for computing error normsagainst an exact solution.
The exact solution is not in H1 therefore we onlyobtain the L2 convergence plot:
3.5 4.0 4.5 5.001 sfoD )N(gol
-2.2
-2.0
-1.8
-1.6
-1.4
-1.2
01)r
orrE2
L(gol
UniformAdaptivityRedist + Adapt
(p) LogLog plot of L2 vs DOFs.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Error Plot
libmesh provides capability for computing error normsagainst an exact solution.The exact solution is not in H1 therefore we onlyobtain the L2 convergence plot:
3.5 4.0 4.5 5.001 sfoD )N(gol
-2.2
-2.0
-1.8
-1.6
-1.4
-1.2
01)rorr
E2L(
gol
UniformAdaptivityRedist + Adapt
(q) LogLog plot of L2 vs DOFs.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Natural Convection
Tetrahedral mesh of “pipe” geometry. Stream ribbonscolored by temperature.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Surface-Tension-Driven Flow
Adaptive grid solution shown with temperaturecontours and velocity vectors.
Introduction Object Models System Assembly Examples Summary
Fluid Dynamics
Double-Diffusive Convection
Solute contours: a plume of warm, low-salinity fluid isconvected upward through a porous medium.
Introduction Object Models System Assembly Examples Summary
Biology
Tumor Angiogenesis
The tumor secretes a chemical which stimulatesblood vessel formation.
Introduction Object Models System Assembly Examples Summary
Material Science
Free Energy Formulation
Cahn-Hilliard systems model phase separation andinterface evolution
f (c,∇c) ≡ f0(c) + fγ(∇c)
fγ(∇c) ≡ ε2c
2∇c · ∇c
f0(c) ≡ NkT(c ln (c) + (1− c) ln (1− c)) + Nωc(1− c)
∂c∂t
= ∇ ·Mc∇(f ′0(c)− ε2
c∆c)
Introduction Object Models System Assembly Examples Summary
Material Science
Phase Separation - Spinodal Decomposition
Initial EvolutionInitial homogeneous blend quenched below critical T
Random perturbations anti-diffuse into two phasesdivided by narrow interfaces
Gradual coalescence of single-phase regions
Additional physics leads to pattern self-assembly
Introduction Object Models System Assembly Examples Summary
Summary
libMesh Development
Open Source (LGPL)
Leveraging existing libraries
Public site, mailing lists, CVS tree, examples, etc. athttp://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!