|
| 1 | +import math |
| 2 | + |
| 3 | +def cp_w(tmp): |
| 4 | + cp = -0.394796083E+05/tmp**2+0.575573102E+03/tmp+0.931782653E+00+0.722271300E-02*tmp-0.734256000E-05*tmp**2+0.495504000E-08*tmp**3-0.133693000E-11*tmp**4 |
| 5 | + cp = cp * 8314.472/18.01528 |
| 6 | + |
| 7 | + cp=2000 |
| 8 | + |
| 9 | + return cp |
| 10 | + |
| 11 | +def h_w(tmp): |
| 12 | + h = 0.394796083E+05/tmp+0.575573102E+03*math.log(tmp)+0.931782653E+00*tmp+0.722271300E-02/2*tmp**2-0.734256000E-05/3*tmp**3+0.495504000E-08/4*tmp**4-0.133693000E-11/5*tmp**5-0.330397431E+05 |
| 13 | + h = h * 8314.472/18.01528 |
| 14 | + |
| 15 | + h = 2000 * tmp |
| 16 | + |
| 17 | + return h |
| 18 | + |
| 19 | + |
| 20 | +y1 = 0.9 |
| 21 | +y2 = 0 |
| 22 | +yr = 0 |
| 23 | +yw = 0.1 |
| 24 | + |
| 25 | +cp1 = 1000 |
| 26 | +cp2 = 1000 |
| 27 | +cpr = 1000 |
| 28 | +cpw = 4184 |
| 29 | +rho10 = 500 |
| 30 | +rho20 = 500 |
| 31 | +rhor0 = 200 |
| 32 | +rhow0 = 1000 |
| 33 | +hor1 = 1000*1000 |
| 34 | +hor2 = 1000*1000 |
| 35 | +horw = 2500 * 1000 |
| 36 | +ref_t1 = 315 + 273.15 |
| 37 | +ref_t2 = 430 + 273.15 |
| 38 | +ref_tw = 100 + 273.15 |
| 39 | +ref_r1 = 0.0056 |
| 40 | +ref_r2 = 0.0075 |
| 41 | +ref_rw = 0.0016 |
| 42 | +rgas = 8.314472 |
| 43 | +refrate = 10/60 |
| 44 | +m12f = 0.4 |
| 45 | +m2rf = 0.15 |
| 46 | +hoc = 14988.3674E3 |
| 47 | + |
| 48 | +cpg = 179.4778852 |
| 49 | + |
| 50 | +e = math.exp(1) |
| 51 | + |
| 52 | +e1 = e * ref_r1 * rgas * ref_t1**2/refrate |
| 53 | +a1 = e * ref_r1 * math.exp(e1/(rgas*ref_t1)) |
| 54 | + |
| 55 | +e2 = e * ref_r2 * rgas * ref_t2**2/refrate |
| 56 | +a2 = e * ref_r2 * math.exp(e2/(rgas*ref_t2)) |
| 57 | + |
| 58 | +ew = e * ref_rw * rgas * ref_tw**2/refrate |
| 59 | +aw = e * ref_rw * math.exp(ew/(rgas*ref_tw)) |
| 60 | + |
| 61 | +rho_s = y1/rho10 + yw/rhow0 |
| 62 | +rho_s = 1/rho_s |
| 63 | +m0 = rho_s * 1E-6 |
| 64 | +m1 = y1 * m0 |
| 65 | +m2 = 0 |
| 66 | +mr = 0 |
| 67 | +rho1 = y1 * rho_s |
| 68 | +rho2 = 0 |
| 69 | +rho3 = 0 |
| 70 | +rhow = yw * rho_s |
| 71 | +mw = yw * m0 |
| 72 | +msum = m1 + m2 + mr + mw |
| 73 | +dtdt = 5/60 |
| 74 | +dt = 1 |
| 75 | + |
| 76 | +t = 0 |
| 77 | +Temp = 20 |
| 78 | +twrite = 12 |
| 79 | +mcc =0 |
| 80 | +dsc = 0 |
| 81 | +mlr1 = 0 |
| 82 | +mlr2 = 0 |
| 83 | +mlrr = 0 |
| 84 | +mlrw = 0 |
| 85 | +TempMax = 800 |
| 86 | + |
| 87 | +h_w_ref = h_w(ref_tw) |
| 88 | + |
| 89 | +f = open('tga_analysis_exact.csv','w') |
| 90 | + |
| 91 | +f.write('s,C,g/g,g/g,g/g,g/g,g/g,1/s,1/s,1/s,1/s,1/s,W/g,W/g\n') |
| 92 | +f.write('Time,Temp,Total Mass,component 1 Mass,water Mass,component 2 Mass,residue Mass,Total MLR, component 1 MLR, water MLR, component 2 MLR, residue MLR,MCC,DSC\n') |
| 93 | + |
| 94 | +outstr=[str('{:.4e}'.format(t)),str('{:.4e}'.format(Temp)),str('{:.4e}'.format(msum/m0)),str('{:.4e}'.format(m1/m0)),str('{:.4e}'.format(mw/m0)),str('{:.4e}'.format(m2/m0)),str('{:.4e}'.format(mr/m0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0)),str('{:.4e}'.format(0))] |
| 95 | +outstr2 = ','.join(outstr)+'\n' |
| 96 | +f.write(outstr2) |
| 97 | + |
| 98 | +while True: |
| 99 | + TempK = Temp + 273.15 |
| 100 | + m1p = m1 |
| 101 | + m2p = m2 |
| 102 | + mrp = mr |
| 103 | + mwp = mw |
| 104 | + |
| 105 | + rr1 = rho1 * a1 * math.exp(-e1/(rgas*TempK)) |
| 106 | + rr2 = rho2 * a2 * math.exp(-e2/(rgas*TempK)) |
| 107 | + rrw = rhow * aw * math.exp(-ew/(rgas*TempK)) |
| 108 | + |
| 109 | + drho1 = rr1 * dt |
| 110 | + drho2 = rr2 * dt |
| 111 | + drhow = rrw * dt |
| 112 | + |
| 113 | + rho1n = max(0,rho1 - drho1) |
| 114 | + rho2n = max(0,rho2 - drho2) |
| 115 | + rhown = max(0,rhow - drhow) |
| 116 | + |
| 117 | + m1 = m1p * rho1n / (rho1+1E-60) |
| 118 | + m2 = m2p * rho2n / (rho2+1E-60) + m12f * (m1p - m1) |
| 119 | + mf1 = (1-m12f) * (m1p - m1) |
| 120 | + mr = mr + m2rf * m2p * (1- rho2n / (rho2+1E-60)) |
| 121 | + mf2 = (1-m2rf) * m2p * (1- rho2n / (rho2+1E-60)) |
| 122 | + mf = mf1 + mf2 |
| 123 | + mw = mw * rhown / (rhow+1E-60) |
| 124 | + msum = m1 + m2 + mr + mw |
| 125 | + |
| 126 | + y1 = m1/(msum + 1E-60) |
| 127 | + y2 = m2/(msum + 1E-60) |
| 128 | + yr = mr/(msum + 1E-60) |
| 129 | + yw = mw/(msum + 1E-60) |
| 130 | + |
| 131 | + rho_s = y1/(rho10+1E-60) + y2/(rho20+1E-60) + yr/(rhor0+1E-60) + yw/(rhow0+1E-60) |
| 132 | + |
| 133 | + if (rho_s > 0): |
| 134 | + rho_s = 1/rho_s |
| 135 | + |
| 136 | + rho1 = y1 * rho_s |
| 137 | + rho2 = y2 * rho_s |
| 138 | + rhor = yr * rho_s |
| 139 | + rhow = yw * rho_s |
| 140 | + if (rho1<=0): rho1n = 0 |
| 141 | + if (rho2<=0): rho2n = 0 |
| 142 | + if (rhor<=0): rhorn = 0 |
| 143 | + if (rhow<=0): rhown = 0 |
| 144 | + mlr1 = (m1p - m1 )/(dt*(m0+1E-60)) |
| 145 | + mlr2 = (m2p - m2 )/(dt*(m0+1E-60)) |
| 146 | + mlrr = (mrp - mr )/(dt*(m0+1E-60)) |
| 147 | + mlrw = (mwp - mw )/(dt*(m0+1E-60)) |
| 148 | + mlrtot = mlr1 + mlr2 + mlrr + mlrw |
| 149 | + |
| 150 | + mcc = hoc * mf / dt * 0.001 / m0 |
| 151 | + |
| 152 | + t = t + dt |
| 153 | + Temp = Temp + dtdt*dt |
| 154 | + |
| 155 | + dsc = dtdt * dt * (y1 * cp1 + y2 * cp2 + yr * cpr + yw * cpw) * msum /(m0 * 1000) |
| 156 | + dsc = dsc + (m1p - m1) * (hor1 - (TempK - ref_t1) * (cpg - cp1) * (1 - m12f)) / (m0 * 1000) |
| 157 | + dsc = dsc + (mr - mrp)/m2rf * (hor2 - (TempK - ref_t2) * (cpg - cp2) * (1 - m2rf)) / (m0 * 1000) |
| 158 | + h_w_TempK = h_w(TempK) |
| 159 | + dsc = dsc + (mwp - mw) * (horw + h_w_TempK - h_w_ref - (TempK - ref_tw) * cpw) / (m0 * 1000) |
| 160 | + |
| 161 | + if (t >= twrite): |
| 162 | + outstr=[str('{:.4e}'.format(t)),str('{:.4e}'.format(Temp)),str('{:.4e}'.format(msum/m0)),str('{:.4e}'.format(m1/m0)),str('{:.4e}'.format(mw/m0)),str('{:.4e}'.format(m2/m0)),str('{:.4e}'.format(mr/m0)),str('{:.4e}'.format(mlrtot)),str('{:.4e}'.format(mlr1)),str('{:.4e}'.format(mlr2)),str('{:.4e}'.format(mlrw)),str('{:.4e}'.format(mlrr)),str('{:.4e}'.format(mcc)),str('{:.4e}'.format(dsc))] |
| 163 | + outstr2 = ','.join(outstr)+'\n' |
| 164 | + f.write(outstr2) |
| 165 | + twrite = twrite+12 |
| 166 | + if (TempK >= TempMax): |
| 167 | + break |
| 168 | + |
| 169 | + |
| 170 | + |
0 commit comments