test_diffusion Program

Uses

  • program~~test_diffusion~~UsesGraph program~test_diffusion test_diffusion iso_fortran_env iso_fortran_env program~test_diffusion->iso_fortran_env module~auxiliaries_test_diffusion_m auxiliaries_test_diffusion_m program~test_diffusion->module~auxiliaries_test_diffusion_m module~comm_handling_m comm_handling_m program~test_diffusion->module~comm_handling_m module~constants_m constants_m program~test_diffusion->module~constants_m module~csrmat_m csrmat_m program~test_diffusion->module~csrmat_m module~elementary_functions_m elementary_functions_m program~test_diffusion->module~elementary_functions_m module~equilibrium_factory_m equilibrium_factory_m program~test_diffusion->module~equilibrium_factory_m module~equilibrium_m equilibrium_m program~test_diffusion->module~equilibrium_m module~error_handling_m error_handling_m program~test_diffusion->module~error_handling_m module~fieldline_tracer_m fieldline_tracer_m program~test_diffusion->module~fieldline_tracer_m module~map_factory_m map_factory_m program~test_diffusion->module~map_factory_m module~mesh_cart_m mesh_cart_m program~test_diffusion->module~mesh_cart_m module~perf_m perf_m program~test_diffusion->module~perf_m module~precision_m precision_m program~test_diffusion->module~precision_m module~screen_io_m screen_io_m program~test_diffusion->module~screen_io_m module~snapshots_test_diffusion_m snapshots_test_diffusion_m program~test_diffusion->module~snapshots_test_diffusion_m module~status_codes_m status_codes_m program~test_diffusion->module~status_codes_m module~vis_vtk3d_m vis_vtk3d_m program~test_diffusion->module~vis_vtk3d_m mpi mpi program~test_diffusion->mpi netcdf netcdf program~test_diffusion->netcdf parallax_build_info_m parallax_build_info_m program~test_diffusion->parallax_build_info_m vtk_fortran vtk_fortran program~test_diffusion->vtk_fortran module~auxiliaries_test_diffusion_m->module~comm_handling_m module~auxiliaries_test_diffusion_m->module~constants_m module~auxiliaries_test_diffusion_m->module~csrmat_m module~auxiliaries_test_diffusion_m->module~equilibrium_m module~auxiliaries_test_diffusion_m->module~fieldline_tracer_m module~auxiliaries_test_diffusion_m->module~mesh_cart_m module~auxiliaries_test_diffusion_m->module~precision_m module~auxiliaries_test_diffusion_m->mpi module~mpi_mapping_auxiliaries_m mpi_mapping_auxiliaries_m module~auxiliaries_test_diffusion_m->module~mpi_mapping_auxiliaries_m module~comm_handling_m->mpi module~constants_m->module~precision_m module~csrmat_m->module~error_handling_m module~csrmat_m->module~precision_m module~csrmat_m->module~screen_io_m module~csrmat_m->module~status_codes_m module~csrmat_m->netcdf iso_c_binding iso_c_binding module~csrmat_m->iso_c_binding module~list_operations_m list_operations_m module~csrmat_m->module~list_operations_m module~elementary_functions_m->module~precision_m module~equilibrium_factory_m->module~comm_handling_m module~equilibrium_factory_m->module~equilibrium_m module~equilibrium_factory_m->module~error_handling_m module~equilibrium_factory_m->module~status_codes_m module~carthy_equilibrium_m carthy_equilibrium_m module~equilibrium_factory_m->module~carthy_equilibrium_m module~cerfons_equilibrium_m cerfons_equilibrium_m module~equilibrium_factory_m->module~cerfons_equilibrium_m module~circular_equilibrium_m circular_equilibrium_m module~equilibrium_factory_m->module~circular_equilibrium_m module~circular_toroidal_equilibrium_m circular_toroidal_equilibrium_m module~equilibrium_factory_m->module~circular_toroidal_equilibrium_m module~dommaschk_equilibrium_m dommaschk_equilibrium_m module~equilibrium_factory_m->module~dommaschk_equilibrium_m module~flare_equilibrium_m flare_equilibrium_m module~equilibrium_factory_m->module~flare_equilibrium_m module~numerical_equilibrium_m numerical_equilibrium_m module~equilibrium_factory_m->module~numerical_equilibrium_m module~salpha_equilibrium_m salpha_equilibrium_m module~equilibrium_factory_m->module~salpha_equilibrium_m module~slab_equilibrium_m slab_equilibrium_m module~equilibrium_factory_m->module~slab_equilibrium_m module~equilibrium_m->module~precision_m module~error_handling_m->module~comm_handling_m module~error_handling_m->module~precision_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~error_handling_m->mpi module~error_handling_m->netcdf module~fieldline_tracer_m->module~comm_handling_m module~fieldline_tracer_m->module~equilibrium_m module~fieldline_tracer_m->module~error_handling_m module~fieldline_tracer_m->module~precision_m module~fieldline_tracer_m->module~screen_io_m module~fieldline_tracer_m->module~status_codes_m dop853_constants dop853_constants module~fieldline_tracer_m->dop853_constants dop853_module dop853_module module~fieldline_tracer_m->dop853_module module~map_factory_m->module~constants_m module~map_factory_m->module~csrmat_m module~map_factory_m->module~equilibrium_m module~map_factory_m->module~mesh_cart_m module~map_factory_m->module~precision_m module~gauss_quadrature_m gauss_quadrature_m module~map_factory_m->module~gauss_quadrature_m module~mesh_cart_m->module~comm_handling_m module~mesh_cart_m->module~equilibrium_m module~mesh_cart_m->module~error_handling_m module~mesh_cart_m->module~precision_m module~mesh_cart_m->module~status_codes_m module~mesh_cart_m->netcdf module~mesh_cart_m->iso_c_binding module~descriptors_m descriptors_m module~mesh_cart_m->module~descriptors_m module~mesh_cart_m->module~slab_equilibrium_m module~perf_m->module~comm_handling_m module~perf_m->module~precision_m module~perf_m->module~screen_io_m module~perf_m->mpi module~precision_m->iso_fortran_env module~precision_m->mpi module~precision_m->netcdf module~precision_m->iso_c_binding module~screen_io_m->iso_fortran_env module~screen_io_m->module~precision_m module~screen_io_m->netcdf module~snapshots_test_diffusion_m->module~error_handling_m module~snapshots_test_diffusion_m->module~mesh_cart_m module~snapshots_test_diffusion_m->module~precision_m module~snapshots_test_diffusion_m->netcdf module~vis_vtk3d_m->module~comm_handling_m module~vis_vtk3d_m->module~equilibrium_m module~vis_vtk3d_m->module~fieldline_tracer_m module~vis_vtk3d_m->module~mesh_cart_m module~vis_vtk3d_m->module~precision_m module~vis_vtk3d_m->module~screen_io_m module~vis_vtk3d_m->vtk_fortran module~vis_vtk3d_m->module~list_operations_m module~carthy_equilibrium_m->module~comm_handling_m module~carthy_equilibrium_m->module~constants_m module~carthy_equilibrium_m->module~elementary_functions_m module~carthy_equilibrium_m->module~precision_m module~carthy_equilibrium_m->module~screen_io_m module~carthy_equilibrium_m->module~descriptors_m ifport ifport module~carthy_equilibrium_m->ifport module~analytic_divertor_equilibrium_m analytic_divertor_equilibrium_m module~carthy_equilibrium_m->module~analytic_divertor_equilibrium_m module~cerfons_equilibrium_m->module~comm_handling_m module~cerfons_equilibrium_m->module~constants_m module~cerfons_equilibrium_m->module~elementary_functions_m module~cerfons_equilibrium_m->module~precision_m module~cerfons_equilibrium_m->module~screen_io_m module~cerfons_equilibrium_m->module~descriptors_m module~cerfons_equilibrium_m->module~analytic_divertor_equilibrium_m module~circular_equilibrium_m->module~constants_m module~circular_equilibrium_m->module~elementary_functions_m module~circular_equilibrium_m->module~equilibrium_m module~circular_equilibrium_m->module~error_handling_m module~circular_equilibrium_m->module~precision_m module~circular_equilibrium_m->module~screen_io_m module~circular_equilibrium_m->module~status_codes_m module~circular_equilibrium_m->module~descriptors_m module~params_equi_circular_m params_equi_circular_m module~circular_equilibrium_m->module~params_equi_circular_m module~circular_toroidal_equilibrium_m->module~constants_m module~circular_toroidal_equilibrium_m->module~equilibrium_m module~circular_toroidal_equilibrium_m->module~error_handling_m module~circular_toroidal_equilibrium_m->module~precision_m module~circular_toroidal_equilibrium_m->module~screen_io_m module~circular_toroidal_equilibrium_m->module~status_codes_m module~circular_toroidal_equilibrium_m->module~descriptors_m module~euclidean_geo_m euclidean_geo_m module~circular_toroidal_equilibrium_m->module~euclidean_geo_m module~kisslinger_m kisslinger_m module~circular_toroidal_equilibrium_m->module~kisslinger_m module~params_equi_circular_toroidal_m params_equi_circular_toroidal_m module~circular_toroidal_equilibrium_m->module~params_equi_circular_toroidal_m module~descriptors_m->module~screen_io_m module~dommaschk_equilibrium_m->module~constants_m module~dommaschk_equilibrium_m->module~elementary_functions_m module~dommaschk_equilibrium_m->module~equilibrium_m module~dommaschk_equilibrium_m->module~error_handling_m module~dommaschk_equilibrium_m->module~fieldline_tracer_m module~dommaschk_equilibrium_m->module~precision_m module~dommaschk_equilibrium_m->module~screen_io_m module~dommaschk_equilibrium_m->module~status_codes_m module~dommaschk_equilibrium_m->module~descriptors_m module~dommaschk_equilibrium_m->module~euclidean_geo_m module~interpolation_m interpolation_m module~dommaschk_equilibrium_m->module~interpolation_m module~dommaschk_equilibrium_m->module~kisslinger_m module~params_equi_dommaschk_m params_equi_dommaschk_m module~dommaschk_equilibrium_m->module~params_equi_dommaschk_m module~polygon_m polygon_m module~dommaschk_equilibrium_m->module~polygon_m module~flare_equilibrium_m->iso_fortran_env module~flare_equilibrium_m->module~comm_handling_m module~flare_equilibrium_m->module~equilibrium_m module~flare_equilibrium_m->module~error_handling_m module~flare_equilibrium_m->module~precision_m module~flare_equilibrium_m->module~screen_io_m module~flare_equilibrium_m->module~status_codes_m module~flare_equilibrium_m->module~descriptors_m FLARE_control FLARE_control module~flare_equilibrium_m->FLARE_control FLARE_model FLARE_model module~flare_equilibrium_m->FLARE_model module~flare_equilibrium_m->module~euclidean_geo_m module~flare_equilibrium_m->module~kisslinger_m module~params_equi_flare_m params_equi_flare_m module~flare_equilibrium_m->module~params_equi_flare_m module~flare_equilibrium_m->module~polygon_m moose_configparser moose_configparser module~flare_equilibrium_m->moose_configparser moose_error moose_error module~flare_equilibrium_m->moose_error moose_utils moose_utils module~flare_equilibrium_m->moose_utils module~gauss_quadrature_m->module~constants_m module~gauss_quadrature_m->module~precision_m module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m module~mpi_mapping_auxiliaries_m->module~csrmat_m module~mpi_mapping_auxiliaries_m->module~precision_m module~mpi_mapping_auxiliaries_m->module~screen_io_m module~mpi_mapping_auxiliaries_m->mpi module~numerical_equilibrium_m->iso_fortran_env module~numerical_equilibrium_m->module~comm_handling_m module~numerical_equilibrium_m->module~constants_m module~numerical_equilibrium_m->module~elementary_functions_m module~numerical_equilibrium_m->module~precision_m module~numerical_equilibrium_m->module~screen_io_m module~numerical_equilibrium_m->netcdf module~numerical_equilibrium_m->module~descriptors_m bspline_module bspline_module module~numerical_equilibrium_m->bspline_module module~divertor_equilibrium_m divertor_equilibrium_m module~numerical_equilibrium_m->module~divertor_equilibrium_m module~numerical_equilibrium_m->module~polygon_m module~salpha_equilibrium_m->module~comm_handling_m module~salpha_equilibrium_m->module~constants_m module~salpha_equilibrium_m->module~equilibrium_m module~salpha_equilibrium_m->module~error_handling_m module~salpha_equilibrium_m->module~precision_m module~salpha_equilibrium_m->module~screen_io_m module~salpha_equilibrium_m->module~status_codes_m module~salpha_equilibrium_m->module~descriptors_m module~params_equi_salpha_m params_equi_salpha_m module~salpha_equilibrium_m->module~params_equi_salpha_m module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~screen_io_m module~slab_equilibrium_m->module~descriptors_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~analytic_divertor_equilibrium_m->module~precision_m module~analytic_divertor_equilibrium_m->module~divertor_equilibrium_m module~divertor_equilibrium_m->module~equilibrium_m module~divertor_equilibrium_m->module~error_handling_m module~divertor_equilibrium_m->module~precision_m module~divertor_equilibrium_m->module~screen_io_m module~divertor_equilibrium_m->module~status_codes_m module~divertor_equilibrium_m->module~descriptors_m module~divertor_equilibrium_m->module~polygon_m module~euclidean_geo_m->module~precision_m module~interpolation_m->module~error_handling_m module~interpolation_m->module~precision_m module~interpolation_m->module~screen_io_m module~interpolation_m->module~status_codes_m module~interpolation_m->module~descriptors_m module~kisslinger_m->module~constants_m module~kisslinger_m->module~error_handling_m module~kisslinger_m->module~precision_m module~kisslinger_m->module~screen_io_m module~kisslinger_m->module~status_codes_m module~kisslinger_m->module~list_operations_m module~params_equi_circular_m->iso_fortran_env module~params_equi_circular_m->module~error_handling_m module~params_equi_circular_m->module~precision_m module~params_equi_circular_m->module~screen_io_m module~params_equi_circular_m->module~status_codes_m module~params_equi_circular_toroidal_m->iso_fortran_env module~params_equi_circular_toroidal_m->module~error_handling_m module~params_equi_circular_toroidal_m->module~precision_m module~params_equi_circular_toroidal_m->module~screen_io_m module~params_equi_circular_toroidal_m->module~status_codes_m module~params_equi_dommaschk_m->iso_fortran_env module~params_equi_dommaschk_m->module~error_handling_m module~params_equi_dommaschk_m->module~precision_m module~params_equi_dommaschk_m->module~screen_io_m module~params_equi_dommaschk_m->module~status_codes_m module~params_equi_dommaschk_m->parallax_build_info_m module~params_equi_flare_m->iso_fortran_env module~params_equi_flare_m->module~error_handling_m module~params_equi_flare_m->module~precision_m module~params_equi_flare_m->module~screen_io_m module~params_equi_flare_m->module~status_codes_m module~params_equi_flare_m->FLARE_model FLARE_bspline3d FLARE_bspline3d module~params_equi_flare_m->FLARE_bspline3d module~params_equi_salpha_m->iso_fortran_env module~params_equi_salpha_m->module~error_handling_m module~params_equi_salpha_m->module~precision_m module~params_equi_salpha_m->module~screen_io_m module~params_equi_salpha_m->module~status_codes_m module~params_equi_slab_m->iso_fortran_env module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m module~polygon_m->iso_fortran_env module~polygon_m->module~comm_handling_m module~polygon_m->module~precision_m module~polygon_m->module~screen_io_m module~polygon_m->mpi module~polygon_m->netcdf module~polygon_m->module~descriptors_m ieee_arithmetic ieee_arithmetic module~polygon_m->ieee_arithmetic

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.


