Summer Workshop, Veszprém 2009 RAW MATERIALS

advertisement
Faculty of Chemistry and Chemical Engineering
University of Maribor, Slovenia
Modeling and optimization of
processes of bioethanol
production with Mixed Integer
Process SYNthesizer
MIPSYN
Lidija Čuček, Zdravko Kravanja
Summer Workshop, Veszprém 2009
WHY BIOETHANOL ??
1. Fossil fuels are non-renewable
2. Growing concern about global warming
3. Possible disruption in oil supply
4. Alternative to gasoline, renewable energy
5. The most important long-term objectives of the European Union and United
States in the energy sector are:
- Achieving independence of fossil fuel energy supplies
- Achieving substantial improvement of energy efficiency of the whole supply
chain from production, distribution, to consumption, while minimizing emissions
and waste
- Achieving 20 % increase in the share of renewable energy (RES) by 2020
- The share of renewable energy in all modes of transport has to be at least 10 %
by 2020
Summer Workshop, Veszprém 2009
RAW MATERIALS
Bioethanol can be produced by fermentation of:
-Sugars (molasses),
-Starchy raw materials (corn, potato)
- Lignocellulose (wood, agricultural residues, municipal solid waste)
First-generation biofuels: produced by fermentation of plants containing starch or
sugar.
This production has a lot of downsides: plants are mainly food crops, affection of
the supply of population with food products, limited quantity, affecting
biodiversity, may cause more GHG than fossil fuels, using chemicals for plant
production, impact on drinking water supply,...
Second-generation biofuels: produced by fermentation of lignocelluloses
(agricultural residues, forestry waste, fast-growing energy crops...). Many technical
and economic issues related to their use before 2020.
Third-generation biofuels: produced from algae, sigle-celled aquatic organisms.
Summer Workshop, Veszprém 2009
OUR GOAL
Problems with using bioethanol:
- Usage requires modifications to the engines
- Consumption in engines is about 51 % higher compared to gasoline
- Costs for bioethanol production are very high (investment, costs of raw
materials , etc.)
Therefore it is necessary to develop effective, economical and environment
friendly technologies of bioethanol production.
Consumption of raw materials, energy and water should be very carefully
analyzed, planed and optimized.
Development and application of optimization methods are becoming necessary
in the technique.
Goal: Detailed synthesis and optimization of various production processes
of bioethanol production from different raw materials.
Summer Workshop, Veszprém 2009
GENERAL OVERVIEW OF WORK
Modeling and optimization was performed for ethanol
production from:
- starchy raw materials (corn, potato), dry milling process
- sugars (molasses), direct fermentation
- lignocelluloses:
i)
from corn stover, acid prehydrolysis and enzymatic hydrolysis
ii) from wheat straw, ammonia fiber explosion (AFEX) and
iii) from wood chips, gasification and subsequent fermentation of the
produced syngas
Superstructures of the processes are modeled as MINLP problems, which include
both discrete (topology) and continuous variables (operating conditions,
dimensions of the process units).
Synthesis was caried out with and without heat integration.
Different alternatives with respect to the separation of solids and liquids and
alternatives to the dehydration of ethanol.
Summer Workshop, Veszprém 2009
STARCH-BASED PROCESS
Summer Workshop, Veszprém 2009
SUGAR-BASED PROCESS
Summer Workshop, Veszprém 2009
ACID PREHYDROLYSIS PROCESS
Summer Workshop, Veszprém 2009
AFEX PROCESS
Summer Workshop, Veszprém 2009
THERMOCHEMICAL PROCESS
Summer Workshop, Veszprém 2009
MIPSYN
Optimization was performed with equation-oriented process synthesizer MIPSYN.
• package performs MINLP optimization on superstructures for process flowsheet
• enables automated execution of simultaneous topology and parameter
optimization of processes
Modified OA/ER algorithm and modeling and decomposititon (M/D) strategy
• The computer package MIPSYN enabled us to optimize the chemical
processes
Processes producing fuel ethanol from biomass are biochemical processes.
Completion of MIPSYN’s library PROSLIB with modules for
synthesis of the biochemical processes
Summer Workshop, Veszprém 2009
MODUL - WASHER
*
*
*
===========================
=
WASHING =
===========================
EQUATIONS
WASHWA(WASH,COMPON)
TOTAL STREAM OF WASHING WATER
WASHCB(WASH,COMPON)
COMPONENT BALANCE AT WASHING
WASHT(IN,WASH)
INLET TEMPERATURE RELATION AT WASHING
WASHP(IN,WASH)
INLET PRESSURE RELATION AT WASHING
WASHSIZE(WASH)
SIZE VARIABLE ;
WASHWA(WASH,COMPON)$EXIST(WASH)..
F('IN-2',WASH) =E= WASHMIN*WASHFRAC*F('IN-1',WASH);
WASHCB(WASH,COMPON)$EXIST(WASH)..
FC('OUT-1',WASH,COMPON) =E= SUM(IN$RELIOB(IN,WASH),FC(IN,WASH,COMPON));
WASHT(IN,WASH)$(RELIOB(IN,WASH)AND EXIST(WASH))..
T('OUT-1',WASH) =E= T(IN,WASH);
WASHP(IN,WASH)$(RELIOB(IN,WASH)AND EXIST(WASH))..
P('OUT-1',WASH) =E= P(IN,WASH);
WASHSIZE(WASH)$EXIST(WASH)..
sizes(wash)*SIZE(WASH) =E= AREA(WASH) ;
Summer Workshop, Veszprém 2009
MODUL – FLOTATION UNIT
*
*
*
===========================
= FLOTATION =
===========================
EQUATIONS
FLOTCBH(FLOT)
COMPONENT BALANCE FOR HYDROPHOBIC MOLECULE
FLOTCBM(FLOT)
COMPONENT BALANCE FOR WATER IN TOP
FLOTCB(FLOT,COMPON) COMPONENT BALANCE FOR FLOTATION
FLOTT(OUT,FLOT)
TEMPERATURE RELATION FOR OUT
FLOTP(OUT,FLOT)
PRESSURE RELATION FOR OUTLET
FLOTSIZE(FLOT)
SIZE VARIABLE ;
FLOTCBH(FLOT)$EXIST(FLOT)..
FC('OUT-1',FLOT,'PROT') =E= FLOTREC*FC('IN-1',FLOT,'PROT');
FLOTCBM(FLOT)$EXIST(FLOT)..
FC('OUT-1',FLOT,'WA') =E= FLOTREC*FLOTMOIST*FC('IN-1',FLOT,'PROT');
FLOTCB(FLOT,COMPON)$EXIST(FLOT)..
FC('OUT-2',FLOT,COMPON) =E= FC('IN-1',FLOT,COMPON)-FC('OUT-1',FLOT,COMPON);
FLOTT(OUT,FLOT)$(EXIST(FLOT) AND RELIOB(OUT,FLOT))..
T(OUT,FLOT) =E= T('IN-1',FLOT);
FLOTP(OUT,FLOT)$(EXIST(FLOT) AND RELIOB(OUT,FLOT))..
P(OUT,FLOT) =E= P('IN-1',FLOT);
FLOTSIZE(FLOT)$EXIST(FLOT)..
sizes(flot)*SIZE(FLOT) =E= F('IN-1',FLOT)*fs*3.6;
Summer Workshop, Veszprém 2009
MODUL – ADSORBER I
*
*
*
=============================
= ADSORPTION =
=============================
EQUATIONS
ADSSIZE(ADS)
REQUIRED BED SIZE
ADSMBETHO(ADS,COMPON) FLOW BALANCE FOR ETHANOL FOR OUTLET
ADSCBOUT(ADS,COMPON) COMPONENT BALANCE FOR OUTLET 2
ADSCBWA(ADS,COMPON) COMPONENT BALANCE FOR NON-ADSORBED WATER
ADSCBWAADS(ADS,COMPON) COMPONENT BALANCE FOR ADSORBED WATER
ADSTB(ADS)
TOTAL BALANCE FOR ADSORBENT
ADSCB(ADS,COMPON) ADDITIVE COMPONENT BALANCE IN ADSORBER
ADSFCPH(ADS,COMPON) evaluation of FCPH
QHPEQ(ADS)
ENTHALPY OF STREAM
ADSHB(ADS)
HEAT BALANCE
ADSP1(ADS)
PRESSURE RELATION FOR OUTLET 1
ADSP2(ADS)
PRESSURE RELATION FOR OUTLET 2
ADST(OUT,ADS)
TEMPERATURE RELATION ;
ADSSIZE(ADS)$(EXIST(ADS) AND (NOT MILP))..
SIZE(ADS)*sizes(ads) =E= ADSSATTIME*F('IN-2',ADS)*fs
$BATINCLUDE "P_LINEAR.INC" ADS ;
ADSMBETHO(ADS,COMPON)$(EXIST(ADS) AND (ORD(COMPON) EQ 6))..
FC('OUT-1',ADS,COMPON) =E= FC('IN-1',ADS,COMPON);
ADSCBOUT(ADS,COMPON)$(EXIST(ADS) AND (ORD(COMPON) NE 1) AND (ORD(COMPON) NE 6))..
FC('OUT-2',ADS,COMPON) =E= FC('IN-2',ADS,COMPON);
ADSCBWA(ADS,COMPON)$(EXIST(ADS) AND (ORD(COMPON) EQ 1) AND (NOT MILP))..
FC('OUT-1',ADS,COMPON) =E= (1.-ADSREMWA)*FC('IN-1',ADS,COMPON)
$BATINCLUDE "P_LINEAR.INC" ADS ;
Summer Workshop, Veszprém 2009
MODUL – ADSORBER II
ADSCBWAADS(ADS,COMPON)$(EXIST(ADS) AND (ORD(COMPON) EQ 1) AND (NOT MILP))..
FC('OUT-2',ADS,COMPON) =E= ADSREMWA*FC('IN-1',ADS,COMPON)+
FC('IN-2',ADS,COMPON)
$BATINCLUDE "P_LINEAR.INC" ADS ;
ADSTB(ADS)$(EXIST(ADS) AND (NOT MILP))..
F('IN-2',ADS)*fs =E= (1./ADSPOT)*ADSREMWA*FC('IN-1',ADS,'WA')*fcs('wa')
$BATINCLUDE "P_LINEAR.INC" ADS ;
ADSCB(ADS,COMPON)$EXIST(ADS)..
SUM(OUT$RELIOB(OUT,ADS), FC(OUT,ADS,COMPON)) =E=
SUM(IN$RELIOB(IN,ADS), FC(IN,ADS,COMPON));
ADSFCPH(ADS,COMPON)$(EXIST(ADS) AND (ORD(COMPON) EQ 1))..
FCPH(ADS)*fcphs(ads) =E= FC('IN-1',ADS,COMPON)*fcs(compon) * DHADS;
QHPEQ(ADS)$(EXIST(ADS) AND (NOT MILP))..
QHP(ADS)*qhps(ads) =E= ADSREMWA* FCPH(ADS)*fcphs(ads)
$BATINCLUDE "P_LINEAR.INC" ADS ;
ADSHB(ADS)$(EXIST(ADS) AND (NOT HIFL) AND (NOT HENFL))..
QC(ADS)*qcs(ads) =E= 3600. * NHOUR * 1.0E-9 * QHP(ADS)*qhps(ads);
ADSP1(ADS)$EXIST(ADS).. P('OUT-1',ADS) =E= P('IN-1',ADS);
ADSP2(ADS)$EXIST(ADS).. P('OUT-2',ADS) =E= P('IN-1',ADS);
ADST(OUT,ADS)$(EXIST(ADS) AND RELIOB(OUT,ADS))..
T(OUT,ADS) =E= T('IN-2',ADS);
Summer Workshop, Veszprém 2009
MODUL – RECTIFIER COLUMN I
*
*
*
=====================================
= RECTIFIER COLUMN =
=====================================
EQUATIONS
RECCB(REC,COMPON) ADDITIVE COMPONENT BALANCE IN RECTIFIER COLUMN
RECTOPH(REC,WE) COMPONENT BALANCE FOR HEAVY KEY - TOP
RECTOPL(REC,WE) COMPONENT BALANCE FOR LIGHT KEY - TOP
RECBOTH(REC,WE) COMPONENT BALANCE FOR HEAVY KEY - BOTTOM
RECBOTL(REC,WE) COMPONENT BALANCE FOR LIGHT KEY - BOTTOM
RECPT(REC)
OUTLET PRESSURE RELATION (TOP)
RECPB(REC)
OUTLET PRESSURE RELATION (BOTTOM)
NTHEOREC(REC)
THEORETICAL NUMBER OF TRAYS
NACTREC(REC)
ACTUAL NUMBER OF TRAYS
RECMFTOP(REC,WE) RELATION OF MOL AND MASS FRACTIONS FOR OUT TOP
RECANTATOP(REC,WE) ANTOINE EQUATION FOR OUT TOP
RECMFBOT(REC,WE) RELATION OF MOL AND MASS FRACTIONS FOR OUT BOTTOM
RECANTABOT(REC,WE) ANTOINE EQUATION FOR OUTLET BOTTOM
RECMFCL(REC)
MOL FRAC IN THE CONDENSED VAPOR FOR LIGHT
RECMFCH(REC)
MOL FRAC IN THE CONDENSED VAPOR FOR HEAVY
RECXC(REC,WE)
RELATION OF MOL AND MASS FRACTION IN THE CONDENSER
CONDHVREC(REC,WE) HEAT OF VAPORIZATION OF COMPONENTS IN CONDENSER
FCPHREC(RECC)
evaluation of FCPH IN CONDENSER
QCONDREC(RECC) ENTHALPY OF HOT STREAM IN CONDENSER
RECCONDHB(RECC) HEAT BALANCE IN CONDENSER
REBHVREC(REC,WE) HEAT OF VAPORIZATION OF COMPONENTS IN REBOILER
FCPCREC(RECR)
evaluation of FCPC IN REBOILER
QREBREC(RECR)
ENTHALPY OF COLD STREAM IN REBOILER
RECREBHB(RECR) HEAT BALANCE IN REBOILER
RECSIZE(REC)
SIZE VARIABLE
;
Summer Workshop, Veszprém 2009
MODUL – RECTIFIER COLUMN II
RECCB(REC,COMPON)$EXIST(REC)..
SUM(OUT$RELIOB(OUT,REC), FC(OUT,REC,COMPON)) =E= FC('IN-1',REC,COMPON);
RECTOPH(REC,WE)$(EXIST(REC) AND DHKEY(REC,WE) AND (NOT MILP))..
FC('OUT-1',REC,WE) =E= DHREC(REC)*FC('IN-1',REC,WE)
$BATINCLUDE "P_LINEAR.INC" REC ;
RECTOPL(REC,WE)$(EXIST(REC) AND DLKEY(REC,WE))..
FC('OUT-1',REC,WE) =E= DLREC(REC)*FC('IN-1',REC,WE);
RECBOTH(REC,WE)$(EXIST(REC) AND DHKEY(REC,WE) AND (NOT MILP))..
FC('OUT-2',REC,WE) =E= (1.-DHREC(REC))*FC('IN-1',REC,WE)
$BATINCLUDE "P_LINEAR.INC" REC ;
RECBOTL(REC,WE)$(EXIST(REC) AND DLKEY(REC,WE))..
FC('OUT-2',REC,WE) =E= (1.-DLREC(REC))*FC('IN-1',REC,WE);
RECPT(REC)$EXIST(REC)..
P('OUT-1',REC) =E= P('IN-1',REC);
RECPB(REC)$EXIST(REC)..
P('OUT-2',REC) =E= P('IN-1',REC);
NTHEOREC(REC)$(EXIST(REC) AND (NOT MILP))..
NTHEO(REC) =E=
LOG((DLREC(REC)/(1.-DLREC(REC)))*((1-DHREC(REC))/DHREC(REC)))/LOG(AVEVLT)
$BATINCLUDE "P_LINEAR.INC" REC ;
NACTREC(REC)$(EXIST(REC) AND (NOT MILP))..
NACT(REC) =E= (NTHEO(REC)-1.)/TRAYEFF
$BATINCLUDE "P_LINEAR.INC" REC ;
Summer Workshop, Veszprém 2009
MODUL – RECTIFIER COLUMN III
RECMFTOP(REC,WE)$(EXIST(REC) AND (NOT MILP))..
MF('OUT-1',REC,WE)*SUM(WE1, FC('OUT-1',REC,WE1)/MOLWT(WE1))
=E= FC('OUT-1',REC,WE)/MOLWT(WE)
$BATINCLUDE "P_LINEAR.INC" REC ;
RECANTATOP(REC,WE)$(EXIST(REC) AND (NOT MILP) AND DLKEY(REC,WE))..
EXP(ANTA(WE)-ANTB(WE)/(ANTC(WE)+ T('OUT-1',REC)*100.)) =E=
(P('OUT-1',REC)-DP/2.)*7600.*
(MF('OUT-1',REC,'WA')*AVEVLT + MF('OUT-1',REC,'ETHO'))
$BATINCLUDE "P_LINEAR.INC" REC ;
RECMFBOT(REC,WE)$(EXIST(REC) AND (NOT MILP))..
MF('OUT-2',REC,WE)*SUM(WE1, FC('OUT-2',REC,WE1)/MOLWT(WE1))
=E= FC('OUT-2',REC,WE)/MOLWT(WE)
$BATINCLUDE "P_LINEAR.INC" REC ;
RECANTABOT(REC,WE)$(EXIST(REC) AND (NOT MILP) AND DHKEY(REC,WE))..
EXP(ANTA(WE)-ANTB(WE)/(ANTC(WE)+ T('OUT-2',REC)*100.))*
(MF('OUT-2',REC,'WA') + AVEVLT*MF('OUT-2',REC,'ETHO')) =E=
(P('OUT-2',REC)+DP/2.)*7600.
$BATINCLUDE "P_LINEAR.INC" REC ;
RECMFCL(REC)$(EXIST(REC) AND (NOT MILP))..
MFC(REC,'ETHO') =E= MF('OUT-1',REC,'ETHO')*(P('OUT-1',REC)-DP/2.)*7600./
EXP(ANTA('ETHO')-ANTB('ETHO')/(ANTC('ETHO')+T('OUT-1',REC)*100.))
$BATINCLUDE "P_LINEAR.INC" REC ;
RECMFCH(REC)$EXIST(REC)..
MFC(REC,'WA') =E= 1.- MFC(REC,'ETHO') ;
Summer Workshop, Veszprém 2009
MODUL – RECTIFIER COLUMN IV
RECXC(REC,WE)$(EXIST(REC) AND (NOT MILP))..
XC(REC,WE)*SUM(WE1,MFC(REC,WE1)*MOLWT(WE1)) =E= MFC(REC,WE)*MOLWT(WE)
$BATINCLUDE "P_LINEAR.INC" REC ;
CONDHVREC(REC,WE)$(EXIST(REC) AND (NOT MILP))..
DHV('OUT-1',REC,WE) =E= (HV(WE)/MOLWT(WE))*
((TC(WE)-T('OUT-1',REC)*100.)/(TC(WE)-TB(WE)))**NWATSON
$BATINCLUDE "P_LINEAR.INC" REC ;
FCPHREC(RECC)$SUM(REC$(ORD(REC) EQ ORD(RECC)), EXIST(REC) AND (NOT MILP))..
fcphs(recc)*FCPH(RECC) =E=
SUM(REC$(ORD(REC) EQ ORD(RECC)), F('OUT-1',REC)*fs*REFLUX*
SUM(WE, XC(REC,WE)*DHV('OUT-1',REC,WE)))
$BATINCLUDE "P_LINEAR.INC" RECC ;
QCONDREC(RECC)$SUM(REC$(ORD(REC) EQ ORD(RECC)), EXIST(REC) AND CONDFL(RECC))..
QHP(RECC)*qhps(recc) =E= fcphs(recc)*FCPH(RECC)*100.*0.01;
RECCONDHB(RECC)$SUM(REC$(ORD(REC) EQ ORD(RECC)), EXIST(REC))..
QC(RECC) =E= 3600.*NHOUR*1.0E-9 * QHP(RECC)*qhps(recc);
REBHVREC(REC,WE)$(EXIST(REC) AND DHKEY(REC,WE) AND (NOT MILP))..
DHV('OUT-2',REC,WE) =E= (HV(WE)/MOLWT(WE))*((TC(WE)-T('OUT-2',REC)*100.)/
(TC(WE)-TB(WE)))**NWATSON
$BATINCLUDE "p_linear.inc" REC ;
FCPCREC(RECR)$SUM(REC$(ORD(REC) EQ ORD(RECR)), EXIST(REC) AND (NOT MILP))..
FCPC(RECR)*fcpcs(recr) =E=
SUM(REC$(ORD(REC) EQ ORD(RECR)),(F('OUT-1',REC)*fs*REFLUX-F('OUT-2',REC)*fs)*
SUM(WE$DHKEY(REC,WE), DHV('OUT-2',REC,WE)))
$BATINCLUDE "P_LINEAR.INC" RECR ;
Summer Workshop, Veszprém 2009
MODUL – RECTIFIER COLUMN IV
QREBREC(RECR)$SUM(REC$(ORD(REC) EQ ORD(RECR)), EXIST(REC) AND EVAPFL(RECR))..
QCP(RECR)*qcps(recr) =E= 100.*0.01*FCPC(RECR)*fcpcs(recr);
RECREBHB(RECR)$SUM(REC$(ORD(REC) EQ ORD(RECR)), EXIST(REC))..
QH(RECR) =E= 3600.*NHOUR*1.0E-9 * QCP(RECR)*qcps(recr);
RECSIZE(REC)$EXIST(REC)..
SIZE(REC)*sizes(rec) =E= VOLUME(REC);
Summer Workshop, Veszprém 2009
INPUT AND OUTPUT FILES
The high level language GAMS (General Algebraic Modeling System) is interface
for mathematical modeling with MIPSYN. Input and output files are written in
GAMS language.
User has to define (input files):
1.) the superstructure (p_struct)
2.) all data (datalib.gms)
3.) list of chemical components (p_compon)
4.) physical properties of components (if component is not defined) (compon)
5.) initialization scheme for non-existing modules in process flowsheet (initlib.gms)
6.) the additional modules equations (my_model.dat)
7.) components and their physical properties (p_dbase.lib).
Output files: p_w.lst (listing file)
optimum.res (optimal solution)
p_b.res (MINLP iterations)
Summer Workshop, Veszprém 2009
OPTIMIZATION
Raw material mass flow (corn, potato, molasses, etc.): 18 kg/s
Number of annual working hours: 8500
Objective: maximizing the profit
Product mass flow Price of product
max P 
c
pprod
Profit
p
 qp 
