xref: /libCEED/examples/petsc/README.md (revision b8962995f2086e83ec045f19f82798eb8f9e9baf)
1288c0443SJeremy L Thompson## libCEED + PETSc Examples
2819eb1b3Sjeremylt
3*b8962995SJeremy L ThompsonPETSc v3.17 or a development version of PETSc at commit 0e95d842 or later is required.
4*b8962995SJeremy L Thompson
5ccb3a226Sjeremylt### CEED bakeoff problems with raw mesh management - bpsraw
6819eb1b3Sjeremylt
7ccb3a226SjeremyltThis code solves the CEED bakeoff problems on a structured grid generated and referenced using only low-level communication primitives.
8819eb1b3Sjeremylt
9cb32e2e7SValeria BarraTo build, run `make bpsraw`
10819eb1b3Sjeremylt
11cb32e2e7SValeria BarraTo run, `./bpsraw -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
12819eb1b3Sjeremylt
13819eb1b3SjeremyltIn addition to the common arguments, the following arguments may be set:
14819eb1b3Sjeremylt
15819eb1b3Sjeremylt- `-local`             - Target number of locally owned DoFs per process
16819eb1b3Sjeremylt
17cb32e2e7SValeria Barra### CEED bakeoff problems with DMPlex - bps
18819eb1b3Sjeremylt
19819eb1b3SjeremyltThis code solves the CEED bakeoff problems on a unstructured grid using DMPlex.
20819eb1b3SjeremyltThis example requires a PETSc version later than 3.11.3.
21819eb1b3Sjeremylt
22cb32e2e7SValeria BarraTo build, run `make bps`
23819eb1b3Sjeremylt
24cb32e2e7SValeria BarraTo run, `./bps -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
25819eb1b3Sjeremylt
26819eb1b3SjeremyltIn addition to the common arguments, the following arguments may be set:
27819eb1b3Sjeremylt
28819eb1b3Sjeremylt- `-mesh`              - Read mesh from file
29819eb1b3Sjeremylt- `-cells`             - Number of cells per dimension
306c5df90dSjeremylt
31565a3730SJed Brown#### Running a suite
32565a3730SJed Brown
33ccb3a226SjeremyltSome run-time arguments can be passed lists, which allows a single `mpiexec` invocation to run many experiments.
34ccb3a226SjeremyltFor example
35565a3730SJed Brown
36565a3730SJed Brown    mpiexec -n 64 ./bps -problem bp1,bp2,bp3,bp4 -degree 2,3,5,7                \
37565a3730SJed Brown        -ceed /cpu/self/opt/serial,/cpu/self/xsmm/serial,/cpu/self/xsmm/blocked \
38565a3730SJed Brown        -local_nodes 600,20000 | tee bps.log
39565a3730SJed Brown
40ccb3a226Sjeremyltwhich will sample from the `4*4*3=48` specified combinations, each of which will run a problem-size sweep of 600, 1200, 2400, 4800, 9600, 192000 FEM nodes per MPI rank.
41ccb3a226SjeremyltThe resulting log file can be read by the Python plotting scripts in `benchmarks/`.
42565a3730SJed Brown
436c5df90dSjeremylt### CEED bakeoff problems with DMPlex and PCMG - multigrid
446c5df90dSjeremylt
45ccb3a226SjeremyltThis code solves the CEED bakeoff problems on a unstructured grid using DMPlex with p-multigrid implemented in PCMG.
46ccb3a226SjeremyltThis example requires a PETSc version later than 3.11.3.
476c5df90dSjeremylt
48cb32e2e7SValeria BarraTo build, run `make multigrid`
496c5df90dSjeremylt
50cb32e2e7SValeria BarraTo run, `./multigrid -ceed [ceed-resource] -problem bp[1-6] -degree [degree]`
516c5df90dSjeremylt
526c5df90dSjeremyltIn addition to the common arguments, the following arguments may be set:
536c5df90dSjeremylt
546c5df90dSjeremylt- `-mesh`              - Read mesh from file
556c5df90dSjeremylt- `-cells`             - Number of cells per dimension
56819eb1b3Sjeremylt
57288c0443SJeremy L Thompson### Command line arguments
58819eb1b3Sjeremylt
59cb32e2e7SValeria BarraThe following arguments can be specified for all of the above examples:
60819eb1b3Sjeremylt
61819eb1b3Sjeremylt- `-ceed`              - CEED resource specifier
62819eb1b3Sjeremylt- `-problem`           - CEED benchmark problem to solve
636c5df90dSjeremylt- `-degree`            - Polynomial degree of tensor product basis
64819eb1b3Sjeremylt- `-qextra`            - Number of extra quadrature points
65819eb1b3Sjeremylt- `-test`              - Testing mode (do not print unless error is large)
66819eb1b3Sjeremylt- `-benchmark`         - Benchmarking mode (prints benchmark statistics)
67cb32e2e7SValeria Barra
6832d2ee49SValeria Barra### libCEED example to compute surface area using DMPlex - area
69cb32e2e7SValeria Barra
7032d2ee49SValeria BarraThis example uses the mass matrix to compute the surface area of a cube or a discrete cubed-sphere, defined via DMPlex.
71cb32e2e7SValeria Barra
72cb32e2e7SValeria BarraTo build, run `make area`
73cb32e2e7SValeria Barra
7432d2ee49SValeria BarraTo run, `./area -problem cube -ceed [ceed-resource] -petscspace_degree [degree]`
75cb32e2e7SValeria Barra
7632d2ee49SValeria Barraor
77cb32e2e7SValeria Barra
7832d2ee49SValeria Barra`./area -problem sphere -ceed [ceed-resource] -petscspace_degree [degree]`
7932d2ee49SValeria Barra
8032d2ee49SValeria Barra#### Command line arguments
8132d2ee49SValeria Barra
8232d2ee49SValeria BarraThe following arguments can be specified for the area example:
83cb32e2e7SValeria Barra
84cb32e2e7SValeria Barra- `-ceed`              - CEED resource specifier
8532d2ee49SValeria Barra- `-problem`           - Problem to solve, either 'cube' or 'sphere'
86cb32e2e7SValeria Barra- `-petscspace_degree` - Polynomial degree of tensor product basis
87cb32e2e7SValeria Barra- `-qextra`            - Number of extra quadrature points
88cb32e2e7SValeria Barra- `-test`              - Testing mode (do not print unless error is large)
89cb32e2e7SValeria Barra- `-mesh`              - Read mesh from file
90cb32e2e7SValeria Barra
91