DOLFIN
DOLFIN C++ interface
MixedAssembler.h
1 // it under the terms of the GNU Lesser General Public License as published by
2 // the Free Software Foundation, either version 3 of the License, or
3 // (at your option) any later version.
4 //
5 // DOLFIN is distributed in the hope that it will be useful,
6 // but WITHOUT ANY WARRANTY; without even the implied warranty of
7 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8 // GNU Lesser General Public License for more details.
9 //
10 // You should have received a copy of the GNU Lesser General Public License
11 // along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
12 //
13 // Modified by Cecile Daversin-Catty 2017
14 
15 #ifndef __MIXED_ASSEMBLER_H
16 #define __MIXED_ASSEMBLER_H
17 
18 #include <vector>
19 #include "AssemblerBase.h"
20 
21 namespace dolfin
22 {
23 
24  // Forward declarations
25  class GenericTensor;
26  class Form;
27  class UFC;
28  template<typename T> class MeshFunction;
29 
44 
46  {
47  public:
48 
51 
58  void assemble(GenericTensor& A, const Form& a);
59 
70  void assemble_cells(GenericTensor& A, const Form& a, UFC& ufc,
71  std::shared_ptr<const MeshFunction<std::size_t>> domains,
72  std::vector<double>* values);
73 
86  UFC& ufc,
87  std::shared_ptr<const MeshFunction<std::size_t>> domains,
88  std::vector<double>* values);
89 
102  void assemble_interior_facets(GenericTensor& A, const Form& a,
103  UFC& ufc,
104  std::shared_ptr<const MeshFunction<std::size_t>> domains,
105  std::shared_ptr<const MeshFunction<std::size_t>> cell_domains,
106  std::vector<double>* values);
107 
117  void assemble_vertices(GenericTensor& A, const Form& a, UFC& ufc,
118  std::shared_ptr<const MeshFunction<std::size_t>> domains);
119 
120  };
121 
122 }
123 
124 #endif
Provide some common functions used in assembler classes.
Definition: AssemblerBase.h:42
Base class for UFC code generated by FFC for DOLFIN with option -l.
Definition: Form.h:86
A common interface for arbitrary rank tensors.
Definition: GenericTensor.h:49
Definition: MixedAssembler.h:46
MixedAssembler()
Constructor.
Definition: MixedAssembler.h:50
void assemble_interior_facets(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains, std::shared_ptr< const MeshFunction< std::size_t >> cell_domains, std::vector< double > *values)
Definition: MixedAssembler.cpp:396
void assemble_cells(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains, std::vector< double > *values)
Definition: MixedAssembler.cpp:102
void assemble_exterior_facets(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains, std::vector< double > *values)
Definition: MixedAssembler.cpp:292
void assemble(GenericTensor &A, const Form &a)
Definition: MixedAssembler.cpp:49
void assemble_vertices(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains)
Definition: MixedAssembler.cpp:548
Definition: UFC.h:47
Definition: adapt.h:30