Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Commit cc4125d0 authored by snuverink_j's avatar snuverink_j
Browse files

Merge branch '600-compile-error-in-unit-tests' into 'master'

Resolve "Compile error in unit tests"

Closes #600

See merge request OPAL/src!434
parents e39db001 34f7e2bb
No related branches found
No related tags found
No related merge requests found
...@@ -21,17 +21,17 @@ vector< vector<double> > partialsDerivB(const Vector_t &R,const Vector_t /*B*/, ...@@ -21,17 +21,17 @@ vector< vector<double> > partialsDerivB(const Vector_t &R,const Vector_t /*B*/,
double t = 0 ; double t = 0 ;
Vector_t P, E; Vector_t P, E;
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
// B at the previous and next grid points R_prev, R_next // B at the previous and next grid points R_prev, R_next
Vector_t R_prev = R, R_next = R; Vector_t R_prev = R, R_next = R;
R_prev[i] -= stepSize; R_prev[i] -= stepSize;
R_next[i] += stepSize; R_next[i] += stepSize;
Vector_t B_prev, B_next; Vector_t B_prev, B_next;
dummyField->apply(R_prev, P, t, E, B_prev); dummyField->apply(R_prev, P, t, E, B_prev);
dummyField->apply(R_next, P, t, E, B_next); dummyField->apply(R_next, P, t, E, B_next);
for(int j = 0; j < 3; j++) for(int j = 0; j < 3; j++)
allPartials[i][j] = (B_next[j] - B_prev[j]) / (2 * stepSize); allPartials[i][j] = (B_next[j] - B_prev[j]) / (2 * stepSize);
} }
return allPartials; return allPartials;
} }
...@@ -42,21 +42,21 @@ vector< vector<double> > partialsDerivB_5(const Vector_t &R,const Vector_t /*B*/ ...@@ -42,21 +42,21 @@ vector< vector<double> > partialsDerivB_5(const Vector_t &R,const Vector_t /*B*/
double t = 0 ; double t = 0 ;
Vector_t P, E; Vector_t P, E;
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
// B at the previous and next grid points R_prev, R_next // B at the previous and next grid points R_prev, R_next
Vector_t R_pprev = R, R_prev = R, R_next = R, R_nnext = R; Vector_t R_pprev = R, R_prev = R, R_next = R, R_nnext = R;
R_pprev(i) -= 2 * stepSize; R_pprev(i) -= 2 * stepSize;
R_nnext(i) += 2 * stepSize; R_nnext(i) += 2 * stepSize;
R_prev(i) -= stepSize; R_prev(i) -= stepSize;
R_next(i) += stepSize; R_next(i) += stepSize;
Vector_t B_prev, B_next, B_pprev, B_nnext; Vector_t B_prev, B_next, B_pprev, B_nnext;
dummyField->apply(R_prev, P, t, E, B_prev); dummyField->apply(R_prev, P, t, E, B_prev);
dummyField->apply(R_next, P, t, E, B_next); dummyField->apply(R_next, P, t, E, B_next);
dummyField->apply(R_pprev, P, t, E, B_pprev); dummyField->apply(R_pprev, P, t, E, B_pprev);
dummyField->apply(R_nnext, P, t, E, B_nnext); dummyField->apply(R_nnext, P, t, E, B_nnext);
for(int j = 0; j < 3; j++) for(int j = 0; j < 3; j++)
allPartials[i][j] = (B_pprev[j] - 8 * B_prev[j] + 8 * B_next[j] - B_nnext[j]) / (12 * stepSize); allPartials[i][j] = (B_pprev[j] - 8 * B_prev[j] + 8 * B_next[j] - B_nnext[j]) / (12 * stepSize);
} }
return allPartials; return allPartials;
} }
...@@ -88,7 +88,7 @@ TEST(Maxwell, Zeros) ...@@ -88,7 +88,7 @@ TEST(Maxwell, Zeros)
SBendRep* myMagnet = new SBendRep("myMagnet"); SBendRep* myMagnet = new SBendRep("myMagnet");
myMagnet->BendBase::setFieldMapFN("1DPROFILE1-DEFAULT"); myMagnet->BendBase::setFieldMapFN("1DPROFILE1-DEFAULT");
myMagnet->BendBase::setLength(0.2); myMagnet->BendBase::setElementLength(0.2);
myMagnet->BendBase::setDesignEnergy(10.0e6); myMagnet->BendBase::setDesignEnergy(10.0e6);
myMagnet->BendBase::setBendAngle(0.523599);//30 degrees myMagnet->BendBase::setBendAngle(0.523599);//30 degrees
myMagnet->BendBase::setFullGap(0.04); myMagnet->BendBase::setFullGap(0.04);
...@@ -114,38 +114,38 @@ TEST(Maxwell, Zeros) ...@@ -114,38 +114,38 @@ TEST(Maxwell, Zeros)
//ofstream fout("some_data"); //ofstream fout("some_data");
for(z = 0.0; z <0.0015; z+= 0.0015) for(z = 0.0; z <0.0015; z+= 0.0015)
for(x = 0.; x<0.04; x += 0.04) for(x = 0.; x<0.04; x += 0.04)
for(double phi = -Physics::pi / 7.1 ; phi < 2/3. * Physics::pi; phi += Physics::pi/2000.) for(double phi = -Physics::pi / 7.1 ; phi < 2/3. * Physics::pi; phi += Physics::pi/2000.)
{ {
// step = phi/(Physics::pi/20); // step = phi/(Physics::pi/20);
//std::cout<<"Step #"<<step<<endl; //std::cout<<"Step #"<<step<<endl;
counter ++; counter ++;
Vector_t B(0.0); Vector_t B(0.0);
R(0) = (myMagnet->Bend2D::designRadius_m + x) * cos(phi); R(0) = (myMagnet->Bend2D::designRadius_m + x) * cos(phi);
R(1) = z; R(1) = z;
R(2) = (myMagnet->Bend2D::designRadius_m + x) * sin(phi); R(2) = (myMagnet->Bend2D::designRadius_m + x) * sin(phi);
double t = 0; double t = 0;
myMagnet->apply(R, P, t , E, B); myMagnet->apply(R, P, t , E, B);
//B /= myMagnet->fieldAmplitude_m; //normalisation //B /= myMagnet->fieldAmplitude_m; //normalisation
//fout<<phi<<' '<<B[1] / myMagnet->fieldAmplitude_m<<endl; //fout<<phi<<' '<<B[1] / myMagnet->fieldAmplitude_m<<endl;
//myMagnet.Bend::calculateMapField(R, B); //myMagnet.Bend::calculateMapField(R, B);
//std::cout<< "Position: " <<"phi="<<phi<<" x="<<x<<" z="<<z<<endl; //std::cout<< "Position: " <<"phi="<<phi<<" x="<<x<<" z="<<z<<endl;
//std::cout<< "Field:" <<' '<<B[0]<<' ' <<B[1]<<' '<<B[2]<<endl; //std::cout<< "Field:" <<' '<<B[0]<<' ' <<B[1]<<' '<<B[2]<<endl;
double div = 0; double div = 0;
div = calcDivB(R, B, stepSize, myMagnet); div = calcDivB(R, B, stepSize, myMagnet);
//fout<<phi<<' '<<z<<' '<<div<<' '<<endl; //fout<<phi<<' '<<z<<' '<<div<<' '<<endl;
vector<double> curl; vector<double> curl;
EXPECT_NEAR(div, 0.0, 0.15); EXPECT_NEAR(div, 0.0, 0.15);
curl = calcCurlB(R, B, stepSize, myMagnet); curl = calcCurlB(R, B, stepSize, myMagnet);
for(int k=0; k<3; k++) curl[k] /= myMagnet->fieldAmplitude_m; for(int k=0; k<3; k++) curl[k] /= myMagnet->fieldAmplitude_m;
//fout<<phi<<' '<<z<<' '<<sqrt(pow(curl[0], 2) + pow(curl[1], 2) + pow(curl[2], 2))<<endl; //fout<<phi<<' '<<z<<' '<<sqrt(pow(curl[0], 2) + pow(curl[1], 2) + pow(curl[2], 2))<<endl;
//fout<<phi<<' '<<z<<' '<<curl[0]<<' '<<curl[1]<<' '<<curl[2]<<endl; //fout<<phi<<' '<<z<<' '<<curl[0]<<' '<<curl[1]<<' '<<curl[2]<<endl;
//std::cout<< "DIV B: "<<div<<endl; //std::cout<< "DIV B: "<<div<<endl;
//std::cout<< "CURL B: "<<curl[0]<<' '<<curl[1]<<' '<<curl[2]<<endl; //std::cout<< "CURL B: "<<curl[0]<<' '<<curl[1]<<' '<<curl[2]<<endl;
EXPECT_NEAR(curl[0], 0, 0.15); EXPECT_NEAR(curl[0], 0, 0.15);
EXPECT_NEAR(curl[1], 0, 0.15); EXPECT_NEAR(curl[1], 0, 0.15);
EXPECT_NEAR(curl[2], 0, 0.15); EXPECT_NEAR(curl[2], 0, 0.15);
} }
//fout.close(); //fout.close();
cout<<"bending radius: "<<myMagnet->Bend2D::designRadius_m<<endl; cout<<"bending radius: "<<myMagnet->Bend2D::designRadius_m<<endl;
cout<<"field amplitude: "<<myMagnet->fieldAmplitude_m<<endl; cout<<"field amplitude: "<<myMagnet->fieldAmplitude_m<<endl;
...@@ -195,14 +195,14 @@ TEST(Quad, Quadrupole) ...@@ -195,14 +195,14 @@ TEST(Quad, Quadrupole)
for(double x = -2; x <= 2; x += 0.01) for(double x = -2; x <= 2; x += 0.01)
for(double y = -10.0; y <= 10.; y += 1.) for(double y = -10.0; y <= 10.; y += 1.)
{ {
Vector_t B(0.0); Vector_t B(0.0);
R(2) = z; R(2) = z;
R(1) = y; R(1) = y;
R(0) = x; R(0) = x;
quad->apply(R, P, 0., E, B); quad->apply(R, P, 0., E, B);
gout<<z<<' '<<x<<' '<<B[0]<<' '<<B[1]<<' '<<B[2]<<endl; gout<<z<<' '<<x<<' '<<B[0]<<' '<<B[1]<<' '<<B[2]<<endl;
//gout<<x<<' '<<y<<' '<<sqrt(pow(B[0], 2.) + pow(B[1], 2.) + pow(B[2], 2.))<<endl; //gout<<x<<' '<<y<<' '<<sqrt(pow(B[0], 2.) + pow(B[1], 2.) + pow(B[2], 2.))<<endl;
} }
gout.close(); gout.close();
cout<<"length: "<<quad->getElementLength()<<endl; cout<<"length: "<<quad->getElementLength()<<endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment