foreseer_test_conservative_compressible.F90 Source File

FORESEER test: conservative compressible class test.

This File Depends On

sourcefile~~foreseer_test_conservative_compressible.f90~~EfferentGraph sourcefile~foreseer_test_conservative_compressible.f90 foreseer_test_conservative_compressible.F90 sourcefile~foreseer.f90 foreseer.f90 sourcefile~foreseer.f90->sourcefile~foreseer_test_conservative_compressible.f90 sourcefile~foreseer_compressible_transformations.f90 foreseer_compressible_transformations.f90 sourcefile~foreseer_compressible_transformations.f90->sourcefile~foreseer.f90 sourcefile~foreseer_eos_compressible.f90 foreseer_eos_compressible.f90 sourcefile~foreseer_eos_compressible.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_solver_compressible_roe.f90 foreseer_riemann_solver_compressible_roe.F90 sourcefile~foreseer_eos_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_riemann_pattern_compressible_object.f90 foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_eos_compressible.f90->sourcefile~foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_riemann_solver_compressible_roe.f90->sourcefile~foreseer.f90 sourcefile~foreseer_primitive_object.f90 foreseer_primitive_object.f90 sourcefile~foreseer_primitive_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_primitive_compressible.f90 foreseer_primitive_compressible.f90 sourcefile~foreseer_primitive_object.f90->sourcefile~foreseer_primitive_compressible.f90 sourcefile~foreseer_riemann_pattern_compressible_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90 foreseer_riemann_pattern_compressible_pvl.f90 sourcefile~foreseer_riemann_pattern_compressible_object.f90->sourcefile~foreseer_riemann_pattern_compressible_pvl.f90 sourcefile~foreseer_conservative_compressible.f90 foreseer_conservative_compressible.f90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer.f90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_compressible_transformations.f90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_riemann_solver_compressible_pvl.f90 foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_riemann_solver_compressible_hllc.f90 foreseer_riemann_solver_compressible_hllc.F90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_hllc.f90 sourcefile~foreseer_riemann_solver_compressible_exact.f90 foreseer_riemann_solver_compressible_exact.F90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_exact.f90 sourcefile~foreseer_riemann_solver_compressible_llf.f90 foreseer_riemann_solver_compressible_llf.F90 sourcefile~foreseer_conservative_compressible.f90->sourcefile~foreseer_riemann_solver_compressible_llf.f90 sourcefile~foreseer_riemann_solver_compressible_pvl.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_solver_compressible_hllc.f90->sourcefile~foreseer.f90 sourcefile~foreseer_primitive_compressible.f90->sourcefile~foreseer.f90 sourcefile~foreseer_primitive_compressible.f90->sourcefile~foreseer_compressible_transformations.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer_riemann_solver_compressible_hllc.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer_riemann_solver_compressible_exact.f90 sourcefile~foreseer_riemann_pattern_compressible_pvl.f90->sourcefile~foreseer_riemann_solver_compressible_llf.f90 sourcefile~foreseer_riemann_solver_object.f90 foreseer_riemann_solver_object.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer_riemann_solver_compressible_hllc.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer_riemann_solver_compressible_exact.f90 sourcefile~foreseer_riemann_solver_object.f90->sourcefile~foreseer_riemann_solver_compressible_llf.f90 sourcefile~foreseer_riemann_pattern_object.f90 foreseer_riemann_pattern_object.f90 sourcefile~foreseer_riemann_pattern_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_pattern_object.f90->sourcefile~foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_conservative_object.f90 foreseer_conservative_object.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_conservative_compressible.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_compressible_hllc.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_pattern_compressible_pvl.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_object.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_pattern_object.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_compressible_exact.f90 sourcefile~foreseer_conservative_object.f90->sourcefile~foreseer_riemann_solver_compressible_llf.f90 sourcefile~foreseer_riemann_solver_compressible_exact.f90->sourcefile~foreseer.f90 sourcefile~foreseer_riemann_solver_compressible_llf.f90->sourcefile~foreseer.f90 sourcefile~foreseer_eos_object.f90 foreseer_eos_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_compressible_transformations.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_eos_compressible.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_compressible_roe.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_primitive_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_pattern_compressible_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_conservative_compressible.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_compressible_pvl.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_compressible_hllc.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_primitive_compressible.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_pattern_compressible_pvl.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_pattern_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_conservative_object.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_compressible_exact.f90 sourcefile~foreseer_eos_object.f90->sourcefile~foreseer_riemann_solver_compressible_llf.f90
Help


Source Code

!< FORESEER test: conservative compressible class test.

