Lines Matching +full:- +full:- +full:exit +full:- +full:code

1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
4 // SPDX-License-Identifier: BSD-2-Clause
8 #include <ceed-impl.h>
18 /// ----------------------------------------------------------------------------
20 /// ----------------------------------------------------------------------------
34 @return An error code: 0 - success, otherwise - failure
43 …block_offsets[e * elem_size + k * block_size + j] = offsets[CeedIntMin(e + j, num_elem - 1) * elem… in CeedPermutePadOffsets()
60 @return An error code: 0 - success, otherwise - failure
68 …block_orients[e * elem_size + k * block_size + j] = orients[CeedIntMin(e + j, num_elem - 1) * elem… in CeedPermutePadOrients()
76 @brief Permute and pad curl-conforming orientations for a blocked `CeedElemRestriction`
85 @return An error code: 0 - success, otherwise - failure
94 … * elem_size + k * block_size + j] = curl_orients[CeedIntMin(e + j, num_elem - 1) * elem_size + k]; in CeedPermutePadCurlOrients()
107 @return An error code: 0 - success, otherwise - failure
121 @return An error code: 0 - success, otherwise - failure
132 /// ----------------------------------------------------------------------------
134 /// ----------------------------------------------------------------------------
144 @return An error code: 0 - success, otherwise - failure
149 *rstr_type = rstr->rstr_type; in CeedElemRestrictionGetType()
159 @return An error code: 0 - success, otherwise - failure
164 *is_strided = (rstr->rstr_type == CEED_RESTRICTION_STRIDED); in CeedElemRestrictionIsStrided()
174 @return An error code: 0 - success, otherwise - failure
179 *is_points = (rstr->rstr_type == CEED_RESTRICTION_POINTS); in CeedElemRestrictionIsAtPoints()
190 @return An error code: 0 - success, otherwise - failure
197 // Cannot compare non-points restrictions in CeedElemRestrictionAtPointsAreCompatible()
198 …CeedCheck(rstr_a->rstr_type == CEED_RESTRICTION_POINTS, CeedElemRestrictionReturnCeed(rstr_a), CEE… in CeedElemRestrictionAtPointsAreCompatible()
200 …CeedCheck(rstr_b->rstr_type == CEED_RESTRICTION_POINTS, CeedElemRestrictionReturnCeed(rstr_a), CEE… in CeedElemRestrictionAtPointsAreCompatible()
230 @return An error code: 0 - success, otherwise - failure
235 …CeedCheck(rstr->strides, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_MINOR, "CeedElemRestricti… in CeedElemRestrictionGetStrides()
236 for (CeedInt i = 0; i < 3; i++) strides[i] = rstr->strides[i]; in CeedElemRestrictionGetStrides()
246 @return An error code: 0 - success, otherwise - failure
251 …CeedCheck(rstr->strides, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_MINOR, "CeedElemRestricti… in CeedElemRestrictionHasBackendStrides()
252 …*has_backend_strides = ((rstr->strides[0] == CEED_STRIDES_BACKEND[0]) && (rstr->strides[1] == CEED… in CeedElemRestrictionHasBackendStrides()
253 (rstr->strides[2] == CEED_STRIDES_BACKEND[2])); in CeedElemRestrictionHasBackendStrides()
258 @brief Get read-only access to a `CeedElemRestriction` offsets array by @ref CeedMemType
265 @return An error code: 0 - success, otherwise - failure
270 if (rstr->rstr_base) { in CeedElemRestrictionGetOffsets()
271 CeedCall(CeedElemRestrictionGetOffsets(rstr->rstr_base, mem_type, offsets)); in CeedElemRestrictionGetOffsets()
273 CeedCheck(rstr->GetOffsets, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_UNSUPPORTED, in CeedElemRestrictionGetOffsets()
275 CeedCall(rstr->GetOffsets(rstr, mem_type, offsets)); in CeedElemRestrictionGetOffsets()
276 rstr->num_readers++; in CeedElemRestrictionGetOffsets()
287 @return An error code: 0 - success, otherwise - failure
292 if (rstr->rstr_base) { in CeedElemRestrictionRestoreOffsets()
293 CeedCall(CeedElemRestrictionRestoreOffsets(rstr->rstr_base, offsets)); in CeedElemRestrictionRestoreOffsets()
296 rstr->num_readers--; in CeedElemRestrictionRestoreOffsets()
302 @brief Get read-only access to a `CeedElemRestriction` orientations array by @ref CeedMemType
309 @return An error code: 0 - success, otherwise - failure
314 CeedCheck(rstr->GetOrientations, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_UNSUPPORTED, in CeedElemRestrictionGetOrientations()
316 CeedCall(rstr->GetOrientations(rstr, mem_type, orients)); in CeedElemRestrictionGetOrientations()
317 rstr->num_readers++; in CeedElemRestrictionGetOrientations()
327 @return An error code: 0 - success, otherwise - failure
333 rstr->num_readers--; in CeedElemRestrictionRestoreOrientations()
338 …@brief Get read-only access to a `CeedElemRestriction` curl-conforming orientations array by @ref …
340 @param[in] rstr `CeedElemRestriction` to retrieve curl-conforming orientations
345 @return An error code: 0 - success, otherwise - failure
350 CeedCheck(rstr->GetCurlOrientations, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_UNSUPPORTED, in CeedElemRestrictionGetCurlOrientations()
352 CeedCall(rstr->GetCurlOrientations(rstr, mem_type, curl_orients)); in CeedElemRestrictionGetCurlOrientations()
353 rstr->num_readers++; in CeedElemRestrictionGetCurlOrientations()
363 @return An error code: 0 - success, otherwise - failure
369 rstr->num_readers--; in CeedElemRestrictionRestoreCurlOrientations()
375 @brief Get the L-vector layout of a strided `CeedElemRestriction`
379 …The data for node `i`, component `j`, element `k` in the E-vector is given by `i*layout[0] + j*lay…
381 @return An error code: 0 - success, otherwise - failure
391 "Only strided CeedElemRestriction have strided L-vector layout"); in CeedElemRestrictionGetLLayout()
394 …CeedCheck(rstr->l_layout[0], CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_MINOR, "CeedElemRestr… in CeedElemRestrictionGetLLayout()
395 for (CeedInt i = 0; i < 3; i++) layout[i] = rstr->l_layout[i]; in CeedElemRestrictionGetLLayout()
404 @brief Set the L-vector layout of a strided `CeedElemRestriction`
408 …The data for node `i`, component `j`, element `k` in the E-vector is given by `i*layout[0] + j*lay…
410 @return An error code: 0 - success, otherwise - failure
419 "Only strided CeedElemRestriction have strided L-vector layout"); in CeedElemRestrictionSetLLayout()
420 for (CeedInt i = 0; i < 3; i++) rstr->l_layout[i] = layout[i]; in CeedElemRestrictionSetLLayout()
426 @brief Get the E-vector layout of a `CeedElemRestriction`
430 …The data for node `i`, component `j`, element `k` in the E-vector is given by `i*layout[0] + j*lay…
432 @return An error code: 0 - success, otherwise - failure
437 …CeedCheck(rstr->e_layout[0], CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_MINOR, "CeedElemRestr… in CeedElemRestrictionGetELayout()
438 for (CeedInt i = 0; i < 3; i++) layout[i] = rstr->e_layout[i]; in CeedElemRestrictionGetELayout()
444 @brief Set the E-vector layout of a `CeedElemRestriction`
448 …The data for node `i`, component `j`, element `k` in the E-vector is given by `i*layout[0] + j*lay…
450 @return An error code: 0 - success, otherwise - failure
455 for (CeedInt i = 0; i < 3; i++) rstr->e_layout[i] = layout[i]; in CeedElemRestrictionSetELayout()
461 @brief Get the E-vector element offset of a `CeedElemRestriction` at points
464 @param[in] elem Element number index into E-vector for
465 @param[out] elem_offset Offset for element `elem` in the E-vector.
466 …The data for point `i`, component `j`, element `elem` in the E-vector is given by `i*e_layout[0] +…
468 @return An error code: 0 - success, otherwise - failure
481 if (rstr->GetAtPointsElementOffset) { in CeedElemRestrictionGetAtPointsElementOffset()
482 CeedCall(rstr->GetAtPointsElementOffset(rstr, elem, elem_offset)); in CeedElemRestrictionGetAtPointsElementOffset()
500 @brief Set the E-vector size of a `CeedElemRestriction` at points
503 @param[in] e_size New E-vector size; must be longer than the current E-vector size
505 @return An error code: 0 - success, otherwise - failure
515 CeedCheck(e_size >= rstr->e_size, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_INCOMPATIBLE, in CeedElemRestrictionSetAtPointsEVectorSize()
516 "Can only increase the size of the E-vector for the CeedElemRestriction." in CeedElemRestrictionSetAtPointsEVectorSize()
518 rstr->e_size, e_size); in CeedElemRestrictionSetAtPointsEVectorSize()
519 rstr->e_size = e_size; in CeedElemRestrictionSetAtPointsEVectorSize()
529 @return An error code: 0 - success, otherwise - failure
534 *(void **)data = rstr->data; in CeedElemRestrictionGetData()
544 @return An error code: 0 - success, otherwise - failure
549 rstr->data = data; in CeedElemRestrictionSetData()
558 @return An error code: 0 - success, otherwise - failure
623 /// ----------------------------------------------------------------------------
625 /// ----------------------------------------------------------------------------
642 @param[in] comp_stride Stride between components for the same L-vector "node".
643 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
644 @param[in] l_size The size of the L-vector.
650 All offsets must be in the range `[0, l_size - 1]`.
653 @return An error code: 0 - success, otherwise - failure
659 if (!ceed->ElemRestrictionCreate) { in CeedElemRestrictionCreate()
669 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreate()
675 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreate()
676 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreate()
677 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreate()
678 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreate()
679 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreate()
680 (*rstr)->l_size = l_size; in CeedElemRestrictionCreate()
681 (*rstr)->e_size = (CeedSize)num_elem * (CeedSize)elem_size * (CeedSize)num_comp; in CeedElemRestrictionCreate()
682 (*rstr)->num_block = num_elem; in CeedElemRestrictionCreate()
683 (*rstr)->block_size = 1; in CeedElemRestrictionCreate()
684 (*rstr)->rstr_type = CEED_RESTRICTION_STANDARD; in CeedElemRestrictionCreate()
685 CeedCall(ceed->ElemRestrictionCreate(mem_type, copy_mode, offsets, NULL, NULL, *rstr)); in CeedElemRestrictionCreate()
696 @param[in] comp_stride Stride between components for the same L-vector "node".
697 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
698 @param[in] l_size The size of the L-vector.
704 All offsets must be in the range `[0, l_size - 1]`.
708 @return An error code: 0 - success, otherwise - failure
715 if (!ceed->ElemRestrictionCreate) { in CeedElemRestrictionCreateOriented()
726 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateOriented()
732 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateOriented()
733 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateOriented()
734 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateOriented()
735 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateOriented()
736 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreateOriented()
737 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateOriented()
738 (*rstr)->e_size = (CeedSize)num_elem * (CeedSize)elem_size * (CeedSize)num_comp; in CeedElemRestrictionCreateOriented()
739 (*rstr)->num_block = num_elem; in CeedElemRestrictionCreateOriented()
740 (*rstr)->block_size = 1; in CeedElemRestrictionCreateOriented()
741 (*rstr)->rstr_type = CEED_RESTRICTION_ORIENTED; in CeedElemRestrictionCreateOriented()
742 CeedCall(ceed->ElemRestrictionCreate(mem_type, copy_mode, offsets, orients, NULL, *rstr)); in CeedElemRestrictionCreateOriented()
747 …@brief Create a `CeedElemRestriction` with a general tridiagonal transformation matrix for curl-co…
753 @param[in] comp_stride Stride between components for the same L-vector "node".
754 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
755 @param[in] l_size The size of the L-vector.
761 All offsets must be in the range `[0, l_size - 1]`.
762 …_size]` representing a row-major tridiagonal matrix (`curl_orients[i * 3 * elem_size] = curl_orien…
766 @return An error code: 0 - success, otherwise - failure
773 if (!ceed->ElemRestrictionCreate) { in CeedElemRestrictionCreateCurlOriented()
784 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateCurlOriented()
790 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateCurlOriented()
791 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateCurlOriented()
792 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateCurlOriented()
793 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateCurlOriented()
794 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreateCurlOriented()
795 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateCurlOriented()
796 (*rstr)->e_size = (CeedSize)num_elem * (CeedSize)elem_size * (CeedSize)num_comp; in CeedElemRestrictionCreateCurlOriented()
797 (*rstr)->num_block = num_elem; in CeedElemRestrictionCreateCurlOriented()
798 (*rstr)->block_size = 1; in CeedElemRestrictionCreateCurlOriented()
799 (*rstr)->rstr_type = CEED_RESTRICTION_CURL_ORIENTED; in CeedElemRestrictionCreateCurlOriented()
800 CeedCall(ceed->ElemRestrictionCreate(mem_type, copy_mode, offsets, NULL, curl_orients, *rstr)); in CeedElemRestrictionCreateCurlOriented()
811 @param[in] l_size The size of the L-vector.
814 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `i*strides[0] …
817 … The L-vector layout will, in general, be different between `Ceed` backends.
820 @return An error code: 0 - success, otherwise - failure
826 if (!ceed->ElemRestrictionCreate) { in CeedElemRestrictionCreateStrided()
836 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateStrided()
840 …"L-vector size must be at least num_elem * elem_size * num_comp. Expected: > %" CeedSize_FMT " Fou… in CeedElemRestrictionCreateStrided()
844 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateStrided()
845 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateStrided()
846 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateStrided()
847 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateStrided()
848 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateStrided()
849 (*rstr)->e_size = (CeedSize)num_elem * (CeedSize)elem_size * (CeedSize)num_comp; in CeedElemRestrictionCreateStrided()
850 (*rstr)->num_block = num_elem; in CeedElemRestrictionCreateStrided()
851 (*rstr)->block_size = 1; in CeedElemRestrictionCreateStrided()
852 (*rstr)->rstr_type = CEED_RESTRICTION_STRIDED; in CeedElemRestrictionCreateStrided()
853 CeedCall(CeedMalloc(3, &(*rstr)->strides)); in CeedElemRestrictionCreateStrided()
854 for (CeedInt i = 0; i < 3; i++) (*rstr)->strides[i] = strides[i]; in CeedElemRestrictionCreateStrided()
855 CeedCall(ceed->ElemRestrictionCreate(CEED_MEM_HOST, CEED_OWN_POINTER, NULL, NULL, NULL, *rstr)); in CeedElemRestrictionCreateStrided()
878 @param[in] l_size The size of the L-vector.
887 @return An error code: 0 - success, otherwise - failure
893 if (!ceed->ElemRestrictionCreateAtPoints) { in CeedElemRestrictionCreateAtPoints()
903 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateAtPoints()
904 CeedCheck(num_points >= 0, ceed, CEED_ERROR_DIMENSION, "Number of points must be non-negative"); in CeedElemRestrictionCreateAtPoints()
907 …"L-vector must be at least num_points * num_comp. Expected: > %" CeedSize_FMT " Found: %" CeedSize… in CeedElemRestrictionCreateAtPoints()
911 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateAtPoints()
912 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateAtPoints()
913 (*rstr)->num_points = num_points; in CeedElemRestrictionCreateAtPoints()
914 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateAtPoints()
915 (*rstr)->comp_stride = 1; in CeedElemRestrictionCreateAtPoints()
916 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateAtPoints()
917 (*rstr)->e_size = (CeedSize)num_points * (CeedSize)num_comp; in CeedElemRestrictionCreateAtPoints()
918 (*rstr)->num_block = num_elem; in CeedElemRestrictionCreateAtPoints()
919 (*rstr)->block_size = 1; in CeedElemRestrictionCreateAtPoints()
920 (*rstr)->rstr_type = CEED_RESTRICTION_POINTS; in CeedElemRestrictionCreateAtPoints()
921 CeedCall(ceed->ElemRestrictionCreateAtPoints(mem_type, copy_mode, offsets, NULL, NULL, *rstr)); in CeedElemRestrictionCreateAtPoints()
933 @param[in] comp_stride Stride between components for the same L-vector "node".
934 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
935 @param[in] l_size The size of the L-vector.
941 All offsets must be in the range `[0, l_size - 1]`.
946 @return An error code: 0 - success, otherwise - failure
955 if (!ceed->ElemRestrictionCreateBlocked) { in CeedElemRestrictionCreateBlocked()
966 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateBlocked()
976 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateBlocked()
977 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateBlocked()
978 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateBlocked()
979 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateBlocked()
980 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreateBlocked()
981 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateBlocked()
982 …(*rstr)->e_size = (CeedSize)num_block * (CeedSize)block_size * (CeedSize)elem_size * (CeedSiz… in CeedElemRestrictionCreateBlocked()
983 (*rstr)->num_block = num_block; in CeedElemRestrictionCreateBlocked()
984 (*rstr)->block_size = block_size; in CeedElemRestrictionCreateBlocked()
985 (*rstr)->rstr_type = CEED_RESTRICTION_STANDARD; in CeedElemRestrictionCreateBlocked()
986 …CeedCall(ceed->ElemRestrictionCreateBlocked(CEED_MEM_HOST, CEED_OWN_POINTER, (const CeedInt *)bloc… in CeedElemRestrictionCreateBlocked()
999 @param[in] comp_stride Stride between components for the same L-vector "node".
1000 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
1001 @param[in] l_size The size of the L-vector.
1007 All offsets must be in the range `[0, l_size - 1]`.
1014 @return An error code: 0 - success, otherwise - failure
1024 if (!ceed->ElemRestrictionCreateBlocked) { in CeedElemRestrictionCreateBlockedOriented()
1046 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateBlockedOriented()
1047 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateBlockedOriented()
1048 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateBlockedOriented()
1049 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateBlockedOriented()
1050 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreateBlockedOriented()
1051 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateBlockedOriented()
1052 …(*rstr)->e_size = (CeedSize)num_block * (CeedSize)block_size * (CeedSize)elem_size * (CeedSiz… in CeedElemRestrictionCreateBlockedOriented()
1053 (*rstr)->num_block = num_block; in CeedElemRestrictionCreateBlockedOriented()
1054 (*rstr)->block_size = block_size; in CeedElemRestrictionCreateBlockedOriented()
1055 (*rstr)->rstr_type = CEED_RESTRICTION_ORIENTED; in CeedElemRestrictionCreateBlockedOriented()
1056 …CeedCall(ceed->ElemRestrictionCreateBlocked(CEED_MEM_HOST, CEED_OWN_POINTER, (const CeedInt *)bloc… in CeedElemRestrictionCreateBlockedOriented()
1063 @brief Create a blocked curl-oriented `CeedElemRestriction`, typically only used by backends
1070 @param[in] comp_stride Stride between components for the same L-vector "node".
1071 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `offsets[i + k…
1072 @param[in] l_size The size of the L-vector.
1078 All offsets must be in the range `[0, l_size - 1]`.
1081 …_size]` representing a row-major tridiagonal matrix (`curl_orients[i * 3 * elem_size] = curl_orien…
1086 @return An error code: 0 - success, otherwise - failure
1096 if (!ceed->ElemRestrictionCreateBlocked) { in CeedElemRestrictionCreateBlockedCurlOriented()
1107 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateBlockedCurlOriented()
1119 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateBlockedCurlOriented()
1120 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateBlockedCurlOriented()
1121 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateBlockedCurlOriented()
1122 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateBlockedCurlOriented()
1123 (*rstr)->comp_stride = comp_stride; in CeedElemRestrictionCreateBlockedCurlOriented()
1124 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateBlockedCurlOriented()
1125 …(*rstr)->e_size = (CeedSize)num_block * (CeedSize)block_size * (CeedSize)elem_size * (CeedSiz… in CeedElemRestrictionCreateBlockedCurlOriented()
1126 (*rstr)->num_block = num_block; in CeedElemRestrictionCreateBlockedCurlOriented()
1127 (*rstr)->block_size = block_size; in CeedElemRestrictionCreateBlockedCurlOriented()
1128 (*rstr)->rstr_type = CEED_RESTRICTION_CURL_ORIENTED; in CeedElemRestrictionCreateBlockedCurlOriented()
1129 …CeedCall(ceed->ElemRestrictionCreateBlocked(CEED_MEM_HOST, CEED_OWN_POINTER, (const CeedInt *)bloc… in CeedElemRestrictionCreateBlockedCurlOriented()
1143 @param[in] l_size The size of the L-vector.
1146 …Data for node `i`, component `j`, element `k` can be found in the L-vector at index `i*strides[0] …
1150 @return An error code: 0 - success, otherwise - failure
1158 if (!ceed->ElemRestrictionCreateBlocked) { in CeedElemRestrictionCreateBlockedStrided()
1168 CeedCheck(num_elem >= 0, ceed, CEED_ERROR_DIMENSION, "Number of elements must be non-negative"); in CeedElemRestrictionCreateBlockedStrided()
1173 …"L-vector size must be at least num_elem * elem_size * num_comp. Expected: > %" CeedSize_FMT " Fou… in CeedElemRestrictionCreateBlockedStrided()
1177 …ectCreate(ceed, CeedElemRestrictionView_Object, CeedElemRestrictionDestroy_Object, &(*rstr)->obj)); in CeedElemRestrictionCreateBlockedStrided()
1178 (*rstr)->num_elem = num_elem; in CeedElemRestrictionCreateBlockedStrided()
1179 (*rstr)->elem_size = elem_size; in CeedElemRestrictionCreateBlockedStrided()
1180 (*rstr)->num_comp = num_comp; in CeedElemRestrictionCreateBlockedStrided()
1181 (*rstr)->l_size = l_size; in CeedElemRestrictionCreateBlockedStrided()
1182 …(*rstr)->e_size = (CeedSize)num_block * (CeedSize)block_size * (CeedSize)elem_size * (CeedSize… in CeedElemRestrictionCreateBlockedStrided()
1183 (*rstr)->num_block = num_block; in CeedElemRestrictionCreateBlockedStrided()
1184 (*rstr)->block_size = block_size; in CeedElemRestrictionCreateBlockedStrided()
1185 (*rstr)->rstr_type = CEED_RESTRICTION_STRIDED; in CeedElemRestrictionCreateBlockedStrided()
1186 CeedCall(CeedMalloc(3, &(*rstr)->strides)); in CeedElemRestrictionCreateBlockedStrided()
1187 for (CeedInt i = 0; i < 3; i++) (*rstr)->strides[i] = strides[i]; in CeedElemRestrictionCreateBlockedStrided()
1188 …CeedCall(ceed->ElemRestrictionCreateBlocked(CEED_MEM_HOST, CEED_OWN_POINTER, NULL, NULL, NULL, *rs… in CeedElemRestrictionCreateBlockedStrided()
1200 @return An error code: 0 - success, otherwise - failure
1210 &(*rstr_unsigned)->obj)); in CeedElemRestrictionCreateUnsignedCopy()
1211 (*rstr_unsigned)->strides = NULL; in CeedElemRestrictionCreateUnsignedCopy()
1212 if (rstr->strides) { in CeedElemRestrictionCreateUnsignedCopy()
1213 CeedCall(CeedMalloc(3, &(*rstr_unsigned)->strides)); in CeedElemRestrictionCreateUnsignedCopy()
1214 for (CeedInt i = 0; i < 3; i++) (*rstr_unsigned)->strides[i] = rstr->strides[i]; in CeedElemRestrictionCreateUnsignedCopy()
1216 CeedCall(CeedElemRestrictionReferenceCopy(rstr, &(*rstr_unsigned)->rstr_base)); in CeedElemRestrictionCreateUnsignedCopy()
1219 (*rstr_unsigned)->Apply = rstr->ApplyUnsigned; in CeedElemRestrictionCreateUnsignedCopy()
1231 @return An error code: 0 - success, otherwise - failure
1241 &(*rstr_unoriented)->obj)); in CeedElemRestrictionCreateUnorientedCopy()
1242 (*rstr_unoriented)->strides = NULL; in CeedElemRestrictionCreateUnorientedCopy()
1243 if (rstr->strides) { in CeedElemRestrictionCreateUnorientedCopy()
1244 CeedCall(CeedMalloc(3, &(*rstr_unoriented)->strides)); in CeedElemRestrictionCreateUnorientedCopy()
1245 for (CeedInt i = 0; i < 3; i++) (*rstr_unoriented)->strides[i] = rstr->strides[i]; in CeedElemRestrictionCreateUnorientedCopy()
1247 CeedCall(CeedElemRestrictionReferenceCopy(rstr, &(*rstr_unoriented)->rstr_base)); in CeedElemRestrictionCreateUnorientedCopy()
1250 (*rstr_unoriented)->Apply = rstr->ApplyUnoriented; in CeedElemRestrictionCreateUnorientedCopy()
1259 …Note: If the value of `*rstr_copy` passed into this function is non-`NULL`, then it is assumed tha…
1265 @return An error code: 0 - success, otherwise - failure
1280 @param[out] l_vec The address of the L-vector to be created, or `NULL`
1281 @param[out] e_vec The address of the E-vector to be created, or `NULL`
1283 @return An error code: 0 - success, otherwise - failure
1301 @brief Restrict an L-vector to an E-vector or apply its transpose
1307 Ordering of the e-vector is decided by the backend.
1310 @return An error code: 0 - success, otherwise - failure
1334 if (num_elem > 0) CeedCall(rstr->Apply(rstr, t_mode, u, ru, request)); in CeedElemRestrictionApply()
1339 @brief Restrict an L-vector of points to a single element or apply its transpose
1346 Ordering of the e-vector is decided by the backend.
1349 @return An error code: 0 - success, otherwise - failure
1358 …CeedCheck(rstr->ApplyAtPointsInElement, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_UNSUPPORTE… in CeedElemRestrictionApplyAtPointsInElement()
1389 if (num_elem > 0) CeedCall(rstr->ApplyAtPointsInElement(rstr, elem, t_mode, u, ru, request)); in CeedElemRestrictionApplyAtPointsInElement()
1394 @brief Restrict an L-vector to a block of an E-vector or apply its transpose
1401 Ordering of the e-vector is decided by the backend.
1404 @return An error code: 0 - success, otherwise - failure
1413 CeedCheck(rstr->ApplyBlock, CeedElemRestrictionReturnCeed(rstr), CEED_ERROR_UNSUPPORTED, in CeedElemRestrictionApplyBlock()
1444 CeedCall(rstr->ApplyBlock(rstr, block, t_mode, u, ru, request)); in CeedElemRestrictionApplyBlock()
1454 @return An error code: 0 - success, otherwise - failure
1475 @brief Get the L-vector component stride
1480 @return An error code: 0 - success, otherwise - failure
1485 *comp_stride = rstr->comp_stride; in CeedElemRestrictionGetCompStride()
1495 @return An error code: 0 - success, otherwise - failure
1500 *num_elem = rstr->num_elem; in CeedElemRestrictionGetNumElements()
1510 @return An error code: 0 - success, otherwise - failure
1515 *elem_size = rstr->elem_size; in CeedElemRestrictionGetElementSize()
1526 @return An error code: 0 - success, otherwise - failure
1537 *num_points = rstr->num_points; in CeedElemRestrictionGetNumPoints()
1549 @return An error code: 0 - success, otherwise - failure
1562 *num_points = offsets[elem + 1] - offsets[elem]; in CeedElemRestrictionGetNumPointsInElement()
1574 @return An error code: 0 - success, otherwise - failure
1588 // Exit early if there are no elements in CeedElemRestrictionGetMinMaxPointsInElement()
1613 @return An error code: 0 - success, otherwise - failure
1629 @return An error code: 0 - success, otherwise - failure
1640 @brief Get the size of the l-vector for a `CeedElemRestriction`
1643 @param[out] l_size Variable to store l-vector size
1645 @return An error code: 0 - success, otherwise - failure
1650 *l_size = rstr->l_size; in CeedElemRestrictionGetLVectorSize()
1655 @brief Get the size of the e-vector for a `CeedElemRestriction`
1658 @param[out] e_size Variable to store e-vector size
1660 @return An error code: 0 - success, otherwise - failure
1665 *e_size = rstr->e_size; in CeedElemRestrictionGetEVectorSize()
1675 @return An error code: 0 - success, otherwise - failure
1680 *num_comp = rstr->num_comp; in CeedElemRestrictionGetNumComponents()
1690 @return An error code: 0 - success, otherwise - failure
1695 *num_block = rstr->num_block; in CeedElemRestrictionGetNumBlocks()
1705 @return An error code: 0 - success, otherwise - failure
1710 *block_size = rstr->block_size; in CeedElemRestrictionGetBlockSize()
1720 @return An error code: 0 - success, otherwise - failure
1747 @return Error code: 0 - success, otherwise - failure
1762 @return Error code: 0 - success, otherwise - failure
1777 @return Error code: 0 - success, otherwise - failure
1801 tabs, rstr->l_size, rstr->num_comp, rstr->num_elem, max_points); in CeedElemRestrictionView()
1805 if (rstr->strides) { in CeedElemRestrictionView()
1806 … CeedInt_FMT ", %" CeedInt_FMT ", %" CeedInt_FMT "]", rstr->strides[0], rstr->strides[1], rstr->st… in CeedElemRestrictionView()
1808 sprintf(strides_str, "%" CeedInt_FMT, rstr->comp_stride); in CeedElemRestrictionView()
1813 …tabs, rstr->block_size > 1 ? "Blocked " : "", rstr->l_size, rstr->num_comp, rstr->num_elem, rstr->… in CeedElemRestrictionView()
1814 rstr->strides ? "strides" : "component stride", strides_str); in CeedElemRestrictionView()
1825 @return An error code: 0 - success, otherwise - failure
1834 CeedCheck((*rstr)->num_readers == 0, CeedElemRestrictionReturnCeed(*rstr), CEED_ERROR_ACCESS, in CeedElemRestrictionDestroy()
1838 if ((*rstr)->rstr_base) CeedCall(CeedElemRestrictionDestroy(&(*rstr)->rstr_base)); in CeedElemRestrictionDestroy()
1839 else if ((*rstr)->Destroy) CeedCall((*rstr)->Destroy(*rstr)); in CeedElemRestrictionDestroy()
1841 CeedCall(CeedFree(&(*rstr)->strides)); in CeedElemRestrictionDestroy()
1842 CeedCall(CeedObjectDestroy_Private(&(*rstr)->obj)); in CeedElemRestrictionDestroy()