ffc.uflacs.backends.ufc package

Submodules

ffc.uflacs.backends.ufc.coordinate_mapping module

ffc.uflacs.backends.ufc.coordinate_mapping.adj_expr_2x2(A)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.adj_expr_3x3(A)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.codet_nn(A, rows, cols)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.cross_expr(a, b)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.det_22(B, i, j, k, l)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.det_nn(A, n)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.generate_accumulation_loop(dst, expr, indices)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.generate_assign_inverse(L, K, J, detJ, gdim, tdim)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.generate_compute_ATA(L, ATA, A, m, n, index_prefix='')[source]

Generate code to declare and compute ATA[i,j] = sum_k A[k,i]*A[k,j] with given A shaped (m,n).

ffc.uflacs.backends.ufc.coordinate_mapping.generate_cross_decl(c, a, b)[source]
ffc.uflacs.backends.ufc.coordinate_mapping.pdet_m1(L, A, m)[source]
class ffc.uflacs.backends.ufc.coordinate_mapping.ufc_coordinate_mapping[source]

Bases: ffc.uflacs.backends.ufc.generator.ufc_generator

cell_shape(L, ir)[source]
compute_geometry(L, ir)[source]
compute_jacobian_determinants(L, ir)[source]
compute_jacobian_inverses(L, ir)[source]
compute_jacobians(L, ir)[source]
compute_physical_coordinates(L, ir)[source]
compute_reference_coordinates(L, ir)[source]
create_coordinate_dofmap(L, ir)[source]
create_coordinate_finite_element(L, ir)[source]
geometric_dimension(L, ir)[source]

Default implementation of returning geometric dimension fetched from ir.

topological_dimension(L, ir)[source]

Default implementation of returning topological dimension fetched from ir.

ffc.uflacs.backends.ufc.dofmap module

class ffc.uflacs.backends.ufc.dofmap.ufc_dofmap[source]

Bases: ffc.uflacs.backends.ufc.generator.ufc_generator

create_sub_dofmap(L, ir)[source]
global_dimension(L, ir)[source]
needs_mesh_entities(L, ir)[source]
num_element_dofs(L, ir)[source]
num_entity_closure_dofs(L, ir)[source]
num_entity_dofs(L, ir)[source]
num_facet_dofs(L, ir)[source]
num_sub_dofmaps(L, ir)[source]
tabulate_dofs(L, ir)[source]
tabulate_entity_closure_dofs(L, ir)[source]
tabulate_entity_dofs(L, ir)[source]
tabulate_facet_dofs(L, ir)[source]
topological_dimension(L, ir)[source]

Default implementation of returning topological dimension fetched from ir.

ffc.uflacs.backends.ufc.evaluatebasis module

Work in progress translation of FFC evaluatebasis code to uflacs CNodes format.

ffc.uflacs.backends.ufc.evaluatebasis.generate_evaluate_reference_basis(L, data)[source]

Generate code to evaluate element basisfunctions at an arbitrary point on the reference element.

The value(s) of the basisfunction is/are computed as in FIAT as the dot product of the coefficients (computed at compile time) and basisvalues which are dependent on the coordinate and thus have to be computed at run time.

The function should work for all elements supported by FIAT, but it remains untested for tensor valued elements.

This code is adapted from code in FFC which computed the basis from physical coordinates, and also to use UFLACS utilities.

The FFC code has a comment “From FIAT_NEW.polynomial_set.tabulate()”.

ffc.uflacs.backends.ufc.finite_element module

ffc.uflacs.backends.ufc.finite_element.affine_weights(dim)[source]

Compute coefficents for mapping from reference to physical element

class ffc.uflacs.backends.ufc.finite_element.ufc_finite_element[source]

Bases: ffc.uflacs.backends.ufc.generator.ufc_generator

cell_shape(L, ir)[source]
create_sub_element(L, ir)[source]
degree(L, ir)[source]
evaluate_basis(L, ir)[source]
evaluate_basis_all(L, ir)[source]
evaluate_basis_derivatives(L, ir)[source]
evaluate_basis_derivatives_all(L, ir)[source]
evaluate_dof(L, ir)[source]
evaluate_dofs(L, ir)[source]

Generate code for evaluate_dofs.

