Reconstruct interfaces states.
The reconstruction is done in conservative variables.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(euler_1d), | intent(in) | :: | self | Euler field. |
||
| type(conservative_compressible), | intent(in) | :: | conservative(1-self%Ng:) | Conservative variables. |
||
| type(conservative_compressible), | intent(inout) | :: | r_conservative(1:,0:) | Reconstructed conservative vars. |
subroutine reconstruct_interfaces_conservative(self, conservative, r_conservative)
!< Reconstruct interfaces states.
!<
!< The reconstruction is done in conservative variables.
class(euler_1d), intent(in) :: self !< Euler field.
type(conservative_compressible), intent(in) :: conservative(1-self%Ng:) !< Conservative variables.
type(conservative_compressible), intent(inout) :: r_conservative(1:, 0:) !< Reconstructed conservative vars.
real(R8P), allocatable :: U(:) !< Serialized conservative variables.
real(R8P) :: C(1:2, 1-self%Ng:-1+self%Ng, 1:3) !< Pseudo characteristic variables.
real(R8P) :: CR(1:2, 1:3) !< Pseudo characteristic reconst.
integer(I4P) :: i !< Counter.
integer(I4P) :: j !< Counter.
integer(I4P) :: f !< Counter.
integer(I4P) :: v !< Counter.
class(interpolator_object), allocatable :: interpolator !< WENO interpolator.
select case(self%weno_order)
case(1) ! 1st order piecewise constant reconstruction
do i=0, self%Ni+1
r_conservative(1, i) = conservative(i)
r_conservative(2, i) = r_conservative(1, i)
enddo
case(3, 5, 7, 9, 11, 13, 15, 17) ! 3rd-17th order WENO reconstruction
call wenoof_create(interpolator_type='reconstructor-JS', &
S=self%Ng, &
interpolator=interpolator)
do i=0, self%Ni+1
do j=i+1-self%Ng, i-1+self%Ng
U = conservative(j)%array()
do f=1, 2
C(f, j-i, 1) = U(1)
C(f, j-i, 2) = U(2)
C(f, j-i, 3) = U(5)
enddo
enddo
do v=1, 3
call interpolator%interpolate(stencil=C(:, :, v), interpolation=CR(:, v))
enddo
do f=1, 2
r_conservative(f, i)%density = CR(f, 1)
r_conservative(f, i)%momentum = CR(f, 2) * ex
r_conservative(f, i)%energy = CR(f, 3)
enddo
enddo
endselect
endsubroutine reconstruct_interfaces_conservative