ࡱ> F^eϝdV07M-s,JFIFHHSoftware: Microsoft OfficeC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"B !u"157U#2AQV3BTa$%R4Cb( ????????????gRjL&6j%r7]\nBhژ?@ !4LCG?á PMS&Gt?y j`:'0~Bhژ?@ MwU_Ҁ'5gzUJOzVw%TGjFj?pu(ҩޚ6E6{SHwWv"MA%|Ԣ =YN{U$YIۧj7mfZ}|e|C[)mgFّmHȈODll9Hqr*3!39Q5%{{{ZT]ډ/I}6f\U[$urnU]8tj7ɴݫرn;y b7CR8[$Dt*"+7Q}FK[٫62 kݯDE]uuۊ5eS JfG#neUQIv5Soc#?=iP '5gzUJOzVw%T7PbKunIoLJfޝ͂.ԇ&U⑮|MM.vEWيWOP}ym۾ߛXdW=yqdB,+qP]Af$HH+Cw)3hSN.,>[׺7?7'H}c1QjBJlRHeӵ&>p$ͯlI$|lV5۵Q[ߪ@''5U~JEMкyi Ledecމ*+*"n~nR<ѭ*Mf9j_|&U 6ߥE} '5gzUJOzVw%T`ͭiү2T[bU]WzW*۶'`6rLK{K?!aryʍX(zvٻ"~gF*vɎݮ7E crcs_Dk#^m#. GqbȤ2_`,Nj?7xmnX7oѿbr[WXVjz;}(:x<^?EZGwHWH9⽜U\7Ј"mxԸĬ9"}G^X;l#ǷQU_7ekS;g1zq(s{d^LI6٪(T#ԟse$=.z&JMN rv6ݫV,K0D|HkXMUWp>٫ZVJ{&XfN/lS1%b+vEيo9`r˺%  <7u_yh W-@(L#DMNOI@/9Ie0ӷ'%ާYvEr*'0~Bhژ?@ !4LCG?á PMS&Gt?y j`:'0~ P޼՝U<:ڶN?5Z'ğ!$Ot.W*$F찪mѧy;?P7.!VՋ#-e+⃫'c_W+Y緃ݫ5lkYZdH#\fldάI<_RfӦLcc*ʬlsF+[㣁Ԑ'TOm›:˻d^;|p,ikf g$շNYs[F,tk7ț5K]K1ûFXmmηi&8lUI]U4Q͏Cy%ʏ݊ޑv1.G5qE+B{<]W4\О4uUM=ỪŨn%?G[q;'w7a( e:JXJ@O^j䪁@ܿV?v^֣߳ϊFZh?/Y;b5įr׵USMQWZ[,nbW^j} nڪ&ꨊ"uh+"d=UQ{7;"M~#XdF5rJ.UUݩ۾*rl۰} MwU_ҀО4uUM='w$OړnsOJ97r"'!4LCJ?á#MS?&Gt?ĠO j`:<0~(Bhژ?!4LCJ!^*"b28j5j&Ȉ؈ٱsZ?sZPun PX+bגӛjJ9حUTO;u۷F6J,˱Ij[kإlm#U˺ܼ2&w|Wmܭ v:{֯T o|nDsG8ۯoL&! L׋[N5Tk8@5xgsvn[H,;z M7oSݒ@)rv6Eo%fNUMvj\RƛmSLFcX7_aZsÊVHf2нCl;1ʪMָiv4|Ve mJ`sbV ͑UQz'w7a( e:Jz+6֎^qI*t2$Ur5ʈ P޼՝U9֟ԼocjJ)6gcn'r"؈4jlڨt =V5$:Qѹ&N7KY*o=v}mU;T654L&9Z=tF39]~ G#_+QrOmٷu' ݺ|QK^/n9Sm7$-GrkwJˤ^5>F(%d/G7Wllk}5F;D/G?:ѿCSw=$E9+꣚CUqEj;OQޅ)>e힋er^K˲6BOf>jr'ec^yͮWmadnv< a "ƍ$GJJU8 OOgk&yh?hxnjhxnj@ٽMK[ӫ·*!edNT9U"*m?Ho4JWߊȪT޼՝Uu]Cff I!#c ّj2EDr*UU;w.̾`R+ȓ{^ yeV\DDWmJz΍_AY-Eky.57cܛ79pZ'TM)$ѹD\/F"Vj-.=vWn:QszY<'kwD۪qvuη,um)O1tsyx9ۺO'r/Xd1dK-)UTYuU]DM/P'b8UuF>E_RonUGv^DUG ^L~S/jloK;R5#1OՑQUW*'Uj["F7gew*c-Pۆ ՛I&:I'dj>W#:XQ9edf7 Q#8ǫѫc_xLZtK]$QVtlGty7dW˺"m*5nM&'keb|䊛?TSSs4k/Q\oP'<\6wjL.}ydj+O"*,pȨa?}yOP'w7a( e:@9~йoFh5.="cT{q5_'4WuD_v: ޣY&ڢBʴbI ٶz4Lm̦)U&Wͱ3eIfнZXyֽvtݸxmg.Jul=Rcg+Zq=ѿGFJJ6VDc:C@64;Qy+[˒5L)ӭW3TckW]${=莏ʨyaoWnI*biGiXt+rڜ^QQU~'5!hӣ%J˳2XRFDk碹'H]^fYr(3ECő5]UE^rŕѵU%; ^FF3dz&ݬDFFy05=`d|N2 k#dʉzfg/Gn_3.[%W)&EE+er䓊/_z+Q\߳{D{F3>9#r9j訩ب۹kq`fosX{3})4b>yc#Q\#ZQ?5TC\J:fRn"rÛw7}  <7u_$9UQWa؍f%G#^r"YS}RО4uUM5~37Ҏ=Ń񙾔Oa,kq`fo(sX{3}(X?J\J:fR/o91=&)d^VIޖVDFvEtn%{ךc*Yzz~vy;?5w7a6&R|&6\=KoJnWɲٲ;OM%InUϚoT{U?79_\S`6v:ORRyҍ,gt绵{|TMݎTfT~twK"r}'Z( C'޲| =Ń񙾔\@\J:fR?5~37Ҏ=Ń񙾔sX{3}(X?J\J:fR\ɻ'PTBV{`rm#ϬG[q;޼՝Uu@O^j䪔XJyi@OOgk&@OzVw%T'5gzUJ>ZΠ7m&mt[=$%s?.t1ml䙘^~B՜Q^FwD3c3-iv J lV1"h$NH=?8駱QMa|e+qU&ѦG?YlR'$nd3-a܂G=vFUM hؽb/o@9ʵli2Lu:ұzvl2XT{j92ֻqpR5썬rƪUkTvTM{n_U{y~-yCoOc2CתEgˇ6#oow\]u031KQ*_Y)ܬcw5rQ[v<1k4LHWbgD[*>lj;t*uxz5AjJ*\(G1/ F#vcv4Jl'xX"Ɗ{+UZVrۮۨxw7a( e:J'5gzUFG>#y!tq=ʌj+fW45gzUJ'xGXI@9WYb< %,_\]yeK+ ,sw/.sP"ٚu)Rtak-D*QUU=O^i>Y>J@hxnjhxnjzzzr:VYDcuv$j/I؛o^_. }IRͺ+#l#o G5Ez:6+WKu1U9"2NpbE*ʨQ%~Pdاj֡[3:Y X\ޑʮ{]"%ݪMժֳ骧1qc$VvJ'kn+ e{U6'bȡOZ[ Vyvjsv쪛=2[orһn[3{V>k2.T(9HMeukX=;{^C.Y cX+v9kWb&J92Y(!bjص_k_4kc{VMV% {ךc*?y;?P?sZ?sZ{ךc*Yzz~vy;?5w7aǽN/URmiG#ݲ"&TvDD`?&Gt?ĠO j`:<0~(Bhژ?!4LCJ?á#MS?&կzG 1q5dDDDD'5gzUJOzVw%TM5SVG^U 㒔t5#YeF$?-vl6}Ad+UJLbvTWлnM͈1Oe[5/]c |rso$nIױޗ"W}L mu[:c[stG5$g'CBΥұf6 b9m1DWEWW~})p NVIgXaǽ#r"Qw/y'KҙG}Ez[8bwO{9b5VepMv&nH❪fz'+Sne霫tmjhS Y5Zۂ6Qs\#j©oʪ7Q;[2쥆,osv.Ǫ~Cp9S7sVXngֲ߻]";6MM:~4;CV7e7dޑ$JmrTٻ5fյ,88|mX-f$[ף;e*m芫Y, O%^6|T%k:@}3y >_n?syO)~.ylSNޚ\$D౳f5{߷$I:  5 tX{$DzXhst2΍]ڋy{Z܊d`z8^Y`(ܭs{\c7Uv1#|w%v?-䕙+@ڍ[ MҪlzUU;br"1xڭU?%UMm0Sो^},}-kz5{$]mɺbܤܮJYy+7_5^ΐ^޸ߝ&qױsA.O#潫rTT^EN͏?á 45gzUJ_HPjt*ARyVp67zuvjv&꪿T?}yOz5&itw:Y%HZnETMF~O'ԂY2 vn]-7)ӥG [dMFlXouQ; ߧ+-n $c.NQSE6b}[W1RukDs9NdߵOZO SqWVy|9SDW9vM&\^}A=ۄs̱1ݩFS?-{#R,RRW)/J"H8y5;wc;l. ΅FTG2xd5[[伞iSs%Wg'9%AmgDXʛroUEeݔ䬸S{\E7tDT7mUZae,5q?C !2>N^/To&d]irSWee>.ς&/Tcs\䷀ ;8[̿f#'^z>_[rt*֧o%QwQCFdEDDNȫTkQUֹfo ]د<3L)$5rvNKdMSe $ V+U"}8深wzA^9Yܔa諫hRkZ&35IV~4lQWn{ךc*Rj6G9sUT&TUDوja35UzvcdU.ȮE]U]OiMN*8n&j4cdƈthD~H芉ؠl6<\n udd8M#vrv.ʊ}Eo噘] ^Ʋ%WtNHݓz{EVS\U՞g_$l_]f쉺 <~VTeQ.WkrHIͼF[9KZ;< v2Y"tnj6415rG#N(eEN[ػ'G^39[gV+Ql7Iɉn]j`NU6'TȹDm޼՝U=Tᴎ:;˝R-D7z&E_CW9Ie0ӷ'%ާYvEr*xwMluJtQtV4Q$4G#G"&EwDTNْ8j.^T~2p"M#Ӎk㺽Q"j"hJf$ e21tJg/G۳9V'TjM|Cbty1ZjyWsc?W6h-"ܴd|+^թmrFBph+E$'+769X7k\5U{QQ{PAڡ SG3]ܯEU]zHV"3A]GLu+naynl.89蚛+Q7˟Nla^E31t5tsֿR1j#Fvn<܏+EmʐVEUDcv該v)]^v1ѹ+[stdoM'4USm]c2O<zIf>Ry\w on!Eț誟 =YޱSі%*K5R }볗:699l/7cϧy;?54zV*ejQVHb|RFv{ʊ} { <ɫj[Y,eI/?tY)+ªǦTMZtܾFX,M%ѱ֪Ò]UȐPf{EE{YFr5;nDWdESA){ۖ0iVF<1HyBz"rnԙL|^hZvjGUc"ܪUjNjEUݪh^,9.Y֒nrF+Z?R_%˨T[ 6MMas"tO"7v|Ft#Ws~5/uZNCRlli+]w q]Ukt] 8#R4%۩ykVJUUjm$sGdMW$MD)Xyh W-A=i.{CwUP B{<]W4''5U~@ѳq͹_Puzt2Iկ5I]N$V*+{vTCq5V2؎ScN-M'. ?Ƚ4Zzӳ?kuoRmktH=:VpX%z55៧j٭̲̹̱bz6/UrXGrDr5P5|,WĭW:\*6FnL~v>zbvq9DX$[ M<滥o:DUۤC9\#vTn#\V-cFMU7Ds6JHֹ"nDGZ}Y 9bGKVErl TkckSZr59<-,D;dtdլ^Fy滊VﲫZmbkWe|H7{ު.Ȉ#Q=^n%?G[q; @XJY؞^vguIV&"TDW_A޼՝UuX?G\JP'fQ5~37Ҕ =Ń񙾔ua,kq`fosX{3})@Ԙמڲ[Y+$oK+"G#VQvWz Yzz~v C'޲|>}'Z(=ỪŨl^>dn@'cI=ỪŨPmWijg"V>Ҏk :vk?h2&c/KQlHHCDqTeN<l>)3!jF_Qkxb{X.>\tۢ,;9>ļQk/c_zJFrj fdNEc,mXڵ0vkc3,.v,XK\45\+yrzTrKPZ)+1rsLAb92 sސ4`p89qoT08z"8>woQDnV[ɶ{ךc*?y;?P?sZ?sZO',t{dD߼Db=R9{]Bي3EW+S'sGrcTWrr֢jjje5VJff{nW~9mIqXْQZ+^N9\ )s6ߎ+wKG _Վ\"3PZVZsV&,3t/H͓ty*Ͻ1IjEl-<""#؞sDNJ֦"mկzG 1q5dDDDD =YޱR޼՝U( W-B W-B6&R|&6\=KoJnWɲٲ =YޱQG[q;޼՝Uu@OzVw%Td3a2LmcdUȮE]U]LUԘjzU>BHݠ%j zzbUua,lQON:t*AR{67uU]6bq׷]QgsgmNUX?G\JM5.\&5_*ʼnk6wj'濩Icz̩J@O^i>O@Oif<5,֒+vVU6TOJ=Ń񙾔 Oa,kq`fosX{3}(X?@\J:fP(?5~37Ҏ=Ń񙾔XJ@a*-" aU5H!esU%_G=ỪŨPY(qlMj6zK5ݧ#r9}M҃kq`fosX{3}(X?@\J:fP(?5~37Ҏ=Ń񙾔 Oa,kq`foy;?PzvJyHC>BXlUgtcRb\1UwWhxnjfcn[ZRi"i\ElonSeDX?@\J:fP(?5~37Ҏ=Ń񙾔 Oa,kq`fosX{3}(X?@i^j䪍e:O.bR*ϐY3XԂW9U]U~h|w7agRjL&6j%r7]\nXJ!4LCG?á%MS&@Gt?y j`:P'0~Bhژ? !4LCFyi@OOgk&@O@O?%-k$$?6er읫" j1N +UGǽ91vswnۧa4>Q6|V52+$>$7+87UofݩN!irIw,ܞ9v{uEWlNJ\ޥiB9qwl%i-2¤ܬF5svjOY>zKѵ,9گj+=dѪ173z&)ȟ^if}滊#ٳQQUU;= |aS߭o9midJn9rFD99UUj Md3#iRDUN DETn33b|_?iԂ2M25^OS7m@+`-Nط Ft1+|F5\uUTuTEeV'{l[:>W_C[~"O5Ir 9mF䅨MsQQ9tOLf퍃u6ݏrBw&tE'@t\d]"NedLg*7opD]\$r|K ƱIU[ʪ;w6E]M{voI<8QAz_躬JƭƹfD+y\jGfNwtJOY{gy'ܹגDr쨀tr͐y|Zbx3xܫX׾78^GskXhƙ5XwCf&ȱxvI$Ң;eUgg(yi@OOgk&@ 8 sRdJ+X+QZ UdUWH=Oe?y?KOyqSs4 O=/Oe?y?KOyqSs4{)9_N<~fӁ@Owdn:KVQ9=ѵ\'bnsZPun g+U~ֵrv5Ì} ؋g+{Q[۪mM!U3d[ءFسikF=[:#\WP ahe\8wi$٪4[6UꨊTj>fdTs/Kzru*ʎTb*Eɿ505Zײ%33=`Qe鸬MV[BDs/bWX+!=xce~"WtbH{cz ^ru߹%Iȴ+$sb{Q9*oZ쉰{ hWK㮏H.4n訩*nU9.SE,ij4ݵA-׻F:IV=bz\?xu x׊8`㍨ֱ""'b"'f e:JYzz~v2xT@Q۫eE觎UjMъ쾓`NRWI;_{q;gH8ESdU^ChZ'Ҏ2qZ̟HVy숫oʩڵ/Ը"Ԗ-`ǤL|1n=ƫDjuGȘۙLSMV+cTfʒzjzp\&8{yǂfA r1V#Hz+ףd?'yLv䒦&y 6eGB'.U*5Q۹WPs]:2YN3-,/E$j1;:DFz+]tɈjXi8-6j*&bU|̹ll_N(I~EsSg~+5zf#%+ˤg9EsUNb#Sv&V}.55}ŝ]zQrEVjrM IO4~(#@Gb\䐽c\Ƥ""IڏE_yh?'5gzUJ_~3!._Jc4$lnnMQ?.ҭԸds"ߋEr"UUO˒~n>wGFVz3laNIɼ\zPA<6bG$nG5T;;wY&+s܍EsjvjDDQvdd;+EV[ IZMDUP  <7u_yh W-@( e:JSd֣V<Or5ʛ7} lkq`fosX{3}(X?G\J'fQ5~37ҁ@ =Ń񙾔ua,5w7a( MݭϊzXMltrۯ5N^Dd~{rrths)e*+r\loGM4^*3N)<#RHYk¶%|PU̍V5ވ^OW>7%-ۍ}6صV:#㑮I"GȮG#ӊ?f˥hnjUyq@b(w*"/jz3wP.ĭɭ$3Iy̷+Y6#"vb5{}ܻH[T?N#q{-]OFRSI+Y洎Zav1lvr.O|bZXz,$R:7vɻy1**ʨؒhjrQVR,MӾ7*OomWm:!^*"b28j5j&Ȉ؈ٰz <7u_ =1մ.* qUHlJOET_Э3*U6 ˌKX5k+QV5U7(?XJ@czo'rK*ݩ64w*n""Gt?y j`:'0~Bhژ?@ !4LCG?á PMS&yhGt?܂j׊x8ڍk""v""vlXJV-ck'O#cx{qk'=YޱQ)f24kV֣/pY>߿. v/o>˕)[-^19tjѽqkogT/ 3Jlf-떱Y͈$ƫab%-]5vU~F|`ڎ J֞K*]Ѩ^eK}9*1̫ЬƋrIUǷNK$ ˚C)>2J4]Lc18jQnMe:B:HI<2>djybZg5Ds| 7W|#ejDe_xzw=s\lor[Ze1Q1cSuFWwlш56c/-q^.D핵+؛߶wUfN^w^j7H*IQcjEJDtJrvUI֞ԙ)bS 69đ}z^OX7qo߽Q99|Ʀr~zVj+Tz؛0;:`K=UuxQgc%Lql wz*޶ߍ e7m @O/m@?YfUgUHP?՞JO~9=Revڦ|e |_2կ ,q>5Dݩ6T[9emMEB=UG5ʽUt匾K?K}Grc鞑F#DcZW/m;֔0}J:ֲJZwXQFEVe 8My5 ZP,]k۵RFyQϠedtqx'LV&; W9S?̿.3};qZ^*;eU>Dd*VGeU95ssFaqPj[E]G]G]}n^GrT^ʮ2ךZYɬpࠥ}"U$j7y(5LRR[kiX7 X5˽ʭ**S>IoCYlaVȍG1\n_B)P:8_<&w+q_חquL>b=^n&*gn߻ﻞY"]j:hqnoJJ h@őK'm{;y#\ݖԳGIde҉ttZ|vj5țUkywU.&o&[sd *̦yrw)ci:\ikT[@iY訜%VscSU0Y~M[oP:oz~6?a( e7m'?0Bó{i '㚳ޱ)@O5gc*RGC꧙hyy<yۜz7 Z5}Me'#Rma]sùGrֶWIM?U\gNo/$kdb^\|P"{;WPgwc^ @ǥn7K]5%DNJ5c֪rsϴ*ZP*]WMGce.$O$stjaj.9W+dn1i4=̖y=mFԑJ5&7jr<4kΕ]*gFƊG=Dʪ+å>-NHe|?mW*QL娎I;dv4#{< 4{*+\]rj𨥴EIӬ U]-tz^gX5 :5;驙:O \{XRUµ^L YZB?KChe,~'t?(&R5tl%ÃEZZ)՚z>9#cr*/<޶ߍ'tl v+(trQAWK&7ת Zeej_ &UkSUr2E>LVt6:J}WQ#c*gzG< 5D_&FtmF&p&DZ5dخgɢbӣnJ90݅lu}0jXL$lc ޒE8:.'ٜ]C5]HR;k,i^mMV0.]ͪ5K dr\`(m3F"Wjƽݔ]ۙ~n53|W>j#XUs0I;Tj={jꫬjLjr̒"cQU]n."-pU]zKlVX2mF*vaUpì˝ju;i⪍-S#DUbv>M [z4`~SU㴍=3rwiS[Ҳa' F+sYܵZnwӢKXS)&]G[Uq9DD\yn\jN軥#IK1[YnLgs.qs'5WmF"UUQ7!Ouf)lT/VO@R+bs;.DLSȊ^WkwHZVKiyjeH) fejmjɗ$lj8y)_ =G:)*]䪟˥"koӾJ;\oZL؜pW+]v3Y4&mMV%.ow,gJߨEM2h EVWQ#|r6zsrL;U[@CGttG6o*G4E\5뷚5$T\s]?sIiڈ:*K_rM6TY>E1QQS 6+{(kw*.z^;6W}q.|+5Dj\線&N֛X^åKc**˔h|#W=U"*k `3kMnβ[)/:~Zֶ͒ (~#fU֣ N鈴j{-S-Z[tSb_hˍȍsn2vT8$tJdb9HW1U>ULw%TH=UI{Kݨu] 53xhZGE܍@ᠼK:_d֖w[|ID~ȮبNYʦQ9:9Z5WK%].72,nX$r*cyxó{i ~ݤ(E뻭w4J:DCM7w=US. C]_Gl JXiHܪ"e2G:Uܭ6DHHgkz$ޮi]U櫓3TvtqūQ\RFqwnWe\=QS+s2‰VMoDn7;浭nS.reZum+F<Ԕ,ʻnܻc֫c)eUBv}Esužr|,DK$qL;*\"3ПR3(rc$|6ֶ7JGXH܈rANNqM{ϼ[`ҷ]Qk]lKT)[J*E*)¢ p<4TK0D|HkXL$DNy8]J2r>[olnX{;o=+UQ77wUVصD+ PzYf{217{Q"O UtE[Rj>yQ*UU9"*H"ֶ=B&rM2Ԣ57ɷS.I8U&&D1̲&}0S,ڻmaY+Y=B.ޱ3ٓ+M>!(&##6ZƢa9""rX?fիN8/ C}KnieV9lr#ڨ**9{9?ZWkZᖕZx'*{]1-+-WGJUR ᖕZe}VŪ^MLvJUQ2Ҿ_T&k;BCe}VŪݠHɝ %Tmjj\:*oʸW9{nIi5^-ʥȮlJ>>Wk>7v =vηӊx"l:U^-̪oXkcv1&rP{ri6kK){= $rkn9ک\aQ]c{?Xg7uSۣItsQF3wzEWE{F OK?M~~=U3]Es\"Uy"ZVUD OUٷz8*x\ϙNXeQ~`һR&;R*S+GU0\;l6j;gH}3RE"#mbnscz v۵>,\\UU\9rrUUUUUUJ? e7m @O/m@?YfUgUHPPJ~[.O2SI%]̧ϵQ8(I]jg Cj]IElޠGGVj*Y#lWow4ܘjvZ:H鋥E Z*Y@vđSs=EnZܪ!Xv;/F}'U$wFӣ`Dlr,WW˶NN^)hHTvU%E7ƖƎ{fQ"\̣Q/٭>`A,Wz%:O54F\+Uw"57rkywSV/=?eV_s^)nUB泈Wod; ިUw};TTM?5tr1$grcGTj.LeUV= Im)*VTU6AxoG4ni֣jtLus:b5wgvO6]~{Ti''g;sюpvζ|=Ÿ,O}݇&hy5.hhj'>ov1'ߌa;ˠaBҏ,+)@aBҟ:oߨzFVõ#1"}Tj*g~rTD~8ZV]`[ ay_k_֯eUTr&@ƪMѻQ٣u;sJO$Ɉ1"*9r#7/#t'tl%K긩)|=OĨ<}>7#U3ETq:A"’ .ohelHt^so$b*.]ޒ=썱ɖN)Q~gͩ\E:i)8]"bGd{n]@Hz5=5ºy⾁H)9\'bF7]k[1W- C[8dttW$jGU۰Ussz"趶q֯Z.2vivrp{*EF\ww*Od[,llsFrf"vQwsi˵wZ*j$T$WS$|mUrœ;u򧢍j/*,XTI0.\*&""}#]Si5U dTN?(hoD=j9Gs{(W4.t+௧Vu3#wHܜLmF'iEv% [.R]說 e7m @O/m@O~aٽ_?YfU e7m @O/m@sv+=kU S7h)%CF )`#`Tq%h1*)A?SlY| ~KدL%drJɏ;HT][X5X\@IRm೴n+†ܶ.d81c3m]Sioӣk)mPՠ:tfP<j|6p"'S(ĩdfMZ\1DP$dNH#_o0XWoP|auPd_Q?b>9hfb?2L_EF(bqт*0C5Ӫݺ3U_Lu#7O 舸Հ5fJOybpbpEVMNƧa_S}n|pdq5.rb/#5Haֆi(g>C7p21iN;Vt6bĔsU0NQ[DPXf-n'Ni)AVR ݅'K(%u8a s8gᮾ3%C썁b]LfAA3Tzm1n&o놁 n4P"1V-7ɝ0s%'~{FW y87׌Zip<1x䄛ɺ۩1%ܥ;r#qV؈>mLFNܲ-x*b'¡5_Zǐ@8m?FGbF#J4jZ93)3loim>cuKX*?Ք+kj6[~/4NW?Aid[OX9qCbh$BTv L;#BBoۯCj0']?)_mjU)f}RߒcGJ=Նfr)Nl$*`*w2䆈,j#@`4zI8fgftn36fwat[޺Oh1泂o6%V%*:^jA>`u'F=7) b -Lwt9-npxzB{H]Cp[(h6:j/yFgitvmF[Ѿh7/ԟw긪i،jfQΡ eDgQ;asIst{ue.ɇi=Bhղ.'0#YsGXiy'/f/AljŅ53l敄={/2OmjwWv UYiʌE LEk;{V2:];SX;lz4 !U}Kf~߷~vz hT]s/fa;թ"-]cѰm vL/W|n[c{ 9_9'\;ަMuU<3>&3xeXϴgrq^||;AopĆ;XmZf$`-y2a3d5`gHmhfG4@cGcݬIOl26oM;wfutJ%MMlO3ucg_=Tχ7^;?`xT+>sRc9FTqyVT(ދrykaY'\`] dlLad1Ob1_pf #g;nmpتyƨO>;/:֦V/9,hGy>/y-Zۆ]vWS>5>5.GL8yo"z?TOk1KL`y[tַZN+ZwqU< ' H6G9J%W}2e}+G y3Nx8QTf['Αٖ[(GMqqBMcw'twj.zO/|M20ޓ'p;?|sb?mzRRF^<_zmKrT{O?jc`?lzvgn>\{f۷BދjꓷD֬i#^ vl\/>P\hB`bm~V/8n\pi`6B@B@ )`bKtI>ᴁ7L 8j6ffOi{wkRWm=wTk< UW5 ~CPc Z~Ud-_x%GbܷߺuӮAc˱V 0tz<~LzwÊ (tߕ}͛sw<3Edn%?I_}]ݥ'W]j=q}$?6qR,/ l'F@gUzX1YNVGKc^21߯]y|g؊~ǣYZ Yq X8\p(U?.村>ۊs'AOY$p܉v _cݨϿ:u/]y3\,V3 fKrf `lձ Zw".3qWi*[Ć3 n[2|55xExM/]:aяoV p:xY`{nڹO poGc?5CpWa,{ c_[_6o3-g/ NO=-vDnk!&o ?W!?8tZδoH8!@f_G"evg'x$Q2Ne`Ci [N^X9L-_P|=p姰gW_㙣ܡ1SGLRQ'OȜ߸3]xBZo/~-P8p-v/cxj?}Ppsy?P|/\Hr6[֢-*޷In[v7{7n[yϞ8gIδ:0ft^W}q Λq#Ona{c! Ν7p{DOm]O'f"O{6P9VY) X+zFKN>ĬsF~`q,cbqz\U&| V|J V[Oj-Lͣ7#feϽlo?g\W =+dv/;o?kibbcf~S '^ֺZ"']hjݿ32fHTLM$|g *'Όx]ͬ1;8t׶ yFE`oz^U{s'bf?xƿeMJ,瘣Q0GryY?G&8 Uv(Xg7Vb@|œVjbV,#ه`~4Dۺ w7-+(x;,=UF4Z QxǠXxbd-ŀdi}B %m>plvV]˾'Y\4涬X-V(=Z ʙJ,Ɣl;bP["-jvq'6]NݨBIQ?ܿo1Y͞o5|5Kغxczk5l’׷bb5h3p?]ym6Zvjԓ 4#[Og Hcx̰0Shla3Q &̻7xZNz2dW'&eĭ!xa}q'5x&Ve%MrL#|/ځ0ڱWiyC/0*Ո{Z iĪֳk%3_0Ii}v"O{%,H^ac7_X?}eTLk+|iEp8dŅ?ldb2-quqz51,1q#xYd.]"%W^K2e@Z0{Sb+-NhP9|Ok n^a!4NKzpyS=4~,%_^m˲5|8v6:GٿmYZN!0X);(m[iż@$ rB`|@/*uC#:B"$Z֌6BfR pdpW^jmܸՋ QCki3QH,Z>2 Z O *u6VwuܦMџ,s‘F?7vݖ]Ջ%~eJW3ryuW,:nI)&b^o&hK2Y6_#7}"豒N[uCFm+.ՠ3sVoT h$~6hFW;Ziq*fSc?@H3t+T$t𻪪oișlzV krENU~}H×5Z/6} rqE-2eUkG /ƖΓ6avV:i)sR)QD')iT$ {T桮hd S&3>HLn3òXcNrٌzlmDwƺ2jvpYE,trdN}[@WV8 KiGcӗ>Ų^ҭT7.-l8le3Jxb+mvr2֎r-2b͌$`Yj'm2R϶zre CCJ3ٙk}mG>x>g3?$J ~y?,j%ڊgՊ4 t3CR^%W_T;y.4=\{xeK1loǷ:hb}Y0W|V $I"ET!]I{u)[!b4EÊd^ė}tfN4hPv>mm{&{˔6lBqn#{cjQ{+*lf*W|&?+J9XSd4h'dmꦉsD&ৄ|.qjs,E]ذ#f8k"V6=nf6X^Y-h)($q6RLi-h ώ^axkks}pa2YvD‰R5򳲌zR]-iK1+ ;ݘRܚ64Flt V_^Q"pWwwvם>`\YޣFuPz㎖Ex׵WNIеՑpM|mw9s'jO)1Qi~~ϳ50OK΀2[V8= nwsĺegpȭE*ZgC͗XC+R'LD]{u5z / M '[%r3-(@fVـF !JbuI\&2bu`(!PK2@D @&P"@}jBY@B BR3:!PnR{O :Yb{#ٰ8-*Ș2C@ Plo@l^<k{+vkc)̧ǜ|Za[7<;pe7f_p:Կ?rԳ,_:A 5[( Wܬ4"S$@+=ṷ?C,P.Tw|rθpp`P5?Gű,yݍxG֮k79T/^d lpe!տl.Kї$<^8 q<݆^X6Ah)M?46&9tx1d!5F=*x[OvI/baNK#:/e9"c휩K#.9 -R;LJ+<ţ#kV|4Fwm^O]zi6#}[H,XM-œ 3E@i!@.E Vgƈ$BX]Z׋%2# P2[QITT B"jv.ҭܽO(=`]ͅ5ݬQ\8P @[(ۖPٶX$+4oܚWuTO!-jJ!P[(%zlB 3d+3F$AҺ^d-!bufH(-եuZB 3!PZKz@fod.AŇW}Y|FEW>H-,z %oIX}ㅧEEjˍVW)/Gf9#@:*H)"0d!3꜡+FL6Q>ľ )}df<4|FW09X$@?tH'JM)|gN?IU v+y ~[D+1ʧ{RJrƦ<ž}ʙgT쫅M%כ"Y$bȂնZ_xO[, 11mJan`V-m۩RANcn3'Y/ѾrY8 Os k|Uw7NS)4dkr!9UQTW;NQU}Ma!N;&oNV6ئe%䨳3ѻUu:bP\f$YjH !yE#ۥ)\E#/tQfl<{d%:եiUm4ZhNMߟ `/1P:+]>icS'pdcn\u[vݸl! OK/+4XW,:nI+$6af?g~_ c-?|j~F|JEX'MhJt]?h8F;eYX/vV1iDtL Q06K!,-"SA旤h#q= b [6!{着y˹[ %BrҖQ>@L4[V ¹4*3W3.[|8_v;6Ml55udz堔SrT+"aR ]")YkpJ i$/Jdm1IJCSrV["fQ{kn+~YYe"Xq^,%X=hP|ˤ쎲SPS|e%@ÒyN|OJ4Ȩrm׶\%!kk}_? ;7E)QD.+ubA; a-lJ(-Ӓ?d]6-ؐ}b{ڗ,s vRa߬އT:ÒE2" 2mLBjkiߚ%.,>…n!6 B%Z>?_6TԺegpȭݲyl>$P6*?}64jtY5"C&jX.hw^=.2S߷_YSPS3PF(CL"Jb.UJܣ|6QO(U|}s=vn.{Uٖȶf%~޽J$nkPme5D\MͶ dmK=6eAU6.UƖ, 1ZUUF܇rCeB(_ĽcIENDB`8!( / 0DTimes New Romanll|w 0DSymbolew Romanll|w 0 DArial Unicode MSl|w 0@ .  @n?" dd@  @@``   #N    ?R$eϝdV07M-s,^R$-ql jA^b$;aǕa"y*h 0AA@ _Rʚ;*6ʚ;g4BdBd  0^ppp@ <4!d!d8w 0lXw<4dddd8w 0lXw<4BdBd8w 0lXw80___PPT10 ? %5>Modeling of a Fuel Fabrication Facility Using Python and SimPy??(jJD Doak, Safeguards Systems Group (N-4), Los Alamos National Laboratory Presented at LACSI 2004, 10/12/04 kk)Introduction: Fuel Fabrication FacilitiesDPowder preparation Pellet fabrication Fuel rod fabrication Assembly $E0  Introduction: Powder Preparation Introduction: SafeguardsSigma-ID: essentially the amount of material the operator of the facility is unable to account for ID (Inventory Difference): difference between outputs and inputs with adjustments for inventory changes Sigma-ID: more specifically, the measurement error standard deviation of the ID    Introduction: Safeguards (cont.)zModeling and analysis used to design: Measurements Sub-MBA (Material Balance Area) structure Frequency of balance closures&&U&U Introduction: GloveboxesThe critical abstraction within the model Sealed area within a facility where processing occurs Minimizes contamination from by-productsImplementation OptionsConsiderations: Design changes frequent Clear and transparent models Tried a commercial modeling tool Not well-suited for rapidly making extensive changes to highly-detailed models Difficult to extract model from  blocks and  connections TZ5Z!ZZ5! Implementation Options (cont.)Python/SimPy Quickly make extensive changes Implicit documentation on object model Speed? Data-driven model Avoids type explosion Gloveboxes instantiated from specification files ` MG MGPython Model: FacilityInitializes the simulation, instantiates and then activates all the gloveboxes, and finally starts the simulation Triggers cleanings and writings of inventory Specifies duration of simulation Naming service for gloveboxes Python Model: GloveboxesCFive types of gloveboxes Generator Dummy Sampling Standard NoTarget&++; Python Model: Standard Glovebox(Represents processing gloveboxes Vacuum system for dust recovery Receives material, processes it, ships it on, and accumulates by-products like scrap and holdup Performs regular batches in a 24-hour period Holdup split into equipment and glovebox Scrap and holdup largest contributors to sigma-ID))7Python Model: Accumulation of By-products in a Glovebox  Python Model: Cleanings2Glovebox cleanings scheduled by Cleanup object Routine cleanings (IIV), E.g., changing filters Scrap gathered by vacuum system removed A portion of equipment holdup removed, split into scrap and waste streams Thorough annual cleaning (PIV) Scrap and all of removable equipment and glovebox holdup extractedl_rC_r )Python Model: Writing InventoryThe WriteInv object requests that gloveboxes write their inventories Inventory consists of: Material in cans waiting to be processed Material in process Scrap Equipment holdup Glovebox holdup*\ZdZ\dSimPyDiscreet-event simulation framework in Python Active objects are Processes that access Resources Gloveboxes, Cleanup, and WriteInv are ProcessesSample Classes: Facility  Sample Classes: Facility (cont.) Sample Classes: Cleanup ResultsCEach glovebox records events, e.g., powder_in 1.000000 25.000000 3.000000 48 20.000000 powder_in, material received by the glovebox 1.000000, Pu weight in kgs 25.000000, total weight of can + material 3.000000, simulation time in hours 48, unique identifier of can 20.000000, weight of empty can (i.e., tare weight) @$9$9* Results (cont.)Other recorded events: powder_out, scrap_out, waste, to_be_processed, in_process, scrap_inv, glovebox_holdup, sample_out, and equipment_holdup Using a three year-old Linux box and running the model for an entire year, the simulation runs in less than a minute,]  StatisticsOutput is a series of data files, one for each glovebox Further calculations occur in R (formerly S-PLUS) Measurements (with both systematic and random errors) added to material flow Variance from errors propagated to estimate sigma-ID IAEA uses a variation on sigma-ID, ID-DZSimulation GUI ConclusionsPython/SimPy an excellent implementation choice Can adjust rapidly to changing designs of facilities Code provides a clear and transparent specification for the object model Runs within acceptable time constraints Easily apply framework to new facilitiesZ Next StepswFurther refine XP practices Move R calculations to Python or interface to R via RPy Apply framework to other facilitiesP%  0` ̙33` ` ff3333f` 333MMM` f` f` 3>?" dd@,|?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>> l(    6$. P  T Click to edit Master title style! !  01   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  07 ``  @*   0= `   B*   0A `   B* H  0޽h ? ̙33 Default Designm 0 0$(  r  S |`p  r  S $` 0   H  0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 `$(  r  S ~P   r  S   H  0޽h ? ̙33y___PPT10Y+D=' = @B +i  0 p8 (  8r 8 S LP   n 8 C FA.levels_for_powder_prepP0H 8 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 0$(  0r 0 S P   r 0 S   H 0 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 <$(  <r < S tP   r < S 8  H < 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 4$(  4r 4 S hP   r 4 S Ğ  H 4 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0   $(   r  S P   r  S X  H  0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 @$(  @r @ S 0P   r @ S   H @ 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 $$(  $r $ S (P   r $ S   H $ 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 D$(  Dr D S P   r D S t  H D 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 L$(  Lr L S @P   r L S   H L 0޽h ? ̙33y___PPT10Y+D=' = @B +g  0 P(  Pr P S XP   l P C DA,glovebox_accumulationH P 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 H$(  Hr H S @P   r H S   H H 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 T$(  Tr T S pP   r T S   H T 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 Pl$(  lr l S P   r l S p  H l 0޽h ? ̙33y___PPT10Y+D=' = @B +B  0 ia `(  `x ` c $(.P  . A ` <\.``@ 'from SimPy.Simulation import * def run(self): initialize() for gbName in Facility._gloveboxes: gbRef = Facility._gloveboxes[gbName] activate(gbRef, gbRef.execute()) activate(self._cleanup, self._cleanup.execute()) activate(self._writeInv, self._writeInv.execute()) simulate(until=self._duration)` 22p 221p 22Fp 22p 221FH ` 0޽h ? ̙33y___PPT10Y+D=' = @B +_  0 ~0d(  dx d c $$.P  . ^ d <.``pP  Bdef getGlovebox(cls, gbName): if not gbName in cls._gloveboxes: raise FacilityException(& ) return cls._gloveboxes[gbName] getGlovebox = classmethod(getGlovebox) p 222"p 22p 22p 222(p 222"(  H d 0޽h ? ̙33y___PPT10Y+D=' = @B +  0 @hN(  hx h c $&.P  .  h <(.``PP> *class Cleanup(Process): def __init__(self, cleanupTimes): Process.__init__(self, name="Cleanup Process") self._cleanupTimes = cleanupTimes def execute(self): lastCleanup = 0 gloveboxes = Facility.Facility.getGloveboxes() for time, type in self._cleanupTimes: yield hold, self, (time - lastCleanup) for gbKey in gloveboxes: gloveboxes[gbKey].doCleanup(type): lastCleanup = time >p 22Yp 22p 22qp 22Hp 22&p 22p 22>YqH  &    B      H h 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 `p$(  pr p S ?.P  . r p S  . H p 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 pt$(  tr t S I.P  . r t S M. . H t 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 x$(  xr x S Q.P  . r x S R. . H x 0޽h ? ̙33y___PPT10Y+D=' = @B +i  0 x(  r  S a.P  . ^  C 6Asimulation_gui dH  0޽h ? ̙33___PPT10i.AഘH+D=' = @B +m  0 |$(  |r | S \P   r | S 4  H | 0޽h ? ̙33y___PPT10Y+D=' = @B +m  0 $(  r  S Xe.P  . r  S 0f. . H  0޽h ? ̙33y___PPT10Y+D=' = @B +rx0@!)0_,8= E1/6.3;@\GxBDINSlWFL ]_afPijdkw8!( / 0DTimes New Romanll|w 0DSymbolew Romanll|w 0 DArial Unicode MSl|w 0@ .  @n?" dd    /On-screen ShowU Times New RomanSymbolArial Unicode MSDefault Design?Modeling of a Fuel Fabrication Facility Using Python and SimPy*Introduction: Fuel Fabrication Facilities!Introduction: Powder PreparationIntroduction: Safeguards!Introduction: Safeguards (cont.)Introduction: GloveboxesImplementation OptionsImplementation Options (cont.)Python Model: FacilityPython Model: Gloveboxes Python Model: Standard Glovebox8Python Model: Accumulation of By-products in a GloveboxPython Model: Cleanings Python Model: Writing InventorySimPySample Classes: Facility!Sample Classes: Facility (cont.)Sample Classes: CleanupResultsResults (cont.) StatisticsSimulation GUI Conclusions Next Steps  Fonts UsedDesign Template Slide Titles_10112259112259.-@Times New Roman-.  2 J-#.-@Times New Roman-.  2 J4), .- / 0DTimes New Romanll|w 0DSymbolew Romanll|w 0 DArial Unicode MSl|w 0@ .  @n?" dd@  @@`` ,$@'Z    ?R$eϝdV07M-s,^R$-ql jA^b$;aǕa"y*h 0AA@ _Rʚ;*6ʚ;g4BdBd  0^ppp@ <4!d!d8w 0lXw<4dddd8w 0lXw<4BdBd8w 0lXw80___PPT10 ? %O  =5>Modeling of a Fuel Fabrication Facility Using Python and SimPy??(jJD Doak, Safeguards Systems Group (N-4), Los Alamos National Laboratory Presented at LACSI 2004, 10/12/04 kk)Introduction: Fuel Fabrication FacilitiesDPowder preparation Pellet fabrication Fuel rod fabrication Assembly $E0  Introduction: Powder Preparation Introduction: SafeguardsSigma-ID: essentially the amount of material the operator of the facility is unable to account for ID (Inventory Difference): difference between outputs and inputs with adjustments for inventory changes Sigma-ID: more specifically, the measurement error standard deviation of the ID    Introduction: Safeguards (cont.)zModeling and analysis used to design: Measurements Sub-MBA (Material Balance Area) structure Frequency of balance closures&&U&U Introduction: GloveboxesThe critical abstraction within the model Sealed area within a facility where processing occurs Minimizes contamination from by-productsImplementation OptionsConsiderations: Design changes frequent Clear and transparent models Tried a commercial modeling tool Not well-suited for rapidly making extensive changes to highly-detailed models Difficult to extract model from  blocks and  connections TZ5Z!ZZ5! Implementation Options (cont.)Python/SimPy Quickly make extensive changes Implicit documentation on object model Speed? Data-driven model Avoids type explosion Gloveboxes instantiated from specification files ` MG MGPython Model: FacilityInitializes the simulation, instantiates and then activates all the gloveboxes, and finally starts the simulation Triggers cleanings and writings of inventory Specifies duration of simulation Naming service for gloveboxes Python Model: GloveboxesCFive types of gloveboxes Generator Dummy Sampling Standard NoTarget&++; Python Model: Standard Glovebox(Represents processing gloveboxes Vacuum system for dust recovery Receives material, processes it, ships it on, and accumulates by-products like scrap and holdup Performs regular batches in a 24-hour period Holdup split into equipment and glovebox Scrap and holdup largest contributors to sigma-ID))7Python Model: Accumulation of By-products in a Glovebox  Python Model: Cleanings2Glovebox cleanings scheduled by Cleanup object Routine cleanings (IIV), E.g., changing filters Scrap gathered by vacuum system removed A portion of equipment holdup removed, split into scrap and waste streams Thorough annual cleaning (PIV) Scrap and all of removable equipment and glovebox holdup extractedl_rC_r )Python Model: Writing InventoryThe WriteInv object requests that gloveboxes write their inventories Inventory consists of: Material in cans waiting to be processed Material in process Scrap Equipment holdup Glovebox holdup*\ZdZ\dSimPyDiscreet-event simulation framework in Python Active objects are Processes that access Resources Gloveboxes, Cleanup, and WriteInv are ProcessesSample Classes: Facility  Sample Classes: Facility (cont.) Sample Classes: Cleanup ResultsCEach glovebox records events, e.g., powder_in 1.000000 25.000000 3.000000 48 20.000000 powder_in, material received by the glovebox 1.000000, Pu weight in kgs 25.000000, total weight of can + material 3.000000, simulation time in hours 48, unique identifier of can 20.000000, weight of empty can (i.e., tare weight) @$9$9* Results (cont.)Other recorded events: powder_out, scrap_out, waste, to_be_processed, in_process, scrap_inv, glovebox_holdup, sample_out, and equipment_holdup Using a three year-old Linux box and running the model for an entire year, the simulation runs in less than a minute,]  StatisticsOutput is a series of data files, one for each glovebox Further calculations occur in R (formerly S-PLUS) Measurements (with both systematic and random errors) added to material flow Variance from errors propagated to estimate sigma-ID IAEA uses a variation on sigma-ID, ID-DZSimulation GUI ConclusionsPython/SimPy an excellent implementation choice Can adjust rapidly to changing designs of facilities Code provides a clear and transparent specification for the object model Runs within acceptable time constraints Easily apply framework to new facilitiesZ Next StepswFurther refine XP practices Move R calculations to Python or interface to R via RPy Apply framework to other facilitiesP% 8(    0  P    >*   0     @*   6| _P   >*   6? _   @* H  0޽h ? 3380___PPT10.!@MrݍQqwl!( / 0DTimes New RomanTT|wܖ 0ܖDSymbolew RomanTT|wܖ 0ܖ DArial Unicode MST|wܖ 0ܖ@ .  @n?" dd@  @@`` ,$@'Z    ?R$eϝdV07M-s,^R$-ql jA^b$;aǕa"y*h 0AA@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeghijklmnopqrstuvwxyz{|}~Root EntrydO)t! PicturesCurrent User22SummaryInformation(PowerPoint Document(fUDocumentSummaryInformation8@  @@``   #N    ?R$eϝdV07M-s,^R$-ql jA^b$;aǕa"y*h 0AA@ _Rʚ;*6ʚ;g4BdBd  0^ppp@ <4!d!d8w 0lXw<4dddd8w 0lXw<4BdBd8w 0lXw80___PPT10 ? %5>Modeling of a Fuel Fabrication Facility Using Python and SimPy??(jJD Doak, Safeguards Systems Group (N-4), Los Alamos National Laboratory Presented at LACSI 2004, 10/12/04 kk)Introduction: Fuel Fabrication FacilitiesDPowder preparation Pellet fabrication Fuel rod fabrication Assembly $E0  Introduction: Powder Preparation Introduction: SafeguardsSigma-ID: essentially the amount of material the operator of the facility is unable to account for ID (Inventory Difference): difference between outputs and inputs with adjustments for inventory changes Sigma-ID: more specifically, the measurement error standard deviation of the ID    Introduction: Safeguards (cont.)zModeling and analysis used to design: Measurements Sub-MBA (Material Balance Area) structure Frequency of balance closures&&U&U Introduction: GloveboxesThe critical abstraction within the model Sealed area within a facility where processing occurs Minimizes contamination from by-productsImplementation OptionsConsiderations: Design changes frequent Clear and transparent models Tried a commercial modeling tool Not well-suited for rapidly making extensive changes to highly-detailed models Difficult to extract model from  blocks and  connections TZ5Z!ZZ5! Implementation Options (cont.)Python/SimPy Quickly make extensive changes Implicit documentation on object model Speed? Data-driven model Avoids type explosion Gloveboxes instantiated from specification files ` MG MGPython Model: FacilityInitializes the simulation, instantiates and then activates all the gloveboxes, and finally starts the simulation Triggers cleanings and writings of inventory Specifies duration of simulation Naming service for gloveboxes Python Model: GloveboxesCFive types of gloveboxes Generator Dummy Sampling Standard NoTarget&++; Python Model: Standard Glovebox(Represents processing gloveboxes Vacuum system for dust recovery Receives material, processes it, ships it on, and accumulates by-products like scrap and holdup Performs regular batches in a 24-hour period Holdup split into equipment and glovebox Scrap and holdup largest contributors to sigma-ID))7Python Model: Accumulation of By-products in a Glovebox  Python Model: Cleanings2Glovebox cleanings scheduled by Cleanup object Routine cleanings (IIV), E.g., changing filters Scrap gathered by vacuum system removed A portion of equipment holdup removed, split into scrap and waste streams Thorough annual cleaning (PIV) Scrap and all of removable equipment and glovebox holdup extractedl_rC_r )Python Model: Writing InventoryThe WriteInv object requests that gloveboxes write their inventories Inventory consists of: Material in cans waiting to be processed Material in process Scrap Equipment holdup Glovebox holdup*\ZdZ\dSimPyDiscreet-event simulation framework in Python Active objects are Processes that access Resources Gloveboxes, Cleanup, and WriteInv are ProcessesSample Classes: Facility  Sample Classes: Facility (cont.) Sample Classes: Cleanup ResultsCEach glovebox records events, e.g., powder_in 1.000000 25.000000 3.000000 48 20.000000 powder_in, material received by the glovebox 1.000000, Pu weight in kgs 25.000000, total weight of can + material 3.000000, simulation time in hours 48, unique identifier of can 20.000000, weight of empty can (i.e., tare weight) @$9$9* Results (cont.)Other recorded events: powder_out, scrap_out, waste, to_be_processed, in_process, scrap_inv, glovebox_holdup, sample_out, and equipment_holdup Using a three year-old Linux box and running the model for an entire year, the simulation runs in less than a minute,]  StatisticsOutput is a series of data files, one for each glovebox Further calculations occur in R (formerly S-PLUS) Measurements (with both systematic and random errors) added to material flow Variance from errors propagated to estimate sigma-ID IAEA uses a variation on sigma-ID, ID-DZSimulation GUI ConclusionsPython/SimPy an excellent implementation choice Can adjust rapidly to changing designs of facilities Code provides a clear and transparent specification for the object model Runs within acceptable time constraints Easily apply framework to new facilitiesZ Next StepswFurther refine XP practices Move R calculations to Python or interface to R via RPy Apply framework to other facilitiesP%rilElwl!(  !"#$%&'()*+,-./01Oh+'0 hp  PowerPoint Presentation112259126Microsoft PowerPoint@D"@@@;s!Glg  -=  y--$xx--'@Times New Roman-. 62 (Modeling of a Fuel Fabrication ."System9-@Times New Roman-. 62 3Facility Using Python and SimPy.-@Times New Roman-. =2 J$JD Doak, Safeguards Systems Group (N.-@Times New Roman-.  2 J-#.-@Times New Roman-.  2 J4), .-@Times New Roman-. 42 SLos Alamos National Laboratory.-@Times New Roman-. 92 ]!Presented at LACSI 2004, 10/12/04.-՜.+,0 _Rʚ;*6ʚ;g4BdBd 0^ppp@ <4!d!d w 0TXw<4dddd w 0TXw<4BdBd w 0TXw80___PPT10 ? %O  =5>Modeling of a Fuel Fabrication Facility Using Python and SimPy??(jJD Doak, Safeguards Systems Group (N-4), Los Alamos National Laboratory Presented at LACSI 2004, 10/12/04 kk)Introduction: Fuel Fabrication FacilitiesDPowder preparation Pellet fabrication Fuel rod fabrication Assembly $E0  Introduction: Powder Preparation Introduction: SafeguardsSigma-ID: essentially the amount of material the operator of the facility is unable to account for ID (Inventory Difference): difference between outputs and inputs with adjustments for inventory changes Sigma-ID: more specifically, the measurement error standard deviation of the ID    Introduction: Safeguards (cont.)zModeling and analysis used to design: Measurements Sub-MBA (Material Balance Area) structure Frequency of balance closures&&U&U Introduction: GloveboxesThe critical abstraction within the model Sealed area within a facility where processing occurs Minimizes contamination from by-productsImplementation OptionsConsiderations: Design changes frequent Clear and transparent models Tried a commercial modeling tool Not well-suited for rapidly making extensive changes to highly-detailed models Difficult to extract model from  blocks and  connections TZ5Z!ZZ5! Implementation Options (cont.)Python/SimPy Quickly make extensive changes Implicit documentation on object model Speed? Data-driven model Avoids type explosion Gloveboxes instantiated from specification files ` MG MGPython Model: FacilityInitializes the simulation, instantiates and then activates all the gloveboxes, and finally starts the simulation Triggers cleanings and writings of inventory Specifies duration of simulation Naming service for gloveboxes Python Model: GloveboxesCFive types of gloveboxes Generator Dummy Sampling Standard NoTarget&++; Python Model: Standard Glovebox(Represents processing gloveboxes Vacuum system for dust recovery Receives material, processes it, ships it on, and accumulates by-products like scrap and holdup Performs regular batches in a 24-hour period Holdup split into equipment and glovebox Scrap and holdup largest contributors to sigma-ID))7Python Model: Accumulation of By-products in a Glovebox  Python Model: Cleanings2Glovebox cleanings scheduled by Cleanup object Routine cleanings (IIV), E.g., changing filters Scrap gathered by vacuum system removed A portion of equipment holdup removed, split into scrap and waste streams Thorough annual cleaning (PIV) Scrap and all of removable equipment and glovebox holdup extractedl_rC_r )Python Model: Writing InventoryThe WriteInv object requests that gloveboxes write their inventories Inventory consists of: Material in cans waiting to be processed Material in process Scrap Equipment holdup Glovebox holdup*\ZdZ\dSimPyDiscreet-event simulation framework in Python Active objects are Processes that access Resources Gloveboxes, Cleanup, and WriteInv are ProcessesSample Classes: Facility  Sample Classes: Facility (cont.) Sample Classes: Cleanup ResultsCEach glovebox records events, e.g., powder_in 1.000000 25.000000 3.000000 48 20.000000 powder_in, material received by the glovebox 1.000000, Pu weight in kgs 25.000000, total weight of can + material 3.000000, simulation time in hours 48, unique identifier of can 20.000000, weight of empty can (i.e., tare weight) @$9$9* Results (cont.)Other recorded events: powder_out, scrap_out, waste, to_be_processed, in_process, scrap_inv, glovebox_holdup, sample_out, and equipment_holdup Using a three year-old Linux box and running the model for an entire year, the simulation runs in less than a minute,]  StatisticsOutput is a series of data files, one for each glovebox Further calculations occur in R (formerly S-PLUS) Measurements (with both systematic and random errors) added to material flow Variance from errors propagated to estimate sigma-ID IAEA uses a variation on sigma-ID, ID-DZSimulation GUI ConclusionsPython/SimPy an excellent implementation choice Can adjust rapidly to changing designs of facilities Code provides a clear and transparent specification for the object model Runs within acceptable time constraints Easily apply framework to new facilitiesZ Next StepswFurther refine XP practices Move R calculations to Python or interface to R via RPy Apply framework to other facilitiesP%r!w