ceed.h (23548e8476229ec188ba8298cd5fc87df9cedd32) ceed.h (3668ca4b583f336c0c2dcc810e26e2ac50a514b8)
1/// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2/// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3/// reserved. See files LICENSE and NOTICE for details.
4///
5/// This file is part of CEED, a collection of benchmarks, miniapps, software
6/// libraries and APIs for efficient high-order finite element and spectral
7/// element discretizations for exascale applications. For more information and
8/// source code availability see http://github.com/ceed.

--- 155 unchanged lines hidden (view full) ---

164/// @ingroup CeedQFunctionUser
165typedef struct CeedQFunction_private *CeedQFunction;
166/// Handle for object describing CeedOperator fields
167/// @ingroup CeedOperatorBackend
168typedef struct CeedOperatorField_private *CeedOperatorField;
169/// Handle for object describing context data for CeedQFunctions
170/// @ingroup CeedQFunctionUser
171typedef struct CeedQFunctionContext_private *CeedQFunctionContext;
1/// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2/// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3/// reserved. See files LICENSE and NOTICE for details.
4///
5/// This file is part of CEED, a collection of benchmarks, miniapps, software
6/// libraries and APIs for efficient high-order finite element and spectral
7/// element discretizations for exascale applications. For more information and
8/// source code availability see http://github.com/ceed.

--- 155 unchanged lines hidden (view full) ---

164/// @ingroup CeedQFunctionUser
165typedef struct CeedQFunction_private *CeedQFunction;
166/// Handle for object describing CeedOperator fields
167/// @ingroup CeedOperatorBackend
168typedef struct CeedOperatorField_private *CeedOperatorField;
169/// Handle for object describing context data for CeedQFunctions
170/// @ingroup CeedQFunctionUser
171typedef struct CeedQFunctionContext_private *CeedQFunctionContext;
172/// Handle for object describing registered fields for CeedQFunctionContext
173/// @ingroup CeedQFunctionUser
174typedef struct CeedContextFieldLabel_private *CeedContextFieldLabel;
172/// Handle for object describing FE-type operators acting on vectors
173///
174/// Given an element restriction \f$E\f$, basis evaluator \f$B\f$, and
175/// quadrature function\f$f\f$, a CeedOperator expresses operations of the form
176/// $$ E^T B^T f(B E u) $$
177/// acting on the vector \f$u\f$.
178/// @ingroup CeedOperatorUser
179typedef struct CeedOperator_private *CeedOperator;

--- 449 unchanged lines hidden (view full) ---

629typedef enum {
630 /// Double precision value
631 CEED_CONTEXT_FIELD_DOUBLE,
632 /// 32 bit integer value
633 CEED_CONTEXT_FIELD_INT32
634} CeedContextFieldType;
635CEED_EXTERN const char *const CeedContextFieldTypes[];
636
175/// Handle for object describing FE-type operators acting on vectors
176///
177/// Given an element restriction \f$E\f$, basis evaluator \f$B\f$, and
178/// quadrature function\f$f\f$, a CeedOperator expresses operations of the form
179/// $$ E^T B^T f(B E u) $$
180/// acting on the vector \f$u\f$.
181/// @ingroup CeedOperatorUser
182typedef struct CeedOperator_private *CeedOperator;

--- 449 unchanged lines hidden (view full) ---

