DOLFIN
DOLFIN C++ interface
Assembler.h
1 // Copyright (C) 2007-2015 Anders Logg
2 //
3 // This file is part of DOLFIN.
4 //
5 // DOLFIN is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // DOLFIN is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
17 //
18 // Modified by Garth N. Wells 2007-2008
19 // Modified by Ola Skavhaug 2008
20 // Modified by Joachim B Haga 2012
21 // Modified by Martin Alnes 2015
22 
23 #ifndef __ASSEMBLER_H
24 #define __ASSEMBLER_H
25 
26 #include <vector>
27 #include "AssemblerBase.h"
28 
29 namespace dolfin
30 {
31 
32  // Forward declarations
33  class GenericTensor;
34  class Form;
35  class UFC;
36  template<typename T> class MeshFunction;
37 
52 
53  class Assembler : public AssemblerBase
54  {
55  public:
56 
58  Assembler() {}
59 
66  void assemble(GenericTensor& A, const Form& a);
67 
78  void assemble_cells(GenericTensor& A, const Form& a, UFC& ufc,
79  std::shared_ptr<const MeshFunction<std::size_t>> domains,
80  std::vector<double>* values);
81 
94  UFC& ufc,
95  std::shared_ptr<const MeshFunction<std::size_t>> domains,
96  std::vector<double>* values);
97 
110  void assemble_interior_facets(GenericTensor& A, const Form& a,
111  UFC& ufc,
112  std::shared_ptr<const MeshFunction<std::size_t>> domains,
113  std::shared_ptr<const MeshFunction<std::size_t>> cell_domains,
114  std::vector<double>* values);
115 
125  void assemble_vertices(GenericTensor& A, const Form& a, UFC& ufc,
126  std::shared_ptr<const MeshFunction<std::size_t>> domains);
127 
128  };
129 
130 }
131 
132 #endif
Base class for UFC code generated by FFC for DOLFIN with option -l.
Definition: Form.h:85
Definition: UFC.h:46
Definition: adapt.h:29
void assemble(GenericTensor &A, const Form &a)
Definition: Assembler.cpp:52
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: Assembler.cpp:300
Assembler()
Constructor.
Definition: Assembler.h:58
Definition: Extrapolation.h:34
void assemble_cells(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains, std::vector< double > *values)
Definition: Assembler.cpp:105
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: Assembler.cpp:196
void assemble_vertices(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t >> domains)
Definition: Assembler.cpp:452
A common interface for arbitrary rank tensors.
Definition: GenericTensor.h:48
Definition: Assembler.h:53
Provide some common functions used in assembler classes.
Definition: AssemblerBase.h:41