MONC
Modules | Functions/Subroutines | Variables
petsc_solver.F90 File Reference
#include "petsc/finclude/petscvecdef.h"
#include "petsc/finclude/petscmatdef.h"
#include "petsc/finclude/petsckspdef.h"
#include "petsc/finclude/petscdmdadef.h"
Include dependency graph for petsc_solver.F90:

Go to the source code of this file.

Modules

module  petsc_solver_mod
 PETSc solver component to call out to PETSc for solving the Poisson equation for pressure.
 

Functions/Subroutines

type(component_descriptor_type) function, public petsc_solver_mod::petsc_solver_get_descriptor ()
 Provides the descriptor back to the caller and is used in component registration. More...
 
subroutine petsc_solver_mod::finalisation_callback (current_state)
 
subroutine petsc_solver_mod::init_callback (current_state)
 Called upon model initialisation. Will basically read from the options database and set options in the database that are appropriate. More...
 
subroutine petsc_solver_mod::ksp_monitor (ksp, n, rnorm, dummy, ierr)
 Monitor procedure called on each iteration, this is provided only at debugging level. More...
 
subroutine petsc_solver_mod::timestep_callback (current_state)
 Timestep hook which is called at each timestep to solve the pressure equation via PETSc. This will call to set and precondition the matrix on the first call (first timestep) only, and will set the RHS and X initial guess on each call as one would expect. At the end a halo swap is performed on p, which is needed for pstep. More...
 
character(len=string_length) function petsc_solver_mod::determine_convegence_reason (r_code)
 
subroutine petsc_solver_mod::compute_initial_guess (ksp, x, dummy, ierr)
 Determines the initial guess, this is called from within PETSc and sets it to be the last value of P or zero if it is the first timestep. More...
 
subroutine petsc_solver_mod::compute_rhs (ksp, b, dummy, ierr)
 Callback issued from the PETSc library to compute the RHS, this is called every timestep (as we have a different RHS) More...
 
subroutine petsc_solver_mod::copy_data_to_petsc_pointer (x, zs, ys, xs, zm, ym, xm, src_values)
 Copies data into a data pointer which is provided by PETSc, doing it this ways allows us to give a shape to the pointer data and hence the data copy is simpler code wise. More...
 
subroutine petsc_solver_mod::copy_petsc_pointer_to_data (x, z_start_idx, z_end_idx, y_start_idx, y_end_idx, x_start_idx, x_end_idx, target_values)
 Copies the data in a pointer that was provided by PETSc into some target data, doing it this way means we can give a shape to the pointer. More...
 
subroutine petsc_solver_mod::compute_matrix (ksp, A, B, dummy, ierr)
 Call back issued from within PETSc to create the matrix, this is only called once (the first PETSc run) More...
 
subroutine petsc_solver_mod::apply_dimension_bounds (dim_size, dim_processes, length_array)
 Applies dimension bounds to determine the number of elements held locally for each process in that dimension. More...
 
subroutine petsc_solver_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 petsc_solver_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 petsc_solver_mod::copy_halo_buffer_to_p (current_state, neighbour_description, dim, target_index, neighbour_location, current_page, source_data)
 
subroutine petsc_solver_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

integer petsc_solver_mod::z_start
 
integer petsc_solver_mod::z_end
 
integer petsc_solver_mod::y_start
 
integer petsc_solver_mod::y_end
 
integer petsc_solver_mod::x_start
 
integer petsc_solver_mod::x_end
 
type(halo_communication_type), save petsc_solver_mod::halo_swap_state
 
real(kind=default_precision), dimension(:,:,:), allocatable petsc_solver_mod::p_source
 
real(kind=default_precision), dimension(:,:,:), allocatable petsc_solver_mod::prev_p
 
real(kind=default_precision) petsc_solver_mod::cx
 
real(kind=default_precision) petsc_solver_mod::cy
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::rdzn
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::rdz
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::rho
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::rhon
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::dz
 
real(kind=default_precision), dimension(:), allocatable petsc_solver_mod::dzn