|  | 
| template<typename S , typename X , typename  = std::enable_if_t<std::is_convertible_v<S, T>                               or std::is_convertible_v<S, std::span<const T>>>> requires std::is_convertible_v<std::remove_cvref_t<X>, std::vector<std::int32_t>>
 | 
|  | DirichletBC (const S &g, X &&dofs, std::shared_ptr< const FunctionSpace< U > > V) | 
|  | Create a representation of a Dirichlet boundary condition constrained by a scalar- or vector-valued constant. 
 | 
|  | 
| template<typename X > requires std::is_convertible_v<std::remove_cvref_t<X>, std::vector<std::int32_t>>
 | 
|  | DirichletBC (std::shared_ptr< const Constant< T > > g, X &&dofs, std::shared_ptr< const FunctionSpace< U > > V) | 
|  | Create a representation of a Dirichlet boundary condition constrained by a fem::Constant. 
 | 
|  | 
| template<typename X > requires std::is_convertible_v<std::remove_cvref_t<X>, std::vector<std::int32_t>>
 | 
|  | DirichletBC (std::shared_ptr< const Function< T, U > > g, X &&dofs) | 
|  | Create a representation of a Dirichlet boundary condition where the space being constrained is the same as the function that defines the constraint Function, i.e. share the same fem::FunctionSpace. 
 | 
|  | 
| template<typename X > | 
|  | DirichletBC (std::shared_ptr< const Function< T, U > > g, X &&V_g_dofs, std::shared_ptr< const FunctionSpace< U > > V) | 
|  | Create a representation of a Dirichlet boundary condition where the space being constrained and the function that defines the constraint values do not share the same fem::FunctionSpace. 
 | 
|  | 
|  | DirichletBC (const DirichletBC &bc)=default | 
|  | 
|  | DirichletBC (DirichletBC &&bc)=default | 
|  | 
|  | ~DirichletBC ()=default | 
|  | Destructor. 
 | 
|  | 
| DirichletBC & | operator= (const DirichletBC &bc)=default | 
|  | 
| DirichletBC & | operator= (DirichletBC &&bc)=default | 
|  | Move assignment operator. 
 | 
|  | 
| std::shared_ptr< const FunctionSpace< U > > | function_space () const | 
|  | 
| std::variant< std::shared_ptr< const Function< T, U > >, std::shared_ptr< const Constant< T > > > | value () const | 
|  | 
| std::pair< std::span< const std::int32_t >, std::int32_t > | dof_indices () const | 
|  | 
| void | set (std::span< T > x, std::optional< std::span< const T > > x0, T alpha=1) const | 
|  | Set entries in an array that are constrained by Dirichlet boundary conditions. 
 | 
|  | 
| void | mark_dofs (std::span< std::int8_t > markers) const | 
|  | Set markers[i] = trueif dofihas a boundary condition applied.
 | 
|  | 
template<
dolfinx::scalar T, std::floating_point U>
class dolfinx::fem::DirichletBC< T, U >
Object for setting (strong) Dirichlet boundary conditions 
\[u = g \ \text{on} \ G,\]
 where \(u\) is the solution to be computed, \(g\) is a function and \(G\) is a sub domain of the mesh.
A DirichletBC is specified by the function \(g\), the function space (trial space) and degrees of freedom to which the boundary condition applies. 
template<typename S , typename X , typename  = std::enable_if_t<std::is_convertible_v<S, T>                               or std::is_convertible_v<S, std::span<const T>>>> 
requires std::is_convertible_v<std::remove_cvref_t<X>, std::vector<std::int32_t>>
 
Create a representation of a Dirichlet boundary condition constrained by a scalar- or vector-valued constant. 
- Precondition
- dofsmust be sorted.
- Parameters
- 
  
    | [in] | g | The boundary condition value ( Tor convertible tostd::span<const T>) |  | [in] | dofs | Degree-of-freedom block indices to be constrained. The indices must be sorted. |  | [in] | V | The function space to be constrained |  
 
- Note
- Can be used only with point-evaluation elements. 
- 
The indices in dofsare for blocks, e.g. a block index corresponds to 3 degrees-of-freedom if the dofmap associated withghas block size 3.
- 
The size of of gmust be equal to the block size ifV. Use the Function version if this is not the case, e.g. for some mixed spaces.
 
 
  
  | 
        
          | void set | ( | std::span< T > | x, |  
          |  |  | std::optional< std::span< const T > > | x0, |  
          |  |  | T | alpha = 1 ) const |  | inline | 
 
Set entries in an array that are constrained by Dirichlet boundary conditions. 
Entries in x that are constrained by a Dirichlet boundary conditions are set to alpha * (x_bc - x0), where x_bc is the (interpolated) boundary condition value.
For elements with point-wise evaluated degrees-of-freedom, e.g. Lagrange elements, x_bc is the value of the boundary condition at the degree-of-freedom. For elements with moment degrees-of-freedom, x_bc is the value of the boundary condition interpolated into the finite element space.
If x includes ghosted entries (entries available on the calling rank but owned by another rank), ghosted entries constrained by a Dirichlet condition will also be set.
- Parameters
- 
  
    | [in,out] | x | Array to modify for Dirichlet boundary conditions. |  | [in] | x0 | Optional array used in computing the value to set. If not provided it is treated as zero. |  | [in] | alpha | Scaling to apply. |