Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Derived types and interfaces | Functions/Subroutines
sll_m_preconditioner_curl_solver_fft Module Reference

Description

Invert a circulant matrix based on diagonalization in Fourier space (3d version)

Authors
Benedikt Perse

Derived types and interfaces

type  sll_t_preconditioner_curl_solver_fft
 Linear solver for FFT-based inversion of 3d tensor product of circulant matrices (extending the abstract linear solver class) More...
 

Functions/Subroutines

subroutine create_preconditioner (self, n_dofs, delta_x, degree)
 
subroutine solve_real_preconditioner (self, rhs, unknown)
 
subroutine fft3d (self, array1d_x, array1d_y, array1d_z, inde, x, scratch1)
 Helper function. More...
 
subroutine ifft3d (self, array1d_x, array1d_y, array1d_z, inde, scratch, y)
 Helper function. More...
 
subroutine invert3d (mat, mat_inv)
 Helper function to invert 3x3 matrix. More...
 
subroutine read_from_file_preconditioner (self, filename)
 
subroutine print_info_preconditioner (self)
 
subroutine set_verbose_preconditioner (self, verbose)
 
subroutine free_preconditioner (self)
 

Function/Subroutine Documentation

◆ create_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::create_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
integer(kind=i32), dimension(3)  n_dofs,
real(kind=f64), dimension(3)  delta_x,
integer(kind=i32), dimension(3)  degree 
)
private
Parameters
[in,out]selfFourier solver
n_dofsnumber of degrees of freedom
delta_xcell size

Definition at line 70 of file sll_m_preconditioner_curl_solver_fft.F90.

Here is the call graph for this function:

◆ fft3d()

subroutine sll_m_preconditioner_curl_solver_fft::fft3d ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
complex(kind=f64), dimension(:), intent(inout)  array1d_x,
complex(kind=f64), dimension(:), intent(inout)  array1d_y,
complex(kind=f64), dimension(:), intent(inout)  array1d_z,
integer(kind=i32), intent(in)  inde,
real(kind=f64), dimension(:), intent(in)  x,
complex(kind=f64), dimension(:,:,:,:), intent(out)  scratch1 
)
private

Helper function.

Parameters
[in,out]selfFourier solver

Definition at line 336 of file sll_m_preconditioner_curl_solver_fft.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ free_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::free_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self)
private
Parameters
[in,out]selfFourier solver

Definition at line 485 of file sll_m_preconditioner_curl_solver_fft.F90.

◆ ifft3d()

subroutine sll_m_preconditioner_curl_solver_fft::ifft3d ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
complex(kind=f64), dimension(:), intent(inout)  array1d_x,
complex(kind=f64), dimension(:), intent(inout)  array1d_y,
complex(kind=f64), dimension(:), intent(inout)  array1d_z,
integer(kind=i32), intent(in)  inde,
complex(kind=f64), dimension(:,:,:,:), intent(inout)  scratch,
real(kind=f64), dimension(:), intent(out)  y 
)
private

Helper function.

Parameters
[in,out]selfFourier solver

Definition at line 387 of file sll_m_preconditioner_curl_solver_fft.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invert3d()

subroutine sll_m_preconditioner_curl_solver_fft::invert3d ( complex(kind=f64), dimension(3,3), intent(in)  mat,
complex(kind=f64), dimension(3,3), intent(out)  mat_inv 
)
private

Helper function to invert 3x3 matrix.

Definition at line 441 of file sll_m_preconditioner_curl_solver_fft.F90.

Here is the caller graph for this function:

◆ print_info_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::print_info_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(in)  self)
private
Parameters
[in]selfFourier solver

Definition at line 471 of file sll_m_preconditioner_curl_solver_fft.F90.

◆ read_from_file_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::read_from_file_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
character(len=*), intent(in)  filename 
)
private
Parameters
[in,out]selfFourier solver

Definition at line 465 of file sll_m_preconditioner_curl_solver_fft.F90.

◆ set_verbose_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::set_verbose_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
logical, intent(in)  verbose 
)
private
Parameters
[in,out]selfFourier solver
[in]verboselogical for convergence information

Definition at line 476 of file sll_m_preconditioner_curl_solver_fft.F90.

◆ solve_real_preconditioner()

subroutine sll_m_preconditioner_curl_solver_fft::solve_real_preconditioner ( class( sll_t_preconditioner_curl_solver_fft), intent(inout)  self,
real(kind=f64), dimension(:), intent(in)  rhs,
real(kind=f64), dimension(:), intent(out)  unknown 
)
private
Parameters
[in,out]selfFourier solver
[in]rhsgiven right-hand side
[out]unknownunknown-left hand side

Definition at line 187 of file sll_m_preconditioner_curl_solver_fft.F90.

Here is the call graph for this function:
    Report Typos and Errors