summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Vazquez <christian.vazquez@epfl.ch>2011-05-04 14:05:32 +0000
committerChristian Vazquez <christian.vazquez@epfl.ch>2011-05-04 14:05:32 +0000
commit9d5df425374e2e07aed264b85ff3aa37dcfd2304 (patch)
treed918b9def4dbabc9d8c1e2282e1e2c95f227fcaa
parenteb270379f82ae0969892706ddb48d2d780e26460 (diff)
downloadvhc-9d5df425374e2e07aed264b85ff3aa37dcfd2304.tar.gz
vhc-9d5df425374e2e07aed264b85ff3aa37dcfd2304.tar.bz2
vhc-9d5df425374e2e07aed264b85ff3aa37dcfd2304.zip
1)mis à jour le fichier acceltest
2)modifié la methode applyforce dans particle.h pas l'ajout d'un asin 3)déplacé le fichier exerciceP10 dans le dossier 'Test'
-rw-r--r--exercice/Makefile42
-rw-r--r--src/main/Particle.cc2
-rw-r--r--src/test/AccelTest.cc63
-rw-r--r--src/test/exerciceP10Test.cc (renamed from exercice/exerciceP10.cc)22
4 files changed, 71 insertions, 58 deletions
diff --git a/exercice/Makefile b/exercice/Makefile
deleted file mode 100644
index 14f4487..0000000
--- a/exercice/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-#########################################################################
-# Makefile recursif #
-#=======================================================================#
-# Les variables suivantes sont definis dans un makefile plus haut. #
-# BASEDIR repertoire de base du projet #
-# SRCDIR repertoire contenant le code source #
-# BINDIR repertoire ou sont places toutes objets compiles #
-#=======================================================================#
-# ==> indique des champs modifiables aisement #
-#=======================================================================#
-# Comme tous les tests dependent du projet principal, les references au #
-# dossier `main' sont autorisees. #
-#########################################################################
-
-# Nom du repertoire contenant ce makefile
-LOCALDIR = exercice
-
-# Tout les fichiers commencant par 'exerciceP' sont consideres comme
-# etant un exercice contenant une fonction main. Ces fichiers seront compiles
-# a un executable.
-EXERCICES = $(shell find exerciceP*)
-
-# ==> Si un objet X necessite une compilation non-standard (i.e. pas de regle du style X: X.cc X.h), rajouter cet objet
-# en fin de BINS ne suffit pas. Il faut de plus creer une nouvelle regle.
-LOCALBINS = $(patsubst %.cc,%,$(EXERCICES))
-BINS=$(addprefix $(BINDIR)/$(LOCALDIR)/,$(LOCALBINS))
-
-# Inclure les headers de main (source principale)
-CXXFLAGS += -I $(SRCDIR)/main/
-
-all: checkdirs $(BINS)
-
-# Verifie l'existance du repertoire de sortie
-checkdirs: $(BINDIR)/$(LOCALDIR)
-
-# Cree le repertoire de sortie
-$(BINDIR)/$(LOCALDIR):
- @mkdir -p $@
-
-# Regle implicite pour les fichiers sans extension (i.e. pour les executables)
-$(BINDIR)/$(LOCALDIR)/%: %.cc
- $(CXX) $(CXXFLAGS) $< -static -L$(BINDIR)/main -lvhc -o $@
diff --git a/src/main/Particle.cc b/src/main/Particle.cc
index 230f049..5784625 100644
--- a/src/main/Particle.cc
+++ b/src/main/Particle.cc
@@ -44,7 +44,7 @@ void Particle::applyForce(const Vector3D& f) {force += f;}
void Particle::applyMagneticForce(const Vector3D& b, double dt) {
if (dt != 0 && b != Vector3D::Null) {
Vector3D f = charge * velocity.cross(b);
- applyForce(f.rotate(velocity.cross(f), (dt * f.norm()) / (2 * gamma * mass * velocity.norm())));
+ applyForce(f.rotate(velocity.cross(f), asin((dt * f.norm()) / (2 * gamma * mass * velocity.norm()))));
}
}
diff --git a/src/test/AccelTest.cc b/src/test/AccelTest.cc
index e0e7368..0f76eb9 100644
--- a/src/test/AccelTest.cc
+++ b/src/test/AccelTest.cc
@@ -8,6 +8,7 @@
#include "Accelerator.h"
#include "Dipole.h"
+#include "FODO.h"
#include <iostream>
#include <string>
#include <vector>
@@ -15,9 +16,14 @@
using namespace std;
using namespace vhc;
-/** lance le test*/
-//TODO erreur sur l'affichage de p1 ===> "NAN" <=========
-int main() {
+
+//TODO erreur sur l'affichage des particules en général ===> "NAN" <=========
+
+/** Test d'affichage.*/
+void printTest() {
+
+ cout<<"This is the print test running."<<endl;
+
Accelerator a;
Dipole* d = new Dipole(Vector3D(1,0,0), Vector3D(0,-1,0), 0.1, 1, Vector3D(0,0,7), NULL);
@@ -34,6 +40,8 @@ int main() {
Accelerator empty;
+
+ //TODO la maille FODO n'est pas comptée comme un seul élément qui en contient d'autres, mais comme un seul.
cout << "Inspecting first accelerator..." << endl
<< a << endl
<< "Inspecting second accelerator..." << endl
@@ -43,6 +51,55 @@ int main() {
a.clear();
b.clear();
+}
+
+/** Construit un accélérateur standard sans particule et renvoie un pointeur dessus.*/
+Accelerator* standardAccelerator() {
+ FODO e1 = FODO(Vector3D(3, 2, 0), Vector3D(3, -2, 0), 0.2, 1.0, 5.0);
+ Dipole e2 = Dipole(e1.getExitPosition(), Vector3D(2, -3, 0), 0.2, 1);
+ FODO e3 = FODO(e2.getExitPosition(), Vector3D(-2, -3, 0), 0.2, 1, 5.0);
+ Dipole e4 = Dipole(e3.getExitPosition(), Vector3D(-3, -2, 0), 0.2, 1);
+ FODO e5 = FODO(e4.getExitPosition(), Vector3D(-3, 2, 0), 0.2, 1.0, 5.0);
+ Dipole e6 = Dipole(e5.getExitPosition(), Vector3D(-2, 3, 0), 0.2, 1);
+ FODO e7 = FODO(e6.getExitPosition(), Vector3D(2, 3, 0), 0.2, 1.0, 5.0);
+ Dipole e8 = Dipole(e7.getExitPosition(), e1.getEntryPosition(), 0.2, 1);
+ Accelerator* acc = new Accelerator();
+ acc->add(e1);
+ acc->add(e2);
+ acc->add(e3);
+ acc->add(e4);
+ acc->add(e5);
+ acc->add(e6);
+ acc->add(e7);
+ acc->add(e8);
+
+ acc->close();
+
+ return acc;
+}
+
+/** Test de simulateur.*/
+void simulatorTest() {
+
+ cout<<"This is the simulator test running."<<endl;
+
+ Accelerator* a = standardAccelerator();
+
+ Particle p1 (a->getElements().front()->getEntryPosition(), 9.11E-31, constants::E);
+
+ a->step(1.);
+
+ a->clear();
+
+ delete a;
+}
+
+/** Lance les tests.*/
+int main() {
+
+ simulatorTest();
+
+ printTest();
return 0;
}
diff --git a/exercice/exerciceP10.cc b/src/test/exerciceP10Test.cc
index cc18ec3..d16982f 100644
--- a/exercice/exerciceP10.cc
+++ b/src/test/exerciceP10Test.cc
@@ -16,7 +16,6 @@
using namespace std;
using namespace vhc;
-//TODO erreur sur l'affichage de p1 ===> "NAN" <========
/** Affiche la réponse de l'exercice P.10 de l'étape 5 (semaine 6) du projet.*/
int main() {
@@ -49,18 +48,18 @@ int main() {
1.2);
Particle* p1 = new Particle(
- Vector3D( 1.00984,-0.191837,0 ),
- 0.938272,
- 1.60217653e-19,
- 2,
- Vector3D(-210200,-2.64754e+08,0));
+ Vector3D( 1.00984,-0.191837,0 ),//position
+ constants::PROTON_MASS,//mass
+ constants::E,//charge
+ 2*constants::GeV,//energy
+ Vector3D(-1,-1,0));//direction
Particle* p2 = new Particle(
Vector3D(0.99016,-0.191837,0),
- 0.938272,
- 1.60217653e-19,
- 2,
- Vector3D(210200,-2.64754e+08,0));
+ constants::PROTON_MASS,//mass
+ constants::E,//charge
+ 2*constants::GeV,//energy
+ Vector3D(1,-1,0));//direction
a.add(*d);
a.add(*s);
@@ -69,9 +68,8 @@ int main() {
a.add(*p1);
a.add(*p2);
- //TODO a.close();
-
cout << a << endl;
+
a.clear();
return 0;