| 1 | Sample Calculation of Estimated Emissions - Fixed-Roof Tanks | | | | | | | | | | | | page 1 of 1 | | Not intended for tanks that have a change | | | | | | | |
| 2 | The emissions estimates calculated below are based on EPA's AP-42 Chapter 7.1 (Post 2018) emission factors and equations, | | | | | | | | | | | | | | of service during the period in question. | | | | | | | |
| 3 | | | | | | | | | | | | | | | =MONTH('Calculation Details AR_feed_mix'!B2) | =VLOOKUP(O3,U5:V16,2,FALSE) | =YEAR('Calculation Details AR_feed_mix'!B2) | ='Calculation Details AR_feed_mix'!B3-'Calculation Details AR_feed_mix'!B2 | days | | | |
| 4 | | | | Company: | | | | | | | | | | | | | | N | Ag | Av | | |
| 5 | | | | Location: | ='Calculation Details AR_feed_mix'!B1 | | | | | | | | | | A | aluminum-colored paint (specular) | | 0.39 | 0.49 | 0.44 | 1 | January |
| 6 | | | | Calculations for Tank No.: | ='Calculation Details AR_feed_mix'!B4 | | =IF('Calculation Details AR_feed_mix'!B6<>"E","Wrong template - this is not a fixed-roof tank!","") | | | | | | | | B | aluminum-colored paint (diffuse) | | 0.6 | 0.68 | 0.64 | 2 | February |
| 7 | | | | | | | | Emission estimates per EPA's AP-42 Chapter 7.1 (Post 2018), for: | =IF(H43="month",P3,IF(H43="year","annual",H43)) | | | | | | C | beige/cream-colored paint | | 0.35 | 0.49 | 0.42 | 3 | March |
| 8 | | | | | | | | | =Q3 | | | | | | D | brown paint | | 0.58 | 0.67 | 0.62 | 4 | April |
| 9 | | Meteorological Data: | | | | | | | | | | | | | E | light gray paint | | 0.54 | 0.63 | 0.58 | 5 | May |
| 10 | | | Avg Atmos Pressure, Pa: | | | ='Calculation Details AR_feed_mix'!E21 | psia | | | | | | | | F | medium gray paint | | 0.68 | 0.74 | 0.71 | 6 | June |
| 11 | | | Avg Ambient Temp, Taa: | | | =('Calculation Details AR_feed_mix'!E18+'Calculation Details AR_feed_mix'!E19)/2 | degrees F | | | | | | | | G | black paint | | 0.97 | 0.97 | 0.97 | 7 | July |
| 12 | | | Avg Daily Temp Range, ∆Ta: | | | ='Calculation Details AR_feed_mix'!E19-'Calculation Details AR_feed_mix'!E18 | degrees F | | | | | | | | H | red primer or dark green paint | | 0.89 | 0.91 | 0.9 | 8 | August |
| 13 | | | Avg Daily Solar Insolation, I: | | | ='Calculation Details AR_feed_mix'!E20 | Btu / ft2 day | | | | | | | | I | rust (unpainted iron oxide) | | 0.38 | 0.5 | 0.44 | 9 | September |
| 14 | | Tank Data: | | | | | | | | | | | | | J | tan paint | | 0.43 | 0.55 | 0.49 | 10 | October |
| 15 | | | Tank Type: | | ='Calculation Details AR_feed_mix'!B7 | | | | shell color: | =VLOOKUP('Calculation Details AR_feed_mix'!B24,'SampleCalculation AR_feed_mix'!$O$5:$Q$16,2,FALSE) | | | | | K | white paint | | 0.17 | 0.34 | 0.25 | 11 | November |
| 16 | | | Average alpha: | | =(J17+J20)/2 | | | | shell condition: | =IF('Calculation Details AR_feed_mix'!B25="N","New",IF('Calculation Details AR_feed_mix'!B25="Ag","Aged","Average")) | | | | | L | mill finish aluminum (unpainted) | | 0.1 | 0.15 | 0.12 | 12 | December |
| 17 | | | Tank Diameter: | | ='Calculation Details AR_feed_mix'!B11 | ft | | | shell alpha: | =IF('Calculation Details AR_feed_mix'!B25="N",VLOOKUP('Calculation Details AR_feed_mix'!B24,'SampleCalculation AR_feed_mix'!$O$5:$T$16,4,FALSE),IF('Calculation Details AR_feed_mix'!B25="Ag",VLOOKUP('Calculation Details AR_feed_mix'!B24,'SampleCalculation AR_feed_mix'!$O$5:$T$16,5,FALSE),VLOOKUP('Calculation Details AR_feed_mix'!B24,'SampleCalculation AR_feed_mix'!$O$5:$T$16,6,FALSE))) | | | | | | | | | | | | |
| 18 | | | Tank Height: | | ='Calculation Details AR_feed_mix'!B12 | ft | | | roof color: | =VLOOKUP('Calculation Details AR_feed_mix'!B26,'SampleCalculation AR_feed_mix'!$O$5:$Q$16,2,FALSE) | | | | | Check against reported values | | | Precision: | 0.001 | | | |
| 19 | | | Maximum Fill Height: | | | ='Calculation Details AR_feed_mix'!B21 | ft | | roof condition: | =IF('Calculation Details AR_feed_mix'!B27="N","New",IF('Calculation Details AR_feed_mix'!B27="Ag","Aged","Average")) | | | | | Average alpha | ='Calculation Details AR_feed_mix'!B28 | =IF(ABS(P19-E16)/ABS(E16)>S18,"ERROR","OKAY") | | A | column-supported(cone) | | |
| 20 | | | Minimum Liquid Level: | | | ='Calculation Details AR_feed_mix'!B20 | ft | | roof alpha: | =IF('Calculation Details AR_feed_mix'!B27="N",VLOOKUP('Calculation Details AR_feed_mix'!B26,'SampleCalculation AR_feed_mix'!$O$5:$T$16,4,FALSE),IF('Calculation Details AR_feed_mix'!B27="Ag",VLOOKUP('Calculation Details AR_feed_mix'!B26,'SampleCalculation AR_feed_mix'!$O$5:$T$16,5,FALSE),VLOOKUP('Calculation Details AR_feed_mix'!B26,'SampleCalculation AR_feed_mix'!$O$5:$T$16,6,FALSE))) | | | | | | | | | B | self-supporting (dome) | | |
| 21 | | | Net Working Height: | | | =F19-F20 | ft | | | | | | | | | | | | C | no fixed roof (open top) | | |
| 22 | | | Fixed Roof Type: | | =VLOOKUP('Calculation Details AR_feed_mix'!B5,'SampleCalculation AR_feed_mix'!S19:T24,2,FALSE) | | | | effective roof height: | =IF('Calculation Details AR_feed_mix'!B5="A",('Calculation Details AR_feed_mix'!B13*('Calculation Details AR_feed_mix'!B11/2)/12)/3,IF('Calculation Details AR_feed_mix'!B5="B",'Calculation Details AR_feed_mix'!B16/2+(2*'Calculation Details AR_feed_mix'!B16^3)/(3*'SampleCalculation AR_feed_mix'!E17^2),0)) | ft | | | | | | | | D | horizontal tank | | |
| 23 | | | Average outage, HVO: | | | =IF(AND(ISBLANK(E$6),G$6<>""),"",E18-F19 +F21/2+J22) | ft | | Hvo: | =IF('Calculation Details AR_feed_mix'!E33="",F23,E18+J22+'Calculation Details AR_feed_mix'!B15/3+'Calculation Details AR_feed_mix'!B19-'Calculation Details AR_feed_mix'!E33) | ft | | | | Average Hvo | ='Calculation Details AR_feed_mix'!B23 | =IF(F23<>0,IF(ABS(P23-F23)/ABS(F23)>S18,"ERROR","OKAY"),IF(P23<>F23,"ERROR","OKAY")) | | | | | |
| 24 | | | Max Vent Setting: | | | ='Calculation Details AR_feed_mix'!B30 | psig | | | | | | | | Hvo | ='Calculation Details AR_feed_mix'!E41 | =IF(J23<>0,IF(ABS(P24-J23)/ABS(J23)>$S$18,"ERROR","OKAY"),IF(P24<>J23,"ERROR","OKAY")) | | | | | |
| 25 | | | Min Vent Setting: | | | ='Calculation Details AR_feed_mix'!B29 | psig | | | | | | | | | | | | | | | |
| 26 | | Service Data: | | | | | | | | | | | | | | | | | | | | |
| 27 | | | Service (stored liquid): | | | ='Calculation Details AR_feed_mix'!E5 | | | | | | | | | Tb | ='Calculation Details AR_feed_mix'!E27 | =IF(F32<>0,IF(ABS(P27-F32)/ABS(F32)>$S$18,"ERROR","OKAY"),IF(P27<>F32,"ERROR","OKAY")) | | | | | |
| 28 | | | Product Factor, KP: | | | ='Calculation Details AR_feed_mix'!E9 | | | | | Vapor Pressure Constants: | | | | | | | | | | | |
| 29 | | | Reid VaporPressure: | | | =IF('Calculation Details AR_feed_mix'!E8=0,"",'Calculation Details AR_feed_mix'!E8) | psi | (if specified) | | | A: | =IF('Calculation Details AR_feed_mix'!E13=0,"",'Calculation Details AR_feed_mix'!E13) | | | | | | | | | | |
| 30 | | | ASTM Distillation Slope: | | | =IF('Calculation Details AR_feed_mix'!H29=0,"",'Calculation Details AR_feed_mix'!H29) | | (if specified) | | | B: | =IF('Calculation Details AR_feed_mix'!E14=0,"",'Calculation Details AR_feed_mix'!E14) | | | | | | | | | | |
| 31 | | | Molecular Weight, MV: | | | ='Calculation Details AR_feed_mix'!E7 | lb/lb-mol | | | | C: | =IF('Calculation Details AR_feed_mix'!E15=0,"",'Calculation Details AR_feed_mix'!E15) | | | Tla | ='Calculation Details AR_feed_mix'!E28 | =IF(F35<>0,IF(ABS(P31-F35)/ABS(F35)>S18,"ERROR","OKAY"),IF(P31<>F35,"ERROR","OKAY")) | | | | | |
| 32 | | | Liquid Bulk Temp, Tb: | | | ='TempCal AR_feed_mix'!B2 | degrees F | | | | | | | | | | | | | | | |
| 33 | | | Constant Temp Tank? | | | =IF('Calculation Details AR_feed_mix'!B9="F","YES","NO") | | tank must be insulated for temperature to be constant | | | | | | | | | | | | | | |
| 34 | | | Liquid Bulk Temp Basis? | | | =IF('Calculation Details AR_feed_mix'!H41=FALSE,"calculated from ambient, per AP-42 equation 1-31","given by user") | | | | | | | | | Wv | ='Calculation Details AR_feed_mix'!E17 | =IF(F37<>0,IF(ABS(P34-F37)/ABS(F37)>S18,"ERROR","OKAY"),IF(P34<>F37,"ERROR","OKAY")) | | | | | |
| 35 | | | Liquid Surface Temp, Tla: | | | ='TempCal AR_feed_mix'!B3 | degrees F | | =IF(F33="YES","same as bulk temp, for fully insulated tank","per AP-42 equation 1-27, 1-28, 1-29") | | | | | | | | | | | | | |
| 36 | | | True Vapor Pressure, P: | | | =IF(AND(NOT(ISBLANK(E6)),G6=""),IF(AND(F29="",L29=""),'Calculation Details AR_feed_mix'!E16,IF(AND(CELL("type",F29)="v",'Calculation Details AR_feed_mix'!E4=TRUE),EXP((12.82-0.9672*LN(F29))-(7261-1216*LN(F29))/(F35+459.67)),IF(AND(CELL("type",F29)="v",NOT(CELL("type",F30)="v")),"need S",IF(CELL("type",F29)="v",EXP((15.64-1.854*(F30)^0.5-(0.8742-0.328*(F30)^0.5)*LN(F29))-(8742-1042*(F30)^0.5-(1049-179.4*(F30)^0.5)*LN(F29))/(F35+459.67)),IF(ISBLANK('Calculation Details AR_feed_mix'!E15)=FALSE,(10^('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/((F35-32)*(5/9)+'Calculation Details AR_feed_mix'!E15))))/51.7144,EXP('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/(F35+459.67))))))))) | psia | | per AP-42 equation 1-24, 1-25, 1-26 | | | | | | | | | | | | | |
| 37 | | | Stock Vapor Density, WV: | | | ='TempCal AR_feed_mix'!B6 | lb/ft3 | | per AP-42 equation 1-22 | | | | | | Tv | ='Calculation Details AR_feed_mix'!H43 | =IF(G38<>0,IF(ABS(P37-G38)/ABS(G38)>S18,"ERROR","OKAY"),IF(P37<>G38,"ERROR","OKAY")) | | | | | |
| 38 | | Heating Cycles: | | Vapor Space Temp., Tv: | | | ='TempCal AR_feed_mix'!B4 | degree F | =IF(F33="YES","same as bulk temp, for fully insulated tank","per AP-42 equation 1-32, 1-33, 1-34") | | | | | | | | | | | | | |
| 39 | | | Max Liquid Bulk Temp: | | | =IF('Calculation Details AR_feed_mix'!H35=-1,"",'Calculation Details AR_feed_mix'!H35) | degrees F | | | | | | | | | | | | | | | |
| 40 | | | Min Liquid Bulk Temp: | | | =IF('Calculation Details AR_feed_mix'!H34=-1,"",'Calculation Details AR_feed_mix'!H34) | degrees F | | | | | | | | | | | | | | | |
| 41 | | | Heating cycle frequency: | | | =IF('Calculation Details AR_feed_mix'!H36=-1,"",'Calculation Details AR_feed_mix'!H36) | days | | | | | | | | | | | | | | | |
| 42 | | Operational Data: | | | | | | | | | | | | | | | | | | | | |
| 43 | | | Throughput: | | ='Calculation Details AR_feed_mix'!E35 | | bbl per | =IF(AND(F44>27,F44<32,DAY('Calculation Details AR_feed_mix'!B2)=1,DAY('Calculation Details AR_feed_mix'!B3)=1),"month",IF(OR(F44=365,F44=366),"year","this period")) | | | | | | | | | | | | | | |
| 44 | | | Days this Period: | | | ='Calculation Details AR_feed_mix'!B3-'Calculation Details AR_feed_mix'!B2 | days | | | | | | | | | | | | | | | |
| 45 | | | Turnover Rate: | | | =(365/F44)*E43/((F21*PI()*E17^2/4)/5.614) | turnovers per year | | | | | | | | | | | | | | | |
| 46 | | | Turnover Factor, KN: | | | =IF(F45<36,1,(180+F45)/(6*F45)) | | | | | | | | | | | | | | | | |
| 47 | | Calculated Values: | | | | | | | | | | | | | | | | | | | | |
| 48 | | | Vapor Space Expansion Factor, KE = {∆TV / (T + 459.67)} + {(∆PV - ∆PB) / (PA - P)} | | | | | | | | AP-42 eqn 1-5 | | | | | check against reported values | | | | | | |
| 49 | | | where: | | | | | | | | | | | | | | | | | | | |
| 50 | | | ∆TV = | ='TempCal AR_feed_mix'!B5 | deg F (deg R); daily temperature range in the vapor space | | | | | | AP-42 eqn 1-6, 1-7, 1-8 | | | | ∆TV | ='Calculation Details AR_feed_mix'!H44 | =IF(D50<>0,IF(ABS(P50-D50)/ABS(D50)>S18,"ERROR","OKAY"),IF(P50<>D50,"ERROR","OKAY")) | | | | | |
| 51 | | | | Tlx = | =IF(F33="Yes",F35,F35+0.25*D50) | deg F | Pvx = | =IF(AND(NOT(ISBLANK(E6)),G6=""),IF(AND(F29="",L29=""),'Calculation Details AR_feed_mix'!H33,IF(AND(CELL("type",F29)="v",'Calculation Details AR_feed_mix'!E4=TRUE),EXP((12.82-0.9672*LN(F29))-(7261-1216*LN(F29))/(E51+459.67)),IF(AND(CELL("type",F29)="v",NOT(CELL("type",F30)="v")),"need S",IF(CELL("type",F29)="v",EXP((15.64-1.854*(F30)^0.5-(0.8742-0.328*(F30)^0.5)*LN(F29))-(8742-1042*(F30)^0.5-(1049-179.4*(F30)^0.5)*LN(F29))/(E51+459.67)),IF(ISBLANK('Calculation Details AR_feed_mix'!E15)=FALSE,(10^('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/((E51-32)*(5/9)+'Calculation Details AR_feed_mix'!E15))))/51.7144,EXP('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/(E51+459.67))))))))) | psia | | | | | | | | | | | | | |
| 52 | | | | Tln = | =IF(F33="Yes",F35,F35-0.25*D50) | deg F | Pvn = | =IF(AND(NOT(ISBLANK(E6)),G6=""),IF(AND(F29="",L29=""),'Calculation Details AR_feed_mix'!H32,IF(AND(CELL("type",F29)="v",'Calculation Details AR_feed_mix'!E4=TRUE),EXP((12.82-0.9672*LN(F29))-(7261-1216*LN(F29))/(E52+459.67)),IF(AND(CELL("type",F29)="v",NOT(CELL("type",F30)="v")),"need S",IF(CELL("type",F29)="v",EXP((15.64-1.854*(F30)^0.5-(0.8742-0.328*(F30)^0.5)*LN(F29))-(8742-1042*(F30)^0.5-(1049-179.4*(F30)^0.5)*LN(F29))/(E52+459.67)),IF(ISBLANK('Calculation Details AR_feed_mix'!E15)=FALSE,(10^('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/((E52-32)*(5/9)+'Calculation Details AR_feed_mix'!E15))))/51.7144,EXP('Calculation Details AR_feed_mix'!E13-('Calculation Details AR_feed_mix'!E14/(E52+459.67))))))))) | psia | | | | | | | | | | | | | |
| 53 | | | ∆PV = | =IF(AND(NOT(ISBLANK(E6)),G6=""),H51-H52,"") | psia | =IF(F33="YES","assume ∆TV, ∆PV equal 0 for a constant temperature tank","") | | | | | | | | | | | | | | | | |
| 54 | | | ∆PB = | =F24-F25 | psi; vent setting range | | | | | | | | | | | | | | | | | |
| 55 | | | KE = | =MAX(D50/(F35+459.67)+(D53-D54)/(F10-F36),0) | | | | | | | | | | | KE | ='Calculation Details AR_feed_mix'!E44 | =IF(D55<>0,IF(ABS(P55-D55)/ABS(D55)>S18,"ERROR","OKAY"),IF(P55>0,"ERROR","OKAY")) | | | | | |
| 56 | | | Vented Vapor Saturation Factor, KS = 1 / (1+ 0.053 P HVO) | | | | | | | | AP-42 eqn 1-21 | | | | | | | | | | | |
| 57 | | | KS = | =1/(1+0.053*F36*J23) | | | | | | | | | | | KS | ='Calculation Details AR_feed_mix'!E45 | =IF(D57<>0,IF(ABS(P57-D57)/ABS(D57)>S18,"ERROR","OKAY"),IF(P57<>D57,"ERROR","OKAY")) | | | | | |
| 58 | | | Vent Setting Correction Factor, KB: | | | | | | | | | | | | | | | | | | | |
| 59 | | | KB = | 1; except when: | | | | | | | | | | | | | | | | | | |
| 60 | | | | KN [(PBP + PA) / (PI + PA)] > 1 | | | | | | | AP-42 eqn 1-40 | | | | | | | | | | | |
| 61 | | | KB = | [(PI + PA)/KN - P] / [PBP + PA - P] | | | | | | | AP-42 eqn 1-41 | | | | | | | | | | | |
| 62 | | | | where: | | | | | | | | | | | | | | | | | | |
| 63 | | | | PBP = | =F24 | psig; vent pressure setting | | | | | | | | | | | | | | | | |
| 64 | | | | PI = | ='Calculation Details AR_feed_mix'!E40 | psig; initial gauge pressure (nominal operating pressure) | | | | | | | | | | | | | | | | |
| 65 | | | KB = | =IF(AND(ABS(E63)>0.03,F46*(E63+F10)/(E64+F10)>1),((E64+F10)/F46-F36)/(E63+F10-F36),1) | | | | | | | | | | | KB | ='Calculation Details AR_feed_mix'!E39 | =IF(D65<>0,IF(ABS(P65-D65)/ABS(D65)>S18,"ERROR","OKAY"),IF(P65<>D65,"ERROR","OKAY")) | | | | | |
| 66 | | | Control Effi= | ='Calculation Details AR_feed_mix'!H7 | | | | | | | | | | | | | | | | | | |
| 67 | | | | | | | | | | | | | | | | | | | | | | |
| 68 | | Emissions Estimate for: | | | | =I7 | =I8 | | | | | | | | | check against reported values | | | | | | |
| 69 | | | Standing Storage Loss: | | | =IF(OR(ISBLANK(E6),G6<>""),"",J23*PI()*E17^2/4*D55*D57*F44*F37) | lb per | =H$43 | | | AP-42 eqn 1-4 | | | | Standing Storage Loss | ='Calculation Details AR_feed_mix'!E50 | =IF(F69<>0,IF(ABS(P69-F69)/ABS(F69)>S18,"ERROR","OKAY"),IF(P69<>F69,"ERROR","OKAY")) | | | | | |
| 70 | | | Working Loss: | | | =IF(OR(ISBLANK(E6),G6<>""),"",F45*(F44/365)*F21*(PI()*E17^2/4)*F46*F28*F37*D65) | lb per | =H$43 | | | AP-42 eqn 1-35 | | | | Working Loss | ='Calculation Details AR_feed_mix'!H1 | =IF(F70<>0,IF(ABS(P70-F70)/ABS(F70)>S18,"ERROR","OKAY"),IF(P70<>F70,"ERROR","OKAY")) | | | | | |
| 71 | | | Total Emissions (w/o heating cycle loss): | | | =F69+F70 | lb per | =H$43 | | | AP-42 eqn 1-1 | | | | Total Emissions | ='SampleCalculation AR_feed_mix'!P69+'SampleCalculation AR_feed_mix'!P70 | =IF(F71<>0,IF(ABS(P71-F71)/ABS(F71)>$S$18,"ERROR","OKAY"),IF(P71<>F71,"ERROR","OKAY")) | | | | | |
| 72 | | | | | | =F71/2000 | tons per | =H$43 | | | | | | | | | | | | | | |
| 73 | | Standing Storage Loss(with control): | | | | =F69*(1-D66*'Calculation Details AR_feed_mix'!H46) | lb per | =H$43 | | with fugitive | | | | | Standing Storage Loss (w ctrl) | ='Calculation Details AR_feed_mix'!H19 | =IF(F73<>0,IF(ABS(P73-F73)/ABS(F73)>$S$18,"ERROR","OKAY"),IF(P73<>F73,"ERROR","OKAY")) | | | | | |
| 74 | | | Working Loss(with control): | | | =F70*(1-D66*'Calculation Details AR_feed_mix'!H46) | lb per | =H$43 | | with fugitive | | | | | Working Loss (w ctrl) | ='Calculation Details AR_feed_mix'!H20 | =IF(F74<>0,IF(ABS(P74-F74)/ABS(F74)>$S$18,"ERROR","OKAY"),IF(P74<>F74,"ERROR","OKAY")) | | | | | |
| 75 | | | | Total Emissions(with control): | | =F71*(1-D66*'Calculation Details AR_feed_mix'!H46) | lb per | =H$43 | | with fugitive | | | | | Total Emissions (w ctrl) | ='Calculation Details AR_feed_mix'!H25 | | | | | | |
| 76 | | | | | | =F72*(1-D66*'Calculation Details AR_feed_mix'!H46) | tons per | =H$43 | | with fugitive | | | | | | | | | | | | |
| 77 | | | | | | | | | | | | | | | | | | | | | | |
| 78 | | | | | | | | | | | | | | | | | | | | | | |
| 79 | | | | | | | | | | | | | | | | | | | | | | |
| 80 | | | | | | | | | | | | | | | | | | | | | | |
| 81 | | | | | | | | | | | | | | | | | | | | | | |
| 82 | | | | | | | | | | | | | | | | | | | | | | |