Octopus
|
Implements the variational discretization of the Laplacian as proposed by P. Maragakis, J. Soler, and E. Kaxiras, PRB 64, 193101 (2001) More...
Implements the variational discretization of the Laplacian as proposed by P. Maragakis, J. Soler, and E. Kaxiras, PRB 64, 193101 (2001)
However, we have introduced a possible variation: incorporating into the expression of the Laplacian a high-frequency filter. This in fact goes against the spirit of the work of Maragakis et al., which attempts to increase the weight of the high frequencies over the conventional finite-difference scheme. But the mathematical machinery used in that work to generate the coefficient is ideal to add a frequency filter. The filter is decided by the optional parameter alpha: The highest frequency allowed by the filter will be alpha*k, where k is the Nyquist frequency of the grid. Thus alpha = 1 means no filter at all.
The coefficients should be calculated, and not hard-coded, in a subroutine similar to weights in the math module. It should also allow getting the coefficients for the gradient.
This module should look like stencil_star, allowing for coefficients on non-uniform grids.
Functions/Subroutines | |
subroutine, public | stencil_variational_coeff_lapl (dim, order, h, lapl, alpha) |
subroutine, public stencil_variational_oct_m::stencil_variational_coeff_lapl | ( | integer, intent(in) | dim, |
integer, intent(in) | order, | ||
real(real64), dimension(:), intent(in) | h, | ||
type(nl_operator_t), intent(inout) | lapl, | ||
real(real64), intent(in), optional | alpha | ||
) |
[in] | h | h(dim) |
Definition at line 152 of file stencil_variational.F90.