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