;DEFINING GEOMETERY FOR EACH SECTION OF THE MASS SPECTROMETER ;RECTANGULAR QUADRUPOLE ;NOT DENISON GEOMETRY!!! # local gu_mm=4 --16 means 4.5Gb per array --SCALE FACTOR # local length=400 --RIT length from inventor # local radius=28 # local endcapOD1=39.624*gu_mm # local endcapOD2=21.844*gu_mm # local endcapID1=20.32*gu_mm # local endcapID3=7.62*gu_mm # local endcapthck=8.89*gu_mm # local endcapthck1=3.048*gu_mm # local endcapthck2=5.08*gu_mm # local endcapthck3=0.762*gu_mm # local caprodspace=1.27*gu_mm # local rodlength=153.67*gu_mm --1st two electrodes # local rodlength3=34.925*gu_mm --2rd electrode # local rodwidth=4.851*gu_mm # local rodspacing=7.976*gu_mm # local rodheight=8.712*gu_mm # local rodrodspace=1.27*gu_mm # local wireOD=0.63*gu_mm # local nx=math.floor(endcapOD1/2)+1 # local ny=math.floor(endcapOD1/2)+1 ;# local nz=math.floor(length*gu_mm)+1 # local nz=math.floor((2*endcapthck+4*rodrodspace+2*rodlength+rodlength3))+1 pa_define($(nx),$(ny),$(nz),p,xy,E) ;-- was: XY ;===================== start entrance electrode =================================== locate(,,,,,,){ e(13) { fill { within { cylinder(0,0,$(endcapthck1),$(endcapOD1/2),,$(endcapthck1)) } notin { cylinder(0,0,$(endcapthck1),$(endcapID1/2),,$(endcapthck1)) } } fill { within { cylinder(0,0,$(endcapthck1+endcapthck2),$(endcapOD2/2),,$(endcapthck2)) } notin { cylinder(0,0,$(endcapthck1+endcapthck2),$(endcapID1/2),,$(endcapthck2)) } } fill { within { cylinder(0,0,$(endcapthck1+endcapthck2+endcapthck3),$(endcapOD2/2),,$(endcapthck3)) } notin { cylinder(0,0,$(endcapthck1+endcapthck2+endcapthck3),$(endcapID3/2),,$(endcapthck3)) } } } } ;===================== end entrance electrode =================================== ;===================== start rods =================================== ;===================== 1st set ============= locate(,,$(endcapthck+caprodspace),,,,){ ;1st set of rods locate($(rodspacing/2),0,0,1,0,0,0) { e(15) { fill { within { box3d(0,0,0,$(rodheight),$(rodwidth/2),$(rodlength)) } } } } locate(0,$(rodspacing/2),0,1,0,0,0) { e(16) { fill { within { box3d(0,0,0,$(rodwidth/2),$(rodheight),$(rodlength)) } } } } } ;===================== 2nd set ============= locate(,,$(endcapthck+caprodspace+rodlength+rodrodspace),,,,){ locate($(rodspacing/2),0,0,1,0,0,0) { e(17) { fill { within { box3d(0,0,0,$(rodheight),$(rodwidth/2),$(rodlength)) } } } } locate(0,$(rodspacing/2),0,1,0,0,0) { e(18) { fill { within { box3d(0,0,0,$(rodwidth/2),$(rodheight),$(rodlength)) } } } } } ;===================== 3rd set ============= locate(,,$(endcapthck+caprodspace+2*(rodlength+rodrodspace)),,,,){ locate($(rodspacing/2),0,0,1,0,0,0) { e(19) { fill { within { box3d(0,0,0,$(rodheight),$(rodwidth/2),$(rodlength3)) } } } } locate(0,$(rodspacing/2),0,1,0,0,0) { e(20) { fill { within { box3d(0,0,0,$(rodwidth/2),$(rodheight),$(rodlength3)) } } } } } ;===================== expulsion wires ============= REQUIRES CHECKING!!! locate(,,$(endcapthck+caprodspace+2*(rodlength+rodrodspace)),,,,) { e(37) { fill { within { locate(,,,,5,0,-5){ cylinder($(rodspacing/2),$(rodspacing/2),$(rodlength3),$(wireOD/2),,$(rodlength3)) } } } } } ;===================== end rods =================================== ;===================== start exit electrode =================================== locate(,,$(2*endcapthck+4*rodrodspace+2*rodlength+rodlength3),,,,180){ e(21) { ; take outer half off, and transfer to postRIT PA ; fill { within { ; cylinder(0,0,$(endcapthck1),$(endcapOD1/2),,$(endcapthck1)) ; } ; notin { ; cylinder(0,0,$(endcapthck1),$(endcapID1/2),,$(endcapthck1)) ; } ; } ; fill { within { ; cylinder(0,0,$(endcapthck1+endcapthck2),$(endcapOD2/2),,$(endcapthck2)) ; } ; notin { ; cylinder(0,0,$(endcapthck1+endcapthck2),$(endcapID1/2),,$(endcapthck2)) ; } ; } fill { within { cylinder(0,0,$(endcapthck1+endcapthck2+endcapthck3),$(endcapOD2/2),,$(endcapthck3)) } notin { cylinder(0,0,$(endcapthck1+endcapthck2+endcapthck3),$(endcapID3/2),,$(endcapthck3)) } } } } ;===================== end exit electrode =================================== ;