impose_boundary_conditions Subroutine

private pure subroutine impose_boundary_conditions(self, U)

Impose boundary conditions.

The boundary conditions are imposed on the primitive variables by means of the ghost cells approach.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

type(conservative_compressible), intent(inout) :: U(1-self%Ng:)

Conservative variables.



Source Code

   pure subroutine impose_boundary_conditions(self, U)
   !< Impose boundary conditions.
   !<
   !< The boundary conditions are imposed on the primitive variables by means of the ghost cells approach.
   class(euler_1d),              intent(in)    :: self          !< Euler field.
   type(conservative_compressible), intent(inout) :: U(1-self%Ng:) !< Conservative variables.
   ! type(primitive_compressible), intent(inout) :: P(1-self%Ng:) !< Primitive variables.
   integer(I4P)                                :: i             !< Space counter.

   select case(trim(adjustl(self%BC_L)))
      case('TRA') ! trasmissive (non reflective) BC
         do i=1-self%Ng, 0
            ! P(i) = P(-i+1)
            U(i) = U(-i+1)
         enddo
      case('REF') ! reflective BC
         do i=1-self%Ng, 0
            ! P(i)%density  =   P(-i+1)%density
            ! P(i)%velocity = - P(-i+1)%velocity
            ! P(i)%pressure =   P(-i+1)%pressure
            U(i)%density  =   U(-i+1)%density
            U(i)%momentum = - U(-i+1)%momentum
            U(i)%energy   =   U(-i+1)%energy
         enddo
   endselect

   select case(trim(adjustl(self%BC_R)))
      case('TRA') ! trasmissive (non reflective) BC
         do i=self%Ni+1, self%Ni+self%Ng
            ! P(i) = P(self%Ni-(i-self%Ni-1))
            U(i) = U(self%Ni-(i-self%Ni-1))
         enddo
      case('REF') ! reflective BC
         do i=self%Ni+1, self%Ni+self%Ng
            ! P(i)%density  =   P(self%Ni-(i-self%Ni-1))%density
            ! P(i)%velocity = - P(self%Ni-(i-self%Ni-1))%velocity
            ! P(i)%pressure =   P(self%Ni-(i-self%Ni-1))%pressure
            U(i)%density  =   U(self%Ni-(i-self%Ni-1))%density
            U(i)%momentum = - U(self%Ni-(i-self%Ni-1))%momentum
            U(i)%energy   =   U(self%Ni-(i-self%Ni-1))%energy
         enddo
   endselect
   endsubroutine impose_boundary_conditions


add add add_euler array array compute_derivate compute_dt compute_fluxes compute_fluxes compute_fluxes_from_primitive compute_post_rarefaction compute_post_shock compute_roe_state compute_states23_from_u23 compute_u23 compute_up23 compute_waves compute_waves_u23 compute_waves_up23 cons_assign_cons cons_divide_real cons_multiply_cons cons_multiply_real conservative_compressible conservative_compressible_instance conservative_compressible_pointer conservative_to_primitive_compressible cp cv delta density description description description description destroy destroy destroy dEuler_dt energy energy eos_assign_eos eos_compressible eos_compressible_instance eos_compressible_pointer eta euler_assign_euler euler_assign_real euler_local_error euler_multiply_euler euler_multiply_real g gm1 gp1 impose_boundary_conditions initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize left_eigenvectors momentum negative negative output parse_command_line_interface positive positive pressure pressure prim_assign_prim prim_divide_real prim_multiply_prim prim_multiply_real primitive_compressible primitive_compressible_instance primitive_compressible_pointer primitive_to_conservative_compressible R real_multiply_cons real_multiply_euler real_multiply_prim reconstruct_interfaces_characteristic reconstruct_interfaces_conservative reconstruct_interfaces_primitive right_eigenvectors rpat_assign_rpat save_time_serie solve solve solve solve solve speed_of_sound sub sub sub_euler temperature velocity