program foreseer_test_conservative_compressible
!< FORESEER test: conservative compressible class test.

use foreseer, only : eos_compressible, conservative_compressible, conservative_compressible_pointer
use penf, only : R8P, ZeroR8
use vecfor, only : ex, vector

implicit none
type(eos_compressible)                   :: eos                  !< An equation of state.
type(conservative_compressible)          :: u                    !< A conservative compressible instance.
type(conservative_compressible)          :: another_u            !< Another conservative compressible instance.
type(conservative_compressible), pointer :: u_pointer            !< A conservative compressible pointer.
type(conservative_compressible)          :: f                    !< Conservative fluxes.
type(vector)                             :: velocity             !< Velocity vector.
real(R8P), allocatable                   :: u_serialized(:)      !< Conservative variable serialized.
#ifdef __GFORTRAN__
logical                                  :: are_tests_passed(17) !< List of passed tests.
#else
logical                                  :: are_tests_passed(9)  !< List of passed tests.
#endif

are_tests_passed = .false.

call u%initialize

are_tests_passed(1) = (u%density  == 0._R8P).and. &
                      (u%momentum == 0._R8P).and. &
                      (u%energy   == 0._R8P)
print "(A,L1)", 'conservative = 0, is right? ', are_tests_passed(1)

eos = eos_compressible(cp=1040.004_R8P, cv=742.86_R8P)
u = conservative_compressible(density=1._R8P, energy=2.5_R8P)

are_tests_passed(2) = (u%pressure(eos=eos) >= 1._R8P - ZeroR8).and.(u%pressure(eos=eos) <= 1._R8P + ZeroR8)
print "(A,L1)", 'u%pressure() = 1, is right? ', are_tests_passed(2)

velocity = u%velocity()
are_tests_passed(3) = (u%velocity() >= 0._R8P - ZeroR8).and.(u%velocity() <= 0._R8P + ZeroR8)
print "(A,L1)", 'u%velocity() = 0, is right? ', are_tests_passed(3)

u_serialized = u%array()
are_tests_passed(4) = (size(u_serialized, dim=1) == 5).and.            &
                       (u_serialized(1)          == 1._R8P).and.       &
                       (u_serialized(2)          == 0._R8P).and.       &
                       (u_serialized(3)          == 0._R8P).and.       &
                       (u_serialized(4)          == 0._R8P).and.       &
                       (u_serialized(5)          == 2.5_R8P)
print "(A,L1)", 'u => serialized, is done right? ', are_tests_passed(4)

call u%destroy
are_tests_passed(5) = (u%density  == 0._R8P).and. &
                      (u%momentum == 0._R8P).and. &
                      (u%energy   == 0._R8P)
print "(A,L1)", 'u destroyed, is right? ', are_tests_passed(5)

u = conservative_compressible(density=1._R8P, momentum=ex, energy=2.5_R8P)

call u%compute_fluxes(eos=eos, normal=ex, fluxes=f)
are_tests_passed(6) = (f%density  >= 1._R8P -  ZeroR8).and.(f%density  <= 1._R8P  + ZeroR8).and. &
                      (f%momentum >= 1.8_R8P - ZeroR8).and.(f%momentum <= 1.8_R8P + ZeroR8).and. &
                      (f%energy   >= 3.3_R8P - ZeroR8).and.(f%energy   <= 3.3_R8P + ZeroR8)
print "(A,L1)", 'compute fluxes along X, is done right? ', are_tests_passed(6)

u = f
are_tests_passed(7) = (u%density  >= 1._R8P -  ZeroR8).and.(u%density  <= 1._R8P  + ZeroR8).and. &
                      (u%momentum >= 1.8_R8P - ZeroR8).and.(u%momentum <= 1.8_R8P + ZeroR8).and. &
                      (u%energy   >= 3.3_R8P - ZeroR8).and.(u%energy   <= 3.3_R8P + ZeroR8)
print "(A,L1)", 'u = f, is done right? ', are_tests_passed(7)

u = conservative_compressible(density=1._R8P, momentum=ex, energy=2.5_R8P)

u_pointer => conservative_compressible_pointer(to=u)
are_tests_passed(8) = (u_pointer%density  >= 1._R8P -  ZeroR8).and.(u_pointer%density  <= 1._R8P  + ZeroR8).and. &
                      (u_pointer%momentum >= 1._R8P -  ZeroR8).and.(u_pointer%momentum <= 1._R8P  + ZeroR8).and. &
                      (u_pointer%energy   >= 2.5_R8P - ZeroR8).and.(u_pointer%energy   <= 2.5_R8P + ZeroR8)
