mod_essential_boundaries Module

zeroing out the corresponding row and column. Depends on the matrix that is used.



Contents


Variables

TypeVisibilityAttributesNameInitial
character(len=5), private, parameter:: LEFT ="left"
character(len=6), private, parameter:: RIGHT ="right"
character(len=4), private, parameter:: EVEN ="even"
character(len=3), private, parameter:: ODD ="odd"

Functions

public function get_block_indices(sv_components, settings, edge, force_parity) result(idxs)

Arguments

TypeIntentOptionalAttributesName
type(sv_component_t), intent(in) :: sv_components(:)

array containing state vector components for which to retrieve indices

type(settings_t), intent(in) :: settings

settings object

character(len=*), intent(in) :: edge

edge for which to retrieve indices

character(len=*), intent(in), optional :: force_parity

parity is based on the basis functions unless forced through this argument

Return Value integer,allocatable, (:)

array containing the corresponding block indices

private function get_block_index_for_single_component(component, settings, edge, force_parity) result(idx)

Arguments

TypeIntentOptionalAttributesName
type(sv_component_t), intent(in) :: component
type(settings_t), intent(in) :: settings
character(len=*), intent(in) :: edge
character(len=*), intent(in), optional :: force_parity

Return Value integer

private function get_diagonal_factor(matrix) result(diagonal_factor)

Arguments

TypeIntentOptionalAttributesName
type(matrix_t), intent(in) :: matrix

Return Value complex(kind=dp)

private function get_odd_parity_from_basis_function_name(name) result(is_odd)

This relies on the behaviour of the basis functions. If a variable needs to be zero, then this is done by forcing the basis functions on that edge to zero. For both left and right edges the quadratic basis functions have a non-zero entry in their even rows/columns, whereas the cubic basis functions have a non-zero entry in their odd rows/columns. Concrete: - cubic, left: C2 is non-zero, zero out elements with spline(2) - cubic, right: C1 is non-zero, zero out elements with spline(1) - quad, left: Q4 is non-zero, zero out elements with spline(4) - quad, right: Q3 is non-zero, zero out elements with spline(3) See also ordening of a quadblock in mod_build_quadblock.

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: name

Return Value logical

private pure function needs_T_bounds(settings)

Checks if we need regularity conditions on temperature, this is the case if we have perpendicular thermal conduction.

Arguments

TypeIntentOptionalAttributesName
type(settings_t), intent(in) :: settings

Return Value logical

private pure function needs_noslip_left(settings)

Check if we need a no-slip condition on the left-hand side (i.e. viscosity). Does not apply on-axis for cylindrical unless two coaxial wall are present.

Arguments

TypeIntentOptionalAttributesName
type(settings_t), intent(in) :: settings

Return Value logical

private pure function needs_noslip_right(settings)

Check if we need a no-slip condition on the right-hand side (i.e. viscosity).

Arguments

TypeIntentOptionalAttributesName
type(settings_t), intent(in) :: settings

Return Value logical


Subroutines

public subroutine apply_essential_boundaries_left(matrix, settings)

Arguments

TypeIntentOptionalAttributesName
type(matrix_t), intent(inout) :: matrix
type(settings_t), intent(in) :: settings

public subroutine apply_essential_boundaries_right(matrix, settings)

Arguments

TypeIntentOptionalAttributesName
type(matrix_t), intent(inout) :: matrix
type(settings_t), intent(in) :: settings

private subroutine zero_out_row_and_col(matrix, idxs, limits)

Zeroes out the row and column corresponding to the given indices. Afterwards diagonal_factor is introduced in that row/column on the main diagonal.

Arguments

TypeIntentOptionalAttributesName
type(matrix_t), intent(inout) :: matrix

the matrix under consideration

integer, intent(in) :: idxs(:)

indices of the row and column to zero out

integer, intent(in) :: limits(2)

(start, end) limits of quadblock corresponding to (start, start):(end, end)