evaluate_reference_basis(L, ir)[source]
evaluate_reference_basis_derivatives(L, ir)[source]
family(L, ir)[source]
geometric_dimension(L, ir)[source]
interpolate_vertex_values(L, ir)[source]
num_sub_elements(L, ir)[source]
reference_value_dimension(L, ir)[source]
reference_value_rank(L, ir)[source]
reference_value_size(L, ir)[source]
space_dimension(L, ir)[source]
tabulate_dof_coordinates(L, ir)[source]
topological_dimension(L, ir)[source]
value_dimension(L, ir)[source]
value_rank(L, ir)[source]
value_size(L, ir)[source]

ffc.uflacs.backends.ufc.form module

ffc.uflacs.backends.ufc.form.add_ufc_form_integral_methods(cls)[source]

This function generates methods on the class it decorates, for each integral name template and for each integral type.

This allows implementing e.g. create_###_integrals once in the decorated class as ‘_create_foo_integrals’, and this function will expand that implementation into ‘create_cell_integrals’, ‘create_exterior_facet_integrals’, etc.

Name templates are taken from ‘integral_name_templates’ and ‘ufc_integral_types’.

class ffc.uflacs.backends.ufc.form.ufc_form[source]

Bases: ffc.uflacs.backends.ufc.generator.ufc_generator

