Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CeedElemRestriction for H(curl) #1168

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4cd8d4d
Element restriction for high-order (> 1) H(curl) elements requiring m…
sebastiangrimberg Mar 2, 2023
5df0315
Add unit tests for curl-conforming restriction
sebastiangrimberg Mar 2, 2023
0f3aa2c
Update Julia/Python/Rust/Fortran bindings
sebastiangrimberg Apr 17, 2023
ecbd4d6
Clarify docstring for CeedElemRestrictionCreateCurlOriented
sebastiangrimberg Apr 24, 2023
f12633f
Resolve performance regression for ElemRestrictionApply
sebastiangrimberg Apr 24, 2023
60d671c
WIP: enum CeedRestrictionType for CeedElemRestriction type
sebastiangrimberg Apr 24, 2023
7a2f40b
Fix bugs for blocked ElemRestriction apply and add a test
sebastiangrimberg Apr 25, 2023
ea33bd6
Rebase fix for new CeedCheck macro
sebastiangrimberg Apr 25, 2023
c11faf5
Fix bug for p-multigrid with signed restrictions: Refactor to remove …
sebastiangrimberg Apr 27, 2023
c95c669
Revert "Fix bug for p-multigrid with signed restrictions: Refactor to…
sebastiangrimberg May 4, 2023
8810c06
Docstring cleanup: Revert some old changes and one sentence per line
sebastiangrimberg Apr 27, 2023
9a0eb20
Update backends for unified ElemRestrictionCreate variants for all re…
sebastiangrimberg May 6, 2023
7585c92
Fix CeedFree bug
sebastiangrimberg May 6, 2023
dca5dfc
Add check for unsupported curl-conforming element restrictions for ce…
sebastiangrimberg Jun 5, 2023
5c6532d
Fixes from rebase
sebastiangrimberg Jun 5, 2023
78af6fe
Fix full assembly with oriented element restrictions (RT or ND elements)
sebastiangrimberg Jun 15, 2023
ad65130
Improve element restriction for H(curl) spaces by reorganizing loops,…
sebastiangrimberg Jun 22, 2023
4da44ab
Operator full assembly with oriented or curl-conforming element restr…
sebastiangrimberg Jul 5, 2023
70a83d5
Organize element restriction variants in ref backend
sebastiangrimberg Jul 13, 2023
fd22030
Update CeedElemRestrictionCreateCurlOriented in high-level language A…
sebastiangrimberg Jul 13, 2023
58d5a28
Update docstring
sebastiangrimberg Jul 18, 2023
f52c7b8
Address PR comment on hidden variable and clarify by renaming
sebastiangrimberg Jul 20, 2023
82a976c
CEED_RESTRICTION_DEFAULT -> CEED_RESTRICTION_STANDARD
sebastiangrimberg Jul 25, 2023
39c9572
Add missing checks for support of different element restriction types…
sebastiangrimberg Jul 25, 2023
52aff1d
Attempting to resolve NVRTC and HIPRTC compilation errors
sebastiangrimberg Jul 26, 2023
72c16ee
Add missing checks for support of different element restriction types…
sebastiangrimberg Jul 26, 2023
daf891e
Simplify CeedElemRestrictionGetFlopsEstimate
sebastiangrimberg Jul 26, 2023
b787ac9
Address PR comments for Python API docstrings
sebastiangrimberg Jul 26, 2023
2410b26
Update releasenodes.md and AUTHORS
sebastiangrimberg Jul 27, 2023
fc82938
Update unit tests to improve coverage
sebastiangrimberg Jul 28, 2023
d47b7a3
Refactor H(div) and H(curl) tests
sebastiangrimberg Jul 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Jean-Sylvain Camier
Veselin Dobrev
Yohann Dudouit
Leila Ghaffari
Sebastian Grimberg
Tzanio Kolev
David Medina
Will Pazner
Expand Down
57 changes: 41 additions & 16 deletions backends/blocked/ceed-blocked-operator.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,29 +41,54 @@ static int CeedOperatorSetupFields_Blocked(CeedQFunction qf, CeedOperator op, bo
CeedCallBackend(CeedQFunctionFieldGetEvalMode(qf_fields[i], &eval_mode));

if (eval_mode != CEED_EVAL_WEIGHT) {
Ceed ceed_rstr;
CeedCallBackend(CeedOperatorFieldGetElemRestriction(op_fields[i], &r));
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed));
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed_rstr));
CeedSize l_size;
CeedInt num_elem, elem_size, comp_stride;
CeedCallBackend(CeedElemRestrictionGetNumElements(r, &num_elem));
CeedCallBackend(CeedElemRestrictionGetElementSize(r, &elem_size));
CeedCallBackend(CeedElemRestrictionGetLVectorSize(r, &l_size));
CeedCallBackend(CeedElemRestrictionGetNumComponents(r, &num_comp));

