test_diffusion Program

This program solves the heat equation with the methods provided by PARALLAX. It serves as an example program using the functionality provided by PARALLAX as well as an integration test and a diagnostic tool.


Variables

Type Attributes Name Initial
logical :: omp_on
integer :: ierr
integer :: comm
integer :: rank
integer :: nprocs
integer :: num_threads
integer :: io_error
integer :: nf90_stat
integer :: nf90_id
character(len=150) :: errmsg
character(len=5) :: rank_c
class(equilibrium_t), allocatable :: equi
type(mesh_cart_t) :: mesh
type(mesh_cart_t) :: mesh_staggered
type(mesh_cart_t), allocatable :: mesh_target
integer :: eq_id
integer :: l
integer :: t
integer :: isnaps
integer :: funit
real(kind=FP) :: x
real(kind=FP) :: y
real(kind=FP) :: phi
real(kind=FP) :: dphi
real(kind=FP) :: tau
real(kind=FP) :: vol_a
real(kind=FP) :: vol_b
real(kind=FP), allocatable, dimension(:) :: ds_fwd
real(kind=FP), allocatable, dimension(:) :: ds_bwd
real(kind=FP), allocatable, dimension(:) :: vol
type(csrmat_t) :: qnaive_bwd
type(csrmat_t) :: qnaive_fwd
type(csrmat_t) :: qsupp_bwd
type(csrmat_t) :: qsupp_fwd
type(csrmat_t), allocatable :: psupp_fwd
type(csrmat_t), allocatable :: psupp_bwd
real(kind=FP), allocatable, dimension(:) :: u_naive
real(kind=FP), allocatable, dimension(:) :: u_supp
real(kind=FP), allocatable, dimension(:) :: du
real(kind=FP) :: nrm1_naive
real(kind=FP) :: nrm2_naive
real(kind=FP) :: nrm_max_naive
real(kind=FP) :: nrm1_supp
real(kind=FP) :: nrm2_supp
real(kind=FP) :: nrm_max_supp
type(vtk_file) :: vtk2d
type(vtk_file) :: vtk3d
integer :: vtk_stat
logical :: run_default_case = .false.
character(len=64) :: geometry = 'CIRCULAR'
integer :: nplanes = 4
logical :: write_case_to_files = .false.
logical :: write_vtk_files = .false.
logical :: write_log_file = .false.
real(kind=FP) :: spacing_f = 4.0E-3_FP
integer :: size_neighbor = 2
integer :: size_ghost_layer = 2
integer :: reorder_size = 8
logical :: extend_beyond_wall = .false.
integer :: intorder = 3
integer :: xorder = 1
logical :: use_fixed_stencil = .false.
logical :: use_gauss_quadrature = .false.
real(kind=FP) :: xc_gauss = 0.3_FP
real(kind=FP) :: yc_gauss = 0.0_FP
real(kind=FP) :: wx_gauss = 0.025_FP
real(kind=FP) :: wy_gauss = 0.025_FP
real(kind=FP) :: dtau = 1.0E-2_FP
integer :: nsnaps = 10
integer :: nt_per_snaps = 100