Time derivative of Euler field, the residuals function.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(euler_1d), | intent(in) | :: | self | Euler field. |
||
| real(kind=R8P), | intent(in), | optional | :: | t | Time. |
Euler field time derivative.
function dEuler_dt(self, t) result(dState_dt)
!< Time derivative of Euler field, the residuals function.
class(euler_1d), intent(in) :: self !< Euler field.
real(R8P), intent(in), optional :: t !< Time.
class(integrand), allocatable :: dState_dt !< Euler field time derivative.
type(conservative_compressible) :: U(1-self%Ng:self%Ni+self%Ng) !< Conservative variables.
type(conservative_compressible) :: UR(1:2,0:self%Ni+1) !< Reconstructed conservative variables.
type(conservative_compressible) :: F(0:self%Ni) !< Fluxes of conservative variables.
integer(I4P) :: i !< Counter.
do i=1, self%Ni
U(i) = self%U(i)
enddo
call self%impose_boundary_conditions(U=U)
call self%reconstruct_interfaces(conservative=U, r_conservative=UR)
do i=0, self%Ni
call self%riemann_solver%solve(eos_left=self%eos, state_left=UR( 2, i ), &
eos_right=self%eos, state_right=UR(1, i+1), normal=ex, fluxes=F(i))
enddo
allocate(euler_1d :: dState_dt)
select type(dState_dt)
class is(euler_1d)
dState_dt = self
do i=1, self%Ni
dState_dt%U(i) = (F(i - 1) - F(i)) / self%Dx
enddo
endselect
endfunction dEuler_dt