euler_local_error Function

private function euler_local_error(lhs, rhs) result(error)

Estimate local truncation error between 2 euler approximations.

The estimation is done by norm L2 of U:

$$ error = \sqrt{ \sum_i{\sum_i{ \frac{(lhs\%U_i - rhs\%U_i)^2}{lhs\%U_i^2} }} } $$

Arguments

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

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

Return Value real(kind=R8P)

Error estimation.


Source Code


Source Code

  function euler_local_error(lhs, rhs) result(error)
  !< Estimate local truncation error between 2 euler approximations.
  !<
  !< The estimation is done by norm L2 of U:
  !<
  !< $$ error = \sqrt{ \sum_i{\sum_i{ \frac{(lhs\%U_i - rhs\%U_i)^2}{lhs\%U_i^2} }} } $$
  class(euler_1d),  intent(in) :: lhs      !< Left hand side.
  class(integrand), intent(in) :: rhs      !< Right hand side.
  real(R8P)                    :: error    !< Error estimation.
  real(R8P), allocatable       :: U_lhs(:) !< Serialized conservative variables.
  real(R8P), allocatable       :: U_rhs(:) !< Serialized conservative variables.
  integer(I4P)                 :: i        !< Space counter.
  integer(I4P)                 :: v        !< Variables counter.

  select type(rhs)
  class is (euler_1d)
     error = 0._R8P
     do i=1, lhs%Ni
       U_lhs = lhs%U(i)%array()
       U_rhs = rhs%U(i)%array()
       do v=1, size(U_lhs, dim=1)
         error = error + (U_lhs(v) - U_rhs(v)) ** 2 / U_lhs(v) ** 2
       enddo
     enddo
     error = sqrt(error)
  endselect
  endfunction euler_local_error


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