# 1D Transient Heat Conduction in Biomass Particle # ----------------------------------------------------------------------------- # number of nodes from center to surface of particle # if m=5 then nodes=[0, 1, 2, 3, 4] where 0=center and 4=surface m = 100 # time vector from 0 to max time tmax = 3.0 # max time, s nt = 1000 # number of time steps dt = tmax/nt # time step, s t = np.arange(0, tmax+dt, dt) # time vector, s # intraparticle temperature array [T] in Kelvin # row = time step, column = node point from 0 to m T = hc(d, rho, cp, k, h, Ti, Tinf, b, m, t) # Plot Results # ----------------------------------------------------------------------------- py.close('all') Tc = T[:, 0] # center temperature profile Ts = T[:, m-1] # surface temperature profile Tavg = [np.mean(row) for row in T] # average temperature profile py.figure(1) py.plot(t, Tc, 'r--', lw=2, label='center') py.plot(t, Ts, 'r-', lw=2, label='surface') py.plot(t, Tavg, 'g-', lw=2, label='average') py.axhline(Tinf, c='k', ls='--')
cpc = 1003.2 + 2.09 * (T[0] - 273.15) # char heat capacity, J/(kg*K) kc = 0.08 - (1e-4) * (T[0] - 273.15) # char thermal conductivity, W/(m*K) cpbar = Yw*cpw + (1-Yw)*cpc # effective heat capacity kbar = Yw*kw + (1-Yw)*kc # effective thermal conductivity pbar = pw[0] + pc[0] # effective density g = np.ones(m)*(1e-10) # assume initial heat generation is negligible # Solve system of equations [A]{T}={C} where T = A\C for each time step #------------------------------------------------------------------------------ for i in range(1, nt+1): # heat conduction T[i] = hc(m, dr, b, dt, h, Tinf, g, T, i, r, pbar, cpbar, kbar) # kinetic reactions B[i], C1[i], C2[i], g = kn(T, B, C1, C2, rhow, dt, i, H) # update thermal properties cpw = 1112.0 + 4.85 * (T[i] - 273.15) kw = 0.13 + (3e-4) * (T[i] - 273.15) cpc = 1003.2 + 2.09 * (T[i] - 273.15) kc = 0.08 - (1e-4) * (T[i] - 273.15) # update wood and char density pw[i] = B[i]*rhow pc[i] = (C1[i]+C2[i])*rhow # update mass fraction vector
dv = (6/np.pi*v)**(1/3) # volume equivalent sphere diameter, m dsv = (dv**3)/(ds**2) # surface volume equivalent sphere diameter (Sauter), m dc = v/As # characteristic length, m # number of nodes from center of particle (m=0) to surface (m) m = 100 # time vector from 0 to max time tmax = 3.0 # max time, s nt = 1000 # number of time steps dt = tmax/nt # time step, s t = np.arange(0, tmax+dt, dt) # time vector, s # intraparticle temperature array [T] in Kelvin # row = time step, column = node point from 0 to m T = hc(d, rho, cp, k, h, Ti, Tinf, 1, m, t) # base case, b = 1 for cylinder Ts = hc(ds, rho, cp, k, h, Ti, Tinf, 2, m, t) # ds case, b = 2 for sphere Tv = hc(dv, rho, cp, k, h, Ti, Tinf, 2, m, t) # dv case, b = 2 for sphere Tsv = hc(dsv, rho, cp, k, h, Ti, Tinf, 2, m, t) # dsv case, b = 2 for sphere Tc = hc(dc, rho, cp, k, h, Ti, Tinf, 2, m, t) # dc case, b = 2 for sphere # Plot Results # ----------------------------------------------------------------------------- py.close('all') T_avg = [np.mean(row) for row in T] # average temperature profile Ts_avg = [np.mean(row) for row in Ts] # ds average temperature profile Tv_avg = [np.mean(row) for row in Tv] # dv average temperature profile Tsv_avg = [np.mean(row) for row in Tsv] # dsv average temperature profile Tc_avg = [np.mean(row) for row in Tc] # dc average temperature profile