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