save_profile_x_comp_slider Subroutine

public subroutine save_profile_x_comp_slider(fe_f, file_name, lx, zy)


Arguments

Type IntentOptional AttributesName
type(FE_FILM), intent(in) :: fe_f

FE_FILM element

character(len=*), intent(in) :: file_name

filename

real(kind=R8), intent(in) :: lx

slider length

real(kind=R8), intent(in) :: zy

distance from a border


Calls

proc~~save_profile_x_comp_slider~~CallsGraph proc~save_profile_x_comp_slider save_profile_x_comp_slider proc~get_unit get_unit proc~save_profile_x_comp_slider->proc~get_unit

Contents


Source Code

   subroutine save_profile_x_comp_slider(fe_f, file_name, lx, zy)
   implicit none
   type(FE_FILM),    intent(in) :: fe_f         !! [[FE_FILM]] *element*
   character(len=*), intent(in) :: file_name    !! *filename*
   real(kind=R8),    intent(in) :: lx           !! *slider length*
   real(kind=R8),    intent(in) :: zy           !! *distance from a border*

      real(kind=R8)    :: pref, K, dr, hr, hb, p0
      integer(kind=I4) :: i, kk

      dr = lx / fe_f%m%n
      dr = dr / 10
      K  = maxval(fe_f%vn(:, H_N))/minval(fe_f%vn(:, H_N))
      hr = minval(fe_f%vn(:, H_N))
      pref = 6 * fe_f%data_f%fl%mu_0 * fe_f%data_f%V_x * lx / (hr ** 2)
      p0 = minval(fe_f%vn(:, P_N))
      call get_unit(kk)
      open(kk, file = file_name, status = 'unknown')
      do i = 1, fe_f%m%n
         if (((fe_f%m%y(i) - zy)**2) < (dr ** 2)) then
            hb = fe_f%vn(i,H_N)/hr
            write (kk, *) fe_f%m%x(i)/lx, hb, (fe_f%vn(i, P_N) - p0) / pref, &
                          1.0 / (K - 1) * (1.0 / hb - K / (K + 1) * (hb ** (-2) - K ** (-2)) - 1.0 / K)
         endif
      enddo
      close(kk)

   return
   endsubroutine save_profile_x_comp_slider