DOLFIN-X
DOLFIN-X C++ interface
|
9 #include "FormCoefficients.h"
10 #include "FormIntegrals.h"
11 #include <dolfinx/common/MPI.h>
12 #include <dolfinx/fem/DofMap.h>
78 Form(
const std::vector<std::shared_ptr<const function::FunctionSpace>>&
92 if (_mesh != V->mesh())
93 throw std::runtime_error(
"Incompatible mesh");
97 _integrals.set_default_domains(*_mesh);
108 Form(
const std::vector<std::shared_ptr<const function::FunctionSpace>>&
110 bool need_mesh_permutation_data)
129 int rank()
const {
return _function_spaces.size(); }
139 [
this](
auto& c) { _coefficients.set(c.first, c.second); });
151 const std::string& name = constant.first;
153 = std::find_if(_constants.begin(), _constants.end(),
154 [&name](
const auto& q) { return q.first == name; });
155 if (it != _constants.end())
156 it->second = constant.second;
158 throw std::runtime_error(
"Constant '" + name +
"' not found in form");
166 for (
const auto& constant : _constants)
167 if (!constant.second)
176 std::set<std::string> unset;
177 std::for_each(_constants.begin(), _constants.end(), [&unset](
auto& c) {
179 unset.insert(c.first);
194 _integrals.set_default_domains(*_mesh);
199 std::shared_ptr<const mesh::Mesh>
mesh()
const {
return _mesh; }
206 return _function_spaces.at(i);
211 std::vector<std::shared_ptr<const function::FunctionSpace>>
214 return _function_spaces;
220 const std::function<
void(T*,
const T*,
const T*,
const double*,
221 const int*,
const std::uint8_t*,
222 const std::uint32_t)>& fn)
224 _integrals.set_tabulate_tensor(type, i, fn);
225 if (i == -1 and _mesh)
226 _integrals.set_default_domains(*_mesh);
243 std::pair<std::string, std::shared_ptr<const function::Constant<T>>>>&
254 std::pair<std::string, std::shared_ptr<const function::Constant<T>>>>&
269 std::pair<std::string, std::shared_ptr<const function::Constant<T>>>>
273 std::vector<std::shared_ptr<const function::FunctionSpace>> _function_spaces;
276 std::shared_ptr<const mesh::Mesh> _mesh;
IntegralType
Type of integral.
Definition: FormIntegrals.h:27
A constant value which can be attached to a Form. Constants may be scalar (rank 0),...
Definition: Form.h:26
This class represents a function in a finite element function space , given by.
Definition: DirichletBC.h:22
This class represents a finite element function space defined by a mesh, a finite element,...
Definition: FunctionSpace.h:38