bool strided;
CeedCallBackend(CeedElemRestrictionIsStrided(r, &strided));
if (strided) {
CeedInt strides[3];
CeedCallBackend(CeedElemRestrictionGetStrides(r, &strides));
CeedCallBackend(
CeedElemRestrictionCreateBlockedStrided(ceed, num_elem, elem_size, blk_size, num_comp, l_size, strides, &blk_restr[i + start_e]));
} else {
const CeedInt *offsets = NULL;
CeedCallBackend(CeedElemRestrictionGetOffsets(r, CEED_MEM_HOST, &offsets));
CeedCallBackend(CeedElemRestrictionGetCompStride(r, &comp_stride));
CeedCallBackend(CeedElemRestrictionCreateBlocked(ceed, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size, CEED_MEM_HOST,
CEED_COPY_VALUES, offsets, &blk_restr[i + start_e]));
CeedCallBackend(CeedElemRestrictionRestoreOffsets(r, &offsets));
CeedCallBackend(CeedElemRestrictionGetCompStride(r, &comp_stride));

CeedRestrictionType rstr_type;
CeedCallBackend(CeedElemRestrictionGetType(r, &rstr_type));
switch (rstr_type) {
case CEED_RESTRICTION_STANDARD: {
const CeedInt *offsets = NULL;
CeedCallBackend(CeedElemRestrictionGetOffsets(r, CEED_MEM_HOST, &offsets));
CeedCallBackend(CeedElemRestrictionCreateBlocked(ceed_rstr, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size, CEED_MEM_HOST,
CEED_COPY_VALUES, offsets, &blk_restr[i + start_e]));
CeedCallBackend(CeedElemRestrictionRestoreOffsets(r, &offsets));
} break;
case CEED_RESTRICTION_ORIENTED: {
const CeedInt *offsets = NULL;
const bool *orients = NULL;
CeedCallBackend(CeedElemRestrictionGetOffsets(r, CEED_MEM_HOST, &offsets));
CeedCallBackend(CeedElemRestrictionGetOrientations(r, CEED_MEM_HOST, &orients));
CeedCallBackend(CeedElemRestrictionCreateBlockedOriented(ceed_rstr, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size,
CEED_MEM_HOST, CEED_COPY_VALUES, offsets, orients, &blk_restr[i + start_e]));
CeedCallBackend(CeedElemRestrictionRestoreOffsets(r, &offsets));
CeedCallBackend(CeedElemRestrictionRestoreOrientations(r, &orients));
} break;
case CEED_RESTRICTION_CURL_ORIENTED: {
const CeedInt *offsets = NULL;
const CeedInt8 *curl_orients = NULL;
CeedCallBackend(CeedElemRestrictionGetOffsets(r, CEED_MEM_HOST, &offsets));
CeedCallBackend(CeedElemRestrictionGetCurlOrientations(r, CEED_MEM_HOST, &curl_orients));
CeedCallBackend(CeedElemRestrictionCreateBlockedCurlOriented(ceed_rstr, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size,
CEED_MEM_HOST, CEED_COPY_VALUES, offsets, curl_orients,
&blk_restr[i + start_e]));
CeedCallBackend(CeedElemRestrictionRestoreOffsets(r, &offsets));
CeedCallBackend(CeedElemRestrictionRestoreCurlOrientations(r, &curl_orients));
} break;
sebastiangrimberg marked this conversation as resolved.
Show resolved Hide resolved
case CEED_RESTRICTION_STRIDED: {
CeedInt strides[3];
CeedCallBackend(CeedElemRestrictionGetStrides(r, &strides));
CeedCallBackend(
CeedElemRestrictionCreateBlockedStrided(ceed_rstr, num_elem, elem_size, blk_size, num_comp, l_size, strides, &blk_restr[i + start_e]));
} break;
}
CeedCallBackend(CeedElemRestrictionCreateVector(blk_restr[i + start_e], NULL, &e_vecs_full[i + start_e]));
}
Expand Down
9 changes: 8 additions & 1 deletion backends/cuda-ref/ceed-cuda-ref-restriction.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,8 @@ static int CeedElemRestrictionOffset_Cuda(const CeedElemRestriction r, const Cee
//------------------------------------------------------------------------------
// Create restriction
//------------------------------------------------------------------------------
int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, CeedElemRestriction r) {
int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, CeedElemRestriction r) {
Ceed ceed;
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed));
CeedElemRestriction_Cuda *impl;
Expand All @@ -222,6 +223,11 @@ int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode,
CeedInt strides[3] = {1, size, elem_size};
CeedInt comp_stride = 1;

