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
29namespace 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
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
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
Provide some common functions used in assembler classes.
Definition: AssemblerBase.h:42
Definition: Assembler.h:54
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_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
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
Assembler()
Constructor.
Definition: Assembler.h:58
void assemble(GenericTensor &A, const Form &a)
Definition: Assembler.cpp:52
void assemble_vertices(GenericTensor &A, const Form &a, UFC &ufc, std::shared_ptr< const MeshFunction< std::size_t > > domains)
Definition: Assembler.cpp:452
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: UFC.h:47
Definition: adapt.h:30