xref: /libCEED/examples/petsc/README.md (revision ec3da8bcb94d9f0073544b37b5081a06981a86f7)
1## libCEED + PETSc Examples
2
3### CEED bakeoff problems - bpsraw
4
5This code solves the CEED bakeoff problems on a structured grid generated and
6referenced using only low-level communication primitives.
7
8To build, run `make bpsraw`
9
10To run, `./bpsraw -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
11
12In addition to the common arguments, the following arguments may be set:
13
14- `-local`             - Target number of locally owned DoFs per process
15
16### CEED bakeoff problems with DMPlex - bps
17
18This code solves the CEED bakeoff problems on a unstructured grid using DMPlex.
19This example requires a PETSc version later than 3.11.3.
20
21To build, run `make bps`
22
23To run, `./bps -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
24
25In addition to the common arguments, the following arguments may be set:
26
27- `-mesh`              - Read mesh from file
28- `-cells`             - Number of cells per dimension
29
30#### Running a suite
31
32Some run-time arguments can be passed lists, which allows a single `mpiexec` invocation
33to run many experiments.  For example
34
35    mpiexec -n 64 ./bps -problem bp1,bp2,bp3,bp4 -degree 2,3,5,7                \
36        -ceed /cpu/self/opt/serial,/cpu/self/xsmm/serial,/cpu/self/xsmm/blocked \
37        -local_nodes 600,20000 | tee bps.log
38
39which will sample from the `4*4*3=48` specified combinations, each of which will run a
40problem-size sweep of 600, 1200, 2400, 4800, 9600, 192000 FEM nodes per MPI rank.  The
41resulting log file can be read by the Python plotting scripts in `benchmarks/`.
42
43### CEED bakeoff problems with DMPlex and PCMG - multigrid
44
45This code solves the CEED bakeoff problems on a unstructured grid using DMPlex
46with p-multigrid implemented in PCMG. This example requires a PETSc version later than 3.11.3.
47
48To build, run `make multigrid`
49
50To run, `./multigrid -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
51
52In addition to the common arguments, the following arguments may be set:
53
54- `-mesh`              - Read mesh from file
55- `-cells`             - Number of cells per dimension
56
57### Command line arguments
58
59The following arguments can be specified for all of the above examples:
60
61- `-ceed`              - CEED resource specifier
62- `-problem`           - CEED benchmark problem to solve
63- `-degree`            - Polynomial degree of tensor product basis
64- `-qextra`            - Number of extra quadrature points
65- `-test`              - Testing mode (do not print unless error is large)
66- `-benchmark`         - Benchmarking mode (prints benchmark statistics)
67
68### libCEED example to compute surface area using DMPlex - area
69
70This example uses the mass matrix to compute the surface area of a cube or a discrete cubed-sphere, defined via DMPlex.
71
72To build, run `make area`
73
74To run, `./area -problem cube -ceed [ceed-resource] -petscspace_degree [degree]`
75
76or
77
78`./area -problem sphere -ceed [ceed-resource] -petscspace_degree [degree]`
79
80#### Command line arguments
81
82The following arguments can be specified for the area example:
83
84- `-ceed`              - CEED resource specifier
85- `-problem`           - Problem to solve, either 'cube' or 'sphere'
86- `-petscspace_degree` - Polynomial degree of tensor product basis
87- `-qextra`            - Number of extra quadrature points
88- `-test`              - Testing mode (do not print unless error is large)
89- `-mesh`              - Read mesh from file
90
91