| ceed-operator.c (c52157525785c51910c8fadbbfd077683f26126a) | ceed-operator.c (3ca2b39b4c8169364cc5c152b6838d2c527ff5b3) |
|---|---|
| 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed-impl.h> --- 1455 unchanged lines hidden (view full) --- 1464 1465 @return An error code: 0 - success, otherwise - failure 1466 1467 @ref User 1468**/ 1469int CeedOperatorApply(CeedOperator op, CeedVector in, CeedVector out, CeedRequest *request) { 1470 CeedCall(CeedOperatorCheckReady(op)); 1471 | 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed-impl.h> --- 1455 unchanged lines hidden (view full) --- 1464 1465 @return An error code: 0 - success, otherwise - failure 1466 1467 @ref User 1468**/ 1469int CeedOperatorApply(CeedOperator op, CeedVector in, CeedVector out, CeedRequest *request) { 1470 CeedCall(CeedOperatorCheckReady(op)); 1471 |
| 1472 if (op->num_elem) { 1473 // Standard Operator 1474 if (op->Apply) { 1475 CeedCall(op->Apply(op, in, out, request)); 1476 } else { 1477 // Zero all output vectors 1478 CeedQFunction qf = op->qf; 1479 for (CeedInt i = 0; i < qf->num_output_fields; i++) { 1480 CeedVector vec = op->output_fields[i]->vec; 1481 if (vec == CEED_VECTOR_ACTIVE) vec = out; 1482 if (vec != CEED_VECTOR_NONE) { 1483 CeedCall(CeedVectorSetValue(vec, 0.0)); 1484 } 1485 } 1486 // Apply 1487 CeedCall(op->ApplyAdd(op, in, out, request)); 1488 } 1489 } else if (op->is_composite) { | 1472 if (op->is_composite) { |
| 1490 // Composite Operator 1491 if (op->ApplyComposite) { 1492 CeedCall(op->ApplyComposite(op, in, out, request)); 1493 } else { 1494 CeedInt num_suboperators; 1495 CeedCall(CeedCompositeOperatorGetNumSub(op, &num_suboperators)); 1496 CeedOperator *sub_operators; 1497 CeedCall(CeedCompositeOperatorGetSubList(op, &sub_operators)); 1498 1499 // Zero all output vectors | 1473 // Composite Operator 1474 if (op->ApplyComposite) { 1475 CeedCall(op->ApplyComposite(op, in, out, request)); 1476 } else { 1477 CeedInt num_suboperators; 1478 CeedCall(CeedCompositeOperatorGetNumSub(op, &num_suboperators)); 1479 CeedOperator *sub_operators; 1480 CeedCall(CeedCompositeOperatorGetSubList(op, &sub_operators)); 1481 1482 // Zero all output vectors |
| 1500 if (out != CEED_VECTOR_NONE) { 1501 CeedCall(CeedVectorSetValue(out, 0.0)); 1502 } | 1483 if (out != CEED_VECTOR_NONE) CeedCall(CeedVectorSetValue(out, 0.0)); |
| 1503 for (CeedInt i = 0; i < num_suboperators; i++) { 1504 for (CeedInt j = 0; j < sub_operators[i]->qf->num_output_fields; j++) { 1505 CeedVector vec = sub_operators[i]->output_fields[j]->vec; 1506 if (vec != CEED_VECTOR_ACTIVE && vec != CEED_VECTOR_NONE) { 1507 CeedCall(CeedVectorSetValue(vec, 0.0)); 1508 } 1509 } 1510 } 1511 // Apply 1512 for (CeedInt i = 0; i < op->num_suboperators; i++) { 1513 CeedCall(CeedOperatorApplyAdd(op->sub_operators[i], in, out, request)); 1514 } 1515 } | 1484 for (CeedInt i = 0; i < num_suboperators; i++) { 1485 for (CeedInt j = 0; j < sub_operators[i]->qf->num_output_fields; j++) { 1486 CeedVector vec = sub_operators[i]->output_fields[j]->vec; 1487 if (vec != CEED_VECTOR_ACTIVE && vec != CEED_VECTOR_NONE) { 1488 CeedCall(CeedVectorSetValue(vec, 0.0)); 1489 } 1490 } 1491 } 1492 // Apply 1493 for (CeedInt i = 0; i < op->num_suboperators; i++) { 1494 CeedCall(CeedOperatorApplyAdd(op->sub_operators[i], in, out, request)); 1495 } 1496 } |
| 1497 } else { 1498 // Standard Operator 1499 if (op->Apply) { 1500 CeedCall(op->Apply(op, in, out, request)); 1501 } else { 1502 // Zero all output vectors 1503 CeedQFunction qf = op->qf; 1504 for (CeedInt i = 0; i < qf->num_output_fields; i++) { 1505 CeedVector vec = op->output_fields[i]->vec; 1506 if (vec == CEED_VECTOR_ACTIVE) vec = out; 1507 if (vec != CEED_VECTOR_NONE) CeedCall(CeedVectorSetValue(vec, 0.0)); 1508 } 1509 // Apply 1510 if (op->num_elem) CeedCall(op->ApplyAdd(op, in, out, request)); 1511 } |
|
| 1516 } 1517 return CEED_ERROR_SUCCESS; 1518} 1519 1520/** 1521 @brief Apply CeedOperator to a vector and add result to output vector 1522 1523 This computes the action of the operator on the specified (active) input, yielding its (active) output. --- 6 unchanged lines hidden (view full) --- 1530 1531 @return An error code: 0 - success, otherwise - failure 1532 1533 @ref User 1534**/ 1535int CeedOperatorApplyAdd(CeedOperator op, CeedVector in, CeedVector out, CeedRequest *request) { 1536 CeedCall(CeedOperatorCheckReady(op)); 1537 | 1512 } 1513 return CEED_ERROR_SUCCESS; 1514} 1515 1516/** 1517 @brief Apply CeedOperator to a vector and add result to output vector 1518 1519 This computes the action of the operator on the specified (active) input, yielding its (active) output. --- 6 unchanged lines hidden (view full) --- 1526 1527 @return An error code: 0 - success, otherwise - failure 1528 1529 @ref User 1530**/ 1531int CeedOperatorApplyAdd(CeedOperator op, CeedVector in, CeedVector out, CeedRequest *request) { 1532 CeedCall(CeedOperatorCheckReady(op)); 1533 |
| 1538 if (op->num_elem) { 1539 // Standard Operator 1540 CeedCall(op->ApplyAdd(op, in, out, request)); 1541 } else if (op->is_composite) { | 1534 if (op->is_composite) { |
| 1542 // Composite Operator 1543 if (op->ApplyAddComposite) { 1544 CeedCall(op->ApplyAddComposite(op, in, out, request)); 1545 } else { 1546 CeedInt num_suboperators; 1547 CeedCall(CeedCompositeOperatorGetNumSub(op, &num_suboperators)); 1548 CeedOperator *sub_operators; 1549 CeedCall(CeedCompositeOperatorGetSubList(op, &sub_operators)); 1550 1551 for (CeedInt i = 0; i < num_suboperators; i++) { 1552 CeedCall(CeedOperatorApplyAdd(sub_operators[i], in, out, request)); 1553 } 1554 } | 1535 // Composite Operator 1536 if (op->ApplyAddComposite) { 1537 CeedCall(op->ApplyAddComposite(op, in, out, request)); 1538 } else { 1539 CeedInt num_suboperators; 1540 CeedCall(CeedCompositeOperatorGetNumSub(op, &num_suboperators)); 1541 CeedOperator *sub_operators; 1542 CeedCall(CeedCompositeOperatorGetSubList(op, &sub_operators)); 1543 1544 for (CeedInt i = 0; i < num_suboperators; i++) { 1545 CeedCall(CeedOperatorApplyAdd(sub_operators[i], in, out, request)); 1546 } 1547 } |
| 1548 } else if (op->num_elem) { 1549 // Standard Operator 1550 CeedCall(op->ApplyAdd(op, in, out, request)); |
|
| 1555 } 1556 return CEED_ERROR_SUCCESS; 1557} 1558 1559/** 1560 @brief Destroy a CeedOperator 1561 1562 @param[in,out] op CeedOperator to destroy --- 75 unchanged lines hidden --- | 1551 } 1552 return CEED_ERROR_SUCCESS; 1553} 1554 1555/** 1556 @brief Destroy a CeedOperator 1557 1558 @param[in,out] op CeedOperator to destroy --- 75 unchanged lines hidden --- |