create_cell_integral(L, ir, integral_type='cell', declname='create_cell_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_cell_integral().

create_coordinate_dofmap(L, ir)[source]
create_coordinate_finite_element(L, ir)[source]
create_coordinate_mapping(L, ir)[source]
create_custom_integral(L, ir, integral_type='custom', declname='create_custom_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_custom_integral().

create_cutcell_integral(L, ir, integral_type='cutcell', declname='create_cutcell_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_cutcell_integral().

create_default_cell_integral(L, ir, integral_type='cell', declname='create_default_cell_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_cell_integral().

create_default_custom_integral(L, ir, integral_type='custom', declname='create_default_custom_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_custom_integral().

create_default_cutcell_integral(L, ir, integral_type='cutcell', declname='create_default_cutcell_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_cutcell_integral().

create_default_exterior_facet_integral(L, ir, integral_type='exterior_facet', declname='create_default_exterior_facet_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_exterior_facet_integral().

create_default_interface_integral(L, ir, integral_type='interface', declname='create_default_interface_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_interface_integral().

create_default_interior_facet_integral(L, ir, integral_type='interior_facet', declname='create_default_interior_facet_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_interior_facet_integral().

create_default_overlap_integral(L, ir, integral_type='overlap', declname='create_default_overlap_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_overlap_integral().

create_default_vertex_integral(L, ir, integral_type='vertex', declname='create_default_vertex_integral', impl=<function ufc_form._create_default_foo_integral>)

Return implementation of ufc::form::create_default_vertex_integral().

create_dofmap(L, ir)[source]
create_exterior_facet_integral(L, ir, integral_type='exterior_facet', declname='create_exterior_facet_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_exterior_facet_integral().

create_finite_element(L, ir)[source]
create_interface_integral(L, ir, integral_type='interface', declname='create_interface_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_interface_integral().

create_interior_facet_integral(L, ir, integral_type='interior_facet', declname='create_interior_facet_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_interior_facet_integral().

create_overlap_integral(L, ir, integral_type='overlap', declname='create_overlap_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_overlap_integral().

create_vertex_integral(L, ir, integral_type='vertex', declname='create_vertex_integral', impl=<function ufc_form._create_foo_integral>)

Return implementation of ufc::form::create_vertex_integral().

geometric_dimension(L, ir)[source]

Default implementation of returning geometric dimension fetched from ir.

has_cell_integrals(L, ir, integral_type='cell', declname='has_cell_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_cell_integrals().

has_custom_integrals(L, ir, integral_type='custom', declname='has_custom_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_custom_integrals().

has_cutcell_integrals(L, ir, integral_type='cutcell', declname='has_cutcell_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_cutcell_integrals().

has_exterior_facet_integrals(L, ir, integral_type='exterior_facet', declname='has_exterior_facet_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_exterior_facet_integrals().

has_interface_integrals(L, ir, integral_type='interface', declname='has_interface_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_interface_integrals().

has_interior_facet_integrals(L, ir, integral_type='interior_facet', declname='has_interior_facet_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_interior_facet_integrals().

has_overlap_integrals(L, ir, integral_type='overlap', declname='has_overlap_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_overlap_integrals().

has_vertex_integrals(L, ir, integral_type='vertex', declname='has_vertex_integrals', impl=<function ufc_form._has_foo_integrals>)

Return implementation of ufc::form::has_vertex_integrals().

max_cell_subdomain_id(L, ir, integral_type='cell', declname='max_cell_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_cell_subdomain_id().

max_custom_subdomain_id(L, ir, integral_type='custom', declname='max_custom_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_custom_subdomain_id().

max_cutcell_subdomain_id(L, ir, integral_type='cutcell', declname='max_cutcell_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_cutcell_subdomain_id().

max_exterior_facet_subdomain_id(L, ir, integral_type='exterior_facet', declname='max_exterior_facet_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_exterior_facet_subdomain_id().

max_interface_subdomain_id(L, ir, integral_type='interface', declname='max_interface_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_interface_subdomain_id().

max_interior_facet_subdomain_id(L, ir, integral_type='interior_facet', declname='max_interior_facet_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_interior_facet_subdomain_id().

max_overlap_subdomain_id(L, ir, integral_type='overlap', declname='max_overlap_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_overlap_subdomain_id().

max_vertex_subdomain_id(L, ir, integral_type='vertex', declname='max_vertex_subdomain_id', impl=<function ufc_form._max_foo_subdomain_id>)

Return implementation of ufc::form::max_vertex_subdomain_id().

num_coefficients(L, ir)[source]
original_coefficient_position(L, ir)[source]
rank(L, ir)[source]
topological_dimension(L, ir)[source]

Default implementation of returning topological dimension fetched from ir.

ffc.uflacs.backends.ufc.generator module

class ffc.uflacs.backends.ufc.generator.ufc_generator(basename)[source]

Bases: object

Common functionality for code generators producing ufc classes.

The generate function is the driver for generating code for a class. It automatically extracts template keywords and inserts the results from calls to self.<keyword>(language, ir), or the value of ir[keyword] if there is no self.<keyword>.

classname(L, ir)[source]

Return classname.

constructor(L, ir)[source]

Return empty string. Override in classes that need constructor.

constructor_arguments(L, ir)[source]

Return empty string. Override in classes that need constructor.

create(L, ir)[source]

Default implementation of creating a new object of the same type.

destructor(L, ir)[source]

Return empty string. Override in classes that need destructor.

generate(L, ir, snippets=None)[source]

Return composition of templates with generated snippets.

generate_snippets(L, ir)[source]

Generate code snippets for each keyword found in templates.

initializer_list(L, ir)[source]

Return empty string. Override in classes that need constructor.

members(L, ir)[source]

Return empty string. Override in classes that need members.

signature(L, ir)[source]

Default implementation of returning signature string fetched from ir.

ffc.uflacs.backends.ufc.generators module

ffc.uflacs.backends.ufc.integrals module

class ffc.uflacs.backends.ufc.integrals.ufc_cell_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_custom_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

num_cells(L, ir)[source]
class ffc.uflacs.backends.ufc.integrals.ufc_cutcell_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_exterior_facet_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_integral(integral_type)[source]

Bases: ffc.uflacs.backends.ufc.generator.ufc_generator

enabled_coefficients(L, ir)[source]
tabulate_tensor(L, ir)[source]
tabulate_tensor_comment(L, ir)[source]
class ffc.uflacs.backends.ufc.integrals.ufc_interface_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_interior_facet_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_overlap_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

class ffc.uflacs.backends.ufc.integrals.ufc_vertex_integral[source]

Bases: ffc.uflacs.backends.ufc.integrals.ufc_integral

ffc.uflacs.backends.ufc.templates module

ffc.uflacs.backends.ufc.templates.extract_keywords(template)[source]

ffc.uflacs.backends.ufc.utils module

ffc.uflacs.backends.ufc.utils.generate_return_new(L, classname, factory)[source]
ffc.uflacs.backends.ufc.utils.generate_return_new_switch(L, i, classnames, args=None, factory=False)[source]

Module contents

Backend for generating UFC code.