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