User defined dirichlet condition, for which the user can work with an entire field. The type stores a separate dummy field field_bc, which is passed to the user routine and can be populated with arbitrary values. The boundary condition then copy-pastes these values to the actual solution field using the mask of the boundary condition. So, in the end, only the relevant boundary values are updated.  
 More...
 | 
| procedure, pass(this)  | init_field (this, bc_name) | 
|   | Constructor.  
  | 
|   | 
| procedure, pass(this)  | apply_scalar (this, x, n, t, tstep) | 
|   | Apply scalar by performing a masked copy.  
  | 
|   | 
| procedure, pass(this)  | apply_vector (this, x, y, z, n, t, tstep) | 
|   | (No-op) Apply vector.  
  | 
|   | 
| procedure, pass(this)  | apply_vector_dev (this, x_d, y_d, z_d, t, tstep) | 
|   | (No-op) Apply vector (device).  
  | 
|   | 
| procedure, pass(this)  | apply_scalar_dev (this, x_d, t, tstep) | 
|   | Apply scalar (device).  
  | 
|   | 
| procedure, pass(this)  | free (this) | 
|   | Destructor.  
  | 
|   | 
| procedure, pass(this)  | init_base (this, coef) | 
|   | Constructor.  
  | 
|   | 
| procedure, pass(this)  | free_base (this) | 
|   | Destructor.  
  | 
|   | 
| procedure, pass(this)  | mark_facet (this, facet, el) | 
|   | Mark a facet on an element as part of the boundary condition.  
  | 
|   | 
| procedure, pass(this)  | mark_facets (this, facet_list) | 
|   | Mark all facets from a (facet, element) tuple list.  
  | 
|   | 
| procedure, pass(this)  | mark_zones_from_list (this, bc_zones, bc_key, bc_labels) | 
|   | Mark all facets from a list of zones, also marks type of bc in the mesh.  
  | 
|   | 
| procedure, pass(this)  | mark_zone (this, bc_zone) | 
|   | Mark all facets from a zone.  
  | 
|   | 
| procedure, pass(this)  | finalize (this) | 
|   | Finalize the construction of the bc by populting the msk and facet arrays.  
  | 
|   | 
| procedure(bc_apply_scalar), deferred, pass  | apply_scalar (this, x, n, t, tstep) | 
|   | Apply the boundary condition to a scalar field.  
  | 
|   | 
| procedure(bc_apply_vector), deferred, pass  | apply_vector (this, x, y, z, n, t, tstep) | 
|   | Apply the boundary condition to a vector field.  
  | 
|   | 
| procedure(bc_apply_scalar_dev), deferred, pass  | apply_scalar_dev (this, x_d, t, tstep) | 
|   | Device version of apply_scalar.  
  | 
|   | 
| procedure(bc_apply_vector_dev), deferred, pass  | apply_vector_dev (this, x_d, y_d, z_d, t, tstep) | 
|   | Device version of apply_vector.  
  | 
|   | 
| procedure(bc_destructor), deferred, pass  | free (this) | 
|   | Destructor.  
  | 
|   | 
 | 
| type(field_t)  | field_bc | 
|   | A dummy field which can be manipulated by the user to set the boundary values.  
  | 
|   | 
| type(field_list_t)  | field_list | 
|   | A field list, which just stores field_bc, for convenience.  
  | 
|   | 
| integer, dimension(:), allocatable  | msk | 
|   | The linear index of each node in each boundary facet.  
  | 
|   | 
| integer, dimension(:), allocatable  | facet | 
|   | A list of facet ids (1 to 6), one for each element in msk.  
  | 
|   | 
| type(dofmap_t), pointer  | dof | 
|   | Map of degrees of freedom.  
  | 
|   | 
| type(coef_t), pointer  | coef | 
|   | SEM coefficients.  
  | 
|   | 
| type(mesh_t), pointer  | msh | 
|   | The mesh.  
  | 
|   | 
| type(space_t), pointer  | xh | 
|   | The function space.  
  | 
|   | 
| type(stack_i4t2_t)  | marked_facet | 
|   | Index tuples (facet, element) marked as part of the boundary condition.  
  | 
|   | 
| type(c_ptr)  | msk_d = C_NULL_PTR | 
|   | Device pointer for msk.  
  | 
|   | 
| type(c_ptr)  | facet_d = C_NULL_PTR | 
|   | Device pointer for facet.  
  | 
|   | 
- Note
 - Would be neat to add another class that contains all three dirichlet bcs for the velocity, this bc would then implement apply_vector. 
 
Definition at line 61 of file field_dirichlet.f90.