print "(A,L1)", 'u => u, is done right? ', are_tests_passed(8)

call another_u%initialize(initial_state=u)
are_tests_passed(9) = (another_u%density  >= 1._R8P -  ZeroR8).and.(another_u%density  <= 1._R8P  + ZeroR8).and. &
                      (another_u%momentum >= 1._R8P -  ZeroR8).and.(another_u%momentum <= 1._R8P  + ZeroR8).and. &
                      (another_u%energy   >= 2.5_R8P - ZeroR8).and.(another_u%energy   <= 2.5_R8P + ZeroR8)
print "(A,L1)", 'antoher_u == u, is right? ', are_tests_passed(9)

#ifdef __GFORTRAN__
u = conservative_compressible(density=1._R8P, momentum=ex, energy=2.5_R8P)
u = 2._R8P * u
are_tests_passed(10) = (u%density  >= 2._R8P - ZeroR8).and.(u%density  <= 2._R8P + ZeroR8).and. &
                       (u%momentum >= 2._R8P - ZeroR8).and.(u%momentum <= 2._R8P + ZeroR8).and. &
                       (u%energy   >= 5._R8P - ZeroR8).and.(u%energy   <= 5._R8P + ZeroR8)
print "(A,L1)", '2 * u, is done right? ', are_tests_passed(10)

u = u * u
are_tests_passed(11) = (u%density  >= 4._R8P -  ZeroR8).and.(u%density  <= 4._R8P  + ZeroR8).and. &
                       (u%momentum >= 4._R8P -  ZeroR8).and.(u%momentum <= 4._R8P  + ZeroR8).and. &
                       (u%energy   >= 25._R8P - ZeroR8).and.(u%energy   <= 25._R8P + ZeroR8)
print "(A,L1)", 'u * u, is done right? ', are_tests_passed(11)

u = u + u
are_tests_passed(12) = (u%density  >= 8._R8P -  ZeroR8).and.(u%density  <= 8._R8P  + ZeroR8).and. &
                       (u%momentum >= 8._R8P -  ZeroR8).and.(u%momentum <= 8._R8P  + ZeroR8).and. &
                       (u%energy   >= 50._R8P - ZeroR8).and.(u%energy   <= 50._R8P + ZeroR8)
print "(A,L1)", 'u + u, is done right? ', are_tests_passed(12)

u = u - u
are_tests_passed(13) = (u%density  >= 0._R8P - ZeroR8).and.(u%density  <= 0._R8P + ZeroR8).and. &
                       (u%momentum >= 0._R8P - ZeroR8).and.(u%momentum <= 0._R8P + ZeroR8).and. &
                       (u%energy   >= 0._R8P - ZeroR8).and.(u%energy   <= 0._R8P + ZeroR8)
print "(A,L1)", 'u - u, is done right? ', are_tests_passed(13)

u = conservative_compressible(density=1._R8P, energy=2.5_R8P)

u = - u
are_tests_passed(14) = (u%density >= -1._R8P  - ZeroR8).and.(u%density <= -1._R8P  + ZeroR8).and. &
                       (u%energy  >= -2.5_R8P - ZeroR8).and.(u%energy  <= -2.5_R8P + ZeroR8)
print "(A,L1)", 'u = - u, is done right? ', are_tests_passed(14)

u = + u
are_tests_passed(15) = (u%density >= -1._R8P  - ZeroR8).and.(u%density <= -1._R8P  + ZeroR8).and. &
                       (u%energy  >= -2.5_R8P - ZeroR8).and.(u%energy  <= -2.5_R8P + ZeroR8)
print "(A,L1)", 'u = + u, is done right? ', are_tests_passed(15)

u = u * 2._R8P
are_tests_passed(16) = (u%density >= -2._R8P - ZeroR8).and.(u%density <= -2._R8P + ZeroR8).and. &
                       (u%energy  >= -5._R8P - ZeroR8).and.(u%energy  <= -5._R8P + ZeroR8)
print "(A,L1)", 'u * 2, is done right? ', are_tests_passed(16)

u = u / 2._R8P
are_tests_passed(17) = (u%density >= -1._R8P  - ZeroR8).and.(u%density <= -1._R8P  + ZeroR8).and. &
                       (u%energy  >= -2.5_R8P - ZeroR8).and.(u%energy  <= -2.5_R8P + ZeroR8)
print "(A,L1)", 'u / 2, is done right? ', are_tests_passed(17)
#endif

print "(A,L1)", new_line('a')//'Are all tests passed? ', all(are_tests_passed)
endprogram foreseer_test_conservative_compressible