CeedRestrictionType rstr_type;
CeedCallBackend(CeedElemRestrictionGetType(r, &rstr_type));
CeedCheck(rstr_type != CEED_RESTRICTION_ORIENTED && rstr_type != CEED_RESTRICTION_CURL_ORIENTED, ceed, CEED_ERROR_BACKEND,
"Backend does not implement CeedElemRestrictionCreateOriented or CeedElemRestrictionCreateCurlOriented");

// Stride data
bool is_strided;
CeedCallBackend(CeedElemRestrictionIsStrided(r, &is_strided));
Expand Down Expand Up @@ -323,6 +329,7 @@ int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode,
// Register backend functions
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Apply", CeedElemRestrictionApply_Cuda));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnsigned", CeedElemRestrictionApply_Cuda));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnoriented", CeedElemRestrictionApply_Cuda));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "GetOffsets", CeedElemRestrictionGetOffsets_Cuda));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Destroy", CeedElemRestrictionDestroy_Cuda));
return CEED_ERROR_SUCCESS;
Expand Down
3 changes: 2 additions & 1 deletion backends/cuda-ref/ceed-cuda-ref.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ CEED_INTERN int CeedGetCublasHandle_Cuda(Ceed ceed, cublasHandle_t *handle);

CEED_INTERN int CeedVectorCreate_Cuda(CeedSize n, CeedVector vec);

CEED_INTERN int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, CeedElemRestriction r);
CEED_INTERN int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, CeedElemRestriction r);

CEED_INTERN int CeedBasisCreateTensorH1_Cuda(CeedInt dim, CeedInt P_1d, CeedInt Q_1d, const CeedScalar *interp_1d, const CeedScalar *grad_1d,
const CeedScalar *q_ref_1d, const CeedScalar *q_weight_1d, CeedBasis basis);
Expand Down
9 changes: 8 additions & 1 deletion backends/hip-ref/ceed-hip-ref-restriction.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ static int CeedElemRestrictionOffset_Hip(const CeedElemRestriction r, const Ceed
//------------------------------------------------------------------------------
// Create restriction
//------------------------------------------------------------------------------
int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, CeedElemRestriction r) {
int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, CeedElemRestriction r) {
Ceed ceed;
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed));
CeedElemRestriction_Hip *impl;
Expand All @@ -220,6 +221,11 @@ int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode,
CeedInt strides[3] = {1, size, elem_size};
CeedInt comp_stride = 1;

CeedRestrictionType rstr_type;
CeedCallBackend(CeedElemRestrictionGetType(r, &rstr_type));
CeedCheck(rstr_type != CEED_RESTRICTION_ORIENTED && rstr_type != CEED_RESTRICTION_CURL_ORIENTED, ceed, CEED_ERROR_BACKEND,
"Backend does not implement CeedElemRestrictionCreateOriented or CeedElemRestrictionCreateCurlOriented");

// Stride data
bool is_strided;
CeedCallBackend(CeedElemRestrictionIsStrided(r, &is_strided));
Expand Down Expand Up @@ -321,6 +327,7 @@ int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode,
// Register backend functions
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Apply", CeedElemRestrictionApply_Hip));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnsigned", CeedElemRestrictionApply_Hip));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnoriented", CeedElemRestrictionApply_Hip));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "GetOffsets", CeedElemRestrictionGetOffsets_Hip));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Destroy", CeedElemRestrictionDestroy_Hip));
return CEED_ERROR_SUCCESS;
Expand Down
3 changes: 2 additions & 1 deletion backends/hip-ref/ceed-hip-ref.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ CEED_INTERN int CeedGetHipblasHandle_Hip(Ceed ceed, hipblasHandle_t *handle);

CEED_INTERN int CeedVectorCreate_Hip(CeedSize n, CeedVector vec);