Calls

program~~test_diffusion~~CallsGraph program~test_diffusion test_diffusion btor btor program~test_diffusion->btor finalize finalize program~test_diffusion->finalize initialize initialize program~test_diffusion->initialize interface~create_map_matrix create_map_matrix program~test_diffusion->interface~create_map_matrix interface~exchange_mesh_mpi mesh_cart_t%exchange_mesh_mpi program~test_diffusion->interface~exchange_mesh_mpi interface~get_n_points mesh_cart_t%get_n_points program~test_diffusion->interface~get_n_points interface~get_spacing_f mesh_cart_t%get_spacing_f program~test_diffusion->interface~get_spacing_f interface~get_x mesh_cart_t%get_x program~test_diffusion->interface~get_x interface~get_y mesh_cart_t%get_y program~test_diffusion->interface~get_y interface~init_mesh_cart mesh_cart_t%init_mesh_cart program~test_diffusion->interface~init_mesh_cart interface~reorder mesh_cart_t%reorder program~test_diffusion->interface~reorder interface~write_netcdf_mesh_cart mesh_cart_t%write_netcdf_mesh_cart program~test_diffusion->interface~write_netcdf_mesh_cart mpi_comm_rank mpi_comm_rank program~test_diffusion->mpi_comm_rank mpi_comm_size mpi_comm_size program~test_diffusion->mpi_comm_size mpi_finalize mpi_finalize program~test_diffusion->mpi_finalize mpi_init mpi_init program~test_diffusion->mpi_init nf90_close nf90_close program~test_diffusion->nf90_close nf90_create nf90_create program~test_diffusion->nf90_create proc~complete_support_map complete_support_map program~test_diffusion->proc~complete_support_map proc~create_equilibrium create_equilibrium program~test_diffusion->proc~create_equilibrium proc~fci_norms fci_norms program~test_diffusion->proc~fci_norms proc~finalize_snapsfile finalize_snapsfile program~test_diffusion->proc~finalize_snapsfile proc~gaussian gaussian program~test_diffusion->proc~gaussian proc~get_communicator get_communicator program~test_diffusion->proc~get_communicator proc~get_equilibrium_identifier get_equilibrium_identifier program~test_diffusion->proc~get_equilibrium_identifier proc~get_stdout get_stdout program~test_diffusion->proc~get_stdout proc~handle_error handle_error program~test_diffusion->proc~handle_error proc~handle_error_netcdf handle_error_netcdf program~test_diffusion->proc~handle_error_netcdf proc~initialize_snapsfile initialize_snapsfile program~test_diffusion->proc~initialize_snapsfile proc~is_master is_master program~test_diffusion->proc~is_master proc~parallel_diffusion_shortley_weller parallel_diffusion_shortley_weller program~test_diffusion->proc~parallel_diffusion_shortley_weller proc~parallel_diffusion_supp parallel_diffusion_supp program~test_diffusion->proc~parallel_diffusion_supp proc~perf_print perf_print program~test_diffusion->proc~perf_print proc~perf_start perf_start program~test_diffusion->proc~perf_start proc~perf_stop perf_stop program~test_diffusion->proc~perf_stop proc~trace trace program~test_diffusion->proc~trace proc~write_to_snapsfile write_to_snapsfile program~test_diffusion->proc~write_to_snapsfile proc~write_vtk_mesh write_vtk_mesh program~test_diffusion->proc~write_vtk_mesh write_piece write_piece program~test_diffusion->write_piece proc~complete_support_map->btor proc~complete_support_map->interface~exchange_mesh_mpi proc~complete_support_map->interface~get_n_points proc~complete_support_map->interface~get_spacing_f proc~complete_support_map->interface~get_x proc~complete_support_map->interface~get_y proc~complete_support_map->proc~get_communicator proc~complete_support_map->proc~trace interface~get_phi mesh_cart_t%get_phi proc~complete_support_map->interface~get_phi interface~getdata_fwdbwdplane getdata_fwdbwdplane proc~complete_support_map->interface~getdata_fwdbwdplane proc~csr_transpose~2 csr_transpose proc~complete_support_map->proc~csr_transpose~2 proc~create_equilibrium->proc~handle_error proc~create_equilibrium->proc~is_master debug debug proc~create_equilibrium->debug display display proc~create_equilibrium->display init init proc~create_equilibrium->init proc~fci_norms->interface~get_n_points mpi_allreduce mpi_allreduce proc~fci_norms->mpi_allreduce proc~finalize_snapsfile->nf90_close proc~finalize_snapsfile->proc~handle_error_netcdf proc~get_equilibrium_identifier->proc~handle_error none~handle_error error_handler_t%handle_error proc~handle_error->none~handle_error none~handle_error_netcdf error_handler_t%handle_error_netcdf proc~handle_error_netcdf->none~handle_error_netcdf proc~initialize_snapsfile->interface~get_n_points proc~initialize_snapsfile->nf90_create proc~initialize_snapsfile->proc~handle_error_netcdf nf90_def_dim nf90_def_dim proc~initialize_snapsfile->nf90_def_dim nf90_def_var nf90_def_var proc~initialize_snapsfile->nf90_def_var nf90_enddef nf90_enddef proc~initialize_snapsfile->nf90_enddef proc~is_master->mpi_comm_rank proc~parallel_diffusion_shortley_weller->interface~get_n_points proc~parallel_diffusion_shortley_weller->interface~getdata_fwdbwdplane proc~csr_times_vec csr_times_vec proc~parallel_diffusion_shortley_weller->proc~csr_times_vec proc~parallel_divergence_supp parallel_divergence_supp proc~parallel_diffusion_supp->proc~parallel_divergence_supp proc~parallel_gradient_supp parallel_gradient_supp proc~parallel_diffusion_supp->proc~parallel_gradient_supp proc~perf_print->proc~get_stdout proc~perf_print->proc~is_master proc~perf_print->mpi_allreduce proc~get_stderr get_stderr proc~perf_print->proc~get_stderr mpi_wtime mpi_wtime proc~perf_start->mpi_wtime proc~perf_start->proc~get_stderr proc~perf_stop->mpi_wtime proc~perf_stop->proc~get_stderr proc~trace->initialize proc~trace->proc~handle_error destroy destroy proc~trace->destroy integrate integrate proc~trace->integrate proc~trace->proc~get_stderr proc~write_to_snapsfile->proc~handle_error_netcdf nf90_put_var nf90_put_var proc~write_to_snapsfile->nf90_put_var proc~write_vtk_mesh->interface~get_n_points proc~write_vtk_mesh->interface~get_spacing_f proc~write_vtk_mesh->proc~get_stdout proc~write_vtk_mesh->proc~is_master proc~write_vtk_mesh->proc~trace proc~write_vtk_mesh->write_piece interface~get_cart_i mesh_cart_t%get_cart_i proc~write_vtk_mesh->interface~get_cart_i interface~get_cart_j mesh_cart_t%get_cart_j proc~write_vtk_mesh->interface~get_cart_j interface~get_xmin mesh_cart_t%get_xmin proc~write_vtk_mesh->interface~get_xmin interface~get_ymin mesh_cart_t%get_ymin proc~write_vtk_mesh->interface~get_ymin jacobian jacobian proc~write_vtk_mesh->jacobian proc~findindex_2d findindex_2d proc~write_vtk_mesh->proc~findindex_2d proc~write_vtk_mesh->proc~get_stderr proc~unique_tuples unique_tuples proc~write_vtk_mesh->proc~unique_tuples write_connectivity write_connectivity proc~write_vtk_mesh->write_connectivity write_geo write_geo proc~write_vtk_mesh->write_geo proc~sort_row sort_row proc~csr_transpose~2->proc~sort_row proc~findindex_2d->proc~get_stderr proc~parallel_divergence_supp->interface~get_n_points proc~parallel_divergence_supp->interface~getdata_fwdbwdplane proc~parallel_divergence_supp->proc~csr_times_vec proc~parallel_gradient_supp->interface~get_n_points proc~parallel_gradient_supp->interface~getdata_fwdbwdplane proc~parallel_gradient_supp->proc~csr_times_vec

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