Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| 184_projects:f21_project_5 [2021/08/19 14:57] – created dmcpadden | 184_projects:f21_project_5 [2021/09/29 14:03] (current) – [Project 5B: Group Project TBD] dmcpadden | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Project 5 ===== | ===== Project 5 ===== | ||
| + | ==== Project 5A: Mini-Particle Accelerator | ||
| + | |||
| + | S.P.A.R.T.A.N force, still trapped in the town of Lakeview, has been sent as part of a larger governmental team to work on developing a micro-particle accelerator on the outskirts of town. Why does a town the size of Lakeview need a micro-particle accelerator? | ||
| + | |||
| + | === Part 1: === | ||
| + | The first bit of code that you have received is from the previous team who were able to construct a single ring of charge and show the electric field due to that ring at some point. Your team should construct the electric field vectors for a circle inside the accelerator (smaller than the ring) at a distance of a few centimeters from the ring face. | ||
| + | |||
| + | < | ||
| + | GlowScript 2.7 VPython | ||
| + | #Set up constants | ||
| + | R = 0.02 | ||
| + | r_obs = 0.05 | ||
| + | |||
| + | Q = 1e-9 | ||
| + | N = 20 | ||
| + | dq = Q/N | ||
| + | |||
| + | scale=1e-4 | ||
| + | oofpez = 9e9 #1/(4pi epsilon_0) in N m^2/C^2 | ||
| + | |||
| + | #Defining a ring at the origin | ||
| + | myring = ring(pos = vector(0, | ||
| + | |||
| + | #Create an empty list for the charges | ||
| + | ChargeList=[] | ||
| + | |||
| + | #Set up the step size and angle for creating the charges | ||
| + | dtheta = 2*pi/ | ||
| + | theta = dtheta/ | ||
| + | |||
| + | #Create charges in a circle and add them to the ChargeList | ||
| + | while theta < 2*pi: | ||
| + | rpiece = R*vector(cos(theta), | ||
| + | | ||
| + | particle = sphere(pos = rpiece, radius = R/20, color = color.yellow) | ||
| + | ChargeList.append(particle) | ||
| + | | ||
| + | theta = theta + dtheta | ||
| + | |||
| + | #Create an empty list for the observation points | ||
| + | ObsList = [] | ||
| + | |||
| + | #Set up the step size and angle for creating the observation points | ||
| + | phi = 0 | ||
| + | dphi = pi/4 | ||
| + | |||
| + | #Create observation points in a circle and add them to the ObsList | ||
| + | while phi < 2*pi: | ||
| + | r_obs_piece = r_obs*vector(cos(phi), | ||
| + | | ||
| + | obs_particle = sphere(pos = r_obs_piece, | ||
| + | | ||
| + | ObsList.append(obs_particle) | ||
| + | | ||
| + | phi = phi + dphi | ||
| + | |||
| + | #Find the electric field at each observation point | ||
| + | for obs_point in ObsList: | ||
| + | | ||
| + | for charge in ChargeList: | ||
| + | Enet=vec(0, | ||
| + | </ | ||
| + | |||
| + | === Part 2 === | ||
| + | |||
| + | After you got this initial code working, your team was able to construct a model of a tube consisting of multiple rings, all with the same charge. But, the field doesn' | ||
| + | |||
| + | < | ||
| + | num_points = 10 | ||
| + | num_rings = 11 | ||
| + | N = 11 | ||
| + | spacing = 0.02 | ||
| + | |||
| + | # Set some constants and stuff | ||
| + | R=0.02 #radius of ring in m | ||
| + | ax = vector(0, | ||
| + | Q=1e-9 #charge of ring in C | ||
| + | oofpez=9e9 #1/(4pi epsilon_0) in N m^2/C^2 | ||
| + | |||
| + | #draw axis | ||
| + | zaxis=cylinder(pos=-2*R*ax, | ||
| + | |||
| + | #draw points | ||
| + | points = [] | ||
| + | for i in range(num_points): | ||
| + | | ||
| + | xr = 0.01*sin(i*2*pi/ | ||
| + | yr = 0.01*cos(i*2*pi/ | ||
| + | | ||
| + | points.append(sphere(pos=vector(xr, | ||
| + | |||
| + | #make and draw rings | ||
| + | rings = [] | ||
| + | ring_charge = [Q, | ||
| + | |||
| + | for i in range(num_rings): | ||
| + | | ||
| + | loc = i - (num_rings)// | ||
| + | rings.append(ring(pos=vector(0, | ||
| + | |||
| + | # Find net field | ||
| + | for apoint in points: | ||
| + | |||
| + | Enet = vector(0, | ||
| + | for i in range(len(rings)): | ||
| + | aring = rings[i] # look at one ring | ||
| + | |||
| + | dq = ring_charge[i]/ | ||
| + | dtheta = 2*pi/N #theta increment for our loop | ||
| + | theta=dtheta/ | ||
| + | Ering = vector(0, | ||
| + | |||
| + | rpoint = apoint.pos | ||
| + | |||
| + | scale=1.2*mag(rpoint)/ | ||
| + | |||
| + | while theta< | ||
| + | rpiece = R*vector(cos(theta), | ||
| + | r = rpoint-rpiece #vector from piece to point in space | ||
| + | rmag = mag(r) #magnitude of r | ||
| + | rhat = norm(r) #unit vector for r | ||
| + | dE = oofpez * dq / rmag / rmag * rhat # Electric field of peice of ring | ||
| + | Enet = Enet + dE | ||
| + | particle=sphere(pos=rpiece, | ||
| + | theta=theta+dtheta | ||
| + | |||
| + | Evector=arrow(pos=rpoint, | ||
| + | </ | ||
| + | |||
| + | /* | ||
| ==== Project 5A: Maverick and JPL ==== | ==== Project 5A: Maverick and JPL ==== | ||
| Line 20: | Line 150: | ||
| </ | </ | ||
| + | */ | ||
| + | |||
| + | /* | ||
| ==== Project 5B: Group Project TBD ==== | ==== Project 5B: Group Project TBD ==== | ||
| + | */ | ||