632typedef enum {
633 /// Double precision value
634 CEED_CONTEXT_FIELD_DOUBLE,
635 /// 32 bit integer value
636 CEED_CONTEXT_FIELD_INT32
637} CeedContextFieldType;
638CEED_EXTERN const char *const CeedContextFieldTypes[];
639
637/// Handle for object describing CeedQFunctionContext fields
638/// @ingroup CeedQFunction
639typedef struct {
640 const char *name;
641 const char *description;
642 CeedContextFieldType type;
643 size_t size;
644 size_t offset;
645} CeedQFunctionContextFieldDescription;
646
647CEED_EXTERN int CeedQFunctionContextCreate(Ceed ceed,
648 CeedQFunctionContext *ctx);
649CEED_EXTERN int CeedQFunctionContextReferenceCopy(CeedQFunctionContext ctx,
650 CeedQFunctionContext *ctx_copy);
651CEED_EXTERN int CeedQFunctionContextSetData(CeedQFunctionContext ctx,
652 CeedMemType mem_type, CeedCopyMode copy_mode, size_t size, void *data);
653CEED_EXTERN int CeedQFunctionContextTakeData(CeedQFunctionContext ctx,
654 CeedMemType mem_type, void *data);
655CEED_EXTERN int CeedQFunctionContextGetData(CeedQFunctionContext ctx,
656 CeedMemType mem_type, void *data);
657CEED_EXTERN int CeedQFunctionContextRestoreData(CeedQFunctionContext ctx,
658 void *data);
659CEED_EXTERN int CeedQFunctionContextRegisterDouble(CeedQFunctionContext ctx,
660 const char *field_name, size_t field_offset, const char *field_description);
661CEED_EXTERN int CeedQFunctionContextRegisterInt32(CeedQFunctionContext ctx,
662 const char *field_name, size_t field_offset, const char *field_description);
640CEED_EXTERN int CeedQFunctionContextCreate(Ceed ceed,
641 CeedQFunctionContext *ctx);
642CEED_EXTERN int CeedQFunctionContextReferenceCopy(CeedQFunctionContext ctx,
643 CeedQFunctionContext *ctx_copy);
644CEED_EXTERN int CeedQFunctionContextSetData(CeedQFunctionContext ctx,
645 CeedMemType mem_type, CeedCopyMode copy_mode, size_t size, void *data);
646CEED_EXTERN int CeedQFunctionContextTakeData(CeedQFunctionContext ctx,
647 CeedMemType mem_type, void *data);
648CEED_EXTERN int CeedQFunctionContextGetData(CeedQFunctionContext ctx,
649 CeedMemType mem_type, void *data);
650CEED_EXTERN int CeedQFunctionContextRestoreData(CeedQFunctionContext ctx,
651 void *data);
652CEED_EXTERN int CeedQFunctionContextRegisterDouble(CeedQFunctionContext ctx,
653 const char *field_name, size_t field_offset, const char *field_description);
654CEED_EXTERN int CeedQFunctionContextRegisterInt32(CeedQFunctionContext ctx,
655 const char *field_name, size_t field_offset, const char *field_description);
663CEED_EXTERN int CeedQFunctionContextGetFieldDescriptions(CeedQFunctionContext ctx,
664 const CeedQFunctionContextFieldDescription **field_descriptions, CeedInt *num_fields);
656CEED_EXTERN int CeedQFunctionContextGetFieldLabel(CeedQFunctionContext ctx,
657 const char *field_name, CeedContextFieldLabel *field_label);
658CEED_EXTERN int CeedQFunctionContextGetAllFieldLabels(CeedQFunctionContext ctx,
659 const CeedContextFieldLabel **field_labels, CeedInt *num_fields);
665CEED_EXTERN int CeedQFunctionContextSetDouble(CeedQFunctionContext ctx,
660CEED_EXTERN int CeedQFunctionContextSetDouble(CeedQFunctionContext ctx,
666 const char *field_name, double value);
661 CeedContextFieldLabel field_label, double value);
667CEED_EXTERN int CeedQFunctionContextSetInt32(CeedQFunctionContext ctx,
662CEED_EXTERN int CeedQFunctionContextSetInt32(CeedQFunctionContext ctx,
668 const char *field_name, int value);
663 CeedContextFieldLabel field_label, int value);
669CEED_EXTERN int CeedQFunctionContextGetContextSize(CeedQFunctionContext ctx,
670 size_t *ctx_size);
671CEED_EXTERN int CeedQFunctionContextView(CeedQFunctionContext ctx,
672 FILE *stream);
673CEED_EXTERN int CeedQFunctionContextDestroy(CeedQFunctionContext *ctx);
674
675CEED_EXTERN int CeedOperatorCreate(Ceed ceed, CeedQFunction qf,
676 CeedQFunction dqf, CeedQFunction dqfT,

--- 40 unchanged lines hidden (view full) ---

717CEED_EXTERN int CeedOperatorCreateFDMElementInverse(CeedOperator op,
718 CeedOperator *fdm_inv, CeedRequest *request);
719CEED_EXTERN int CeedOperatorSetNumQuadraturePoints(CeedOperator op, CeedInt num_qpts);
720CEED_EXTERN int CeedOperatorView(CeedOperator op, FILE *stream);
721CEED_EXTERN int CeedOperatorGetCeed(CeedOperator op, Ceed *ceed);
722CEED_EXTERN int CeedOperatorGetNumElements(CeedOperator op, CeedInt *num_elem);
723CEED_EXTERN int CeedOperatorGetNumQuadraturePoints(CeedOperator op,
724 CeedInt *num_qpts);
664CEED_EXTERN int CeedQFunctionContextGetContextSize(CeedQFunctionContext ctx,
665 size_t *ctx_size);
666CEED_EXTERN int CeedQFunctionContextView(CeedQFunctionContext ctx,
667 FILE *stream);
668CEED_EXTERN int CeedQFunctionContextDestroy(CeedQFunctionContext *ctx);
669
670CEED_EXTERN int CeedOperatorCreate(Ceed ceed, CeedQFunction qf,
671 CeedQFunction dqf, CeedQFunction dqfT,

--- 40 unchanged lines hidden (view full) ---

712CEED_EXTERN int CeedOperatorCreateFDMElementInverse(CeedOperator op,
713 CeedOperator *fdm_inv, CeedRequest *request);
714CEED_EXTERN int CeedOperatorSetNumQuadraturePoints(CeedOperator op, CeedInt num_qpts);
715CEED_EXTERN int CeedOperatorView(CeedOperator op, FILE *stream);
716CEED_EXTERN int CeedOperatorGetCeed(CeedOperator op, Ceed *ceed);
717CEED_EXTERN int CeedOperatorGetNumElements(CeedOperator op, CeedInt *num_elem);
718CEED_EXTERN int CeedOperatorGetNumQuadraturePoints(CeedOperator op,
719 CeedInt *num_qpts);
725CEED_EXTERN int CeedOperatorContextSetDouble(CeedOperator op, const char *field_name,
726 double value);
727CEED_EXTERN int CeedOperatorContextSetInt32(CeedOperator op, const char *field_name,
728 int value);
720CEED_EXTERN int CeedOperatorContextGetFieldLabel(CeedOperator op,
721 const char *field_name, CeedContextFieldLabel *field_label);
722CEED_EXTERN int CeedOperatorContextSetDouble(CeedOperator op,
723 CeedContextFieldLabel field_label, double value);
724CEED_EXTERN int CeedOperatorContextSetInt32(CeedOperator op,
725 CeedContextFieldLabel field_label, int value);
729CEED_EXTERN int CeedOperatorApply(CeedOperator op, CeedVector in,
730 CeedVector out, CeedRequest *request);
731CEED_EXTERN int CeedOperatorApplyAdd(CeedOperator op, CeedVector in,
732 CeedVector out, CeedRequest *request);
733CEED_EXTERN int CeedOperatorDestroy(CeedOperator *op);
734
735CEED_EXTERN int CeedOperatorFieldGetName(CeedOperatorField op_field,
736 char **field_name);

--- 57 unchanged lines hidden ---
726CEED_EXTERN int CeedOperatorApply(CeedOperator op, CeedVector in,
727 CeedVector out, CeedRequest *request);
728CEED_EXTERN int CeedOperatorApplyAdd(CeedOperator op, CeedVector in,
729 CeedVector out, CeedRequest *request);
730CEED_EXTERN int CeedOperatorDestroy(CeedOperator *op);
731
732CEED_EXTERN int CeedOperatorFieldGetName(CeedOperatorField op_field,
733 char **field_name);

--- 57 unchanged lines hidden ---