Lines Matching refs:basis
190 static int CeedBasisView_Object(CeedObject basis, FILE *stream) { in CeedBasisView_Object() argument
191 CeedCall(CeedBasisView((CeedBasis)basis, stream)); in CeedBasisView_Object()
204 static int CeedBasisDestroy_Object(CeedObject *basis) { in CeedBasisDestroy_Object() argument
205 CeedCall(CeedBasisDestroy((CeedBasis *)basis)); in CeedBasisDestroy_Object()
345 static int CeedBasisApplyCheckDims(CeedBasis basis, CeedInt num_elem, CeedTransposeMode t_mode, Cee… in CeedBasisApplyCheckDims() argument
349 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisApplyCheckDims()
350 CeedCall(CeedBasisGetNumComponents(basis, &num_comp)); in CeedBasisApplyCheckDims()
351 CeedCall(CeedBasisGetNumQuadratureComponents(basis, eval_mode, &q_comp)); in CeedBasisApplyCheckDims()
352 CeedCall(CeedBasisGetNumNodes(basis, &num_nodes)); in CeedBasisApplyCheckDims()
353 CeedCall(CeedBasisGetNumQuadraturePoints(basis, &num_qpts)); in CeedBasisApplyCheckDims()
374 …CeedCheck(has_good_dims, CeedBasisReturnCeed(basis), CEED_ERROR_DIMENSION, "Input/output vectors t… in CeedBasisApplyCheckDims()
398 static int CeedBasisApplyAtPointsCheckDims(CeedBasis basis, CeedInt num_elem, const CeedInt *num_po… in CeedBasisApplyAtPointsCheckDims() argument
403 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisApplyAtPointsCheckDims()
404 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisApplyAtPointsCheckDims()
405 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisApplyAtPointsCheckDims()
406 CeedCall(CeedBasisGetNumComponents(basis, &num_comp)); in CeedBasisApplyAtPointsCheckDims()
407 CeedCall(CeedBasisGetNumQuadratureComponents(basis, eval_mode, &num_q_comp)); in CeedBasisApplyAtPointsCheckDims()
408 CeedCall(CeedBasisGetNumNodes(basis, &num_nodes)); in CeedBasisApplyAtPointsCheckDims()
415 …e)total_num_points * (CeedSize)dim) || (eval_mode == CEED_EVAL_WEIGHT), CeedBasisReturnCeed(basis), in CeedBasisApplyAtPointsCheckDims()
422 …CeedCheck(eval_mode != CEED_EVAL_WEIGHT || t_mode == CEED_NOTRANSPOSE, CeedBasisReturnCeed(basis),… in CeedBasisApplyAtPointsCheckDims()
447 …return CeedError(CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "Evaluation at arbitrary poin… in CeedBasisApplyAtPointsCheckDims()
451 …CeedCheck(has_good_dims, CeedBasisReturnCeed(basis), CEED_ERROR_DIMENSION, "Input/output vectors t… in CeedBasisApplyAtPointsCheckDims()
476 static int CeedBasisApplyAtPoints_Core(CeedBasis basis, bool apply_add, CeedInt num_elem, const Cee… in CeedBasisApplyAtPoints_Core() argument
480 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisApplyAtPoints_Core()
482 …CeedCheck(dim > 0, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "Malformed CeedBasis, dim >… in CeedBasisApplyAtPoints_Core()
483 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisApplyAtPoints_Core()
484 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisApplyAtPoints_Core()
485 CeedCall(CeedBasisGetNumComponents(basis, &num_comp)); in CeedBasisApplyAtPoints_Core()
491 CeedCall(CeedBasisIsTensor(basis, &is_tensor_basis)); in CeedBasisApplyAtPoints_Core()
492 CeedCheck(is_tensor_basis, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, in CeedBasisApplyAtPoints_Core()
495 CeedCheck(num_elem == 1, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, in CeedBasisApplyAtPoints_Core()
501 if (!basis->basis_chebyshev) { in CeedBasisApplyAtPoints_Core()
510 CeedCall(CeedBasisGetQRef(basis, &q_ref_1d)); in CeedBasisApplyAtPoints_Core()
511 CeedCall(CeedBasisGetChebyshevInterp1D(basis, chebyshev_interp_1d)); in CeedBasisApplyAtPoints_Core()
513 CeedCall(CeedBasisGetCeed(basis, &ceed)); in CeedBasisApplyAtPoints_Core()
514 CeedCall(CeedVectorCreate(ceed, num_comp * CeedIntPow(Q_1d, dim), &basis->vec_chebyshev)); in CeedBasisApplyAtPoints_Core()
516 &basis->basis_chebyshev)); in CeedBasisApplyAtPoints_Core()
526 if (!basis->contract) { in CeedBasisApplyAtPoints_Core()
534 CeedCheck(basis_ref && basis_ref->contract, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, in CeedBasisApplyAtPoints_Core()
536 CeedCall(CeedTensorContractReferenceCopy(basis_ref->contract, &basis->contract)); in CeedBasisApplyAtPoints_Core()
549 …CeedCall(CeedBasisApply(basis->basis_chebyshev, 1, CEED_NOTRANSPOSE, CEED_EVAL_INTERP, u, basis->v… in CeedBasisApplyAtPoints_Core()
552 CeedCall(CeedVectorGetArrayRead(basis->vec_chebyshev, CEED_MEM_HOST, &chebyshev_coeffs)); in CeedBasisApplyAtPoints_Core()
566 … CeedCall(CeedTensorContractApply(basis->contract, pre, Q_1d, post, 1, chebyshev_x, t_mode, false, in CeedBasisApplyAtPoints_Core()
588 … CeedCall(CeedTensorContractApply(basis->contract, pre, Q_1d, post, 1, chebyshev_x, t_mode, false, in CeedBasisApplyAtPoints_Core()
602 CeedCall(CeedVectorRestoreArrayRead(basis->vec_chebyshev, &chebyshev_coeffs)); in CeedBasisApplyAtPoints_Core()
614 CeedCall(CeedVectorGetArrayWrite(basis->vec_chebyshev, CEED_MEM_HOST, &chebyshev_coeffs)); in CeedBasisApplyAtPoints_Core()
630 …CeedCall(CeedTensorContractApply(basis->contract, pre, 1, post, Q_1d, chebyshev_x, t_mode, p > 0 &… in CeedBasisApplyAtPoints_Core()
652 … CeedCall(CeedTensorContractApply(basis->contract, pre, 1, post, Q_1d, chebyshev_x, t_mode, in CeedBasisApplyAtPoints_Core()
666 CeedCall(CeedVectorRestoreArray(basis->vec_chebyshev, &chebyshev_coeffs)); in CeedBasisApplyAtPoints_Core()
671 …if (apply_add) CeedCall(CeedBasisApplyAdd(basis->basis_chebyshev, 1, CEED_TRANSPOSE, CEED_EVAL_INT… in CeedBasisApplyAtPoints_Core()
672 …else CeedCall(CeedBasisApply(basis->basis_chebyshev, 1, CEED_TRANSPOSE, CEED_EVAL_INTERP, basis->v… in CeedBasisApplyAtPoints_Core()
709 … const CeedScalar *grad, const CeedScalar *q_ref, const CeedScalar *q_weight, CeedBasis basis) { in CeedBasisCreateH1Fallback() argument
716 CeedCall(CeedReferenceCopy(delegate, &(basis)->obj.ceed)); in CeedBasisCreateH1Fallback()
718 CeedCall(delegate->BasisCreateH1(topo, dim, P, Q, interp, grad, q_ref, q_weight, basis)); in CeedBasisCreateH1Fallback()
733 int CeedBasisGetCollocatedGrad(CeedBasis basis, CeedScalar *collo_grad_1d) { in CeedBasisGetCollocatedGrad() argument
740 CeedCall(CeedBasisGetCeed(basis, &ceed)); in CeedBasisGetCollocatedGrad()
741 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisGetCollocatedGrad()
742 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisGetCollocatedGrad()
746 CeedCall(CeedBasisGetInterp1D(basis, &interp_1d)); in CeedBasisGetCollocatedGrad()
748 CeedCall(CeedBasisGetGrad1D(basis, &grad_1d)); in CeedBasisGetCollocatedGrad()
766 int CeedBasisGetChebyshevInterp1D(CeedBasis basis, CeedScalar *chebyshev_interp_1d) { in CeedBasisGetChebyshevInterp1D() argument
772 CeedCall(CeedBasisGetCeed(basis, &ceed)); in CeedBasisGetChebyshevInterp1D()
773 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisGetChebyshevInterp1D()
774 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisGetChebyshevInterp1D()
780 CeedCall(CeedBasisGetQRef(basis, &q_ref_1d)); in CeedBasisGetChebyshevInterp1D()
788 CeedCall(CeedBasisGetInterp1D(basis, &interp_1d)); in CeedBasisGetChebyshevInterp1D()
808 int CeedBasisIsTensor(CeedBasis basis, bool *is_tensor) { in CeedBasisIsTensor() argument
809 *is_tensor = basis->is_tensor_basis; in CeedBasisIsTensor()
823 int CeedBasisIsCollocated(CeedBasis basis, bool *is_collocated) { in CeedBasisIsCollocated() argument
824 if (basis->is_tensor_basis && (basis->Q_1d == basis->P_1d)) { in CeedBasisIsCollocated()
827 for (CeedInt i = 0; i < basis->P_1d; i++) { in CeedBasisIsCollocated()
828 …*is_collocated = *is_collocated && (fabs(basis->interp_1d[i + basis->P_1d * i] - 1.0) < 10 * CEED_… in CeedBasisIsCollocated()
829 for (CeedInt j = 0; j < basis->Q_1d; j++) { in CeedBasisIsCollocated()
830 …if (j != i) *is_collocated = *is_collocated && (fabs(basis->interp_1d[j + basis->P_1d * i]) < 10 *… in CeedBasisIsCollocated()
849 int CeedBasisGetData(CeedBasis basis, void *data) { in CeedBasisGetData() argument
850 *(void **)data = basis->data; in CeedBasisGetData()
864 int CeedBasisSetData(CeedBasis basis, void *data) { in CeedBasisSetData() argument
865 basis->data = data; in CeedBasisSetData()
878 int CeedBasisReference(CeedBasis basis) { in CeedBasisReference() argument
879 CeedCall(CeedObjectReference((CeedObject)basis)); in CeedBasisReference()
897 int CeedBasisGetNumQuadratureComponents(CeedBasis basis, CeedEvalMode eval_mode, CeedInt *q_comp) { in CeedBasisGetNumQuadratureComponents() argument
900 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisGetNumQuadratureComponents()
905 CeedCall(CeedBasisGetFESpace(basis, &fe_space)); in CeedBasisGetNumQuadratureComponents()
937 int CeedBasisGetFlopsEstimate(CeedBasis basis, CeedTransposeMode t_mode, CeedEvalMode eval_mode, bo… in CeedBasisGetFlopsEstimate() argument
941 CeedCall(CeedBasisIsTensor(basis, &is_tensor)); in CeedBasisGetFlopsEstimate()
942 …CeedCheck(!is_at_points || is_tensor, CeedBasisReturnCeed(basis), CEED_ERROR_INCOMPATIBLE, "Can on… in CeedBasisGetFlopsEstimate()
946 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisGetFlopsEstimate()
947 CeedCall(CeedBasisGetNumComponents(basis, &num_comp)); in CeedBasisGetFlopsEstimate()
948 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisGetFlopsEstimate()
949 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisGetFlopsEstimate()
967 CeedCall(CeedGetPreferredMemType(CeedBasisReturnCeed(basis), &mem_type)); in CeedBasisGetFlopsEstimate()
1009 …return CeedError(CeedBasisReturnCeed(basis), CEED_ERROR_INCOMPATIBLE, "Tensor basis evaluation for… in CeedBasisGetFlopsEstimate()
1032 …return CeedError(CeedBasisReturnCeed(basis), CEED_ERROR_INCOMPATIBLE, "Tensor basis evaluation for… in CeedBasisGetFlopsEstimate()
1045 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisGetFlopsEstimate()
1046 CeedCall(CeedBasisGetNumComponents(basis, &num_comp)); in CeedBasisGetFlopsEstimate()
1047 CeedCall(CeedBasisGetNumQuadratureComponents(basis, eval_mode, &q_comp)); in CeedBasisGetFlopsEstimate()
1048 CeedCall(CeedBasisGetNumNodes(basis, &num_nodes)); in CeedBasisGetFlopsEstimate()
1049 CeedCall(CeedBasisGetNumQuadraturePoints(basis, &num_qpts)); in CeedBasisGetFlopsEstimate()
1078 int CeedBasisGetFESpace(CeedBasis basis, CeedFESpace *fe_space) { in CeedBasisGetFESpace() argument
1079 *fe_space = basis->fe_space; in CeedBasisGetFESpace()
1108 int CeedBasisGetTensorContract(CeedBasis basis, CeedTensorContract *contract) { in CeedBasisGetTensorContract() argument
1109 *contract = basis->contract; in CeedBasisGetTensorContract()
1123 int CeedBasisSetTensorContract(CeedBasis basis, CeedTensorContract contract) { in CeedBasisSetTensorContract() argument
1124 basis->contract = contract; in CeedBasisSetTensorContract()
1537 …CeedScalar *grad_1d, const CeedScalar *q_ref_1d, const CeedScalar *q_weight_1d, CeedBasis *basis) { in CeedBasisCreateTensorH1() argument
1543 …teTensorH1(delegate, dim, num_comp, P_1d, Q_1d, interp_1d, grad_1d, q_ref_1d, q_weight_1d, basis)); in CeedBasisCreateTensorH1()
1555 CeedCall(CeedCalloc(1, basis)); in CeedBasisCreateTensorH1()
1556 CeedCall(CeedObjectCreate(ceed, CeedBasisView_Object, CeedBasisDestroy_Object, &(*basis)->obj)); in CeedBasisCreateTensorH1()
1557 (*basis)->is_tensor_basis = true; in CeedBasisCreateTensorH1()
1558 (*basis)->dim = dim; in CeedBasisCreateTensorH1()
1559 (*basis)->topo = topo; in CeedBasisCreateTensorH1()
1560 (*basis)->num_comp = num_comp; in CeedBasisCreateTensorH1()
1561 (*basis)->P_1d = P_1d; in CeedBasisCreateTensorH1()
1562 (*basis)->Q_1d = Q_1d; in CeedBasisCreateTensorH1()
1563 (*basis)->P = CeedIntPow(P_1d, dim); in CeedBasisCreateTensorH1()
1564 (*basis)->Q = CeedIntPow(Q_1d, dim); in CeedBasisCreateTensorH1()
1565 (*basis)->fe_space = CEED_FE_SPACE_H1; in CeedBasisCreateTensorH1()
1566 CeedCall(CeedCalloc(Q_1d, &(*basis)->q_ref_1d)); in CeedBasisCreateTensorH1()
1567 CeedCall(CeedCalloc(Q_1d, &(*basis)->q_weight_1d)); in CeedBasisCreateTensorH1()
1568 if (q_ref_1d) memcpy((*basis)->q_ref_1d, q_ref_1d, Q_1d * sizeof(q_ref_1d[0])); in CeedBasisCreateTensorH1()
1569 if (q_weight_1d) memcpy((*basis)->q_weight_1d, q_weight_1d, Q_1d * sizeof(q_weight_1d[0])); in CeedBasisCreateTensorH1()
1570 CeedCall(CeedCalloc(Q_1d * P_1d, &(*basis)->interp_1d)); in CeedBasisCreateTensorH1()
1571 CeedCall(CeedCalloc(Q_1d * P_1d, &(*basis)->grad_1d)); in CeedBasisCreateTensorH1()
1572 if (interp_1d) memcpy((*basis)->interp_1d, interp_1d, Q_1d * P_1d * sizeof(interp_1d[0])); in CeedBasisCreateTensorH1()
1573 if (grad_1d) memcpy((*basis)->grad_1d, grad_1d, Q_1d * P_1d * sizeof(grad_1d[0])); in CeedBasisCreateTensorH1()
1574 …all(ceed->BasisCreateTensorH1(dim, P_1d, Q_1d, interp_1d, grad_1d, q_ref_1d, q_weight_1d, *basis)); in CeedBasisCreateTensorH1()
1594 …d, CeedInt dim, CeedInt num_comp, CeedInt P, CeedInt Q, CeedQuadMode quad_mode, CeedBasis *basis) { in CeedBasisCreateTensorH1Lagrange() argument
1645 …dBasisCreateTensorH1(ceed, dim, num_comp, P, Q, interp_1d, grad_1d, q_ref_1d, q_weight_1d, basis)); in CeedBasisCreateTensorH1Lagrange()
1674 … const CeedScalar *grad, const CeedScalar *q_ref, const CeedScalar *q_weight, CeedBasis *basis) { in CeedBasisCreateH1() argument
1682 …asisCreateH1(delegate, topo, num_comp, num_nodes, num_qpts, interp, grad, q_ref, q_weight, basis)); in CeedBasisCreateH1()
1693 CeedCall(CeedCalloc(1, basis)); in CeedBasisCreateH1()
1694 CeedCall(CeedObjectCreate(ceed, CeedBasisView_Object, CeedBasisDestroy_Object, &(*basis)->obj)); in CeedBasisCreateH1()
1695 (*basis)->is_tensor_basis = false; in CeedBasisCreateH1()
1696 (*basis)->dim = dim; in CeedBasisCreateH1()
1697 (*basis)->topo = topo; in CeedBasisCreateH1()
1698 (*basis)->num_comp = num_comp; in CeedBasisCreateH1()
1699 (*basis)->P = P; in CeedBasisCreateH1()
1700 (*basis)->Q = Q; in CeedBasisCreateH1()
1701 (*basis)->fe_space = CEED_FE_SPACE_H1; in CeedBasisCreateH1()
1702 CeedCall(CeedCalloc(Q * dim, &(*basis)->q_ref_1d)); in CeedBasisCreateH1()
1703 CeedCall(CeedCalloc(Q, &(*basis)->q_weight_1d)); in CeedBasisCreateH1()
1704 if (q_ref) memcpy((*basis)->q_ref_1d, q_ref, Q * dim * sizeof(q_ref[0])); in CeedBasisCreateH1()
1705 if (q_weight) memcpy((*basis)->q_weight_1d, q_weight, Q * sizeof(q_weight[0])); in CeedBasisCreateH1()
1706 CeedCall(CeedCalloc(Q * P, &(*basis)->interp)); in CeedBasisCreateH1()
1707 CeedCall(CeedCalloc(dim * Q * P, &(*basis)->grad)); in CeedBasisCreateH1()
1708 if (interp) memcpy((*basis)->interp, interp, Q * P * sizeof(interp[0])); in CeedBasisCreateH1()
1709 if (grad) memcpy((*basis)->grad, grad, dim * Q * P * sizeof(grad[0])); in CeedBasisCreateH1()
1710 CeedCall(ceed->BasisCreateH1(topo, dim, P, Q, interp, grad, q_ref, q_weight, *basis)); in CeedBasisCreateH1()
1733 … const CeedScalar *div, const CeedScalar *q_ref, const CeedScalar *q_weight, CeedBasis *basis) { in CeedBasisCreateHdiv() argument
1741 …sisCreateHdiv(delegate, topo, num_comp, num_nodes, num_qpts, interp, div, q_ref, q_weight, basis)); in CeedBasisCreateHdiv()
1752 CeedCall(CeedCalloc(1, basis)); in CeedBasisCreateHdiv()
1753 CeedCall(CeedObjectCreate(ceed, CeedBasisView_Object, CeedBasisDestroy_Object, &(*basis)->obj)); in CeedBasisCreateHdiv()
1754 (*basis)->is_tensor_basis = false; in CeedBasisCreateHdiv()
1755 (*basis)->dim = dim; in CeedBasisCreateHdiv()
1756 (*basis)->topo = topo; in CeedBasisCreateHdiv()
1757 (*basis)->num_comp = num_comp; in CeedBasisCreateHdiv()
1758 (*basis)->P = P; in CeedBasisCreateHdiv()
1759 (*basis)->Q = Q; in CeedBasisCreateHdiv()
1760 (*basis)->fe_space = CEED_FE_SPACE_HDIV; in CeedBasisCreateHdiv()
1761 CeedCall(CeedMalloc(Q * dim, &(*basis)->q_ref_1d)); in CeedBasisCreateHdiv()
1762 CeedCall(CeedMalloc(Q, &(*basis)->q_weight_1d)); in CeedBasisCreateHdiv()
1763 if (q_ref) memcpy((*basis)->q_ref_1d, q_ref, Q * dim * sizeof(q_ref[0])); in CeedBasisCreateHdiv()
1764 if (q_weight) memcpy((*basis)->q_weight_1d, q_weight, Q * sizeof(q_weight[0])); in CeedBasisCreateHdiv()
1765 CeedCall(CeedMalloc(dim * Q * P, &(*basis)->interp)); in CeedBasisCreateHdiv()
1766 CeedCall(CeedMalloc(Q * P, &(*basis)->div)); in CeedBasisCreateHdiv()
1767 if (interp) memcpy((*basis)->interp, interp, dim * Q * P * sizeof(interp[0])); in CeedBasisCreateHdiv()
1768 if (div) memcpy((*basis)->div, div, Q * P * sizeof(div[0])); in CeedBasisCreateHdiv()
1769 CeedCall(ceed->BasisCreateHdiv(topo, dim, P, Q, interp, div, q_ref, q_weight, *basis)); in CeedBasisCreateHdiv()
1792 … const CeedScalar *curl, const CeedScalar *q_ref, const CeedScalar *q_weight, CeedBasis *basis) { in CeedBasisCreateHcurl() argument
1800 …sCreateHcurl(delegate, topo, num_comp, num_nodes, num_qpts, interp, curl, q_ref, q_weight, basis)); in CeedBasisCreateHcurl()
1812 CeedCall(CeedCalloc(1, basis)); in CeedBasisCreateHcurl()
1813 CeedCall(CeedObjectCreate(ceed, CeedBasisView_Object, CeedBasisDestroy_Object, &(*basis)->obj)); in CeedBasisCreateHcurl()
1814 (*basis)->is_tensor_basis = false; in CeedBasisCreateHcurl()
1815 (*basis)->dim = dim; in CeedBasisCreateHcurl()
1816 (*basis)->topo = topo; in CeedBasisCreateHcurl()
1817 (*basis)->num_comp = num_comp; in CeedBasisCreateHcurl()
1818 (*basis)->P = P; in CeedBasisCreateHcurl()
1819 (*basis)->Q = Q; in CeedBasisCreateHcurl()
1820 (*basis)->fe_space = CEED_FE_SPACE_HCURL; in CeedBasisCreateHcurl()
1821 CeedCall(CeedMalloc(Q * dim, &(*basis)->q_ref_1d)); in CeedBasisCreateHcurl()
1822 CeedCall(CeedMalloc(Q, &(*basis)->q_weight_1d)); in CeedBasisCreateHcurl()
1823 if (q_ref) memcpy((*basis)->q_ref_1d, q_ref, Q * dim * sizeof(q_ref[0])); in CeedBasisCreateHcurl()
1824 if (q_weight) memcpy((*basis)->q_weight_1d, q_weight, Q * sizeof(q_weight[0])); in CeedBasisCreateHcurl()
1825 CeedCall(CeedMalloc(dim * Q * P, &(*basis)->interp)); in CeedBasisCreateHcurl()
1826 CeedCall(CeedMalloc(curl_comp * Q * P, &(*basis)->curl)); in CeedBasisCreateHcurl()
1827 if (interp) memcpy((*basis)->interp, interp, dim * Q * P * sizeof(interp[0])); in CeedBasisCreateHcurl()
1828 if (curl) memcpy((*basis)->curl, curl, curl_comp * Q * P * sizeof(curl[0])); in CeedBasisCreateHcurl()
1829 CeedCall(ceed->BasisCreateHcurl(topo, dim, P, Q, interp, curl, q_ref, q_weight, *basis)); in CeedBasisCreateHcurl()
1914 int CeedBasisReferenceCopy(CeedBasis basis, CeedBasis *basis_copy) { in CeedBasisReferenceCopy() argument
1915 if (basis != CEED_BASIS_NONE) CeedCall(CeedBasisReference(basis)); in CeedBasisReferenceCopy()
1917 *basis_copy = basis; in CeedBasisReferenceCopy()
1931 int CeedBasisSetNumViewTabs(CeedBasis basis, CeedInt num_tabs) { in CeedBasisSetNumViewTabs() argument
1932 CeedCall(CeedObjectSetNumViewTabs((CeedObject)basis, num_tabs)); in CeedBasisSetNumViewTabs()
1946 int CeedBasisGetNumViewTabs(CeedBasis basis, CeedInt *num_tabs) { in CeedBasisGetNumViewTabs() argument
1947 CeedCall(CeedObjectGetNumViewTabs((CeedObject)basis, num_tabs)); in CeedBasisGetNumViewTabs()
1961 int CeedBasisView(CeedBasis basis, FILE *stream) { in CeedBasisView() argument
1968 CeedCall(CeedBasisIsTensor(basis, &is_tensor_basis)); in CeedBasisView()
1969 CeedCall(CeedBasisGetTopology(basis, &topo)); in CeedBasisView()
1970 CeedCall(CeedBasisGetFESpace(basis, &fe_space)); in CeedBasisView()
1975 CeedCall(CeedBasisGetNumViewTabs(basis, &num_tabs)); in CeedBasisView()
1983 …tream, "%s P: %" CeedInt_FMT "\n%s Q: %" CeedInt_FMT "\n", tabs, basis->P_1d, tabs, basis->Q_1d); in CeedBasisView()
1985 …intf(stream, "%s P: %" CeedInt_FMT "\n%s Q: %" CeedInt_FMT "\n", tabs, basis->P, tabs, basis->Q); in CeedBasisView()
1987 … CeedInt_FMT "\n%s field components: %" CeedInt_FMT "\n", tabs, basis->dim, tabs, basis->num_comp… in CeedBasisView()
1993 CeedCall(CeedBasisGetNumNodes1D(basis, &P_1d)); in CeedBasisView()
1994 CeedCall(CeedBasisGetNumQuadraturePoints1D(basis, &Q_1d)); in CeedBasisView()
1995 CeedCall(CeedBasisGetQRef(basis, &q_ref_1d)); in CeedBasisView()
1996 CeedCall(CeedBasisGetQWeights(basis, &q_weight_1d)); in CeedBasisView()
1997 CeedCall(CeedBasisGetInterp1D(basis, &interp_1d)); in CeedBasisView()
1998 CeedCall(CeedBasisGetGrad1D(basis, &grad_1d)); in CeedBasisView()
2008 CeedCall(CeedBasisGetNumNodes(basis, &P)); in CeedBasisView()
2009 CeedCall(CeedBasisGetNumQuadraturePoints(basis, &Q)); in CeedBasisView()
2010 CeedCall(CeedBasisGetDimension(basis, &dim)); in CeedBasisView()
2011 CeedCall(CeedBasisGetQRef(basis, &q_ref)); in CeedBasisView()
2012 CeedCall(CeedBasisGetQWeights(basis, &q_weight)); in CeedBasisView()
2013 CeedCall(CeedBasisGetInterp(basis, &interp)); in CeedBasisView()
2014 CeedCall(CeedBasisGetGrad(basis, &grad)); in CeedBasisView()
2015 CeedCall(CeedBasisGetDiv(basis, &div)); in CeedBasisView()
2016 CeedCall(CeedBasisGetCurl(basis, &curl)); in CeedBasisView()
2020 CeedCall(CeedBasisGetNumQuadratureComponents(basis, CEED_EVAL_INTERP, &q_comp)); in CeedBasisView()
2023 CeedCall(CeedBasisGetNumQuadratureComponents(basis, CEED_EVAL_GRAD, &q_comp)); in CeedBasisView()
2027 CeedCall(CeedBasisGetNumQuadratureComponents(basis, CEED_EVAL_DIV, &q_comp)); in CeedBasisView()
2031 CeedCall(CeedBasisGetNumQuadratureComponents(basis, CEED_EVAL_CURL, &q_comp)); in CeedBasisView()
2060 int CeedBasisApply(CeedBasis basis, CeedInt num_elem, CeedTransposeMode t_mode, CeedEvalMode eval_m… in CeedBasisApply() argument
2061 CeedCall(CeedBasisApplyCheckDims(basis, num_elem, t_mode, eval_mode, u, v)); in CeedBasisApply()
2062 …CeedCheck(basis->Apply, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "Backend does not supp… in CeedBasisApply()
2063 CeedCall(basis->Apply(basis, num_elem, t_mode, eval_mode, u, v)); in CeedBasisApply()
2088 int CeedBasisApplyAdd(CeedBasis basis, CeedInt num_elem, CeedTransposeMode t_mode, CeedEvalMode eva… in CeedBasisApplyAdd() argument
2089 …CeedCheck(t_mode == CEED_TRANSPOSE, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "CeedBasis… in CeedBasisApplyAdd()
2090 CeedCall(CeedBasisApplyCheckDims(basis, num_elem, t_mode, eval_mode, u, v)); in CeedBasisApplyAdd()
2091 …CeedCheck(basis->ApplyAdd, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "Backend does not i… in CeedBasisApplyAdd()
2092 CeedCall(basis->ApplyAdd(basis, num_elem, t_mode, eval_mode, u, v)); in CeedBasisApplyAdd()
2116 int CeedBasisApplyAtPoints(CeedBasis basis, CeedInt num_elem, const CeedInt *num_points, CeedTransp… in CeedBasisApplyAtPoints() argument
2118 …CeedCall(CeedBasisApplyAtPointsCheckDims(basis, num_elem, num_points, t_mode, eval_mode, x_ref, u,… in CeedBasisApplyAtPoints()
2119 if (basis->ApplyAtPoints) { in CeedBasisApplyAtPoints()
2120 CeedCall(basis->ApplyAtPoints(basis, num_elem, num_points, t_mode, eval_mode, x_ref, u, v)); in CeedBasisApplyAtPoints()
2122 …CeedCall(CeedBasisApplyAtPoints_Core(basis, false, num_elem, num_points, t_mode, eval_mode, x_ref,… in CeedBasisApplyAtPoints()
2147 int CeedBasisApplyAddAtPoints(CeedBasis basis, CeedInt num_elem, const CeedInt *num_points, CeedTra… in CeedBasisApplyAddAtPoints() argument
2149 …CeedCheck(t_mode == CEED_TRANSPOSE, CeedBasisReturnCeed(basis), CEED_ERROR_UNSUPPORTED, "CeedBasis… in CeedBasisApplyAddAtPoints()
2150 …CeedCall(CeedBasisApplyAtPointsCheckDims(basis, num_elem, num_points, t_mode, eval_mode, x_ref, u,… in CeedBasisApplyAddAtPoints()
2151 if (basis->ApplyAddAtPoints) { in CeedBasisApplyAddAtPoints()
2152 CeedCall(basis->ApplyAddAtPoints(basis, num_elem, num_points, t_mode, eval_mode, x_ref, u, v)); in CeedBasisApplyAddAtPoints()
2154 …CeedCall(CeedBasisApplyAtPoints_Core(basis, true, num_elem, num_points, t_mode, eval_mode, x_ref, … in CeedBasisApplyAddAtPoints()
2169 int CeedBasisGetCeed(CeedBasis basis, Ceed *ceed) { in CeedBasisGetCeed() argument
2170 CeedCall(CeedObjectGetCeed((CeedObject)basis, ceed)); in CeedBasisGetCeed()
2183 Ceed CeedBasisReturnCeed(CeedBasis basis) { return CeedObjectReturnCeed((CeedObject)basis); } in CeedBasisReturnCeed() argument
2195 int CeedBasisGetDimension(CeedBasis basis, CeedInt *dim) { in CeedBasisGetDimension() argument
2196 *dim = basis->dim; in CeedBasisGetDimension()
2210 int CeedBasisGetTopology(CeedBasis basis, CeedElemTopology *topo) { in CeedBasisGetTopology() argument
2211 *topo = basis->topo; in CeedBasisGetTopology()
2225 int CeedBasisGetNumComponents(CeedBasis basis, CeedInt *num_comp) { in CeedBasisGetNumComponents() argument
2226 *num_comp = basis->num_comp; in CeedBasisGetNumComponents()
2240 int CeedBasisGetNumNodes(CeedBasis basis, CeedInt *P) { in CeedBasisGetNumNodes() argument
2241 *P = basis->P; in CeedBasisGetNumNodes()
2255 int CeedBasisGetNumNodes1D(CeedBasis basis, CeedInt *P_1d) { in CeedBasisGetNumNodes1D() argument
2256 …CeedCheck(basis->is_tensor_basis, CeedBasisReturnCeed(basis), CEED_ERROR_MINOR, "Cannot supply P_1… in CeedBasisGetNumNodes1D()
2257 *P_1d = basis->P_1d; in CeedBasisGetNumNodes1D()
2271 int CeedBasisGetNumQuadraturePoints(CeedBasis basis, CeedInt *Q) { in CeedBasisGetNumQuadraturePoints() argument
2272 *Q = basis->Q; in CeedBasisGetNumQuadraturePoints()
2286 int CeedBasisGetNumQuadraturePoints1D(CeedBasis basis, CeedInt *Q_1d) { in CeedBasisGetNumQuadraturePoints1D() argument
2287 …CeedCheck(basis->is_tensor_basis, CeedBasisReturnCeed(basis), CEED_ERROR_MINOR, "Cannot supply Q_1… in CeedBasisGetNumQuadraturePoints1D()
2288 *Q_1d = basis->Q_1d; in CeedBasisGetNumQuadraturePoints1D()
2302 int CeedBasisGetQRef(CeedBasis basis, const CeedScalar **q_ref) { in CeedBasisGetQRef() argument
2303 *q_ref = basis->q_ref_1d; in CeedBasisGetQRef()
2317 int CeedBasisGetQWeights(CeedBasis basis, const CeedScalar **q_weight) { in CeedBasisGetQWeights() argument
2318 *q_weight = basis->q_weight_1d; in CeedBasisGetQWeights()
2332 int CeedBasisGetInterp(CeedBasis basis, const CeedScalar **interp) { in CeedBasisGetInterp() argument
2333 if (!basis->interp && basis->is_tensor_basis) { in CeedBasisGetInterp()
2335 CeedCall(CeedMalloc(basis->Q * basis->P, &basis->interp)); in CeedBasisGetInterp()
2338 for (CeedInt i = 0; i < basis->Q * basis->P; i++) basis->interp[i] = 1.0; in CeedBasisGetInterp()
2341 for (CeedInt d = 0; d < basis->dim; d++) { in CeedBasisGetInterp()
2342 for (CeedInt qpt = 0; qpt < basis->Q; qpt++) { in CeedBasisGetInterp()
2343 for (CeedInt node = 0; node < basis->P; node++) { in CeedBasisGetInterp()
2344 CeedInt p = (node / CeedIntPow(basis->P_1d, d)) % basis->P_1d; in CeedBasisGetInterp()
2345 CeedInt q = (qpt / CeedIntPow(basis->Q_1d, d)) % basis->Q_1d; in CeedBasisGetInterp()
2347 basis->interp[qpt * (basis->P) + node] *= basis->interp_1d[q * basis->P_1d + p]; in CeedBasisGetInterp()
2352 *interp = basis->interp; in CeedBasisGetInterp()
2366 int CeedBasisGetInterp1D(CeedBasis basis, const CeedScalar **interp_1d) { in CeedBasisGetInterp1D() argument
2369 CeedCall(CeedBasisIsTensor(basis, &is_tensor_basis)); in CeedBasisGetInterp1D()
2370 …CeedCheck(is_tensor_basis, CeedBasisReturnCeed(basis), CEED_ERROR_MINOR, "CeedBasis is not a tenso… in CeedBasisGetInterp1D()
2371 *interp_1d = basis->interp_1d; in CeedBasisGetInterp1D()
2385 int CeedBasisGetGrad(CeedBasis basis, const CeedScalar **grad) { in CeedBasisGetGrad() argument
2386 if (!basis->grad && basis->is_tensor_basis) { in CeedBasisGetGrad()
2388 CeedCall(CeedMalloc(basis->dim * basis->Q * basis->P, &basis->grad)); in CeedBasisGetGrad()
2391 for (CeedInt i = 0; i < basis->dim * basis->Q * basis->P; i++) basis->grad[i] = 1.0; in CeedBasisGetGrad()
2394 for (CeedInt d = 0; d < basis->dim; d++) { in CeedBasisGetGrad()
2395 for (CeedInt i = 0; i < basis->dim; i++) { in CeedBasisGetGrad()
2396 for (CeedInt qpt = 0; qpt < basis->Q; qpt++) { in CeedBasisGetGrad()
2397 for (CeedInt node = 0; node < basis->P; node++) { in CeedBasisGetGrad()
2398 CeedInt p = (node / CeedIntPow(basis->P_1d, d)) % basis->P_1d; in CeedBasisGetGrad()
2399 CeedInt q = (qpt / CeedIntPow(basis->Q_1d, d)) % basis->Q_1d; in CeedBasisGetGrad()
2401 …if (i == d) basis->grad[(i * basis->Q + qpt) * (basis->P) + node] *= basis->grad_1d[q * basis->P_1… in CeedBasisGetGrad()
2402 …else basis->grad[(i * basis->Q + qpt) * (basis->P) + node] *= basis->interp_1d[q * basis->P_1d + p… in CeedBasisGetGrad()
2408 *grad = basis->grad; in CeedBasisGetGrad()
2422 int CeedBasisGetGrad1D(CeedBasis basis, const CeedScalar **grad_1d) { in CeedBasisGetGrad1D() argument
2425 CeedCall(CeedBasisIsTensor(basis, &is_tensor_basis)); in CeedBasisGetGrad1D()
2426 …CeedCheck(is_tensor_basis, CeedBasisReturnCeed(basis), CEED_ERROR_MINOR, "CeedBasis is not a tenso… in CeedBasisGetGrad1D()
2427 *grad_1d = basis->grad_1d; in CeedBasisGetGrad1D()
2441 int CeedBasisGetDiv(CeedBasis basis, const CeedScalar **div) { in CeedBasisGetDiv() argument
2442 *div = basis->div; in CeedBasisGetDiv()
2456 int CeedBasisGetCurl(CeedBasis basis, const CeedScalar **curl) { in CeedBasisGetCurl() argument
2457 *curl = basis->curl; in CeedBasisGetCurl()
2470 int CeedBasisDestroy(CeedBasis *basis) { in CeedBasisDestroy() argument
2471 if (!*basis || *basis == CEED_BASIS_NONE || CeedObjectDereference((CeedObject)*basis) > 0) { in CeedBasisDestroy()
2472 *basis = NULL; in CeedBasisDestroy()
2475 if ((*basis)->Destroy) CeedCall((*basis)->Destroy(*basis)); in CeedBasisDestroy()
2476 CeedCall(CeedTensorContractDestroy(&(*basis)->contract)); in CeedBasisDestroy()
2477 CeedCall(CeedFree(&(*basis)->q_ref_1d)); in CeedBasisDestroy()
2478 CeedCall(CeedFree(&(*basis)->q_weight_1d)); in CeedBasisDestroy()
2479 CeedCall(CeedFree(&(*basis)->interp)); in CeedBasisDestroy()
2480 CeedCall(CeedFree(&(*basis)->interp_1d)); in CeedBasisDestroy()
2481 CeedCall(CeedFree(&(*basis)->grad)); in CeedBasisDestroy()
2482 CeedCall(CeedFree(&(*basis)->grad_1d)); in CeedBasisDestroy()
2483 CeedCall(CeedFree(&(*basis)->div)); in CeedBasisDestroy()
2484 CeedCall(CeedFree(&(*basis)->curl)); in CeedBasisDestroy()
2485 CeedCall(CeedVectorDestroy(&(*basis)->vec_chebyshev)); in CeedBasisDestroy()
2486 CeedCall(CeedBasisDestroy(&(*basis)->basis_chebyshev)); in CeedBasisDestroy()
2487 CeedCall(CeedObjectDestroy_Private(&(*basis)->obj)); in CeedBasisDestroy()
2488 CeedCall(CeedFree(basis)); in CeedBasisDestroy()