Skip to content

Commit 71f5141

Browse files
authored
Merge pull request #1845 from CEED/jeremy/get-name
OP Get Name Helper
2 parents dc6f907 + 120566f commit 71f5141

File tree

6 files changed

+61
-11
lines changed

6 files changed

+61
-11
lines changed

include/ceed/backend.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ CEED_EXTERN int CeedQFunctionSetFortranStatus(CeedQFunction qf, bool status);
366366
CEED_EXTERN int CeedQFunctionGetVectorLength(CeedQFunction qf, CeedInt *vec_length);
367367
CEED_EXTERN int CeedQFunctionGetNumArgs(CeedQFunction qf, CeedInt *num_input_fields, CeedInt *num_output_fields);
368368
CEED_EXTERN int CeedQFunctionGetKernelName(CeedQFunction qf, const char **kernel_name);
369+
CEED_EXTERN int CeedQFunctionGetName(CeedQFunction qf, const char **name);
369370
CEED_EXTERN int CeedQFunctionGetSourcePath(CeedQFunction qf, const char **source_path);
370371
CEED_EXTERN int CeedQFunctionLoadSourceToBuffer(CeedQFunction qf, const char **source_buffer);
371372
CEED_EXTERN int CeedQFunctionGetUserFunction(CeedQFunction qf, CeedQFunctionUser *f);

include/ceed/ceed.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ CEED_EXTERN int CeedOperatorMultigridLevelCreateH1(CeedOperator op_fine, CeedVe
448448
CeedOperator *op_prolong, CeedOperator *op_restrict);
449449
CEED_EXTERN int CeedOperatorCreateFDMElementInverse(CeedOperator op, CeedOperator *fdm_inv, CeedRequest *request);
450450
CEED_EXTERN int CeedOperatorSetName(CeedOperator op, const char *name);
451+
CEED_EXTERN int CeedOperatorGetName(CeedOperator op, const char **name);
451452
CEED_EXTERN int CeedOperatorView(CeedOperator op, FILE *stream);
452453
CEED_EXTERN int CeedOperatorViewTerse(CeedOperator op, FILE *stream);
453454
CEED_EXTERN int CeedOperatorGetCeed(CeedOperator op, Ceed *ceed);

interface/ceed-operator.c

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,6 +1553,29 @@ int CeedOperatorSetName(CeedOperator op, const char *name) {
15531553
return CEED_ERROR_SUCCESS;
15541554
}
15551555

