Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Python by alextraza ( 14 years ago )
#! /usr/bin/env python3.2
# -*- coding: utf-8 -*-
import math
print('Управление процессом нагнетания жидкости в пласт')

def dicemal(a):
  """Функция фикса чисел с плавающей точкой"""
  return round(a*100)/100

def step(a, b, c):
  """Функция преобразования колличества шагов в величину шагов"""
  n = (a-b)/(c-1)
  return dicemal(n) # Возвращаем округленную величину шага

# инициализация переменных
# объемный вес вышележащих пород
g_max = 3.1
g_min = 2.5
g_n = 3
g_n = step(g_max, g_min, g_n)
# глубина залегания
h_max = 800
h_min = 500
h_n = 3
h_n = step(h_max, h_min, h_n)
# проницаемость пласта
k_max = 0.16
k_min = 0.08
k_n = 2
k_n = step(k_max, k_min, k_n)
# вязкость жидкости
mu_max = 1.5
mu_min = 1.1
mu_n = 2
mu_n = step(mu_max, mu_min, mu_n)
# мощность пласта
m_max = 2.4
m_min = 1.2
m_n = 4
m_n = step(m_max, m_min, m_n)
# длина скважины
lc_max = 200
lc_min = 140
lc_n = 2
lc_n = step(lc_max, lc_min, lc_n)
# максимальные-минимальные значения
P_max = 0
P_min = 0
Q_max = 0
Q_min = 0
# начало тела цикла
g = g_min
while g <= g_max:
  h = h_min
  while h <= h_max:
    k = k_min
    while k <= k_max:
      mu = mu_min
      while mu <= mu_max:
        m = m_min
        while m <= m_max:
          lc = lc_min
          while lc <= lc_max:
     # расчетная часть
            P = (0.1*g*h) # давление на скважине
            Q = (0.006*math.pi*P*lc)/(5*mu*m) # темп нагнетания
            T = (59.7*mu*3*(m*m))/(k*P) # время нагнетания
            dt = T/50 # квант времени
            t = 0
            i = 0
            # цикл наростания времени
            while t <= T:
              i=i+1
              t=t+dt
              P_t = P*(1+0.5*math.cos(t)) # изменение давления во времени
              # проверка допустимого отклонения
              if abs(P-P_t) > 0.1*P:
                k_t = (59.7*mu*3*(m*m))/(T*P_t)
                Q_t = (0.006*math.pi*k_t*P_t*lc)/(5*mu*m)
              else:
                Q_t = Q
              # выбор максимального давления
              if P_max < P_t:
                P_max = P_t
                g_P_max = g
                h_P_max = h
                k_P_max = k
                mu_P_max = mu
                m_P_max = m
                lc_P_max = lc
              # выбор минимального давления
              if P_min == 0:
                P_min = P_t
                g_P_min = g
                h_P_min = h
                k_P_min = k
                mu_P_min = mu
                m_P_min = m
                lc_P_min = lc
              elif P_min > P_t:
                P_min = P_t
                g_P_min = g
                h_P_min = h
                k_P_min = k
                mu_P_min = mu
                m_P_min = m
                lc_P_min = lc
              # выбор максимального темпа
              if Q_max < Q_t:
                Q_max = Q_t
                g_Q_max = g
                h_Q_max = h
                k_Q_max = k
                mu_Q_max = mu
                m_Q_max = m
                lc_Q_max = lc
              # выбор минимального темпа
              if Q_min == 0:
                Q_min = Q_t
                g_Q_min = g
                h_Q_min = h
                k_Q_min = k
                mu_Q_min = mu
                m_Q_min = m
                lc_Q_min = lc
              elif Q_min > Q_t:
                Q_min = Q_t
                g_Q_min = g
                h_Q_min = h
                k_Q_min = k
                mu_Q_min = mu
                m_Q_min = m
                lc_Q_min = lc
              
            lc = dicemal(lc+lc_n)
          m = dicemal(m+m_n)
        mu = dicemal(mu+mu_n)
      k = dicemal(k+k_n)
    h = dicemal(h+h_n)
  g = dicemal(g+g_n)
# конец тела цикла

# вывод значиний с форматированием
print ('{0:7s} {1:4s} {2:4s} {3:4s} {4:3s} {5:3s} {6:4s}'
.format('Pmax', '\u03b3', 'H', 'k', '\u03bc', 'm', 'lc'))
print ('{0:6.2f} {1:4.1f} {2:4.0f} {3:4.2f} {4:4.2f} {5:1.1f} {6:3.0f}'
.format(P_max, g_P_max, h_P_max, k_P_max, mu_P_max, m_P_max, lc_P_max))
print ()
print ('{0:7s} {1:4s} {2:4s} {3:4s} {4:3s} {5:3s} {6:4s}'
.format('Pmin', '\u03b3', 'H', 'k', '\u03bc', 'm', 'lc'))
print ('{0:6.2f} {1:4.1f} {2:4.0f} {3:4.2f} {4:4.2f} {5:1.1f} {6:3.0f}'
.format(P_min, g_P_min, h_P_min, k_P_min, mu_P_min, m_P_min, lc_P_min))
print ()
print ('{0:7s} {1:4s} {2:4s} {3:4s} {4:3s} {5:3s} {6:4s}'
.format('Qmax', '\u03b3', 'H', 'k', '\u03bc', 'm', 'lc'))
print ('{0:6.2f} {1:4.1f} {2:4.0f} {3:4.2f} {4:4.2f} {5:1.1f} {6:3.0f}'
.format(Q_max, g_Q_max, h_Q_max, k_Q_max, mu_Q_max, m_Q_max, lc_Q_max))
print ()
print ('{0:7s} {1:4s} {2:4s} {3:4s} {4:3s} {5:3s} {6:4s}'
.format('Qmin', '\u03b3', 'H', 'k', '\u03bc', 'm', 'lc'))
print ('{0:6.2f} {1:4.1f} {2:4.0f} {3:4.2f} {4:4.2f} {5:1.1f} {6:3.0f}'
.format(Q_min, g_Q_min, h_Q_min, k_Q_min, mu_Q_min, m_Q_min, lc_Q_min))
print ()

 

Revise this Paste

Your Name: Code Language: