Tag Archives: physics

the ITER project

iter
A cutaway view of the future ITER Tokamak. © ITER Organization.

Imagine if we could count on a limitless source of electricity for our houses, hospitals, cities, nations. The International Tokamak Experimental Reactor (ITER) is a research and engineering project that aims at making this a reality.

Working to translate today’s studies of plasma physics into tomorrow’s electricity-producing fusion plants, ITER addresses one of the key challenges that our civilization will have to face over the next decades: how to provide sufficient, clean energy in the context of diminishing fossil resources and increasing demand for energy.

The ITER Tokamak chamber will be twice as large as any previous tokamak, with a plasma volume of 830 cubic meters. In the subsequent fusion plant prototype DEMO and in future industrial fusion installations, the heat resulting from the fusion will be used to produce steam and—by way of turbines and alternators—electricity.

© Dale Hayward, lamoustache.ca on Vimeo.

Although safe nuclear energy should be the solution for our future needs in therms of electricity, probably we’ll never benefit of the new nuclear safe plants because in reality the tar sands boom has quickly become the world’s largest industrialized project in human history.

Plasma Flare

Accelerated capture (90 minutes, extreme ultraviolet light) of a M3.6 class plasma flare over the Sun’s surface. Credits: NASA Solar Dynamics Observatory.

A coronal mass ejection (or plasma flare) happens when two oppositely aligned magnetic fields align and the stored magnetic energy is propelled out of the opposite side shooting protons and electrons into space at a speeds up to one-third the speed of light. A note on the dimension of this singular beauty: the Sun has a diameter of 1.392.000 Km hence this flare could be 30-150.000 Km wide! Also note the way the plasma comes back, attracted by the immense gravitational force – Sun’s mass is 333.000 times bigger than the one of planet Earth. Two years ago I tried to simulate the magnetic behaviour of these flares in this Processing sketch. Stimulated by this capture I feel I wish to work on a new, huge, smooth Particle Plasma Flare.

Typo Mishap

typomishap
Typo Mishap. Rendered with P5Sunflow.

Typo Mishap. Applet and source code: http://www.openprocessing.org/visuals/?visualID=9333

Come anticipato, inizio a studiarmi jBullet – il Java port di Bullet Physics (open source collision detection, rigid and soft body dynamics library), visto che é proprio quello che serve per aggiungere convincenti effetti di fisica agli oggetti 3D disegnati in Processing; la lib é molto complessa ed espone centinaia di classi e metodi per calcolare collisioni, primitive, inierzia, posizioni, piani, velocità, accelerazioni, punti di contatto, shapes convesse e concave, eventi, algoritmi ecc… Si é reso necessario un decompiler per leggere le classi (.java) contenute nel .jar della demo Applet originale; questo é l’unico modo per poter affrontare le API di Bullet Physics almeno per identificare chi-fa-cosa. In questa situazione iniziale é chiaro che per comprendere, devo ricostruire la demo base trovando però un punto di contatto efficiente tra le funzionalità di disegno (rendering) in Processing e quelle di calcolo di forme e comportamenti in Bullet. Comunque – e questa é la parte che mi entusiasma – non ci sono limiti a ciò che si può realizzare, perché questa libreria é scelta come framework per le simulazioni da almeno 3 su 10 tra le Top Game Companies che sfornano videogames per Wii e PS3.

r003
lettercam
Kill ‘em all! Posso creare forme e lanciarle nella direzione del lookAt point della camera partendo dalla posizione della stessa. Delle vere e proprie cannonate!

Nello sketch in cui ho tentato di usare per la prima volta Bullet, riprodotto nel video in alto, ad ogni key press la lettera o il numero corrispondente vengono creati e per effetto della gravità piombano sul piano sottostante; le forme sono dei veri e propri corpi rigidi che si fermano sui loro punti di contatto senza attraversarsi. La versione con cui si può ‘giocare’ sotto forma di Applet corredata di sorgente, è come al solito disponbile su OpenProcessing. Col mouse e tasto sx si ruota, col dx si fa zoom, e con la tastiera si creano i Characters.

