Minor changes
This commit is contained in:
parent
65c92bcfc1
commit
3c0eec6591
@ -47,9 +47,15 @@ model {
|
|||||||
scatter(NativeLibrarySpec)
|
scatter(NativeLibrarySpec)
|
||||||
}
|
}
|
||||||
toolChains {
|
toolChains {
|
||||||
|
visualCpp(VisualCpp) {
|
||||||
|
// Specify the installDir if Visual Studio cannot be located
|
||||||
|
// installDir "C:/Apps/Microsoft Visual Studio 10.0"
|
||||||
|
installDir "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0"
|
||||||
|
}
|
||||||
gcc(Gcc) {
|
gcc(Gcc) {
|
||||||
// Uncomment to use a GCC install that is not in the PATH
|
// Uncomment to use a GCC install that is not in the PATH
|
||||||
// path "/usr/bin/gcc"
|
// path "/usr/bin/gcc"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,13 +131,16 @@ public class SimulationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void printStatistics(Counter counter) {
|
private void printStatistics(Counter counter) {
|
||||||
|
output.println();
|
||||||
|
output.println("***RESULT***");
|
||||||
output.printf("The total number of events is %d.%n%n", counter.count);
|
output.printf("The total number of events is %d.%n%n", counter.count);
|
||||||
|
|
||||||
output.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI);
|
output.printf("The spectrometer acceptance angle is %g.%n", simulator.thetaPinch * 180 / Math.PI);
|
||||||
output.printf("The transport reflection angle is %g.%n", simulator.thetaTransport * 180 / Math.PI);
|
output.printf("The transport reflection angle is %g.%n", simulator.thetaTransport * 180 / Math.PI);
|
||||||
output.printf("The starting energy is %g.%n", initialE);
|
output.printf("The starting energy is %g.%n", initialE);
|
||||||
output.printf("The lower energy boundary is %g.%n%n", simulator.eLow);
|
output.printf("The lower energy boundary is %g.%n", simulator.eLow);
|
||||||
|
output.printf("The source density is %g.%n", simulator.gasDensity);
|
||||||
|
|
||||||
|
output.println();
|
||||||
output.printf("The total number of ACCEPTED events is %d.%n", counter.accepted);
|
output.printf("The total number of ACCEPTED events is %d.%n", counter.accepted);
|
||||||
output.printf("The total number of PASS events is %d.%n", counter.pass);
|
output.printf("The total number of PASS events is %d.%n", counter.pass);
|
||||||
output.printf("The total number of REJECTED events is %d.%n", counter.rejected);
|
output.printf("The total number of REJECTED events is %d.%n", counter.rejected);
|
||||||
|
@ -29,7 +29,7 @@ public class Simulator {
|
|||||||
double eLow = 14000d;//default value
|
double eLow = 14000d;//default value
|
||||||
double thetaTransport = 24.107064 / 180 * Math.PI;// default value
|
double thetaTransport = 24.107064 / 180 * Math.PI;// default value
|
||||||
double thetaPinch = 19.481097 / 180 * Math.PI;// default value
|
double thetaPinch = 19.481097 / 180 * Math.PI;// default value
|
||||||
double gasDensity = 5e18;// m^-3
|
double gasDensity = 5e20;// m^-3
|
||||||
double bSource = 0.6;
|
double bSource = 0.6;
|
||||||
private UnivariateFunction magneticField;
|
private UnivariateFunction magneticField;
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ public class Simulator {
|
|||||||
// if magnetic field not defined, consider it to be uniform and equal bSource
|
// if magnetic field not defined, consider it to be uniform and equal bSource
|
||||||
if (magneticField == null) {
|
if (magneticField == null) {
|
||||||
double deltaZ = deltaL * cos(pos.theta); // direction already included in cos(theta)
|
double deltaZ = deltaL * cos(pos.theta); // direction already included in cos(theta)
|
||||||
double z0 = pos.z;
|
// double z0 = pos.z;
|
||||||
pos.addZ(deltaZ);
|
pos.addZ(deltaZ);
|
||||||
pos.l += deltaL;
|
pos.l += deltaL;
|
||||||
|
|
||||||
@ -375,12 +375,11 @@ public class Simulator {
|
|||||||
double addZ(double dZ) {
|
double addZ(double dZ) {
|
||||||
this.z += dZ;
|
this.z += dZ;
|
||||||
while (abs(this.z) > SOURCE_LENGTH / 2d && !isFinished()) {
|
while (abs(this.z) > SOURCE_LENGTH / 2d && !isFinished()) {
|
||||||
checkEndState();
|
|
||||||
if (!isFinished()) {
|
|
||||||
flip();
|
|
||||||
}
|
|
||||||
// reflecting from back wall
|
// reflecting from back wall
|
||||||
if (z < 0) {
|
if (z < 0) {
|
||||||
|
if (theta >= PI - thetaTransport) {
|
||||||
|
setEndState(EndState.REJECTED);
|
||||||
|
}
|
||||||
if (isFinished()) {
|
if (isFinished()) {
|
||||||
z = -SOURCE_LENGTH / 2d;
|
z = -SOURCE_LENGTH / 2d;
|
||||||
} else {
|
} else {
|
||||||
@ -388,6 +387,14 @@ public class Simulator {
|
|||||||
z = -SOURCE_LENGTH - z;
|
z = -SOURCE_LENGTH - z;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (theta < thetaPinch) {
|
||||||
|
if (colNum == 0) {
|
||||||
|
//counting pass electrons
|
||||||
|
setEndState(EndState.PASS);
|
||||||
|
} else {
|
||||||
|
setEndState(EndState.ACCEPTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (isFinished()) {
|
if (isFinished()) {
|
||||||
z = SOURCE_LENGTH / 2d;
|
z = SOURCE_LENGTH / 2d;
|
||||||
} else {
|
} else {
|
||||||
@ -395,36 +402,42 @@ public class Simulator {
|
|||||||
z = SOURCE_LENGTH - z;
|
z = SOURCE_LENGTH - z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isFinished()) {
|
||||||
|
flip();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return z;
|
return z;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Check if this position is an end state and apply it if necessary. Does not check z position.
|
// * Check if this position is an end state and apply it if necessary. Does not check z position.
|
||||||
*
|
// *
|
||||||
* @return
|
// * @return
|
||||||
*/
|
// */
|
||||||
private void checkEndState() {
|
// private void checkEndState() {
|
||||||
//accepted by spectrometer
|
// //accepted by spectrometer
|
||||||
if (theta < thetaPinch) {
|
// if (theta < thetaPinch) {
|
||||||
if (colNum == 0) {
|
// if (colNum == 0) {
|
||||||
//counting pass electrons
|
// //counting pass electrons
|
||||||
setEndState(EndState.PASS);
|
// setEndState(EndState.PASS);
|
||||||
} else {
|
// } else {
|
||||||
setEndState(EndState.ACCEPTED);
|
// setEndState(EndState.ACCEPTED);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
//through the rear magnetic pinch
|
// //through the rear magnetic pinch
|
||||||
if (theta >= PI - thetaTransport) {
|
// if (theta >= PI - thetaTransport) {
|
||||||
setEndState(EndState.REJECTED);
|
// setEndState(EndState.REJECTED);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse electron direction
|
* Reverse electron direction
|
||||||
*/
|
*/
|
||||||
void flip() {
|
void flip() {
|
||||||
|
if(theta<0||theta>PI){
|
||||||
|
throw new Error();
|
||||||
|
}
|
||||||
theta = PI - theta;
|
theta = PI - theta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,10 +15,10 @@ public class Trapping {
|
|||||||
Instant startTime = Instant.now();
|
Instant startTime = Instant.now();
|
||||||
System.out.printf("Starting at %s%n%n", startTime.toString());
|
System.out.printf("Starting at %s%n%n", startTime.toString());
|
||||||
new SimulationManager()
|
new SimulationManager()
|
||||||
.withParameters(0.6, 3.7, 4.84, 14000d, 4000)
|
.withParameters(0.6, 3.7, 4.84, 18000d, 4000)
|
||||||
.withOutputFile("D:\\Work\\Numass\\trapping\\trap 14, pinch 100A.out")
|
.withOutputFile("D:\\Work\\Numass\\trapping\\test1.out")
|
||||||
// .withFieldMap(z, b)
|
// .withFieldMap(z, b)
|
||||||
// .withDensity(5e20)
|
.withDensity(1e19)
|
||||||
.simulateAll((int) 1e6);
|
.simulateAll((int) 1e6);
|
||||||
Instant finishTime = Instant.now();
|
Instant finishTime = Instant.now();
|
||||||
System.out.printf("%nFinished at %s%n", finishTime.toString());
|
System.out.printf("%nFinished at %s%n", finishTime.toString());
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//#include "scatter.h"
|
//#include "scatter.h"
|
||||||
|
#define _USE_MATH_DEFINES // for C
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user