MFEM  v4.5.1
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
mass.cpp
Go to the documentation of this file.
1 // Copyright (c) 2010-2022, Lawrence Livermore National Security, LLC. Produced
2 // at the Lawrence Livermore National Laboratory. All Rights reserved. See files
3 // LICENSE and NOTICE for details. LLNL-CODE-806117.
4 //
5 // This file is part of the MFEM library. For more information and source code
6 // availability visit https://mfem.org.
7 //
8 // MFEM is free software; you can redistribute it and/or modify it under the
9 // terms of the BSD-3 license. We welcome feedback and contributions, see file
10 // CONTRIBUTING.md for details.
11 
12 #include "mass.hpp"
13 
14 #include "../../../../config/config.hpp"
15 #ifdef MFEM_USE_CEED
16 #include "mass_qf.h"
17 #endif
18 
19 namespace mfem
20 {
21 
22 namespace ceed
23 {
24 
25 #ifdef MFEM_USE_CEED
26 struct MassOperatorInfo : public OperatorInfo
27 {
28  MassContext ctx;
29  MassOperatorInfo()
30  {
31  header = "/integrators/mass/mass_qf.h";
32  build_func_const = ":f_build_mass_const";
33  build_qf_const = &f_build_mass_const;
34  build_func_quad = ":f_build_mass_quad";
35  build_qf_quad = &f_build_mass_quad;
36  apply_func = ":f_apply_mass";
37  apply_qf = &f_apply_mass;
38  apply_func_mf_const = ":f_apply_mass_mf_const";
39  apply_qf_mf_const = &f_apply_mass_mf_const;
40  apply_func_mf_quad = ":f_apply_mass_mf_quad";
41  apply_qf_mf_quad = &f_apply_mass_mf_quad;
44  qdatasize = 1;
45  }
46 };
47 #endif
48 
50  const mfem::IntegrationRule &irm,
52  : PAIntegrator()
53 {
54 #ifdef MFEM_USE_CEED
55  MassOperatorInfo info;
56  Assemble(info, fes, irm, Q);
57 #else
58  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
59 #endif
60 }
61 
63  const mfem::FiniteElementSpace &fes,
65 {
66 #ifdef MFEM_USE_CEED
67  MassOperatorInfo info;
68  Assemble(integ, info, fes, Q);
69 #else
70  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
71 #endif
72 }
73 
75  const mfem::FiniteElementSpace &fes,
77 {
78 #ifdef MFEM_USE_CEED
79  MassOperatorInfo info;
80  Assemble(integ, info, fes, Q);
81 #else
82  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
83 #endif
84 }
85 
87  const mfem::IntegrationRule &irm,
89  : MFIntegrator()
90 {
91 #ifdef MFEM_USE_CEED
92  MassOperatorInfo info;
93  Assemble(info, fes, irm, Q);
94 #else
95  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
96 #endif
97 }
98 
100  const mfem::FiniteElementSpace &fes,
102 {
103 #ifdef MFEM_USE_CEED
104  MassOperatorInfo info;
105  Assemble(integ, info, fes, Q);
106 #else
107  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
108 #endif
109 }
110 
112  const mfem::FiniteElementSpace &fes,
114 {
115 #ifdef MFEM_USE_CEED
116  MassOperatorInfo info;
117  Assemble(integ, info, fes, Q);
118 #else
119  MFEM_ABORT("MFEM must be built with MFEM_USE_CEED=YES to use libCEED.");
120 #endif
121 }
122 
123 } // namespace ceed
124 
125 } // namespace mfem
Class for an integration rule - an Array of IntegrationPoint.
Definition: intrules.hpp:90
MFMassIntegrator(const mfem::FiniteElementSpace &fes, const mfem::IntegrationRule &ir, mfem::Coefficient *Q)
Definition: mass.cpp:86
CeedQFunctionUser build_qf_quad
Definition: integrator.hpp:51
CeedQFunctionUser build_qf_const
Definition: integrator.hpp:45
PAMassIntegrator(const mfem::FiniteElementSpace &fes, const mfem::IntegrationRule &ir, mfem::Coefficient *Q)
Definition: mass.cpp:49
const char * build_func_const
Definition: integrator.hpp:42
void Assemble(CeedOperatorInfo &info, const mfem::FiniteElementSpace &fes, const mfem::IntegrationRule &ir, CoeffType *Q)
This method assembles the PAIntegrator with the given CeedOperatorInfo info, an mfem::FiniteElementSp...
Definition: integrator.hpp:112
MixedPAMassIntegrator(const MassIntegrator &integ, const mfem::FiniteElementSpace &fes, mfem::Coefficient *Q)
Definition: mass.cpp:62
CeedQFunctionUser apply_qf_mf_const
Definition: integrator.hpp:61
const char * apply_func_mf_quad
Definition: integrator.hpp:64
CeedQFunctionUser apply_qf_mf_quad
Definition: integrator.hpp:67
const char * apply_func_mf_const
Definition: integrator.hpp:58
void Assemble(const Integrator &integ, CeedOperatorInfo &info, const mfem::FiniteElementSpace &fes, CoeffType *Q)
const char * build_func_quad
Definition: integrator.hpp:48
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Definition: fespace.hpp:96
void Assemble(CeedOperatorInfo &info, const mfem::FiniteElementSpace &fes, const mfem::IntegrationRule &ir, CoeffType *Q)
This method assembles the MFIntegrator with the given CeedOperatorInfo info, an mfem::FiniteElementSp...
Definition: integrator.hpp:468
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
Definition: coefficient.hpp:41
CeedQFunctionUser apply_qf
Definition: integrator.hpp:55
MixedMFMassIntegrator(const MassIntegrator &integ, const mfem::FiniteElementSpace &fes, mfem::Coefficient *Q)
Definition: mass.cpp:99