module test_equilibrium_storage_m use funit implicit none contains @test subroutine equilibrium_storage_cerfons !! Test of inplane operators in cerfons geometry use precision_grillix_m, only : GP use helpers_mesh_sample_m, only : mesh_sample_cerfons use helpers_m, only : almost_equal use equilibrium_storage_m, only : equilibrium_storage_t use equilibrium_m, only : equilibrium_t use mesh_cart_m, only : mesh_cart_t class(equilibrium_t), allocatable :: equi type(mesh_cart_t) :: mesh type(equilibrium_storage_t) :: equi_st logical :: fine integer :: l, iret real(GP) :: phi, x, y, epolx, epoly, eradx, erady write(*,*)'' write(*,*)'' write(*,'(A80)')'test_equilibrium_storage_cerfons ------------------------------------------' ! Create samplemesh --------------------------------------------------------------------------- phi = 0.0_GP call mesh_sample_cerfons(equi, phi, mesh) call equi_st%fill_storage(equi, mesh) ! Select a specific point for testing --------------------------------------------------------- do l = 1, mesh%get_n_points() x = mesh%get_x(l) y = mesh%get_y(l) fine = almost_equal(equi_st%rho(l), equi%rho(x,y, phi), rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%bx(l), equi%bx(x,y, phi), rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%by(l), equi%by(x,y, phi), rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%btor(l), equi%btor(x,y, phi), rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%absb(l), equi%absb(x,y, phi), rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) call equi%epol(x,y, phi, epolx, epoly) fine = almost_equal(equi_st%epol(l,1), epolx, rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%epol(l,2), epoly, rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) call equi%erad(x,y, phi, eradx, erady) fine = almost_equal(equi_st%erad(l,1), eradx, rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) fine = almost_equal(equi_st%erad(l,2), erady, rtol = 0.0_GP, atol = 1.0E-8_GP) @assertTrue(fine) iret = equi%district(x, y, phi) @assertEqual(equi_st%district(l), iret) enddo write(*,'(A80)')'test_equilibrium_storage_cerfons complete ---------------------------------' write(*,*)'' write(*,*)'' end subroutine end module