xref: /libCEED/examples/petsc/index.md (revision bcb2dfae4c301ddfdddf58806f08f6e7d17f4ea5)
1*bcb2dfaeSJed Brown# PETSc demos and BPs
2*bcb2dfaeSJed Brown
3*bcb2dfaeSJed Brown(example-petsc-area)=
4*bcb2dfaeSJed Brown
5*bcb2dfaeSJed Brown## Area
6*bcb2dfaeSJed Brown
7*bcb2dfaeSJed BrownThis example is located in the subdirectory {file}`examples/petsc`.
8*bcb2dfaeSJed BrownIt demonstrates a simple usage of libCEED with PETSc to calculate the surface area of a closed surface.
9*bcb2dfaeSJed BrownThe code uses higher level communication protocols for mesh handling in PETSc's DMPlex.
10*bcb2dfaeSJed BrownThis example has the same mathematical formulation as {ref}`Ex1-Volume`, with the exception that the physical coordinates for this problem are $\bm{x}=(x,y,z)\in \mathbb{R}^3$, while the coordinates of the reference element are $\bm{X}=(X,Y) \equiv (X_0,X_1) \in \textrm{I} =[-1,1]^2$.
11*bcb2dfaeSJed Brown
12*bcb2dfaeSJed Brown(example-petsc-area-cube)=
13*bcb2dfaeSJed Brown
14*bcb2dfaeSJed Brown### Cube
15*bcb2dfaeSJed Brown
16*bcb2dfaeSJed BrownThis is one of the test cases of the computation of the {ref}`example-petsc-area` of a 2D manifold embedded in 3D.
17*bcb2dfaeSJed BrownThis problem can be run with:
18*bcb2dfaeSJed Brown
19*bcb2dfaeSJed Brown```
20*bcb2dfaeSJed Brown./area -problem cube
21*bcb2dfaeSJed Brown```
22*bcb2dfaeSJed Brown
23*bcb2dfaeSJed BrownThis example uses the following coordinate transformations for the computation of the geometric factors: from the physical coordinates on the cube, denoted by $\bar{\bm{x}}=(\bar{x},\bar{y},\bar{z})$, and physical coordinates on the discrete surface, denoted by $\bm{{x}}=(x,y)$, to $\bm{X}=(X,Y) \in \textrm{I}$ on the reference element, via the chain rule
24*bcb2dfaeSJed Brown
25*bcb2dfaeSJed Brown$$
26*bcb2dfaeSJed Brown\frac{\partial \bm{x}}{\partial \bm{X}}_{(2\times2)} = \frac{\partial {\bm{x}}}{\partial \bar{\bm{x}}}_{(2\times3)} \frac{\partial \bar{\bm{x}}}{\partial \bm{X}}_{(3\times2)},
27*bcb2dfaeSJed Brown$$ (eq-coordinate-transforms-cube)
28*bcb2dfaeSJed Brown
29*bcb2dfaeSJed Brownwith Jacobian determinant given by
30*bcb2dfaeSJed Brown
31*bcb2dfaeSJed Brown$$
32*bcb2dfaeSJed Brown\left| J \right| = \left\|col_1\left(\frac{\partial \bar{\bm{x}}}{\partial \bm{X}}\right)\right\| \left\|col_2 \left(\frac{\partial \bar{\bm{x}}}{\partial \bm{X}}\right) \right\|
33*bcb2dfaeSJed Brown$$ (eq-jacobian-cube)
34*bcb2dfaeSJed Brown
35*bcb2dfaeSJed BrownWe note that in equation {math:numref}`eq-coordinate-transforms-cube`, the right-most Jacobian matrix ${\partial\bar{\bm{x}}}/{\partial \bm{X}}_{(3\times2)}$ is provided by the library, while ${\partial{\bm{x}}}/{\partial \bar{ \bm{x}}}_{(2\times3)}$ is provided by the user as
36*bcb2dfaeSJed Brown
37*bcb2dfaeSJed Brown$$
38*bcb2dfaeSJed Brown\left[ col_1\left(\frac{\partial\bar{\bm{x}}}{\partial \bm{X}}\right) / \left\| col_1\left(\frac{\partial\bar{\bm{x}}}{\partial \bm{X}}\right)\right\| , col_2\left(\frac{\partial\bar{\bm{x}}}{\partial \bm{X}}\right) / \left\| col_2\left(\frac{\partial\bar{\bm{x}}}{\partial \bm{X}}\right)\right\| \right]^T_{(2\times 3)}.
39*bcb2dfaeSJed Brown$$
40*bcb2dfaeSJed Brown
41*bcb2dfaeSJed Brown(example-petsc-area-sphere)=
42*bcb2dfaeSJed Brown
43*bcb2dfaeSJed Brown### Sphere
44*bcb2dfaeSJed Brown
45*bcb2dfaeSJed BrownThis problem computes the surface {ref}`example-petsc-area` of a tensor-product discrete sphere, obtained by projecting a cube inscribed in a sphere onto the surface of the sphere.
46*bcb2dfaeSJed BrownThis discrete surface is sometimes referred to as a cubed-sphere (an example of such as a surface is given in figure {numref}`fig-cubed-sphere`).
47*bcb2dfaeSJed BrownThis problem can be run with:
48*bcb2dfaeSJed Brown
49*bcb2dfaeSJed Brown```
50*bcb2dfaeSJed Brown./area -problem sphere
51*bcb2dfaeSJed Brown```
52*bcb2dfaeSJed Brown
53*bcb2dfaeSJed Brown(fig-cubed-sphere)=
54*bcb2dfaeSJed Brown
55*bcb2dfaeSJed Brown:::{figure} ../../../../img/CubedSphere.svg
56*bcb2dfaeSJed BrownExample of a cubed-sphere, i.e., a tensor-product discrete sphere, obtained by
57*bcb2dfaeSJed Brownprojecting a cube inscribed in a sphere onto the surface of the sphere.
58*bcb2dfaeSJed Brown:::
59*bcb2dfaeSJed Brown
60*bcb2dfaeSJed BrownThis example uses the following coordinate transformations for the computation of the geometric factors: from the physical coordinates on the sphere, denoted by $\overset{\circ}{\bm{x}}=(\overset{\circ}{x},\overset{\circ}{y},\overset{\circ}{z})$, and physical coordinates on the discrete surface, denoted by $\bm{{x}}=(x,y,z)$ (depicted, for simplicity, as coordinates on a circle and 1D linear element in figure {numref}`fig-sphere-coords`), to $\bm{X}=(X,Y) \in \textrm{I}$ on the reference element, via the chain rule
61*bcb2dfaeSJed Brown
62*bcb2dfaeSJed Brown$$
63*bcb2dfaeSJed Brown\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(3\times2)} = \frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{x}}_{(3\times3)} \frac{\partial\bm{x}}{\partial \bm{X}}_{(3\times2)} ,
64*bcb2dfaeSJed Brown$$ (eq-coordinate-transforms-sphere)
65*bcb2dfaeSJed Brown
66*bcb2dfaeSJed Brownwith Jacobian determinant given by
67*bcb2dfaeSJed Brown
68*bcb2dfaeSJed Brown$$
69*bcb2dfaeSJed Brown\left| J \right| = \left| col_1\left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}\right) \times col_2 \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}\right)\right| .
70*bcb2dfaeSJed Brown$$ (eq-jacobian-sphere)
71*bcb2dfaeSJed Brown
72*bcb2dfaeSJed Brown(fig-sphere-coords)=
73*bcb2dfaeSJed Brown
74*bcb2dfaeSJed Brown:::{figure} ../../../../img/SphereSketch.svg
75*bcb2dfaeSJed BrownSketch of coordinates mapping between a 1D linear element and a circle.
76*bcb2dfaeSJed BrownIn the case of a linear element the two nodes, $p_0$ and $p_1$, marked by red crosses, coincide with the endpoints of the element.
77*bcb2dfaeSJed BrownTwo quadrature points, $q_0$ and $q_1$, marked by blue dots, with physical coordinates denoted by $\bm x(\bm X)$, are mapped to their corresponding radial projections on the circle, which have coordinates $\overset{\circ}{\bm{x}}(\bm x)$.
78*bcb2dfaeSJed Brown:::
79*bcb2dfaeSJed Brown
80*bcb2dfaeSJed BrownWe note that in equation {math:numref}`eq-coordinate-transforms-sphere`, the right-most Jacobian matrix ${\partial\bm{x}}/{\partial \bm{X}}_{(3\times2)}$ is provided by the library, while ${\partial \overset{\circ}{\bm{x}}}/{\partial \bm{x}}_{(3\times3)}$ is provided by the user with analytical derivatives.
81*bcb2dfaeSJed BrownIn particular, for a sphere of radius 1, we have
82*bcb2dfaeSJed Brown
83*bcb2dfaeSJed Brown$$
84*bcb2dfaeSJed Brown\overset{\circ}{\bm x}(\bm x) = \frac{1}{\lVert \bm x \rVert} \bm x_{(3\times 1)}
85*bcb2dfaeSJed Brown$$
86*bcb2dfaeSJed Brown
87*bcb2dfaeSJed Brownand thus
88*bcb2dfaeSJed Brown
89*bcb2dfaeSJed Brown$$
90*bcb2dfaeSJed Brown\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{x}} = \frac{1}{\lVert \bm x \rVert} \bm I_{(3\times 3)} - \frac{1}{\lVert \bm x \rVert^3} (\bm x \bm x^T)_{(3\times 3)} .
91*bcb2dfaeSJed Brown$$
92*bcb2dfaeSJed Brown
93*bcb2dfaeSJed Brown(example-petsc-bps)=
94*bcb2dfaeSJed Brown
95*bcb2dfaeSJed Brown## Bakeoff problems and generalizations
96*bcb2dfaeSJed Brown
97*bcb2dfaeSJed BrownThe PETSc examples in this directory include a full suite of parallel {ref}`bakeoff problems <bps>` (BPs) using a "raw" parallel decomposition (see `bpsraw.c`) and using PETSc's `DMPlex` for unstructured grid management (see `bps.c`).
98*bcb2dfaeSJed BrownA generalization of these BPs to the surface of the cubed-sphere are available in `bpssphere.c`.
99*bcb2dfaeSJed Brown
100*bcb2dfaeSJed Brown(example-petsc-bps-sphere)=
101*bcb2dfaeSJed Brown
102*bcb2dfaeSJed Brown### Bakeoff problems on the cubed-sphere
103*bcb2dfaeSJed Brown
104*bcb2dfaeSJed BrownFor the $L^2$ projection problems, BP1-BP2, that use the mass operator, the coordinate transformations and the corresponding Jacobian determinant, equation {math:numref}`eq-jacobian-sphere`, are the same as in the {ref}`example-petsc-area-sphere` example.
105*bcb2dfaeSJed BrownFor the Poisson's problem, BP3-BP6, on the cubed-sphere, in addition to equation {math:numref}`eq-jacobian-sphere`, the pseudo-inverse of $\partial \overset{\circ}{\bm{x}} / \partial \bm{X}$ is used to derive the contravariant metric tensor (please see figure {numref}`fig-sphere-coords` for a reference of the notation used).
106*bcb2dfaeSJed BrownWe begin by expressing the Moore-Penrose (left) pseudo-inverse:
107*bcb2dfaeSJed Brown
108*bcb2dfaeSJed Brown$$
109*bcb2dfaeSJed Brown\frac{\partial \bm{X}}{\partial \overset{\circ}{\bm{x}}}_{(2\times 3)} \equiv \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}\right)_{(2\times 3)}^{+} =  \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(2\times3)}^T \frac{\partial\overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(3\times2)} \right)^{-1} \frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(2\times3)}^T .
110*bcb2dfaeSJed Brown$$ (eq-dxcircdX-pseudo-inv)
111*bcb2dfaeSJed Brown
112*bcb2dfaeSJed BrownThis enables computation of gradients of an arbitrary function $u(\overset{\circ}{\bm x})$ in the embedding space as
113*bcb2dfaeSJed Brown
114*bcb2dfaeSJed Brown$$
115*bcb2dfaeSJed Brown\frac{\partial u}{\partial \overset{\circ}{\bm x}}_{(1\times 3)} = \frac{\partial u}{\partial \bm X}_{(1\times 2)} \frac{\partial \bm X}{\partial \overset{\circ}{\bm x}}_{(2\times 3)}
116*bcb2dfaeSJed Brown$$
117*bcb2dfaeSJed Brown
118*bcb2dfaeSJed Brownand thus the weak Laplacian may be expressed as
119*bcb2dfaeSJed Brown
120*bcb2dfaeSJed Brown$$
121*bcb2dfaeSJed Brown\int_{\Omega} \frac{\partial v}{\partial \overset\circ{\bm x}} \left( \frac{\partial u}{\partial \overset\circ{\bm x}} \right)^T \, dS
122*bcb2dfaeSJed Brown    = \int_{\Omega} \frac{\partial v}{\partial \bm X} \underbrace{\frac{\partial \bm X}{\partial \overset\circ{\bm x}} \left( \frac{\partial \bm X}{\partial \overset\circ{\bm x}} \right)^T}_{\bm g_{(2\times 2)}}  \left(\frac{\partial u}{\partial \bm X} \right)^T \, dS
123*bcb2dfaeSJed Brown$$ (eq-weak-laplace-sphere)
124*bcb2dfaeSJed Brown
125*bcb2dfaeSJed Brownwhere we have identified the $2\times 2$ contravariant metric tensor $\bm g$ (sometimes written $\bm g^{ij}$), and where now $\Omega$ represents the surface of the sphere, which is a two-dimensional closed surface embedded in the three-dimensional Euclidean space $\mathbb{R}^3$.
126*bcb2dfaeSJed BrownThis expression can be simplified to avoid the explicit Moore-Penrose pseudo-inverse,
127*bcb2dfaeSJed Brown
128*bcb2dfaeSJed Brown$$
129*bcb2dfaeSJed Brown\bm g = \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}^T \frac{\partial\overset{\circ}{\bm{x}}}{\partial \bm{X}} \right)^{-1}_{(2\times 2)} \frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(2\times3)}^T \frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}_{(3\times2)} \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}^T \frac{\partial\overset{\circ}{\bm{x}}}{\partial \bm{X}} \right)^{-T}_{(2\times 2)} = \left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}^T \frac{\partial\overset{\circ}{\bm{x}}}{\partial \bm{X}} \right)^{-1}_{(2\times 2)}
130*bcb2dfaeSJed Brown$$
131*bcb2dfaeSJed Brown
132*bcb2dfaeSJed Brownwhere we have dropped the transpose due to symmetry.
133*bcb2dfaeSJed BrownThis allows us to simplify {math:numref}`eq-weak-laplace-sphere` as
134*bcb2dfaeSJed Brown
135*bcb2dfaeSJed Brown$$
136*bcb2dfaeSJed Brown\int_{\Omega} \frac{\partial v}{\partial \overset\circ{\bm x}} \left( \frac{\partial u}{\partial \overset\circ{\bm x}} \right)^T \, dS     = \int_{\Omega} \frac{\partial v}{\partial \bm X} \underbrace{\left(\frac{\partial \overset{\circ}{\bm{x}}}{\partial \bm{X}}^T \frac{\partial\overset{\circ}{\bm{x}}}{\partial \bm{X}} \right)^{-1}}_{\bm g_{(2\times 2)}}  \left(\frac{\partial u}{\partial \bm X} \right)^T \, dS ,
137*bcb2dfaeSJed Brown$$
138*bcb2dfaeSJed Brown
139*bcb2dfaeSJed Brownwhich is the form implemented in `qfunctions/bps/bp3sphere.h`.
140*bcb2dfaeSJed Brown
141*bcb2dfaeSJed Brown(example-petsc-multigrid)=
142*bcb2dfaeSJed Brown
143*bcb2dfaeSJed Brown## Multigrid
144*bcb2dfaeSJed Brown
145*bcb2dfaeSJed BrownThis example is located in the subdirectory {file}`examples/petsc`.
146*bcb2dfaeSJed BrownIt investigates $p$-multigrid for the Poisson problem, equation {math:numref}`eq-variable-coeff-poisson`, using an unstructured high-order finite element discretization.
147*bcb2dfaeSJed BrownAll of the operators associated with the geometric multigrid are implemented in libCEED.
148*bcb2dfaeSJed Brown
149*bcb2dfaeSJed Brown$$
150*bcb2dfaeSJed Brown-\nabla\cdot \left( \kappa \left( x \right) \nabla x \right) = g \left( x \right)
151*bcb2dfaeSJed Brown$$ (eq-variable-coeff-poisson)
152*bcb2dfaeSJed Brown
153*bcb2dfaeSJed BrownThe Poisson operator can be specified with the decomposition given by the equation in figure {ref}`fig-operator-decomp`, and the restriction and prolongation operators given by interpolation basis operations, $\bm{B}$, and $\bm{B}^T$, respectively, act on the different grid levels with corresponding element restrictions, $\bm{G}$.
154*bcb2dfaeSJed BrownThese three operations can be exploited by existing matrix-free multigrid software and smoothers.
155*bcb2dfaeSJed BrownPreconditioning based on the libCEED finite element operator decomposition is an ongoing area of research.
156