CEED_INTERN int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, CeedElemRestriction r);
CEED_INTERN int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, CeedElemRestriction r);

CEED_INTERN int CeedBasisCreateTensorH1_Hip(CeedInt dim, CeedInt P_1d, CeedInt Q_1d, const CeedScalar *interp_1d, const CeedScalar *grad_1d,
const CeedScalar *q_ref_1d, const CeedScalar *q_weight_1d, CeedBasis basis);
Expand Down
9 changes: 8 additions & 1 deletion backends/magma/ceed-magma-restriction.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ static int CeedElemRestrictionDestroy_Magma(CeedElemRestriction r) {
return CEED_ERROR_SUCCESS;
}

int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const CeedInt *offsets, CeedElemRestriction r) {
int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const CeedInt *offsets, const bool *orients, const CeedInt8 *curl_orients,
CeedElemRestriction r) {
Ceed ceed;
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed));

Expand All @@ -163,6 +164,11 @@ int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const
CeedCallBackend(CeedElemRestrictionGetElementSize(r, &elemsize));
CeedInt size = elemsize * nelem;

CeedRestrictionType rstr_type;
CeedCallBackend(CeedElemRestrictionGetType(r, &rstr_type));
CeedCheck(rstr_type != CEED_RESTRICTION_ORIENTED && rstr_type != CEED_RESTRICTION_CURL_ORIENTED, ceed, CEED_ERROR_BACKEND,
"Backend does not implement CeedElemRestrictionCreateOriented or CeedElemRestrictionCreateCurlOriented");

CeedElemRestriction_Magma *impl;
CeedCallBackend(CeedCalloc(1, &impl));

Expand Down Expand Up @@ -261,6 +267,7 @@ int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const
CeedCallBackend(CeedElemRestrictionSetELayout(r, layout));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Apply", CeedElemRestrictionApply_Magma));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnsigned", CeedElemRestrictionApply_Magma));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "ApplyUnoriented", CeedElemRestrictionApply_Magma));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "GetOffsets", CeedElemRestrictionGetOffsets_Magma));
CeedCallBackend(CeedSetBackendFunction(ceed, "ElemRestriction", r, "Destroy", CeedElemRestrictionDestroy_Magma));
CeedCallBackend(CeedFree(&restriction_kernel_path));
Expand Down
3 changes: 2 additions & 1 deletion backends/magma/ceed-magma.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ CEED_INTERN int CeedBasisCreateTensorH1_Magma(CeedInt dim, CeedInt P1d, CeedInt
CEED_INTERN int CeedBasisCreateH1_Magma(CeedElemTopology topo, CeedInt dim, CeedInt ndof, CeedInt nqpts, const CeedScalar *interp,
const CeedScalar *grad, const CeedScalar *qref, const CeedScalar *qweight, CeedBasis basis);

CEED_INTERN int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const CeedInt *offsets, CeedElemRestriction r);
CEED_INTERN int CeedElemRestrictionCreate_Magma(CeedMemType mtype, CeedCopyMode cmode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, CeedElemRestriction r);

// comment the line below to use the default magma_is_devptr function
#define magma_is_devptr magma_isdevptr
Expand Down
14 changes: 9 additions & 5 deletions backends/occa/ceed-occa-elem-restriction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -297,14 +297,21 @@ int ElemRestriction::registerCeedFunction(Ceed ceed, CeedElemRestriction r, cons
return CeedSetBackendFunction(ceed, "ElemRestriction", r, fname, f);
}

