summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Vazquez <christian.vazquez@epfl.ch>2011-05-03 15:37:07 +0000
committerChristian Vazquez <christian.vazquez@epfl.ch>2011-05-03 15:37:07 +0000
commiteb270379f82ae0969892706ddb48d2d780e26460 (patch)
treed986dd24ecccc29bd92947e251de8d64d070eb14
parent3d88d4979cc26e34acbeab6c6f2275295fcb0d9b (diff)
downloadvhc-eb270379f82ae0969892706ddb48d2d780e26460.tar.gz
vhc-eb270379f82ae0969892706ddb48d2d780e26460.tar.bz2
vhc-eb270379f82ae0969892706ddb48d2d780e26460.zip
crée un nouveau dossier pour les exercices à rendre.
Il faudrait recréer un makefile dans ce dossier exercice.
-rw-r--r--exercice/Makefile42
-rw-r--r--exercice/exerciceP10.cc78
2 files changed, 120 insertions, 0 deletions
diff --git a/exercice/Makefile b/exercice/Makefile
new file mode 100644
index 0000000..14f4487
--- /dev/null
+++ b/exercice/Makefile
@@ -0,0 +1,42 @@
+#########################################################################
+# 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/exercice/exerciceP10.cc b/exercice/exerciceP10.cc
new file mode 100644
index 0000000..cc18ec3
--- /dev/null
+++ b/exercice/exerciceP10.cc
@@ -0,0 +1,78 @@
+/*
+ * exerciceP10.cc
+ *
+ * Created on: 20 avr. 2011
+ * Author: christian
+ */
+#include "Accelerator.h"
+#include "Dipole.h"
+#include "StraightElement.h"
+#include "Quadrupole.h"
+#include "FODO.h"
+#include <iostream>
+#include <string>
+#include <vector>
+
+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() {
+
+ Accelerator a;
+
+ Dipole* d = new Dipole(
+ Vector3D(1,0,0),
+ Vector3D(0,-1,0),
+ 0.1,
+ 1,
+ Vector3D(0,0,7),
+ NULL);
+
+ StraightElement* s = new StraightElement(
+ Vector3D(0,-1,0),
+ Vector3D(-1,-1,0),
+ 0.1);
+
+ Quadrupole* q = new Quadrupole(
+ Vector3D(-1,-1,0),
+ Vector3D(-1,-2,0),
+ 0.1,
+ 1.2);
+
+ FODO* f = new FODO(
+ Vector3D(-1,-2,0),
+ Vector3D(-1,0,0),
+ 0.1,
+ 1,
+ 1.2);
+
+ Particle* p1 = new Particle(
+ Vector3D( 1.00984,-0.191837,0 ),
+ 0.938272,
+ 1.60217653e-19,
+ 2,
+ Vector3D(-210200,-2.64754e+08,0));
+
+ Particle* p2 = new Particle(
+ Vector3D(0.99016,-0.191837,0),
+ 0.938272,
+ 1.60217653e-19,
+ 2,
+ Vector3D(210200,-2.64754e+08,0));
+
+ a.add(*d);
+ a.add(*s);
+ a.add(*q);
+ a.add(*f);
+ a.add(*p1);
+ a.add(*p2);
+
+ //TODO a.close();
+
+ cout << a << endl;
+ a.clear();
+
+ return 0;
+}