37 class GenericFunction;
64 const std::vector<double>& coordinate_dofs0,
65 const ufc::cell& ufc_cell,
66 const std::vector<bool> & enabled_coefficients);
70 const std::vector<double>& coordinate_dofs0,
71 const ufc::cell& ufc_cell0,
73 const std::vector<double>& coordinate_dofs1,
74 const ufc::cell& ufc_cell1,
75 const std::vector<bool> & enabled_coefficients);
81 const std::vector<double>& coordinate_dofs0,
82 const ufc::cell& ufc_cell);
88 const std::vector<double>& coordinate_dofs0,
89 const ufc::cell& ufc_cell0,
91 const std::vector<double>& coordinate_dofs1,
92 const ufc::cell& ufc_cell1);
95 const double*
const *
w()
const 96 {
return w_pointer.data(); }
101 {
return w_pointer.data(); }
106 {
return macro_w_pointer.data(); }
111 {
return macro_w_pointer.data(); }
116 std::vector<FiniteElement> coefficient_elements;
120 std::vector<std::shared_ptr<ufc::cell_integral>>
125 std::vector<std::shared_ptr<ufc::exterior_facet_integral>>
126 exterior_facet_integrals;
130 std::vector<std::shared_ptr<ufc::interior_facet_integral>>
131 interior_facet_integrals;
135 std::vector<std::shared_ptr<ufc::vertex_integral>>
140 std::vector<std::shared_ptr<ufc::custom_integral>> custom_integrals;
144 std::vector<std::shared_ptr<ufc::cutcell_integral>> cutcell_integrals;
148 std::vector<std::shared_ptr<ufc::interface_integral>> interface_integrals;
152 std::vector<std::shared_ptr<ufc::overlap_integral>> overlap_integrals;
157 std::shared_ptr<ufc::cell_integral>
158 default_cell_integral;
161 std::shared_ptr<ufc::exterior_facet_integral>
162 default_exterior_facet_integral;
165 std::shared_ptr<ufc::interior_facet_integral>
166 default_interior_facet_integral;
169 std::shared_ptr<ufc::vertex_integral>
170 default_vertex_integral;
173 std::shared_ptr<ufc::custom_integral> default_custom_integral;
176 std::shared_ptr<ufc::cutcell_integral> default_cutcell_integral;
179 std::shared_ptr<ufc::interface_integral> default_interface_integral;
182 std::shared_ptr<ufc::overlap_integral> default_overlap_integral;
189 if (domain < form.max_cell_subdomain_id())
191 ufc::cell_integral * integral
192 = cell_integrals[domain].get();
196 return default_cell_integral.get();
201 ufc::exterior_facet_integral*
204 if (domain < form.max_exterior_facet_subdomain_id())
206 ufc::exterior_facet_integral* integral
207 = exterior_facet_integrals[domain].get();
211 return default_exterior_facet_integral.get();
216 ufc::interior_facet_integral*
219 if (domain < form.max_interior_facet_subdomain_id())
221 ufc::interior_facet_integral* integral
222 = interior_facet_integrals[domain].get();
226 return default_interior_facet_integral.get();
231 ufc::vertex_integral*
234 if (domain < form.max_vertex_subdomain_id())
236 ufc::vertex_integral * integral
237 = vertex_integrals[domain].get();
241 return default_vertex_integral.get();
248 if (domain < form.max_custom_subdomain_id())
250 ufc::custom_integral * integral = custom_integrals[domain].get();
254 return default_custom_integral.get();
261 if (domain < form.max_cutcell_subdomain_id())
263 ufc::cutcell_integral * integral = cutcell_integrals[domain].get();
267 return default_cutcell_integral.get();
274 if (domain < form.max_interface_subdomain_id())
276 ufc::interface_integral * integral = interface_integrals[domain].get();
280 return default_interface_integral.get();
287 if (domain < form.max_overlap_subdomain_id())
289 ufc::overlap_integral * integral = overlap_integrals[domain].get();
293 return default_overlap_integral.get();
302 std::vector<double>
A;
314 std::vector<std::vector<double>> _w;
315 std::vector<double*> w_pointer;
319 std::vector<std::vector<double>> _macro_w;
320 std::vector<double*> macro_w_pointer;
323 const std::vector<std::shared_ptr<const GenericFunction>> coefficients;
ufc::vertex_integral * get_vertex_integral(std::size_t domain)
Definition: UFC.h:232
std::vector< double > A_facet
Local tensor.
Definition: UFC.h:305
UFC(const Form &form)
Constructor.
Definition: UFC.cpp:33
ufc::interior_facet_integral * get_interior_facet_integral(std::size_t domain)
Definition: UFC.h:217
const ufc::form & form
Form.
Definition: UFC.h:297
double ** macro_w()
Definition: UFC.h:110
ufc::exterior_facet_integral * get_exterior_facet_integral(std::size_t domain)
Definition: UFC.h:202
const double *const * macro_w() const
Definition: UFC.h:105
Definition: Extrapolation.h:34
A Cell is a MeshEntity of topological codimension 0.
Definition: Cell.h:42
ufc::overlap_integral * get_overlap_integral(std::size_t domain)
Definition: UFC.h:285
void update(const Cell &cell, const std::vector< double > &coordinate_dofs0, const ufc::cell &ufc_cell, const std::vector< bool > &enabled_coefficients)
Update current cell.
Definition: UFC.cpp:156
ufc::custom_integral * get_custom_integral(std::size_t domain)
Definition: UFC.h:246
void init(const Form &form)
Initialise memory.
Definition: UFC.cpp:52
ufc::interface_integral * get_interface_integral(std::size_t domain)
Definition: UFC.h:272
ufc::cutcell_integral * get_cutcell_integral(std::size_t domain)
Definition: UFC.h:259
std::vector< double > A
Local tensor.
Definition: UFC.h:302
ufc::cell_integral * get_cell_integral(std::size_t domain)
Definition: UFC.h:187
~UFC()
Destructor.
Definition: UFC.cpp:47
std::vector< double > macro_A
Local tensor for macro element.
Definition: UFC.h:308
const double *const * w() const
Pointer to coefficient data. Used to support UFC interface.
Definition: UFC.h:95
double ** w()
Definition: UFC.h:100
const Form & dolfin_form
The form.
Definition: UFC.h:328