Section efficace de diffusion

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Section efficace de diffusion

Messagepar cjorssen » Mardi 02 Mars 2010, 22:51

Bonjour,

Je cherche à faire le schéma classique lié à l'expérience de diffusion de Rutherford et faisant apparaître la section efficace différentielle de diffusion qu'on peut voir ici

http://fr.wikipedia.org/wiki/Diffusion_Rutherford

(en tout moche, c'est justement ce que je cherche à corriger !). En gros (je résume pour ceux qui n'auraient pas fait de physique depuis un bout de temps), une particule alpha envoyée sur un atome d'or est déviée et l'angle de déviation dépend du paramètre d'impact. La trajectoire de la particule alpha est une hyperbole, dont l'un des foyers est l'atome d'or. Le schéma montre la situation réelle où au lieu d'avoir une particule avec un paramètre d'impact b défini on a en fait un grand nombre de particules formant un faisceau cylindrique de rayon B (et donc tous les paramètres d'impact b accessibles en 0 et B). La situation admet pour axe de symétrie l'axe du faisceau cylindrique.

Bon, après ce blabla qui n'a pas grand chose à voir avec asymptote, j'en viens à mes questions :
- est-il faisable de tracer une portion de sphère pour faire apparaître l'angle solide $\mathrm{d} \Omega$ ? Si oui, comment ?
- comment fait-on pour tracer des courbes en polaire dans l'espace (j'ai bien essayé le module geometry, mais ça ne fonctionne qu'en 2D visiblement). Peut-on dire à asymptote de la tracer dans un plan donné, puis faire "tourner" le plan ?

Pour un schéma en 2D, voilà ce que j'ai

Image


Évidemment, si en plus de répondre à ces questions vous avez un début d'embryon de code pour me mettre sur la voie, ce serait super.
En vous remerciant d'avance.

--
Christophe
cjorssen
Déca-utilisateur
 
Messages: 49
Inscription: Jeudi 05 Novembre 2009, 15:08
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Section efficace de diffusion

Messagepar OG » Mardi 02 Mars 2010, 23:27

bonsoir

je dois éteindre. Je dirai oui (mais d'ici que je le fasse oleanet aura posté une version texgraph).
Pour la portion, c'est une surface paramétrée, voir surface (comme c'est périodique en un des paramètres dans ton cas, il y a une option à mettre) pour la courbe paramétrée, no pb, voir le lien :

http://asymptote.sourceforge.net/doc/graph3.html#graph3

une fois le chemin créé, tu peux le faire tourner, translater, etc..

bonne nuit
O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Section efficace de diffusion

Messagepar GMaths » Mardi 02 Mars 2010, 23:49

sujet intéressant sur lequel je me serais jeté immédiatement... si je n'avais un boulot colossal.

cjorssen a écrit:Peut-on dire à asymptote de la tracer dans un plan donné, puis faire "tourner" le plan ?

Une source d'inspiration : lien mort
J'ai défini un path3 reliant des points du plan d'équation x=0... puis après on demande de générer la surface de révolution par rotation de la courbe génératrice autour de l'axe (Oz).
Dernière édition par GMaths le Jeudi 26 Août 2010, 08:21, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Section efficace de diffusion

Messagepar cjorssen » Mercredi 03 Mars 2010, 19:49

Bonsoir,

Merci à tous les deux pour vos pistes. J'ai bien avancé... Il ne me reste plus qu'à faire la portion de disque comprise entre b et b + db (je ne sais pas faire) et faire la portion de sphère pour "matérialiser" l'angle solide (je ne sais pas faire non plus). Toutes les idées sont les bienvenues. Tout commentaire d'optimisation du code l'est aussi :-)

Merci d'avance

Code: Tout sélectionner
import three;
import graph3;
import solids;
size(8cm,0);

currentprojection=perspective(4,4,4);

// Axes
real Xmax = 6, Xmin = -.6*Xmax, Ymax = Xmax, Ymin = -Ymax;

triple XAxisMin = (Xmin,0,0), XAxisMax = (Xmax,0,0);
triple YAxisMin = (0,Ymin,0), YAxisMax = (0,Ymax,0);

pen style_axe = linewidth(1.2pt);
draw(Label("$x$",1),XAxisMin -- XAxisMax, style_axe, Arrow3(HookHead3));
draw(Label("$y$",1),YAxisMin -- YAxisMax, style_axe, Arrow3(HookHead3));

// Définition de l'hyperbole
real a = .75, b = 1.5;

// Constante d'interaction négative : cas répulsif
real SigneConstante = -1;

// Paramètre et excentricité
real p = b^2/a, e = sqrt(1+(b^2/a^2));

// Distance minimale au centre répulsif
real DistanceMin = a*(1+e);

// Ne pas dessiner toute l'hyperbole
real Rmax = Xmax;

// Angle de l'axe focal par rapport à l'axe polaire
real ThetaZero = -aCos(-1/e);

// Résidu de constante d'intégration (formules de Binet)
real SigneCosinus = -1;

// Détermine les limites de theta pour ne pas déborder Rmax
real LimiteSup = aCos(((p/Rmax)-SigneConstante)/e)+ThetaZero + 180;
real LimiteInf = -aCos(((p/Rmax)-SigneConstante)/e)+ThetaZero + 180;

// Définition de la courbe en coordonnées polaires
real r(real theta)
  {return p/(SigneConstante + SigneCosinus*e*Cos(theta - ThetaZero));}
real x(real theta) {return r(theta)*Cos(theta);}
real y(real theta) {return r(theta)*Sin(theta);}
real z(real theta) {return 0;}

// Tracé de la courbe
path3 hyperbole = graph(x,y,z,LimiteInf,LimiteSup,operator ..);
draw(hyperbole);

pen style_pinceau = red + opacity(.5);
revolution pinceau = revolution(c=(0,0,0), hyperbole, axis=X, 0, 360);
draw(surface(pinceau),style_pinceau);

// db
// Définition de l'hyperbole avec un paramètre d'impact b + db
real db = .5, b = b + db;

// Paramètre et excentricité
real p = b^2/a, e = sqrt(1+(b^2/a^2));

// Distance minimale au centre répulsif
real DistanceMin = a*(1+e);

// Angle de l'axe focal par rapport à l'axe polaire
real ThetaZero = -aCos(-1/e);

// Détermine les limites de theta pour ne pas déborder Rmax
real LimiteSup = aCos(((p/Rmax)-SigneConstante)/e)+ThetaZero + 180;
real LimiteInf = -aCos(((p/Rmax)-SigneConstante)/e)+ThetaZero + 180;

// Définition de la courbe en coordonnées polaires
real r(real theta)
  {return p/(SigneConstante + SigneCosinus*e*Cos(theta - ThetaZero));}
real x(real theta) {return r(theta)*Cos(theta);}
real y(real theta) {return r(theta)*Sin(theta);}
real z(real theta) {return 0;}

// Tracé de la courbe
path3 hyperbole_db = graph(x,y,z,LimiteInf,LimiteSup,operator ..);
draw(hyperbole_db);

pen style_pinceau_db = blue + opacity(.5);
revolution pinceau_db = revolution(c=(0,0,0), hyperbole_db, axis=X, 0, 360);
draw(surface(pinceau_db),style_pinceau_db);


--
Christophe
cjorssen
Déca-utilisateur
 
Messages: 49
Inscription: Jeudi 05 Novembre 2009, 15:08
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Section efficace de diffusion

Messagepar OG » Jeudi 04 Mars 2010, 08:58

Bonjour

Je n'oublie pas mais disons que même si je n'ai que 100 copies à corriger en tout cette année, je suis occupé. Ce soir ou demain je propose. Tu as globalement deux solutions. Une avec solids et revolution (tu dois juste définir l'arc de cercle de ta section et le faire tourner), une autre avec les surfaces paramétrées.

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Section efficace de diffusion

Messagepar OG » Vendredi 05 Mars 2010, 10:37

Code: Tout sélectionner
path[] pdisque=scale(2)*unitcircle^^reverse(unitcircle);
draw(shift(Xmax,0,0)*rotate(90,Y)*surface(pdisque));

path3 parc=path3(arc((0,0),7,110,120),XYplane);
revolution psphere=revolution(c=(0,0,0),parc,axis= X,0,360);
draw(surface(psphere));


Pour la portion de disque je crée une portion 2D d'abord. Le reverse est là pour que le remplissage corresponde bien à la couronne. Ensuite il est converti en surface 3D puis tourné et enfin translaté.
Pour la portion de sphère, comme j'ai du mal avec la 3D (arc 3D existe), je crée un arc 2D que je mets dans le plan XY et après tu connais. Par contre je ne sais pas placer tes objets, avec les b, b+db, etc.
J'espère que cela t'aidera

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Baidu [Spider] et 1 invité