1556+
/**
1557+
@brief Get name of `CeedOperator`
1558+
1559+
@param[in] op `CeedOperator`
1560+
@param[in,out] name Address of variable to hold currently set name
1561+
1562+
@return An error code: 0 - success, otherwise - failure
1563+
1564+
@ref User
1565+
**/
1566+
int CeedOperatorGetName(CeedOperator op, const char **name) {
1567+
if (op->name) {
1568+
*name = op->name;
1569+
} else if (!op->is_composite) {
1570+
CeedQFunction qf;
1571+
1572+
CeedCall(CeedOperatorGetQFunction(op, &qf));
1573+
if (qf) CeedCall(CeedQFunctionGetName(qf, name));
1574+
CeedCall(CeedQFunctionDestroy(&qf));
1575+
}
1576+
return CEED_ERROR_SUCCESS;
1577+
}
1578+
15561579
/**
15571580
@brief Core logic for viewing a `CeedOperator`
15581581
@@ -1565,8 +1588,11 @@ int CeedOperatorSetName(CeedOperator op, const char *name) {
15651588
@ref Developer
15661589
**/
15671590
static int CeedOperatorView_Core(CeedOperator op, FILE *stream, bool is_full) {
1568-
bool has_name = op->name, is_composite, is_at_points;
1591+
bool has_name, is_composite, is_at_points;
1592+
const char *name = NULL;
15691593

1594+
CeedCall(CeedOperatorGetName(op, &name));
1595+
has_name = name ? strlen(name) : false;
15701596
CeedCall(CeedOperatorIsComposite(op, &is_composite));
15711597
CeedCall(CeedOperatorIsAtPoints(op, &is_at_points));
15721598
if (is_composite) {
@@ -1575,7 +1601,7 @@ static int CeedOperatorView_Core(CeedOperator op, FILE *stream, bool is_full) {
15751601

15761602
CeedCall(CeedCompositeOperatorGetNumSub(op, &num_suboperators));
15771603
CeedCall(CeedCompositeOperatorGetSubList(op, &sub_operators));
1578-
fprintf(stream, "Composite CeedOperator%s%s\n", has_name ? " - " : "", has_name ? op->name : "");
1604+
fprintf(stream, "Composite CeedOperator%s%s\n", has_name ? " - " : "", has_name ? name : "");
15791605

15801606
for (CeedInt i = 0; i < num_suboperators; i++) {
15811607
has_name = sub_operators[i]->name;
@@ -1584,7 +1610,7 @@ static int CeedOperatorView_Core(CeedOperator op, FILE *stream, bool is_full) {
15841610
if (is_full) CeedCall(CeedOperatorSingleView(sub_operators[i], 1, stream));
15851611
}
15861612
} else {
1587-
fprintf(stream, "CeedOperator%s%s%s\n", is_at_points ? " AtPoints" : "", has_name ? " - " : "", has_name ? op->name : "");
1613+
fprintf(stream, "CeedOperator%s%s%s\n", is_at_points ? " AtPoints" : "", has_name ? " - " : "", has_name ? name : "");
15881614
if (is_full) CeedCall(CeedOperatorSingleView(op, 0, stream));
15891615
}
15901616
return CEED_ERROR_SUCCESS;

interface/ceed-preconditioning.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1838,14 +1838,16 @@ int CeedOperatorGetFallback(CeedOperator op, CeedOperator *op_fallback) {
18381838
CeedCall(CeedIsDebug(ceed, &is_debug));
18391839
if (is_debug) {
18401840
Ceed ceed_fallback;
1841-
const char *resource, *resource_fallback;
1841+
const char *resource, *resource_fallback, *op_name;
18421842

18431843
CeedCall(CeedGetOperatorFallbackCeed(ceed, &ceed_fallback));
18441844
CeedCall(CeedGetResource(ceed, &resource));
18451845
CeedCall(CeedGetResource(ceed_fallback, &resource_fallback));
1846+
CeedCall(CeedOperatorGetName(op, &op_name));
18461847

18471848
CeedDebug256(ceed, CEED_DEBUG_COLOR_SUCCESS, "---------- CeedOperator Fallback ----------\n");
1848-
CeedDebug(ceed, "Falling back from %s operator at address %p to %s operator at address %p\n", resource, op, resource_fallback, op->op_fallback);
1849+
CeedDebug(ceed, "CeedOperator \"%s\": falling back from operator at address %p with backend %s to operator at address %p with backend %s\n",
1850+
op_name, resource, op, resource_fallback, op->op_fallback);
18491851
CeedCall(CeedDestroy(&ceed_fallback));
18501852
}
18511853
CeedCall(CeedDestroy(&ceed));

interface/ceed-qfunction.c

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,31 @@ int CeedQFunctionGetNumArgs(CeedQFunction qf, CeedInt *num_input, CeedInt *num_o
196196
return CEED_ERROR_SUCCESS;
197197
}
198198

199+
/**
200+
@brief Get the name of the `CeedQFunction`.
201+
Use the `name` if created via @ref `CeedQFunctionCreateInteriorByName`, otherwise return the kernel name via @ref `CeedQFunctionGetKernelName`.
202+
203+
@param[in] qf `CeedQFunction`
204+
@param[out] kernel_name Variable to store `CeedQFunction` name
205+
206+
@return An error code: 0 - success, otherwise - failure
207+
208+
@ref Backend
209+
**/
210+
int CeedQFunctionGetName(CeedQFunction qf, const char **name) {
211+
if (qf->is_gallery) {
212+
*name = qf->gallery_name;
213+
} else {
214+
CeedCall(CeedQFunctionGetKernelName(qf, name));
215+
}
216+
return CEED_ERROR_SUCCESS;
217+
}
218+
199219
/**
200220
@brief Get the name of the user function for a `CeedQFunction`
201221
202222
@param[in] qf `CeedQFunction`
203-
@param[out] kernel_name Variable to store source path string
223+
@param[out] kernel_name Variable to store string holding kernel name
204224
205225
@return An error code: 0 - success, otherwise - failure
206226
@@ -1001,10 +1021,10 @@ int CeedQFunctionSetUserFlopsEstimate(CeedQFunction qf, CeedSize flops) {
10011021
@ref User
10021022
**/
10031023
int CeedQFunctionView(CeedQFunction qf, FILE *stream) {
1004-
const char *kernel_name;
1024+
const char *name;
10051025

1006-
CeedCall(CeedQFunctionGetKernelName(qf, &kernel_name));
1007-
fprintf(stream, "%sCeedQFunction - %s\n", qf->is_gallery ? "Gallery " : "User ", qf->is_gallery ? qf->gallery_name : kernel_name);
1026+
CeedCall(CeedQFunctionGetName(qf, &name));
1027+
fprintf(stream, "%sCeedQFunction - %s\n", qf->is_gallery ? "Gallery " : "User ", name);
10081028

10091029
fprintf(stream, " %" CeedInt_FMT " input field%s:\n", qf->num_input_fields, qf->num_input_fields > 1 ? "s" : "");
10101030
for (CeedInt i = 0; i < qf->num_input_fields; i++) {

python/tests/output/test_504.out

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CeedOperator
1+
CeedOperator - setup_mass
22
15 elements with 8 quadrature points each
33
3 fields
44
2 input fields:
@@ -20,7 +20,7 @@ CeedOperator
2020
No basis
2121
Active vector
2222

23-
CeedOperator
23+
CeedOperator - apply_mass
2424
15 elements with 8 quadrature points each
2525
3 fields
2626
2 input fields:

0 commit comments

Comments
 (0)