init Subroutine

subroutine init()

Initialize the field.

Arguments

None

Calls

proc~~init~11~~CallsGraph proc~init~11 init str str proc~init~11->str
Help

Called By

proc~~init~11~~CalledByGraph proc~init~11 init program~integrate_euler_1d integrate_euler_1D program~integrate_euler_1d->proc~init~11
Help

Source Code


Source Code

  subroutine init()
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Initialize the field.
  !---------------------------------------------------------------------------------------------------------------------------------
  real(R_P), parameter :: pi=4._R_P * atan(1._R_P) !< Pi greek.
  integer(I_P)         :: i                        !< Space counter.
  integer(I_P)         :: s                        !< Species counter.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  allocate(xcenter(1:Ni))
  allocate(xnode(0:Ni))
  Dx=1._R_P/Ni
  do i=1, Ni
    xcenter(i) = Dx * i - 0.5_R_P * Dx
  enddo
  do i=0, Ni
    xnode(i) = Dx * i
  enddo
  if ((av_Ni>0).and.(av_Ni/=Ni)) then
    allocate(av_xnode(0:av_Ni))
    do i=0, av_Ni
      av_xnode(i) = 1._R_P/av_Ni * i
    enddo
  endif
  select case(trim(adjustl(problem)))
  case('sod')
    print "(A)", 'Solving "'//trim(adjustl(problem))//'" problem'
    t_final = 0.2_R_P
    CFL = 0.7_R_P
    Ns = 1
    Nc = Ns + 2
    Np = Ns + 4
    allocate(initial_state(1:Np, 1:Ni))
    allocate(cp0(1:Ns))
    allocate(cv0(1:Ns))
    variables = 'VARIABLES="x"'
    do s=1, Ns
      variables = variables//' "rho('//trim(str(s,.true.))//')"'
    enddo
    variables = variables//'  "u" "p" "rho" "gamma"'
    BC_L = 'TRA'
    BC_R = 'TRA'
    cp0(1) = 1040._R_P
    cv0(1) = 743._R_P
    do i=1, Ni/2
      initial_state(:, i) = [1._R_P, & ! rho(s)
                             0._R_P, & ! u
                             1._R_P, & ! p
                             1._R_P, & ! sum(rho(s))
                             cp0/cv0]  ! gamma = cp/cv
    enddo
    do i=Ni/2 + 1, Ni
      initial_state(:, i) = [0.125_R_P, & ! rho(s)
                             0._R_P,    & ! u
                             0.1_R_P,   & ! p
                             0.125_R_P, & ! sum(rho(s))
                             cp0/cv0]     ! gamma = cp/cv
    enddo
  case('smooth')
    print "(A)", 'Solving "'//trim(adjustl(problem))//'" problem'
    t_final = 0.1_R_P
    CFL = 0.7_R_P
    Ns = 1
    Nc = Ns + 2
    Np = Ns + 4
    allocate(initial_state(1:Np, 1:Ni))
    allocate(cp0(1:Ns))
    allocate(cv0(1:Ns))
    variables = 'VARIABLES="x"'
    do s=1, Ns
      variables = variables//' "rho('//trim(str(s,.true.))//')"'
    enddo
    variables = variables//'  "u" "p" "rho" "gamma"'
    BC_L = 'TRA'
    BC_R = 'TRA'
    cp0(1) = 1040._R_P
    cv0(1) = 743._R_P
    do i=1, Ni
      initial_state(:, i) = [1._R_P + 4._R_P / 5._R_P  * sin(         pi * xcenter(i) * 0.5_R_P) + &
                                      1._R_P / 10._R_P * sin(5._R_P * pi * xcenter(i) * 0.5_R_P),  & ! rho(s)
                             0.5_R_P * (xcenter(i) - 0.5_R_P)**4,                                  & ! u
                             10._R_P + 2._R_P * xcenter(i)**4,                                     & ! p
                             1._R_P + 4._R_P / 5._R_P  * sin(         pi * xcenter(i) * 0.5_R_P) + &
                                      1._R_P / 10._R_P * sin(5._R_P * pi * xcenter(i) * 0.5_R_P),  & ! sum(rho(s))
                             cp0/cv0]     ! gamma = cp/cv
    enddo
  case default
    print "(A)", 'Error: unknown problem "'//trim(adjustl(problem))//'"'
    print "(A)", 'Valid problem names are:'
    print "(A)", '  + sod'
    print "(A)", '  + smooth'
    stop
  endselect

  if (trim(adjustl(output_cli))/='unset') then
    output = trim(adjustl(output_cli))//'-'//trim(adjustl(solver))
  else
    output = 'euler_1D_integration-'//trim(adjustl(solver))
  endif
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endsubroutine init


