45 use,
intrinsic :: iso_fortran_env
60 integer,
intent(in) :: dim
61 integer,
intent(in) :: order
62 real(real64),
intent(in) :: h(:)
63 type(nl_operator_t),
intent(inout) :: lapl
64 real(real64),
optional,
intent(in) :: alpha
67 real(real64) :: alpha_, kmax
68 real(real64),
allocatable :: fp(:)
73 if (
present(alpha)) alpha_ = alpha
74 kmax =
m_pi**2 * alpha_
76 safe_allocate(fp(1:order+1))
87 fp(2) =
m_one/12.0_real64 + 15.0_real64*kmax/64.0_real64
89 fp(4) = -
m_one/12.0_real64 + kmax/64.0_real64
91 fp(1) = -77.0_real64/72.0_real64 - 35.0_real64*kmax/128.0_real64
92 fp(2) = 8.0_real64/45.0_real64 + 7.0_real64*kmax/32.0_real64
93 fp(3) = 23.0_real64/45.0_real64 - 7.0_real64*kmax/64.0_real64
94 fp(4) = -8.0_real64/45.0_real64 + kmax/32.0_real64
95 fp(5) = 17.0_real64/720.0_real64 - kmax/256.0_real64
97 fp(1) = -449.0_real64/360.0_real64 - 63.0_real64*kmax/256.0_real64
98 fp(2) =
m_four/15.0_real64 + 105.0_real64*kmax/512.0_real64
99 fp(3) = 59.0_real64/105.0_real64 - 15.0_real64*kmax/128.0_real64
100 fp(4) = -82.0_real64/315.0_real64 + 45.0_real64*kmax/1024.0_real64
101 fp(5) = 311.0_real64/5040.0_real64 -
m_five*kmax/512.0_real64
102 fp(6) = -
m_two/315.0_real64 + kmax/1024.0_real64
104 fp(1) = -2497.0_real64/1800.0_real64 - 231.0_real64*kmax/1024.0_real64
105 fp(2) = 26.0_real64/75.0_real64 + 99.0_real64*kmax/512.0_real64
106 fp(3) = 493.0_real64/840.0_real64 - 495.0_real64*kmax/4096.0_real64
107 fp(4) = -103.0_real64/315.0_real64 + 55.0_real64*kmax/1024.0_real64
108 fp(5) = 2647.0_real64/25200.0_real64 - 33.0_real64*kmax/2048.0_real64
109 fp(6) = -31.0_real64/1575.0_real64 +
m_three*kmax/1024.0_real64
110 fp(7) =
m_one/600.0_real64 - kmax/4096.0_real64
113 lapl%w(1,:) = fp(1)*sum(1/h(1:dim)**2)
119 lapl%w(k,:) = fp(-j+1) / h(i)**2
124 lapl%w(k,:) = fp( j+1) / h(i)**2
128 safe_deallocate_a(fp)
real(real64), parameter, public m_two
real(real64), parameter, public m_four
real(real64), parameter, public m_pi
some mathematical constants
real(real64), parameter, public m_half
real(real64), parameter, public m_one
real(real64), parameter, public m_three
real(real64), parameter, public m_five
This module defines non-local operators.
Implements the variational discretization of the Laplacian as proposed by P. Maragakis,...
subroutine, public stencil_variational_coeff_lapl(dim, order, h, lapl, alpha)