automatyzacja zadania

0

Witam wszystkich użytkowników Pythona! Jako, że jestem początkującym znawcą tematu, postanowiłem zamieścić w tym dziale swoje zapytanie.

Mam na pisane dwie definicje w których są zamieszczone pętle wrzucające dane do tablicy, po zakończeniu pętli w danej definicji, ostatnie elementy wstawione do tablic są początkowymi elementami tablicy zasilanej pętlą z drugiej definicji, po zakończeniu drugiej, wracamy do pierwszej i ona jest związana z drugą danymi jak druga z pierwszą. Najogólniej:

a = 4
b = 5
 
def pierwsza(czas, a, b)
 
aw = []
aw.extend(a)
ax = []
ax.extend(b)
 
  for t in range(1, czas):
 
    aw.extend(aw+t)
    ax.extend(ax+aw)
 
  return aw, ab
 
def druga(czas)
 
bw = aw[-1]
bx = []
 
  for t in range(1, czas):
 
    bw.extend(bw[-1]+t)
    bx.extend(bx+ax[t])
 
  return bw, bx

Potem po przeliczeniu druga() uruchamiana jest pierwsza() przy czym a = bw[-1], b = bx[t].

Macie jakieś pomysły jak o ugryźć? Dopiero zaczynam z programowaniem.

Pozdrawiam.

1

Postaraj się nieco jaśniej napisać co chcesz osiągnać i jakie jest właściwie Twoje pytanie.

Kod, który wrzuciłeś, ma niepoprawne wcięcia (to one decydują o strukturze kodu w Pythonie) i inne błędy (np. brak dwukropków na końcu linijek z def).

0

Chciałem skrótowo to napisać, ale poniżej jest kod który udało mi się napisać:

# -*- coding: utf-8 -*-
import math

A0 = -6.5314
A1 = 0.072452
A2 = -0.23951e-03
A3 = 0.25493e-06
B0 = -15.587
B1 = 0.15915
B2 = -0.50612e-03
B3 = 0.53290e-06

Ws = 47/2                # kg
Cps = 924                # J/kg*K
Cpw = 4180               # J/kg*K
Cp_cond = Cpw            # J/kg*K
Cp_cool = Cpw            # J/kg*K
Cp_chill = Cpw           # J/kg*K
Cp_Cu = 386              # J/kg*K
Wk_Hex = 52.20           # kg
Cp_Al = 905              # J/kg*K
Wf_Hex = 64.04           # kg
Wcond = 24.28            # kg
Wew = 50                 # kg
Weva = 12.45             # kg
Lw = 2.5*10**6           # J/kg
Qst = 2.8*10**6          # J/kg

Twater_in = 85 + 273.15  # K
Ts = 31 + 273.15         # K
Tcool_in = 31 + 273.15   # K
Kdeso = 1724.14          # W/m2*K  
Kads = 1602.56           # W/m2*K 
Kcond = 4115.23          # W/m2*K  
Keva = 2557.54           # W/m2*K  
Ahex = 2.46              # m2
Acond = 3.53             # m2
Aeva = 1.91              # m2
mw_hot = 1.3             # kg/s
mw_cool = 1.3            # kg/s
mw_cool_ads = 1.6        # kg/s
mw_chill = 0.7           # kg/s
Tchill_in = 14 + 273.15  # K
Tpary = 10 + 273.15      # K

Dso = 2.54*(10**-4)      # m2/s 
Ea = 4.2*(10**4)         # J/mol
R = 8.3144               # J/mol*K
Rp = 1.7*10**-4          # m

def Antoine(T):
    
    Psat_T = 133.32*math.exp(18.3 - (3820/(T - 46.1)))
    return Psat_T

def q_equilibrium(T1, T2):
    
    A_T1 = A0 + A1*T1 + A2*T1**2 + A3*T1**3
    B_T1 = B0 + B1*T1 + B2*T1**2 + B3*T1**3
    
    q_eq = A_T1*pow(Antoine(T2)/Antoine(T1),B_T1)
    return q_eq 

def SorptionRate(T, q_eq, q):
    
    Ds = Dso*math.exp(-Ea/(R*T))
    ksap = (15*Ds)/(Rp**2)      # 1/s
    dq_dt = ksap*(q_eq - q) 
    return dq_dt

def TempWaterOut(T, Tw_in, K, A, m, Cp):
    
    Twater_out = (T + (Tw_in - T)*math.exp(-(K*A)/(m*Cp)))   # K
    return Twater_out

def Sorpcja(dq, q, mw, Tw_in, Tw_out, t):
    
    T_bed = (((Qst*Ws*dq)+(mw*Cpw*(Tw_in - Tw_out)))/(Ws*(Cps + Cpw*q)+(Cp_Cu*Wk_Hex+Cp_Al*Wf_Hex)))*t  
    return T_bed

