approximate_1D_jump Program

This is a small utility to approximate a discontinuity at a given location in the interval [-1,1].

The jump is located at a given point jota, and the target function is 0 for x <= jota and 1 for x > jota. The interval is subdivided by level bisections towards jota. Intervals for which the lower bound is smaller than jota are assumed to be 0, all others are 1. This interval values are used to determine the values at Chebyshev nodes and a FPT is done to find the Legendre modes.

Required settings are therefore: - jota (location of the jump) - level (number of bisections towards jota) - target polynomial degree - oversampling factor

These have to be provided as command line parameters in this order.

Resulting output is: - Interval subdivision - Approximated jump location - Chebyshev nodes - Legendre modes - L2-Error sqnorm = 2.0_rk / (2.0_rkiCoarse - 1.0_rk) jacobidetfinetocoarse = 0.5 const = anz_anzShift * jacobidetfinetocoarse / sqnorm sqnorm = 2.0_rk / (2.0_rkiCoarse - 1.0_rk) jacobidetfinetocoarse = 0.5 const = anz_anzShift * jacobidetfinetocoarse / sqnorm


Variables

Type Attributes Name Initial
character(len=32) :: argstring
real(kind=rk) :: jota
integer :: level
integer :: polydegree
integer :: ibis
integer :: ival
integer :: ipoint
integer :: imode
integer :: iCoarse
integer :: iFine
integer :: intmode
integer :: bis_lb
integer :: current
integer :: last
integer :: lastside
integer :: bpos
real(kind=rk) :: interval_jump
real(kind=rk) :: ofact
real(kind=rk) :: bis_half
real(kind=rk) :: x_point
real(kind=rk) :: cur_lb
real(kind=rk) :: ivldistance
real(kind=rk) :: l2err
real(kind=rk) :: optierr
real(kind=rk) :: voldiff
real(kind=rk), allocatable :: bisect(:)
real(kind=rk), allocatable :: nodal_data(:,:)
real(kind=rk), allocatable :: modal_data(:,:)
real(kind=rk), allocatable :: legmodes(:)
real(kind=rk), allocatable :: exact(:)
real(kind=rk), allocatable :: const1_left(:)
real(kind=rk), allocatable :: const1_right(:)
real(kind=rk), allocatable :: integral(:)
real(kind=rk), allocatable :: intatjota(:,:)
integer, allocatable :: ivcolor(:)
type(ply_prj_init_type) :: project
type(ply_poly_project_type) :: polypro
type(ply_modg_refine_type) :: refine
type(dyn_realarray_type) :: ivlen
character(len=10) :: method