ceed-elemrestriction.c (b17517ee98e70bbde11768f0b2de0644e9c68f9a) ceed-elemrestriction.c (b04eb3d9dcd03054fbe981a83f15e207a4bc97bc)
1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#include <ceed-impl.h>

--- 395 unchanged lines hidden (view full) ---

404 @return An error code: 0 - success, otherwise - failure
405
406 @ref User
407**/
408int CeedElemRestrictionCreateStrided(Ceed ceed, CeedInt num_elem, CeedInt elem_size, CeedInt num_comp, CeedSize l_size, const CeedInt strides[3],
409 CeedElemRestriction *rstr) {
410 if (!ceed->ElemRestrictionCreate) {
411 Ceed delegate;
1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#include <ceed-impl.h>

--- 395 unchanged lines hidden (view full) ---

404 @return An error code: 0 - success, otherwise - failure
405
406 @ref User
407**/
408int CeedElemRestrictionCreateStrided(Ceed ceed, CeedInt num_elem, CeedInt elem_size, CeedInt num_comp, CeedSize l_size, const CeedInt strides[3],
409 CeedElemRestriction *rstr) {
410 if (!ceed->ElemRestrictionCreate) {
411 Ceed delegate;
412
412 CeedCall(CeedGetObjectDelegate(ceed, &delegate, "ElemRestriction"));
413 CeedCheck(delegate, ceed, CEED_ERROR_UNSUPPORTED, "Backend does not support ElemRestrictionCreateStrided");
414 CeedCall(CeedElemRestrictionCreateStrided(delegate, num_elem, elem_size, num_comp, l_size, strides, rstr));
415 return CEED_ERROR_SUCCESS;
416 }
417
418 CeedCheck(elem_size > 0, ceed, CEED_ERROR_DIMENSION, "Element size must be at least 1");
419 CeedCheck(num_comp > 0, ceed, CEED_ERROR_DIMENSION, "ElemRestriction must have at least 1 component");

--- 224 unchanged lines hidden (view full) ---

644
645 @return An error code: 0 - success, otherwise - failure
646
647 @ref User
648**/
649int CeedElemRestrictionApplyUnsigned(CeedElemRestriction rstr, CeedTransposeMode t_mode, CeedVector u, CeedVector ru, CeedRequest *request) {
650 CeedInt m, n;
651
413 CeedCall(CeedGetObjectDelegate(ceed, &delegate, "ElemRestriction"));
414 CeedCheck(delegate, ceed, CEED_ERROR_UNSUPPORTED, "Backend does not support ElemRestrictionCreateStrided");
415 CeedCall(CeedElemRestrictionCreateStrided(delegate, num_elem, elem_size, num_comp, l_size, strides, rstr));
416 return CEED_ERROR_SUCCESS;
417 }
418
419 CeedCheck(elem_size > 0, ceed, CEED_ERROR_DIMENSION, "Element size must be at least 1");
420 CeedCheck(num_comp > 0, ceed, CEED_ERROR_DIMENSION, "ElemRestriction must have at least 1 component");

--- 224 unchanged lines hidden (view full) ---

645
646 @return An error code: 0 - success, otherwise - failure
647
648 @ref User
649**/
650int CeedElemRestrictionApplyUnsigned(CeedElemRestriction rstr, CeedTransposeMode t_mode, CeedVector u, CeedVector ru, CeedRequest *request) {
651 CeedInt m, n;
652
652 CeedCheck(rstr->ApplyUnsigned, rstr->ceed, CEED_ERROR_UNSUPPORTED, "Backend does not implement ElemRestrictionApplyUnsigned");
653 CeedCheck(rstr->ApplyUnsigned, rstr->ceed, CEED_ERROR_UNSUPPORTED, "Backend does not support ElemRestrictionApplyUnsigned");
653
654 if (t_mode == CEED_NOTRANSPOSE) {
655 m = rstr->num_blk * rstr->blk_size * rstr->elem_size * rstr->num_comp;
656 n = rstr->l_size;
657 } else {
658 m = rstr->l_size;
659 n = rstr->num_blk * rstr->blk_size * rstr->elem_size * rstr->num_comp;
660 }

--- 243 unchanged lines hidden ---
654
655 if (t_mode == CEED_NOTRANSPOSE) {
656 m = rstr->num_blk * rstr->blk_size * rstr->elem_size * rstr->num_comp;
657 n = rstr->l_size;
658 } else {
659 m = rstr->l_size;
660 n = rstr->num_blk * rstr->blk_size * rstr->elem_size * rstr->num_comp;
661 }

--- 243 unchanged lines hidden ---