/usr/include/dolfin/fem/Assembler.h is in libdolfin-dev 2017.2.0.post0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | // Copyright (C) 2007-2015 Anders Logg
//
// This file is part of DOLFIN.
//
// DOLFIN is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOLFIN is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
//
// Modified by Garth N. Wells 2007-2008
// Modified by Ola Skavhaug 2008
// Modified by Joachim B Haga 2012
// Modified by Martin Alnes 2015
#ifndef __ASSEMBLER_H
#define __ASSEMBLER_H
#include <vector>
#include "AssemblerBase.h"
namespace dolfin
{
// Forward declarations
class GenericTensor;
class Form;
class UFC;
template<typename T> class MeshFunction;
/// This class provides automated assembly of linear systems, or
/// more generally, assembly of a sparse tensor from a given
/// variational form.
///
/// Subdomains for cells and facets may be specified by assigning
/// subdomain indicators specified by _MeshFunction_ to the _Form_
/// being assembled:
///
/// @code{.cpp}
///
/// form.dx = cell_domains
/// form.ds = exterior_facet_domains
/// form.dS = interior_facet_domains
/// @endcode
class Assembler : public AssemblerBase
{
public:
/// Constructor
Assembler() {}
/// Assemble tensor from given form
///
/// @param[out] A (GenericTensor)
/// The tensor to assemble.
/// @param[in] a (Form&)
/// The form to assemble the tensor from.
void assemble(GenericTensor& A, const Form& a);
/// Assemble tensor from given form over cells. This function is
/// provided for users who wish to build a customized assembler.
///
/// @param[out] A (GenericTensor&)
/// The tensor to assemble.
/// @param[in] a (Form&)
/// The form to assemble the tensor from.
/// @param[in] ufc (UFC&)
/// @param[in] domains (MeshFunction<std::size_t>)
/// @param[in] values (std::vector<double>*)
void assemble_cells(GenericTensor& A, const Form& a, UFC& ufc,
std::shared_ptr<const MeshFunction<std::size_t>> domains,
std::vector<double>* values);
/// Assemble tensor from given form over exterior facets. This
/// function is provided for users who wish to build a customized
/// assembler.
///
/// @param[out] A (GenericTensor)
/// The tensor to assemble.
/// @param[in] a (Form)
/// The form to assemble the tensor from.
/// @param[in] ufc (UFC)
/// @param[in] domains (MeshFunction)
/// @param[in] values (std::vector<double>*)
void assemble_exterior_facets(GenericTensor& A, const Form& a,
UFC& ufc,
std::shared_ptr<const MeshFunction<std::size_t>> domains,
std::vector<double>* values);
/// Assemble tensor from given form over interior facets. This
/// function is provided for users who wish to build a customized
/// assembler.
///
/// @param[out] A (GenericTensor)
/// The tensor to assemble.
/// @param[in] a (Form)
/// The form to assemble the tensor from.
/// @param[in] ufc (UFC)
/// @param[in] domains (MeshFunction<std::size_t>)
/// @param[in] cell_domains (MeshFunction<std::size_t>)
/// @param[in] values (std::vector<double>*)
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);
/// Assemble tensor from given form over vertices. This function is
/// provided for users who wish to build a customized assembler.
///
/// @param[out] A (GenericTersn)
/// The tensor to assemble.
/// @param[in] a (Form)
/// The form to assemble the tensor from.
/// @param[in] ufc (UFC)
/// @param[in] domains (MeshFunction)
void assemble_vertices(GenericTensor& A, const Form& a, UFC& ufc,
std::shared_ptr<const MeshFunction<std::size_t>> domains);
};
}
#endif
|