diff options
author | Christian Vazquez <christian.vazquez@epfl.ch> | 2011-05-04 14:05:32 +0000 |
---|---|---|
committer | Christian Vazquez <christian.vazquez@epfl.ch> | 2011-05-04 14:05:32 +0000 |
commit | 9d5df425374e2e07aed264b85ff3aa37dcfd2304 (patch) | |
tree | d918b9def4dbabc9d8c1e2282e1e2c95f227fcaa | |
parent | eb270379f82ae0969892706ddb48d2d780e26460 (diff) | |
download | vhc-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/Makefile | 42 | ||||
-rw-r--r-- | src/main/Particle.cc | 2 | ||||
-rw-r--r-- | src/test/AccelTest.cc | 63 | ||||
-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; |