DOLFIN-X
DOLFIN-X C++ interface
|
9 #include "FormCoefficients.h"
10 #include "FormIntegrals.h"
79 Form(
const std::vector<std::shared_ptr<const function::FunctionSpace>>&
93 if (_mesh != V->mesh())
94 throw std::runtime_error(
"Incompatible mesh");
98 _integrals.set_default_domains(*_mesh);
107 const std::vector<std::shared_ptr<const function::FunctionSpace>>&
118 virtual ~Form() =
default;
123 int rank()
const {
return _function_spaces.size(); }
133 _coefficients.set(c.first, c.second);
144 _coefficients.set(c.first, c.second);
160 const std::string name = constant.first;
161 const auto it = std::find_if(
162 _constants.begin(), _constants.end(),
165 return (q.first == name);
167 if (it != _constants.end())
168 it->second = constant.second;
170 throw std::runtime_error(
"Constant '" + name +
"' not found in form");
186 if (
constants.size() != _constants.size())
187 throw std::runtime_error(
"Incorrect number of constants.");
190 for (std::size_t i = 0; i <
constants.size(); ++i)
193 _constants[i] = std::pair(
"",
constants[i]);
201 for (
const auto& constant : _constants)
202 if (!constant.second)
211 std::set<std::string> unset;
212 for (
const auto& constant : _constants)
213 if (!constant.second)
214 unset.insert(constant.first);
225 _integrals.set_default_domains(*_mesh);
230 std::shared_ptr<const mesh::Mesh>
mesh()
const {
return _mesh; }
237 return _function_spaces.at(i);
242 std::vector<std::shared_ptr<const function::FunctionSpace>>
245 return _function_spaces;
251 const std::function<
void(T*,
const T*,
const T*,
const double*,
252 const int*,
const std::uint8_t*,
253 const std::uint32_t)>& fn)
255 _integrals.set_tabulate_tensor(type, i, fn);
256 if (i == -1 and _mesh)
257 _integrals.set_default_domains(*_mesh);
274 std::pair<std::string, std::shared_ptr<const function::Constant<T>>>>&
289 std::pair<std::string, std::shared_ptr<const function::Constant<T>>>>
293 std::vector<std::shared_ptr<const function::FunctionSpace>> _function_spaces;
296 std::shared_ptr<const mesh::Mesh> _mesh;
IntegralType
Type of integral.
Definition: FormIntegrals.h:26
A constant value which can be attached to a Form. Constants may be scalar (rank 0),...
Definition: Form.h:27
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:37