DOLFIN
DOLFIN C++ interface
|
Base class for UFC code generated by FFC for DOLFIN with option -l. More...
#include <Form.h>
Public Member Functions | |
Form (std::size_t rank, std::size_t num_coefficients) | |
Form (std::shared_ptr< const ufc::form > ufc_form, std::vector< std::shared_ptr< const FunctionSpace >> function_spaces) | |
virtual | ~Form () |
Destructor. | |
std::size_t | rank () const |
std::size_t | num_coefficients () const |
std::size_t | original_coefficient_position (std::size_t i) const |
std::vector< std::size_t > | coloring (std::size_t entity_dim) const |
void | set_mesh (std::shared_ptr< const Mesh > mesh) |
std::shared_ptr< const Mesh > | mesh () const |
std::shared_ptr< const FunctionSpace > | function_space (std::size_t i) const |
std::vector< std::shared_ptr< const FunctionSpace > > | function_spaces () const |
void | set_coefficient (std::size_t i, std::shared_ptr< const GenericFunction > coefficient) |
void | set_coefficient (std::string name, std::shared_ptr< const GenericFunction > coefficient) |
void | set_coefficients (std::map< std::string, std::shared_ptr< const GenericFunction >> coefficients) |
void | set_some_coefficients (std::map< std::string, std::shared_ptr< const GenericFunction >> coefficients) |
std::shared_ptr< const GenericFunction > | coefficient (std::size_t i) const |
std::shared_ptr< const GenericFunction > | coefficient (std::string name) const |
std::vector< std::shared_ptr< const GenericFunction > > | coefficients () const |
virtual std::size_t | coefficient_number (const std::string &name) const |
virtual std::string | coefficient_name (std::size_t i) const |
std::shared_ptr< const MeshFunction< std::size_t > > | cell_domains () const |
std::shared_ptr< const MeshFunction< std::size_t > > | exterior_facet_domains () const |
std::shared_ptr< const MeshFunction< std::size_t > > | interior_facet_domains () const |
std::shared_ptr< const MeshFunction< std::size_t > > | vertex_domains () const |
void | set_cell_domains (std::shared_ptr< const MeshFunction< std::size_t >> cell_domains) |
void | set_exterior_facet_domains (std::shared_ptr< const MeshFunction< std::size_t >> exterior_facet_domains) |
void | set_interior_facet_domains (std::shared_ptr< const MeshFunction< std::size_t >> interior_facet_domains) |
void | set_vertex_domains (std::shared_ptr< const MeshFunction< std::size_t >> vertex_domains) |
std::shared_ptr< const ufc::form > | ufc_form () const |
void | check () const |
Check function spaces and coefficients. | |
Equation | operator== (const Form &rhs) const |
Comparison operator, returning equation lhs == rhs. | |
Equation | operator== (int rhs) const |
Comparison operator, returning equation lhs == 0. | |
Public Member Functions inherited from dolfin::Hierarchical< Form > | |
Hierarchical (Form &self) | |
Constructor. | |
virtual | ~Hierarchical () |
Destructor. | |
std::size_t | depth () const |
bool | has_parent () const |
bool | has_child () const |
Form & | parent () |
const Form & | parent () const |
Return parent in hierarchy (const version). | |
std::shared_ptr< Form > | parent_shared_ptr () |
std::shared_ptr< const Form > | parent_shared_ptr () const |
Return shared pointer to parent (const version). | |
Form & | child () |
const Form & | child () const |
Return child in hierarchy (const version). | |
std::shared_ptr< Form > | child_shared_ptr () |
std::shared_ptr< const Form > | child_shared_ptr () const |
Return shared pointer to child (const version). | |
Form & | root_node () |
const Form & | root_node () const |
Return root node object in hierarchy (const version). | |
std::shared_ptr< Form > | root_node_shared_ptr () |
std::shared_ptr< const Form > | root_node_shared_ptr () const |
Return shared pointer to root node object in hierarchy (const version). | |
Form & | leaf_node () |
const Form & | leaf_node () const |
Return leaf node object in hierarchy (const version). | |
std::shared_ptr< Form > | leaf_node_shared_ptr () |
std::shared_ptr< const Form > | leaf_node_shared_ptr () const |
Return shared pointer to leaf node object in hierarchy (const version). | |
void | set_parent (std::shared_ptr< Form > parent) |
Set parent. | |
void | clear_child () |
Clear child. | |
void | set_child (std::shared_ptr< Form > child) |
Set child. | |
const Hierarchical & | operator= (const Hierarchical &hierarchical) |
Assignment operator. | |
void | _debug () const |
Function useful for debugging the hierarchy. | |
Public Attributes | |
std::shared_ptr< const MeshFunction< std::size_t > > | dx |
Domain markers for cells. | |
std::shared_ptr< const MeshFunction< std::size_t > > | ds |
Domain markers for exterior facets. | |
std::shared_ptr< const MeshFunction< std::size_t > > | dS |
Domain markers for interior facets. | |
std::shared_ptr< const MeshFunction< std::size_t > > | dP |
Domain markers for vertices. | |
Protected Attributes | |
std::shared_ptr< const ufc::form > | _ufc_form |
std::vector< std::shared_ptr< const FunctionSpace > > | _function_spaces |
std::vector< std::shared_ptr< const GenericFunction > > | _coefficients |
std::shared_ptr< const Mesh > | _mesh |
Base class for UFC code generated by FFC for DOLFIN with option -l.
embed:rst:leading-slashes /// A note on the order of trial and test spaces: FEniCS numbers /// argument spaces starting with the leading dimension of the /// corresponding tensor (matrix). In other words, the test space is /// numbered 0 and the trial space is numbered 1. However, in order /// to have a notation that agrees with most existing finite element /// literature, in particular /// /// a = a(u, v) /// /// the spaces are numbered from right to /// /// a: V_1 x V_0 -> R /// /// .. note:: /// /// Figure out how to write this in math mode without it getting /// messed up in the Python version. /// /// This is reflected in the ordering of the spaces that should be /// supplied to generated subclasses. In particular, when a bilinear /// form is initialized, it should be initialized as /// /// .. code-block:: c++ /// /// a(V_1, V_0) = ... /// /// where ``V_1`` is the trial space and ``V_0`` is the test space. /// However, when a form is initialized by a list of argument spaces /// (the variable ``function_spaces`` in the constructors below, the /// list of spaces should start with space number 0 (the test space) /// and then space number 1 (the trial space). ///
Form::Form | ( | std::size_t | rank, |
std::size_t | num_coefficients | ||
) |
Create form of given rank with given number of coefficients
[in] | rank | (std::size_t) The rank. |
[in] | num_coefficients | (std::size_t) The number of coefficients. |
Form::Form | ( | std::shared_ptr< const ufc::form > | ufc_form, |
std::vector< std::shared_ptr< const FunctionSpace >> | function_spaces | ||
) |
Create form (shared data)
[in] | ufc_form | (ufc::form) The UFC form. |
[in] | function_spaces | (std::vector<FunctionSpace>) Vector of function spaces. |
std::shared_ptr< const MeshFunction< std::size_t > > Form::cell_domains | ( | ) | const |
Return cell domains (zero pointer if no domains have been specified)
std::shared_ptr< const GenericFunction > Form::coefficient | ( | std::size_t | i | ) | const |
Return coefficient with given number
[in] | i | (std::size_t) Index |
std::shared_ptr< const GenericFunction > Form::coefficient | ( | std::string | name | ) | const |
Return coefficient with given name
[in] | name | (std::string) The name. |
|
virtual |
Return the name of the coefficient with this number
[in] | i | (std::size_t) The number |
|
virtual |
Return the number of the coefficient with this name
[in] | name | (std::string) The name. |
std::vector< std::shared_ptr< const GenericFunction > > Form::coefficients | ( | ) | const |
Return all coefficients
std::vector< std::size_t > Form::coloring | ( | std::size_t | entity_dim | ) | const |
Return coloring type for colored assembly of form over a mesh entity of a given dimension
[in] | entity_dim | (std::size_t) Dimension. |
std::shared_ptr< const MeshFunction< std::size_t > > Form::exterior_facet_domains | ( | ) | const |
Return exterior facet domains (zero pointer if no domains have been specified)
std::shared_ptr< const FunctionSpace > Form::function_space | ( | std::size_t | i | ) | const |
Return function space for given argument
i | (std::size_t) Index |
std::vector< std::shared_ptr< const FunctionSpace > > Form::function_spaces | ( | ) | const |
Return function spaces for arguments
std::shared_ptr< const MeshFunction< std::size_t > > Form::interior_facet_domains | ( | ) | const |
Return interior facet domains (zero pointer if no domains have been specified)
std::shared_ptr< const Mesh > Form::mesh | ( | ) | const |
Extract common mesh from form
std::size_t Form::num_coefficients | ( | ) | const |
Return number of coefficients
std::size_t Form::original_coefficient_position | ( | std::size_t | i | ) | const |
Return original coefficient position for each coefficient (0 <= i < n)
std::size_t Form::rank | ( | ) | const |
Return rank of form (bilinear form = 2, linear form = 1, functional = 0, etc)
void Form::set_cell_domains | ( | std::shared_ptr< const MeshFunction< std::size_t >> | cell_domains | ) |
Set cell domains
[in] | cell_domains | (MeshFunction <std::size_t>) The cell domains. |
void Form::set_coefficient | ( | std::size_t | i, |
std::shared_ptr< const GenericFunction > | coefficient | ||
) |
Set coefficient with given number (shared pointer version)
[in] | i | (std::size_t) The given number. |
[in] | coefficient | (GenericFunction) The coefficient. |
void Form::set_coefficient | ( | std::string | name, |
std::shared_ptr< const GenericFunction > | coefficient | ||
) |
Set coefficient with given name (shared pointer version)
[in] | name | (std::string) The name. |
[in] | coefficient | (GenericFunction) The coefficient. |
void Form::set_coefficients | ( | std::map< std::string, std::shared_ptr< const GenericFunction >> | coefficients | ) |
Set all coefficients in given map. All coefficients in the given map, which may contain only a subset of the coefficients of the form, will be set.
[in] | coefficients | (std::map<std::string, GenericFunction>) The map of coefficients. |
void Form::set_exterior_facet_domains | ( | std::shared_ptr< const MeshFunction< std::size_t >> | exterior_facet_domains | ) |
Set exterior facet domains
[in] | exterior_facet_domains | (MeshFunction <std::size_t>) The exterior facet domains. |
void Form::set_interior_facet_domains | ( | std::shared_ptr< const MeshFunction< std::size_t >> | interior_facet_domains | ) |
Set interior facet domains
[in] | interior_facet_domains | (MeshFunction <std::size_t>) The interior facet domains. |
void Form::set_mesh | ( | std::shared_ptr< const Mesh > | mesh | ) |
void Form::set_some_coefficients | ( | std::map< std::string, std::shared_ptr< const GenericFunction >> | coefficients | ) |
Set some coefficients in given map. Each coefficient in the given map will be set, if the name of the coefficient matches the name of a coefficient in the form.
This is useful when reusing the same coefficient map for several forms, or when some part of the form has been outcommented (for testing) in the UFL file, which means that the coefficient and attaching it to the form does not need to be outcommented in a C++ program using code from the generated UFL file.
[in] | coefficients | (std::map<std::string, GenericFunction>) The map of coefficients. |
void Form::set_vertex_domains | ( | std::shared_ptr< const MeshFunction< std::size_t >> | vertex_domains | ) |
Set vertex domains
[in] | vertex_domains | (MeshFunction <std::size_t>) The vertex domains. |
std::shared_ptr< const ufc::form > Form::ufc_form | ( | ) | const |
std::shared_ptr< const MeshFunction< std::size_t > > Form::vertex_domains | ( | ) | const |
Return vertex domains (zero pointer if no domains have been specified)