MONC
Modules | Functions/Subroutines | Variables
fftsolver.F90 File Reference

Go to the source code of this file.

Modules

module  fftsolver_mod
 Pressure solver which uses a tridiagonal algorithm operating on the pressure terms in Fourier space. It uses the pencil FFT module for 3D FFTs in pencil decomposition. These use FFTW for the actual FFT kernel.
 

Functions/Subroutines

type(component_descriptor_type) function, public fftsolver_mod::fftsolver_get_descriptor ()
 Descriptor of this component for registration. More...
 
subroutine fftsolver_mod::initialisation_callback (current_state)
 This initialisation callback sets up the pencil fft module, allocates data for the fourier space pressure term (might be different size than p) and populates cos x and y. More...
 
subroutine fftsolver_mod::timestep_callback (current_state)
 Timestep call back, which will transform to Fourier space, do a tridiagonal solve and then back into time space. More...
 
subroutine fftsolver_mod::finalisation_callback (current_state)
 Called at MONC finalisation, will call to the pencil fft module to clean itself up and free the pressure term. More...
 
subroutine fftsolver_mod::complete_psrce_calculation (current_state, y_halo_size, x_halo_size)
 Completes the psrce calculation by waiting on all outstanding psrce communications to complete and then combine the received values with the P field for U and V. More...
 
subroutine fftsolver_mod::tridiagonal_solver (current_state, pressure_term, fourier_space_sizes)
 The tridiagonal solver which runs in Fourier space on the pressure terms. Note that because we are going from n reals to n/2+1 complex numbers (and into their reals for this solver) then there might be more data in the pressure term than in p. Therefore use the space sizes which are provided as an argument to this procedure rather than the current state local grid dimensions. More...
 
subroutine fftsolver_mod::copy_p_to_halo_buffer (current_state, neighbour_description, dim, source_index, pid_location, current_page, source_data)
 Copies the p field data to halo buffers for a specific process in a dimension and halo cell. More...
 
subroutine fftsolver_mod::copy_halo_buffer_to_p (current_state, neighbour_description, dim, target_index, neighbour_location, current_page, source_data)
 
subroutine fftsolver_mod::perform_local_data_copy_for_p (current_state, halo_depth, involve_corners, source_data)
 Does local data copying for P variable halo swap. More...
 

Variables

real(kind=default_precision), dimension(:), allocatable fftsolver_mod::cos_x
 
real(kind=default_precision), dimension(:), allocatable fftsolver_mod::cos_y
 
real(kind=default_precision) fftsolver_mod::pi
 
real(kind=default_precision), dimension(:,:,:), allocatable fftsolver_mod::pt
 
integer, dimension(3) fftsolver_mod::fourier_space_sizes
 
type(halo_communication_type), save fftsolver_mod::halo_swap_state