int ElemRestriction::ceedCreate(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, CeedElemRestriction r) {
int ElemRestriction::ceedCreate(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, const bool *orientsInput,
const CeedInt8 *curlOrientsInput, CeedElemRestriction r) {
Ceed ceed;
CeedCallBackend(CeedElemRestrictionGetCeed(r, &ceed));

if ((memType != CEED_MEM_DEVICE) && (memType != CEED_MEM_HOST)) {
return staticCeedError("Only HOST and DEVICE CeedMemType supported");
}

CeedRestrictionType rstr_type;
CeedCallBackend(CeedElemRestrictionGetType(r, &rstr_type));
if ((rstr_type == CEED_RESTRICTION_ORIENTED) || (rstr_type == CEED_RESTRICTION_CURL_ORIENTED)) {
return staticCeedError("(OCCA) Backend does not implement CeedElemRestrictionCreateOriented or CeedElemRestrictionCreateCurlOriented");
}

ElemRestriction *elemRestriction = new ElemRestriction();
CeedCallBackend(CeedElemRestrictionSetData(r, elemRestriction));

Expand All @@ -317,17 +324,14 @@ int ElemRestriction::ceedCreate(CeedMemType memType, CeedCopyMode copyMode, cons

CeedOccaRegisterFunction(r, "Apply", ElemRestriction::ceedApply);
CeedOccaRegisterFunction(r, "ApplyUnsigned", ElemRestriction::ceedApply);
CeedOccaRegisterFunction(r, "ApplyUnoriented", ElemRestriction::ceedApply);
CeedOccaRegisterFunction(r, "ApplyBlock", ElemRestriction::ceedApplyBlock);
CeedOccaRegisterFunction(r, "GetOffsets", ElemRestriction::ceedGetOffsets);
CeedOccaRegisterFunction(r, "Destroy", ElemRestriction::ceedDestroy);

return CEED_ERROR_SUCCESS;
}

int ElemRestriction::ceedCreateBlocked(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, CeedElemRestriction r) {
return staticCeedError("(OCCA) Backend does not implement CeedElemRestrictionCreateBlocked");
}

int ElemRestriction::ceedApply(CeedElemRestriction r, CeedTransposeMode tmode, CeedVector u, CeedVector v, CeedRequest *request) {
ElemRestriction *elemRestriction = ElemRestriction::from(r);
Vector *uVector = Vector::from(u);
Expand Down
5 changes: 2 additions & 3 deletions backends/occa/ceed-occa-elem-restriction.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,8 @@ class ElemRestriction : public CeedObject {
//---[ Ceed Callbacks ]-----------
static int registerCeedFunction(Ceed ceed, CeedElemRestriction r, const char *fname, ceed::occa::ceedFunction f);

static int ceedCreate(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, CeedElemRestriction r);

static int ceedCreateBlocked(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, CeedElemRestriction r);
static int ceedCreate(CeedMemType memType, CeedCopyMode copyMode, const CeedInt *indicesInput, const bool *orientsInput,
const CeedInt8 *curlOrientsInput, CeedElemRestriction r);

static int ceedApply(CeedElemRestriction r, CeedTransposeMode tmode, CeedVector u, CeedVector v, CeedRequest *request);

Expand Down
1 change: 0 additions & 1 deletion backends/occa/ceed-occa.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,6 @@ static int registerMethods(Ceed ceed) {
CeedOccaRegisterBaseFunction("BasisCreateTensorH1", ceed::occa::TensorBasis::ceedCreate);
CeedOccaRegisterBaseFunction("BasisCreateH1", ceed::occa::SimplexBasis::ceedCreate);
CeedOccaRegisterBaseFunction("ElemRestrictionCreate", ceed::occa::ElemRestriction::ceedCreate);
CeedOccaRegisterBaseFunction("ElemRestrictionCreateBlocked", ceed::occa::ElemRestriction::ceedCreateBlocked);
CeedOccaRegisterBaseFunction("QFunctionCreate", ceed::occa::QFunction::ceedCreate);
CeedOccaRegisterBaseFunction("QFunctionContextCreate", ceed::occa::QFunctionContext::ceedCreate);
CeedOccaRegisterBaseFunction("OperatorCreate", ceed::occa::Operator::ceedCreate);
Expand Down
8 changes: 2 additions & 6 deletions backends/occa/ceed-occa.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,8 @@ CEED_INTERN int CeedQFunctionCreate_Occa(CeedQFunction qf);
CEED_INTERN int CeedQFunctionContextCreate_Occa(CeedQFunctionContext ctx);

// *****************************************************************************
CEED_INTERN int CeedElemRestrictionCreate_Occa(const CeedMemType mtype, const CeedCopyMode cmode, const CeedInt *indices,
const CeedElemRestriction res);

// *****************************************************************************
CEED_INTERN int CeedElemRestrictionCreateBlocked_Occa(const CeedMemType mtype, const CeedCopyMode cmode, const CeedInt *indices,
const CeedElemRestriction res);
CEED_INTERN int CeedElemRestrictionCreate_Occa(const CeedMemType mtype, const CeedCopyMode cmode, const CeedInt *indices, const bool *orients,
const CeedInt8 *curl_orients, const CeedElemRestriction res);

// *****************************************************************************
CEED_INTERN int CeedVectorCreate_Occa(CeedInt n, CeedVector vec);