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.