(git:58e3e09)
pw_spline_utils.F File Reference

Go to the source code of this file.

Modules

module  pw_spline_utils
 different utils that are useful to manipulate splines on the regular grid of a pw
 

Functions/Subroutines

subroutine, public pw_spline_utils::pw_spline2_interpolate_values_g (spline_g)
 calculates the FFT of the coefficients of the quadratic spline that interpolates the given values More...
 
subroutine, public pw_spline_utils::pw_spline3_interpolate_values_g (spline_g)
 calculates the FFT of the coefficients of the2 cubic spline that interpolates the given values More...
 
subroutine, public pw_spline_utils::pw_spline_scale_deriv (deriv_vals_r, transpose, scale)
 rescales the derivatives from gridspacing=1 to the real derivatives More...
 
subroutine, public pw_spline_utils::pw_spline3_deriv_g (spline_g, idir)
 calculates the FFT of the values of the x,y,z (idir=1,2,3) derivative of the cubic spline More...
 
subroutine, public pw_spline_utils::pw_spline2_deriv_g (spline_g, idir)
 calculates the FFT of the values of the x,y,z (idir=1,2,3) derivative of the quadratic spline More...
 
subroutine, public pw_spline_utils::pw_nn_smear_r (pw_in, pw_out, coeffs)
 calculates the values of a nearest neighbor smearing More...
 
subroutine, public pw_spline_utils::pw_nn_deriv_r (pw_in, pw_out, coeffs, idir)
 calculates a nearest neighbor central derivative. for the x dir: pw_outarray(i,j,k)=( pw_in(i+1,j,k)-pw_in(i-1,j,k) )*coeff(1)+ ( pw_in(i+1,j(+-)1,k)-pw_in(i-1,j(+-)1,k)+ pw_in(i+1,j,k(+-)1)-pw_in(i-1,j,k(+-)1) )*coeff(2)+ ( pw_in(i+1,j(+-)1,k(+-)1)-pw_in(i-1,j(+-)1,k(+-)1)+ pw_in(i+1,j(+-)1,k(-+)1)-pw_in(i-1,j(+-)1,k(-+)1) )*coeff(3) periodic boundary conditions are applied More...
 
subroutine, public pw_spline_utils::add_coarse2fine (coarse_coeffs_pw, fine_values_pw, weights_1d, w_border0, w_border1, pbc, safe_computation)
 low level function that adds a coarse grid to a fine grid. If pbc is true periodic boundary conditions are applied More...
 
subroutine, public pw_spline_utils::add_fine2coarse (fine_values_pw, coarse_coeffs_pw, weights_1d, w_border0, w_border1, pbc, safe_computation)
 low level function that adds a coarse grid (without boundary) to a fine grid. More...
 
subroutine, public pw_spline_utils::pw_spline_precond_create (preconditioner, precond_kind, pool, pbc, transpose)
 ... More...
 
subroutine, public pw_spline_utils::pw_spline_precond_set_kind (preconditioner, precond_kind, pbc, transpose)
 switches the types of precoditioner to use More...
 
subroutine, public pw_spline_utils::pw_spline_precond_release (preconditioner)
 releases the preconditioner More...
 
subroutine, public pw_spline_utils::pw_spline_do_precond (preconditioner, in_v, out_v)
 applies the preconditioner to the system of equations to find the coefficients of the spline More...
 
logical function, public pw_spline_utils::find_coeffs (values, coeffs, linOp, preconditioner, pool, eps_r, eps_x, max_iter, sumtype)
 solves iteratively (CG) a systmes of linear equations linOp(coeffs)=values (for example those needed to find the coefficients of a spline) Returns true if the it succeeded to achieve the requested accuracy More...
 
subroutine pw_spline_utils::pw_nn_compose_r_no_pbc (weights_1d, pw_in, pw_out, sharpen, normalize, transpose, smooth_boundary)
 adds to pw_out pw_in composed with the weights pw_outarray(i,j,k)=pw_outarray(i,j,k)+sum(pw_inarray(i+l,j+m,k+n)* weights_1d(abs(l)+1)*weights_1d(abs(m)+1)*weights_1d(abs(n)+1), l=-1..1,m=-1..1,n=-1..1) More...
 
subroutine, public pw_spline_utils::spl3_nopbc (pw_in, pw_out)
 ... More...
 
subroutine, public pw_spline_utils::spl3_nopbct (pw_in, pw_out)
 ... More...
 
subroutine, public pw_spline_utils::spl3_pbc (pw_in, pw_out)
 ... More...
 
real(kind=dp) function, public pw_spline_utils::eval_interp_spl3_pbc (vec, pw)
 Evaluates the PBC interpolated Spline (pw) function on the generic input vector (vec) More...
 
real(kind=dp) function, dimension(3), public pw_spline_utils::eval_d_interp_spl3_pbc (vec, pw)
 Evaluates the derivatives of the PBC interpolated Spline (pw) function on the generic input vector (vec) More...
 

Variables

integer, parameter, public pw_spline_utils::no_precond = 0
 
integer, parameter, public pw_spline_utils::precond_spl3_aint = 1
 
integer, parameter, public pw_spline_utils::precond_spl3_1 = 2
 
integer, parameter, public pw_spline_utils::precond_spl3_aint2 = 3
 
integer, parameter, public pw_spline_utils::precond_spl3_2 = 4
 
integer, parameter, public pw_spline_utils::precond_spl3_3 = 5
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::nn10_coeffs = (/125._dp/216._dp, 25._dp/432._dp, 5._dp/864._dp, 1._dp/1728._dp/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::spline3_coeffs = (/8._dp/(27._dp), 2._dp/(27._dp), 1._dp/(27._dp*2._dp), 1._dp/(27._dp*8._dp)/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::spline2_coeffs = (/27._dp/(64._dp), 9._dp/(64._dp*2_dp), 3._dp/(64._dp*4._dp), 1._dp/(64._dp*8._dp)/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::nn50_coeffs = (/15625._dp/17576._dp, 625._dp/35152._dp, 25._dp/70304._dp, 1._dp/140608._dp/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::spl3_aint_coeff = (/46._dp/27._dp, -2._dp/(27._dp), -1._dp/(27._dp*2._dp), -1._dp/(27._dp*8._dp)/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::spl3_precond1_coeff = (/64._dp/3._dp, -8._dp/3._dp, -1._dp/3._dp, -1._dp/24._dp/)
 
real(kind=dp), dimension(4), parameter, public pw_spline_utils::spl3_1d_transf_coeffs = (/2._dp/3._dp, 23._dp/48._dp, 1._dp/6._dp, 1._dp/48._dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::spline3_deriv_coeffs = (/2.0_dp/9.0_dp, 1.0_dp/18.0_dp, 1.0_dp/72.0_dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::spline2_deriv_coeffs = (/9.0_dp/32.0_dp, 3.0_dp/64.0_dp, 1.0_dp/128.0_dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::nn10_deriv_coeffs = (/25._dp/72._dp, 5._dp/144, 1._dp/288._dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::nn50_deriv_coeffs = (/625._dp/1352._dp, 25._dp/2704._dp, 1._dp/5408._dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::spl3_1d_coeffs0 = (/1._dp/6_dp, 2._dp/3._dp, 1._dp/6._dp/)
 
real(kind=dp), dimension(3), parameter, public pw_spline_utils::spl3_1d_transf_border1 = (/0.517977704_dp, 0.464044595_dp, 0.17977701e-1_dp/)