module test_params_diffusion_m !! Tests of parameter handling of diffusion model use funit use grillix_build_info_m, only : git_repo_path use precision_grillix_m, only : GP use helpers_m, only : almost_equal implicit none contains @test subroutine test_params_diffusion_mms() !! Tests params_diffusion_mms use params_diffusion_mms_m character(len=:), allocatable :: filename filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default value @assertTrue(.not.mms_on) ! Read parameters and check input call read_params_mms(filename) call write_params_mms() ! Check parameter values after read from file @assertTrue(mms_on) end subroutine @test subroutine test_params_diffusion_model() !! Tests params_diffusion_model use params_diffusion_model_m character(len=:), allocatable :: filename logical :: fine filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! No defaults ! Read parameters call read_params_model(filename) call write_params_model() ! Check parameter values after read from file fine = almost_equal(diffcoeff_par, 1.0_GP, rtol = 0.0_GP, atol = 1.0E-10_GP) @assertTrue(fine) fine = almost_equal(diffcoeff_perp, 1.0E-3_GP, rtol = 0.0_GP, atol = 1.0E-10_GP) @assertTrue(fine) end subroutine @test subroutine test_params_diffusion_tstep() !! Tests params_diffusion_tstep use params_diffusion_tstep_m character(len=:), allocatable :: filename logical :: fine filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default values @assertEqual(tstep_implicit_level, 0) @assertEqual(tstep_order, 2) fine = almost_equal(dtau, 1.0E-2_GP, rtol= 0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(tau_fin, 20.0_GP, rtol= 0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(tau_snaps, 1.0_GP, rtol= 0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) ! Read parameters call read_params_tstep(filename) call write_params_tstep() ! Check parameter values after read from file @assertEqual(tstep_implicit_level, 2) @assertEqual(tstep_order, 3) fine = almost_equal(dtau, 5.0E-3_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(tau_fin, 10.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(tau_snaps, 5.0E-2_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) end subroutine @test subroutine test_params_diffusion_boundaries_perp() !! Tests params_diffusion_boundaries_perp use params_diffusion_boundaries_perp_m use descriptors_m, only : BND_TYPE_DIRICHLET_ZERO, BND_TYPE_NEUMANN character(len=:), allocatable :: filename logical :: fine filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default values @assertEqual(bnd_descr_core, BND_TYPE_DIRICHLET_ZERO) @assertEqual(bnd_descr_wall, BND_TYPE_DIRICHLET_ZERO) @assertEqual(bnd_descr_dome, BND_TYPE_DIRICHLET_ZERO) @assertEqual(bnd_descr_out, BND_TYPE_DIRICHLET_ZERO) fine = almost_equal(bnd_val_core, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_wall, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_dome, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_out, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) ! Read parameters call read_params_boundaries_perp(filename) call write_params_boundaries_perp() ! Check parameter values after read from file @assertEqual(bnd_descr_core, BND_TYPE_NEUMANN) @assertEqual(bnd_descr_wall, BND_TYPE_NEUMANN) @assertEqual(bnd_descr_dome, BND_TYPE_NEUMANN) @assertEqual(bnd_descr_out, BND_TYPE_NEUMANN) fine = almost_equal(bnd_val_core, 0.1_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_wall, 0.2_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_dome, 0.3_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(bnd_val_out, 0.4_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) end subroutine @test subroutine test_params_diffusion_boundaries_parpen() !! Tests params_diffusion_boundaries_parpen use params_diffusion_boundaries_parpen_m use descriptors_m, only : BND_TYPE_DIRICHLET_ZERO, BND_TYPE_NEUMANN character(len=:), allocatable :: filename logical :: fine filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default values @assertEqual(bnd_descr_par, BND_TYPE_DIRICHLET_ZERO) @assertTrue(.not.bnd_par_odd) fine = almost_equal(bnd_val_par, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(epsinv, 0.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) ! Read parameters call read_params_boundaries_parpen(filename) call write_params_boundaries_parpen() ! Check parameter values after read from file @assertEqual(bnd_descr_par, BND_TYPE_NEUMANN) @assertTrue(bnd_par_odd) fine = almost_equal(bnd_val_par, 0.7_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) fine = almost_equal(epsinv, 10.0_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) end subroutine @test subroutine test_params_diffusion_init_select() !! Tests params_diffusion_boundaries_parpen use params_diffusion_init_select_m character(len=:), allocatable :: filename filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default values @assertEqual(trim(adjustl(init_type)), 'BLOB') @assertEqual(trim(adjustl(init_path)), 'params_diffusion.in') ! Read parameters and check input call read_params_init_select(filename) call write_params_init_select() ! Check parameter values after read from file @assertEqual(trim(adjustl(init_type)), 'BLOB_ALIGNED') @assertEqual(trim(adjustl(init_path)), 'sample_params_diffusion.in') end subroutine @test subroutine test_params_diffusion_parsolver() !! Tests params_diffusion_parsolver use params_diffusion_parsolver_m use solver_aligned3d_m, only : params_solver_aligned3d_t character(len=:), allocatable :: filename logical :: fine type(params_solver_aligned3d_t) :: default_params ! Default aprameters of solver filename = git_repo_path // & '/cicd/res/params/sample_params_diffusion.in' ! Check default values @assertEqual(parsolver_params%precond_type, default_params%precond_type) @assertEqual(parsolver_params%maxiter, default_params%maxiter) @assertEqual(parsolver_params%nrestart, default_params%nrestart) @assertEqual(parsolver_params%dbgout, default_params%dbgout) fine = almost_equal(parsolver_params%resmax, default_params%resmax, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) ! Read parameters call read_params_parsolver(filename) call write_params_parsolver() ! Check parameter values after read from file @assertEqual(parsolver_params%precond_type, 'JAC') @assertEqual(parsolver_params%maxiter, 25) @assertEqual(parsolver_params%nrestart, 7) @assertEqual(parsolver_params%dbgout, 1) fine = almost_equal(parsolver_params%resmax, 1.0E-6_GP, rtol=0.0_GP, atol=1.0E-10_GP) @assertTrue(fine) end subroutine end module