def Kondensacja(dq_dt, Tcool_in, Tcool_out, Tcond, t):
    
    T_cond = (((-Lw+Cpw*Tcond)*(Ws*dq_dt)+(mw_cool*Cp_cool*(Tcool_in-Tcool_out)))/(Cp_Cu*Wcond))*t
    return T_cond   

def Parowanie(dqa_dt, dqd_dt, Tchill_in, Tchill_out, Tcond, t):
    
    T_eva = (((-Lw*Ws*dqa_dt)+(Cpw*Tcond*Ws*dqd_dt)-(mw_chill*Cp_chill*(Tchill_in-Tchill_out)))/(Cpw*Wew+Cp_Cu*Weva))*t
    return T_eva 

def summ(czas, cykl):
    
    TW_OUT_WYNIK = []
    TS_WYNIK = []
    q_WYNIK = []
    dq_dt_WYNIK = []
    TCOND_WYNIK =[]
    TCOOL_OUT = []
    TW_OUT_WA = []
    TS_WA = []
    q_WA = []
    TEVA_WA =[]
    TCHILL_OUT_WA = []
    
    for c in range(1, cykl):
        
        if c == 1:
            
            Ts = 31 + 273.15
            Tcond = 31 + 273.15
            q = 0.128
            Teva = 10 + 273.15
            
        else:
            
            Ts = TS_WA[-1]
            Tcond = TCOND_WYNIK[-1]
            q = q_WA[-1]
            Teva = TEVA_WA[-1]

        dq_dt = 0.0000
        dqa_dt = 0.0000
        
        for t in range(1, czas):
                 
            Tw_out = TempWaterOut(Ts, Twater_in, Kdeso, Ahex, mw_hot, Cpw)
            TW_OUT_WYNIK.append(round(Tw_out - 273.15,2))
        
            TCOND_WYNIK.append(Tcond)
            q_WYNIK.append(q) 
            dq_dt_WYNIK.append(dq_dt)
        
            if t <= 30:
        
                Tcool_out = 31 + 273.15
                Tc_dt = 0
        
            else:
            
                dq_dt = SorptionRate(Ts, q_equilibrium(Ts, Tcond), q)
                q += dq_dt
            
                Tc_dt = Kondensacja(dq_dt, Tcool_in, Tcool_out, Tcond, t)/t
                       
                Tcool_out = TempWaterOut(Tcond, Tcool_in, Kcond, Acond, mw_cool, Cp_cond)
                TCOOL_OUT.append(Tcool_out)
        
                Tcond += Tc_dt
        
            TS_WYNIK.append(Ts)
            Ts += Sorpcja(dq_dt, q, mw_hot, Twater_in, Tw_out, t)/t   
            
        Tads = TS_WYNIK[-1]
        q_ads = q_WYNIK[-1]

#         dqa_dt = 0.0000

        for t in range(1, czas):

            Tw_out_a = TempWaterOut(Tads, Tcool_in, Kads, Ahex, mw_cool_ads, Cpw)
            TW_OUT_WA.append(round(Tw_out_a - 273.15,2))

            TEVA_WA.append(Teva)
            q_WA.append(q_ads) 
        
            Tchill_out = TempWaterOut(Teva, Tchill_in, Keva, Aeva, mw_chill, Cp_chill)
            TCHILL_OUT_WA.append(Tchill_out - 273.15)
        
            if t <= 30:
        
                Teva_dt = 0
        
            else:
            
                dqa_dt = SorptionRate(Tads, q_equilibrium(Tads, Teva), q_ads)
                q_ads += dqa_dt
        
            Teva_dt = Parowanie(dqa_dt, dq_dt_WYNIK[t + 450*(c - 1) - 1], -Tchill_in, -Tchill_out, TCOND_WYNIK[t + 450*(c - 1) - 1], t)/t    
            Teva += Teva_dt
    
            TS_WA.append(Tads)
            Tads += Sorpcja(dqa_dt, q_ads, mw_cool, Tcool_in, Tw_out_a, t)/t 

    return TW_OUT_WYNIK, TS_WYNIK, q_WYNIK, TCOND_WYNIK, TCOOL_OUT, TW_OUT_WA, TS_WA, q_WA, TEVA_WA, TCHILL_OUT_WA

no i po wpisaniu

TW_OUT_WYNIK, TS_WYNIK = summ(450,1)
TW_OUT_WYNIK

wyrzuca mi pustą tablicę []
a przecież są dopisywane elementy do niej

Macie pomysły?

0

już znalazłem w pozycji

dq_dt_WYNIK[t + 450*(c - 1) - 1]

powinno być dq_dt_WYNIK[t + (czas-1)*(c - 1) - 1]

.

macie pomysł jak to ewentualnie przerzucić na obiekty? nie chce gotowych rozwiązań tylko podpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1