14a2e7687Sjeremylt // Copyright (c) 2017-2018, Lawrence Livermore National Security, LLC. 24a2e7687Sjeremylt // Produced at the Lawrence Livermore National Laboratory. LLNL-CODE-734707. 34a2e7687Sjeremylt // All Rights reserved. See files LICENSE and NOTICE for details. 44a2e7687Sjeremylt // 54a2e7687Sjeremylt // This file is part of CEED, a collection of benchmarks, miniapps, software 64a2e7687Sjeremylt // libraries and APIs for efficient high-order finite element and spectral 74a2e7687Sjeremylt // element discretizations for exascale applications. For more information and 84a2e7687Sjeremylt // source code availability see http://github.com/ceed. 94a2e7687Sjeremylt // 104a2e7687Sjeremylt // The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, 114a2e7687Sjeremylt // a collaborative effort of two U.S. Department of Energy organizations (Office 124a2e7687Sjeremylt // of Science and the National Nuclear Security Administration) responsible for 134a2e7687Sjeremylt // the planning and preparation of a capable exascale ecosystem, including 144a2e7687Sjeremylt // software, applications, hardware, advanced system engineering and early 154a2e7687Sjeremylt // testbed platforms, in support of the nation's exascale computing imperative. 164a2e7687Sjeremylt 17d863ab9bSjeremylt #include <ceed-backend.h> 184a2e7687Sjeremylt #include <string.h> 194a2e7687Sjeremylt 204a2e7687Sjeremylt typedef struct { 21*52d6035fSJeremy L Thompson CeedScalar *colograd1d; 22*52d6035fSJeremy L Thompson } CeedBasis_Blocked; 23*52d6035fSJeremy L Thompson 24*52d6035fSJeremy L Thompson typedef struct { 25*52d6035fSJeremy L Thompson bool add; 264a2e7687Sjeremylt CeedElemRestriction *blkrestr; /// Blocked versions of restrictions 274a2e7687Sjeremylt CeedVector 284a2e7687Sjeremylt *evecs; /// E-vectors needed to apply operator (input followed by outputs) 294a2e7687Sjeremylt CeedScalar **edata; 3016c359e6Sjeremylt uint64_t *inputstate; /// State counter of inputs 3191703d3fSjeremylt CeedVector *evecsin; /// Input E-vectors needed to apply operator 3291703d3fSjeremylt CeedVector *evecsout; /// Output E-vectors needed to apply operator 33aedaa0e5Sjeremylt CeedVector *qvecsin; /// Input Q-vectors needed to apply operator 34aedaa0e5Sjeremylt CeedVector *qvecsout; /// Output Q-vectors needed to apply operator 354a2e7687Sjeremylt CeedInt numein; 364a2e7687Sjeremylt CeedInt numeout; 374a2e7687Sjeremylt } CeedOperator_Blocked; 384a2e7687Sjeremylt 394a2e7687Sjeremylt CEED_INTERN int CeedOperatorCreate_Blocked(CeedOperator op); 40