xref: /libCEED/examples/petsc/bps.h (revision 9b072555b57804a6f4e0fc2b1ad83be89838f0e5)
1e83e87a5Sjeremylt // Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2e83e87a5Sjeremylt // the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3e83e87a5Sjeremylt // reserved. See files LICENSE and NOTICE for details.
4e83e87a5Sjeremylt //
5e83e87a5Sjeremylt // This file is part of CEED, a collection of benchmarks, miniapps, software
6e83e87a5Sjeremylt // libraries and APIs for efficient high-order finite element and spectral
7e83e87a5Sjeremylt // element discretizations for exascale applications. For more information and
8e83e87a5Sjeremylt // source code availability see http://github.com/ceed.
9e83e87a5Sjeremylt //
10e83e87a5Sjeremylt // The CEED research is supported by the Exascale Computing Project 17-SC-20-SC,
11e83e87a5Sjeremylt // a collaborative effort of two U.S. Department of Energy organizations (Office
12e83e87a5Sjeremylt // of Science and the National Nuclear Security Administration) responsible for
13e83e87a5Sjeremylt // the planning and preparation of a capable exascale ecosystem, including
14e83e87a5Sjeremylt // software, applications, hardware, advanced system engineering and early
15e83e87a5Sjeremylt // testbed platforms, in support of the nation's exascale computing imperative.
16e83e87a5Sjeremylt 
1748564947Sjeremylt #ifndef bps_h
1848564947Sjeremylt #define bps_h
19e83e87a5Sjeremylt 
20e83e87a5Sjeremylt #include "include/bpsproblemdata.h"
21e83e87a5Sjeremylt #include "include/petscmacros.h"
22e83e87a5Sjeremylt #include "include/petscutils.h"
23e83e87a5Sjeremylt #include "include/matops.h"
24e83e87a5Sjeremylt #include "include/structs.h"
25e83e87a5Sjeremylt #include "include/libceedsetup.h"
26e83e87a5Sjeremylt 
27e83e87a5Sjeremylt #include <ceed.h>
28e83e87a5Sjeremylt #include <petsc.h>
29e83e87a5Sjeremylt #include <petscdmplex.h>
30e83e87a5Sjeremylt #include <petscfe.h>
31e83e87a5Sjeremylt #include <petscsys.h>
32e83e87a5Sjeremylt #include <stdbool.h>
33e83e87a5Sjeremylt #include <string.h>
34e83e87a5Sjeremylt 
35e83e87a5Sjeremylt #if PETSC_VERSION_LT(3,12,0)
36e83e87a5Sjeremylt #ifdef PETSC_HAVE_CUDA
37e83e87a5Sjeremylt #include <petsccuda.h>
38e83e87a5Sjeremylt // Note: With PETSc prior to version 3.12.0, providing the source path to
39e83e87a5Sjeremylt //       include 'cublas_v2.h' will be needed to use 'petsccuda.h'.
40e83e87a5Sjeremylt #endif
41e83e87a5Sjeremylt #endif
42e83e87a5Sjeremylt 
43e83e87a5Sjeremylt // -----------------------------------------------------------------------------
44e83e87a5Sjeremylt // Command Line Options
45e83e87a5Sjeremylt // -----------------------------------------------------------------------------
46e83e87a5Sjeremylt 
47e83e87a5Sjeremylt // MemType Options
48*9b072555Sjeremylt static const char *const mem_types[] = {"host","device", "memType",
49e83e87a5Sjeremylt                                         "CEED_MEM_", 0
50e83e87a5Sjeremylt                                        };
51e83e87a5Sjeremylt 
52e83e87a5Sjeremylt // Coarsening options
53e83e87a5Sjeremylt typedef enum {
54e83e87a5Sjeremylt   COARSEN_UNIFORM = 0, COARSEN_LOGARITHMIC = 1
55*9b072555Sjeremylt } CoarsenType;
56*9b072555Sjeremylt static const char *const coarsen_types [] = {"uniform", "logarithmic",
57*9b072555Sjeremylt                                              "CoarsenType", "COARSEN", 0
58e83e87a5Sjeremylt                                             };
59e83e87a5Sjeremylt 
60*9b072555Sjeremylt static const char *const bp_types[] = {"bp1", "bp2", "bp3", "bp4", "bp5", "bp6",
61*9b072555Sjeremylt                                        "BPType", "CEED_BP", 0
62e83e87a5Sjeremylt                                       };
63e83e87a5Sjeremylt 
6448564947Sjeremylt #endif // bps_h
65