a a a a a add_burgers add_euler add_euler add_euler add_lorenz allocate_integrand_members allocate_integrand_members allocate_integrand_members allocate_integrand_members allocate_integrand_members amplitude_phase assign_abstract assign_integrand assign_integrand assign_integrand assign_multistage assign_multistage_multistep assign_multistep assign_real assign_real assign_real average_solution burgers_assign_burgers burgers_assign_real burgers_local_error burgers_multiply_burgers burgers_multiply_real check_error check_scheme_has_fast_mode check_scheme_has_fast_mode check_scheme_has_fast_mode class_name class_name class_name class_name class_name class_name class_name class_name class_name class_name class_name class_name class_name compute_dt compute_dt compute_dt compute_dt compute_dt compute_dt compute_dt compute_dx compute_inter_states compute_inter_states compute_inter_states compute_inter_states compute_inter_states conservative2primitive conservative2primitive conservative2primitive conservative2primitive conservative2primitive d2Burgers_dx2 dBurgers_dt dBurgers_dx description description description description destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy destroy_abstract destroy_multistage destroy_multistage_multistep destroy_multistep destroy_rk destroy_rk dEuler_dt dEuler_dt dEuler_dt dEuler_dt dEuler_dt dLorenz_dt dt_ratio dU_dt dU_dt dU_dt E E E E E error error error euler_assign_euler euler_assign_euler euler_assign_euler euler_assign_euler euler_assign_euler euler_assign_real euler_assign_real euler_assign_real euler_local_error euler_local_error euler_local_error euler_multiply_euler euler_multiply_euler euler_multiply_euler euler_multiply_real euler_multiply_real euler_multiply_real exact_solution exact_solution exact_solution execute execute execute export_tecplot export_tecplot export_tecplot foodie_integrator_class_names foodie_integrator_factory foodie_integrator_schemes H H H H H has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode has_fast_mode impose_boundary_conditions impose_boundary_conditions impose_boundary_conditions impose_boundary_conditions impose_boundary_conditions impose_boundary_conditions init init init init init init init init init init init init init init_rk init_rk initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize initialize_order_s initialize_order_s_1 integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integr_assign_integr integrand_add_integrand integrand_add_integrand integrand_add_integrand integrand_add_integrand_fast integrand_add_integrand_fast integrand_add_integrand_fast integrand_add_real integrand_add_real integrand_add_real integrand_dimension integrand_dimension integrand_dimension integrand_multiply_integrand integrand_multiply_integrand integrand_multiply_integrand integrand_multiply_integrand_fast integrand_multiply_integrand_fast integrand_multiply_integrand_fast integrand_multiply_real integrand_multiply_real integrand_multiply_real integrand_multiply_real_scalar integrand_multiply_real_scalar integrand_multiply_real_scalar integrand_multiply_real_scalar_fast integrand_multiply_real_scalar_fast integrand_multiply_real_scalar_fast integrand_sub_integrand integrand_sub_integrand integrand_sub_integrand integrand_sub_real integrand_sub_real integrand_sub_real integrand_subtract_integrand_fast integrand_subtract_integrand_fast integrand_subtract_integrand_fast integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_fast integrate_order_2 integrate_order_2_fast integrate_order_3 integrate_order_3_fast integrate_order_s integrate_order_s_1 integrate_order_s_1_fast integrate_order_s_fast integrate_rk integrate_rk is_admissible is_available is_class_available is_multistage is_multistage is_multistage is_multistep is_multistep is_multistep is_scheme_available is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported is_supported local_error local_error local_error lorenz_assign_lorenz lorenz_assign_real lorenz_local_error lorenz_multiply_lorenz lorenz_multiply_real new_Dt observed_order observed_order observed_order omega output output output output output output output output output output p p p p p parse_cli parse_cli parse_cli previous_step previous_step previous_step primitive2conservative primitive2conservative primitive2conservative primitive2conservative primitive2conservative r r r r r real_add_integrand real_add_integrand real_add_integrand real_multiply_burgers real_multiply_euler real_multiply_euler real_multiply_euler real_multiply_integrand real_multiply_integrand real_multiply_integrand real_multiply_lorenz real_scalar_multiply_integrand real_scalar_multiply_integrand real_scalar_multiply_integrand real_sub_integrand real_sub_integrand real_sub_integrand reconstruct_interfaces reconstruct_interfaces_states reconstruct_interfaces_states reconstruct_interfaces_states reconstruct_interfaces_states reconstruct_interfaces_states registers_number riemann_solver riemann_solver riemann_solver riemann_solver riemann_solver save_results save_results save_results save_results save_results save_results save_results save_results save_results save_time_serie save_time_serie save_time_serie save_time_serie save_time_serie scheme_number set_cli set_cli set_cli set_sin_wave_initial_state set_square_wave_initial_state stages_number stages_number stages_number steps_number steps_number steps_number sub_burgers sub_euler sub_euler sub_euler sub_lorenz supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes supported_schemes synchronize synchronize synchronize synchronize t_fast t_fast t_fast test test test_ab test_ab test_ab test_euler test_euler test_euler test_leapfrog test_leapfrog test_leapfrog test_ls_rk test_ls_rk test_ls_rk test_tvd_rk test_tvd_rk test_tvd_rk tokenize trigger_error update_previous update_previous update_previous_steps update_previous_steps update_previous_steps