1b7e55d06SJames Wright // SPDX-FileCopyrightText: Copyright (c) 2017-2025, HONEE contributors. 2b7e55d06SJames Wright // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause 3b7e55d06SJames Wright #pragma once 4b7e55d06SJames Wright 5b7e55d06SJames Wright #include <ceed.h> 61c58d510SJames Wright #include <petscdm.h> 7b7e55d06SJames Wright 8b7e55d06SJames Wright PetscErrorCode DMPlexCeedElemRestrictionCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, PetscInt dm_field, 9b7e55d06SJames Wright CeedElemRestriction *restriction); 10b7e55d06SJames Wright PetscErrorCode DMPlexCeedElemRestrictionCoordinateCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, 11b7e55d06SJames Wright CeedElemRestriction *restriction); 12b7e55d06SJames Wright PetscErrorCode DMPlexCeedElemRestrictionQDataCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, 13b7e55d06SJames Wright PetscInt q_data_size, CeedElemRestriction *restriction); 14b7e55d06SJames Wright PetscErrorCode DMPlexCeedElemRestrictionCollocatedCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, 15b7e55d06SJames Wright PetscInt q_data_size, CeedElemRestriction *restriction); 16b7e55d06SJames Wright 176b9fd993SJames Wright PetscErrorCode DMPlexCeedBasisCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, PetscInt dm_field, 186b9fd993SJames Wright CeedBasis *basis); 196b9fd993SJames Wright PetscErrorCode DMPlexCeedBasisCoordinateCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, CeedBasis *basis); 20*77efe802SJames Wright PetscErrorCode DMPlexCeedCoordinateCreateField(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt height, 21*77efe802SJames Wright CeedElemRestriction *elem_restr, CeedBasis *basis, CeedVector *vector); 22b7e55d06SJames Wright PetscErrorCode DMPlexCeedBasisCellToFaceCoordinateCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt face, 23b7e55d06SJames Wright CeedBasis *basis); 24b7e55d06SJames Wright PetscErrorCode DMPlexCeedBasisCellToFaceCreate(Ceed ceed, DM dm, DMLabel domain_label, PetscInt label_value, PetscInt face, PetscInt dm_field, 25b7e55d06SJames Wright CeedBasis *basis); 26b7e55d06SJames Wright PetscErrorCode DMPlexCreateFaceLabel(DM dm, PetscInt dm_face, char **face_label_name); 27b7e55d06SJames Wright PetscErrorCode DMLabelCreateGlobalValueArray(DM dm, DMLabel label, PetscInt *num_values, PetscInt **value_array); 28bc87537dSJames Wright 29bc87537dSJames Wright PetscErrorCode DMGetCoordinateNumComps(DM dm, PetscInt *num_comp_x); 30a628ec31SJames Wright PetscErrorCode DMGetFieldNumComps(DM dm, PetscInt field, PetscInt *num_comp); 31b8c84a98SJames Wright 32b8c84a98SJames Wright PetscErrorCode DMSetupByOrderBegin_FEM(PetscBool setup_faces, PetscBool setup_coords, PetscInt degree, PetscInt coord_order, PetscInt q_extra, 33b8c84a98SJames Wright PetscInt num_fields, const PetscInt *field_sizes, DM dm); 34b8c84a98SJames Wright PetscErrorCode DMSetupByOrderEnd_FEM(PetscBool setup_coords, DM dm); 35b8c84a98SJames Wright PetscErrorCode DMSetupByOrder_FEM(PetscBool setup_faces, PetscBool setup_coords, PetscInt degree, PetscInt coord_order, PetscInt q_extra, 36b8c84a98SJames Wright PetscInt num_fields, const PetscInt *field_sizes, DM dm); 37