A Neumann boundary condition. Sets the flux of the field to the chosen values.
More...
|
| procedure, pass(this) | apply_scalar (this, x, n, time, strong) |
| | Boundary condition apply for a generic Neumann condition to a vector x.
|
| |
| procedure, pass(this) | apply_vector (this, x, y, z, n, time, strong) |
| | Boundary condition apply for a generic Neumann condition to vectors x, y and z.
|
| |
| procedure, pass(this) | apply_scalar_dev (this, x_d, time, strong, strm) |
| | Boundary condition apply for a generic Neumann condition to a vector x (device version)
|
| |
| procedure, pass(this) | apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm) |
| | Boundary condition apply for a generic Neumann condition to vectors x, y and z (device version)
|
| |
| procedure, pass(this) | init (this, coef, json) |
| | Constructor.
|
| |
| procedure, pass(this) | neumann_init_from_components_array (this, coef, flux) |
| | Constructor from components, one flux value per component.
|
| |
| procedure, pass(this) | neumann_init_from_components_single (this, coef, flux) |
| | Constructor from components, single flux for the single-component case.
|
| |
| generic | init_from_components (this, coef, flux) |
| | Constructor from components, one flux value per component.
|
| |
| generic | init_from_components (this, coef, flux) |
| | Constructor from components, single flux for the single-component case.
|
| |
| procedure, pass(this) | set_flux_scalar (this, flux, comp) |
| | Set the flux using a scalar.
|
| |
| procedure, pass(this) | set_flux_array (this, flux, comp) |
| | Set the flux using an array.
|
| |
| generic | set_flux (this, flux, comp) |
| | Generic interface for setting the flux.
|
| |
| generic | set_flux (this, flux, comp) |
| | Generic interface for setting the flux.
|
| |
| procedure, pass(this) | free (this) |
| | Destructor.
|
| |
| procedure, pass(this) | finalize (this, only_facets) |
| | Finalize.
|
| |
| 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_zone (this, bc_zone) |
| | Mark all facets from a zone.
|
| |
| procedure, pass(this) | finalize_base (this, only_facets) |
| | Finalize the construction of the bc by populating the msk and facet arrays.
|
| |
| procedure, pass(this) | apply_scalar_generic (this, x, time, strong, strm) |
| | Apply the boundary condition to a scalar field. Dispatches to the CPU or the device version.
|
| |
| procedure, pass(this) | apply_vector_generic (this, x, y, z, time, strong, strm) |
| | Apply the boundary condition to a vector field. Dispatches to the CPU or the device version.
|
| |
| procedure, pass(this) | debug_mask_ (this, file_name) |
| | Write a field showing the mask of the bcs.
|
| |
| procedure(bc_apply_scalar), deferred, pass | apply_scalar (this, x, n, time, strong) |
| | Apply the boundary condition to a scalar field on the CPU.
|
| |
| procedure(bc_apply_vector), deferred, pass | apply_vector (this, x, y, z, n, time, strong) |
| | Apply the boundary condition to a vector field on the CPU.
|
| |
| procedure(bc_apply_scalar_dev), deferred, pass | apply_scalar_dev (this, x_d, time, strong, strm) |
| | Device version of apply_scalar on the device.
|
| |
| procedure(bc_apply_vector_dev), deferred, pass | apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm) |
| | Device version of apply_vector on the device.
|
| |
| procedure(bc_destructor), deferred, pass | free (this) |
| | Deferred destructor.
|
| |
| procedure(bc_constructor), deferred, pass | init (this, coef, json) |
| | Deferred constructor.
|
| |
| procedure(bc_finalize), deferred, pass | finalize (this, only_facets) |
| | Deferred finalizer.
|
| |
|
| type(vector_t), dimension(:), allocatable | flux |
| | The flux values at the boundary. Each vector in the array corresponds to a component of the flux.
|
| |
| logical | uniform_0 = .false. |
| | Flag for whether we have a homogeneous Neumann condition, i.e. "do nothing".
|
| |
| 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 => null() |
| | Map of degrees of freedom.
|
| |
| type(coef_t), pointer | coef => null() |
| | SEM coefficients.
|
| |
| type(mesh_t), pointer | msh => null() |
| | The mesh.
|
| |
| type(space_t), pointer | xh => null() |
| | 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.
|
| |
| logical | strong = .true. |
| | Wether the bc is strongly enforced. Essentially valid for all Dirichlet types of bcs. These need to be masked out for solvers etc, so that values are not affected. Mixed bcs are, by convention, weak.
|
| |
| logical | updated = .false. |
| | Indicates wether the bc has been updated, for those BCs that need additional computations.
|
| |
The condition is imposed weakly by adding an appropriate source term to the right-hand-side. At construction time, we check if the prescribed flux is zero and if so, the condition just does nothing. Setting the flux using the set_flux routine, automatically removes this assumption.
Definition at line 60 of file neumann.f90.