xref: /honee/include/dm-utils.h (revision 00359db47665a79ecb0241f6ccbf886b649022df)
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