ply_split_element_2D_test Subroutine

private subroutine ply_split_element_2D_test(nModes, success)

Testing the 2D splitting.

In two dimensions we only check the downsized polynomial splitting (child_degree <= parent_degree), upsized splitting is checked for 1D operations already. For child_degree == parent_degree the resulting polynomials are probed at a set of random points to ensure the polynomials coincide with the parent polynomial. For those, where modes are cut off, we check the integral mean to be maintained.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: nModes

Number of modes in the (1D) polynomials to use in the check.

logical, intent(out) :: success

Indication whether the tests were completed successfully.


Calls

proc~~ply_split_element_2d_test~~CallsGraph proc~ply_split_element_2d_test ply_split_element_2D_test proc~ply_legendre_1d ply_legendre_1D proc~ply_split_element_2d_test->proc~ply_legendre_1d proc~ply_split_element_2d ply_split_element_2D proc~ply_split_element_2d_test->proc~ply_split_element_2d proc~ply_split_element_init ply_split_element_init proc~ply_split_element_2d_test->proc~ply_split_element_init proc~ply_split_element_singled ply_split_element_singleD proc~ply_split_element_2d->proc~ply_split_element_singled proc~ply_split_legendre_matrix ply_split_legendre_matrix proc~ply_split_element_init->proc~ply_split_legendre_matrix proc~beta beta proc~ply_split_legendre_matrix->proc~beta proc~alpha_beta alpha_beta proc~ply_split_legendre_matrix->proc~alpha_beta proc~alpha_frac alpha_frac proc~ply_split_legendre_matrix->proc~alpha_frac proc~alpha alpha proc~ply_split_legendre_matrix->proc~alpha

Called by

proc~~ply_split_element_2d_test~~CalledByGraph proc~ply_split_element_2d_test ply_split_element_2D_test proc~ply_split_element_test ply_split_element_test proc~ply_split_element_test->proc~ply_split_element_2d_test

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: parentModes
integer, private :: childmodes
integer, private :: iPoint
integer, private :: iElem
integer, private :: iMode
real(kind=rk), private :: xi(nModes,2)
real(kind=rk), private :: x_southwest(nModes,2)
real(kind=rk), private :: x_southeast(nModes,2)
real(kind=rk), private :: x_northwest(nModes,2)
real(kind=rk), private :: x_northeast(nModes,2)
real(kind=rk), private :: legchild(nModes,nModes,2)
real(kind=rk), private :: legsouthwest(nModes,nModes,2)
real(kind=rk), private :: legsoutheast(nModes,nModes,2)
real(kind=rk), private :: legnorthwest(nModes,nModes,2)
real(kind=rk), private :: legnortheast(nModes,nModes,2)
real(kind=rk), private :: rootvaly(nModes,4)
real(kind=rk), private :: rootval(nModes,4)
real(kind=rk), private :: childval
real(kind=rk), private :: childvaly(nModes)
real(kind=rk), private, allocatable:: rootelem(:,:)
real(kind=rk), private, allocatable:: childelem(:,:)
real(kind=rk), private :: tolerance