ply_split_element_3D Subroutine

public subroutine ply_split_element_3D(parent_degree, child_degree, parent_data, child_data, ignore_highmodes)

Split three-dimensional elements of degree parent_degree into eight elements with polynomials of degree child_degree.


integer, intent(in) :: parent_degree

Polynomial degree in the parent element.

integer, intent(in) :: child_degree

Polynomial degree in the child elements.

real(kind=rk), intent(in) :: parent_data(:,:)

Polynomial data in the parent element. The first index describes the degrees of freedom. The second index refers to the elements to split.

real(kind=rk), intent(out) :: child_data(:,:)

Polynomial data in the child elements. The first index describes the degrees of freedom. The second index refers to the elements, there needs to be four times as many elements than in the parent_data.

Elements follow the ordering of the Z space filling curve.

logical, intent(in), optional :: ignore_highmodes

Whether to ignore high modes from the parent element.

This can be used as a simple lowpass filter by ignoring all higher modes from the parent element, that exceed the target polynomial degree. Thus, the polynomials are filtered before projection, instead of cutting them only of after refinement. Defaults to false (no filtering).


proc~~ply_split_element_3d~~CallsGraph proc~ply_split_element_3d ply_split_element_3D proc~ply_split_element_singled ply_split_element_singleD proc~ply_split_element_3d->proc~ply_split_element_singled

Called by

proc~~ply_split_element_3d~~CalledByGraph proc~ply_split_element_3d ply_split_element_3D proc~ply_split_element_3d_test ply_split_element_3D_test proc~ply_split_element_3d_test->proc~ply_split_element_3d proc~ply_split_element_test ply_split_element_test proc~ply_split_element_test->proc~ply_split_element_3d_test



real(kind=rk), private, allocatable:: ysplit(:,:)
real(kind=rk), private, allocatable:: zsplit(:,:)
logical, private :: ignore
integer, private :: pardofs
integer, private :: childdofs