c q
rreac
r
r
Need of utility
Depreciation
 ch  Qh  cc  Qc  (a1  a2  S ) / n
Raw material Price of raw
material
mass flow
Utility price
Depreciation
period
Investment was estimated by programme Aspen Icarus 2006.5.
Solvers:
for NLP suboptimization: local optimizer CONOPT 3,
for MILP optimization: optimizer GAMS/CPLEX 10.1.
Summer Workshop, Veszprém 2009
RESULTS
Annual profit before taxes:
80000
70000
60000
50000
40000
30000
20000
10000
0
CORN
POTATOES
NHI: 1. structure
MOLASSES
NHI: 2. structure
CORN
STOVER
WHEAT
STRAW
HI: 1. structure
WOOD CHIPS
HI: 2. structure
Summer Workshop, Veszprém 2009
RESULTS
Optimal productivity of products:
WOOD CHIPS
WHEAT STRAW
CORN STOVER
MOLASSES
POTATOES
CORN
0
FLUE GAS
5
ACETIC ACID
10
15
DDGS
20
BIOGAS
25
30
BIOETHANOL
Mass flow rate /(kg/s)
Summer Workshop, Veszprém 2009
RESULTS
Annual profit per kg of bioethanol (k€/a):
14000
12000
10000
NHI: 1. structure
8000
NHI: 2. structure
HI: 1. structure
6000
HI: 2. structure
4000
2000
0
CORN
POTATOES
MOLASSES
CORN STOVER WHEAT STRAW
WOOD CHIPS
Summer Workshop, Veszprém 2009
RESULTS
Operating costs (k€/a):
100000
90000
80000
70000
60000
RAW MATERIAL
UTILITY - NHI
50000
UTILITY - HI
40000
INVESTMENT
30000
20000
10000
0
CORN
POTATOES
MOLASSES
CORN STOVER
WHEAT STRAW
WOOD CHIPS
Summer Workshop, Veszprém 2009
RESULTS
Payback period (a):
16
14
12
10
NHI: 1. structure
NHI: 2. structure
8
HI: 1. structure
HI: 2. structure
6
4
2
0
CORN
POTATOES
MOLASSES
CORN STOVER
WHEAT STRAW
WOOD CHIPS
Summer Workshop, Veszprém 2009
RESULTS
Efficiency (%):
50
45
40
35
30
25
20
15
10
5
0
CORN
POTATOES
MOLASSES
CORN STOVER
WHEAT STRAW
WOOD CHIPS
Summer Workshop, Veszprém 2009
Download