Il poter simulare la matericità delle cose, ottenere reazioni in seguito ad azioni (come avviene nel mondo che ci circonda) suscita in me la stessa ‘frenesia creativa’ che potrebbe avere un pittore messo di fronte alla più grande tela bianca che potesse desiderare.

 

Tentacles

tent01
tent02
tent03

Investigando ulteriormente nella modellazione di coni e clindri al fine di poter generare alberi realistici, ho preso (come é naturale se si usa Processing) tutta un’altra strada; per realizzare ciò che avevo in mente avevo due problemi da risolvere: (1) orientare un oggetto nella direzione di un punto in continuo movimento e/o generato randomicamente e (2) scrivere una funzione di branching per i rami. Il punto 1 mi sembrava ragionevolmente semplice da risolvere, ma ben presto mi sono reso conto che non lo era affatto. Il punto 2, senza aver risolto il punto 1 era inutile affrontarlo. Grazie all’aiuto di Dave Bollinger però ho potuto fare il reverse-engineering del codice che descrive le coordinate sferiche ed in particolare, dato un punto iniziale ed uno finale, trattarli come fossero il centro ed un punto sulla superficie di una sfera e quindi calcolare raggio e rotazione sugli assi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Let particle b coords be the desired base center, and particle a coords be the desired top center.
Particle a;
Particle b;
//If that's where the center of the base stays, then the center of the top needs to end up at:
PVector c = new PVector(a.position().x()-b.position().x(),a.position().y()-b.position().y(),a.position().z()-b.position().z());
float h = dist(0,0,0,c.x,c.y,c.z);
//then define the radius
float r = sqrt(pow(c.x,2)+pow(c.y,2)+pow(c.z,2));
float theta = atan2(c.y,c.x);
float phi = acos(c.z/r); //thank you Dave!
pushMatrix();
//now translate to b position
translate(b.position().x(),b.position().y(),b.position().z());
//and rotate the new tentacle segment
rotateZ(theta);
rotateY(phi);
rotateX(-HALF_PI);
//Segment to rotate
popMatrix();

Queste poche righe, in Processing permettono di ruotare un qualsiasi oggetto nella direzione definita da un altro sistema di coordinate; se volete usarlo per i vostri esperimenti, troverete la Applet corredata di classi nel link sotto al video, o anche qui; col mouse e tasto sx premuto potete ruotare la bestia, e avvicinarvi ed allontanarvi col tasto dx.

Tentacles.
Il mostro é nato perchè una volta trovato il modo di orientare i nuovi coni verso la direzione voluta, ed avendo definito ognuno dei due punti di ancoraggio del cono (centro della circonferenza inferiore e centro della circonferenza superiore) con altrettante particelle unite da una spring (una molla), ecco che variando le distanze variava la lunghezza del cono ed anche (per via del ‘molleggio’ e qualche altro parametro) la rotazione. E’ stato un attimo creare tentacoli. Le particelle e le springs sono realizzate con la libreria per Processing traer.physics la quale permette anche – dato un sistema di particelle – di definire una gravità sui 3 assi ed un attrito. Applicando attrito, una gravità negativa sull’asse y, una differente massa per ogni particella del tentacolo (crescente verso la parte più lontana dalla base) ed una gravità che varia continuamente tra -1 ed 1 sull’asse x, ecco che i tentacoli hanno iniziato a muoversi sinuosamente e l’effetto finale é davvero naturale. Ho aggiunto una texture ‘urticante’ et voilà: Tentacles. Una bestia velenosissima – in genere le creature marine con colori sgargianti sono sempre velenose.

magTentacle http://www.openprocessing.org/visuals/?visualID=7207 – GC Mingati