Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
OPAL
src
Commits
26921708
Commit
26921708
authored
Jul 12, 2017
by
frey_m
Browse files
ParallelCyclotronTracker: Removal of duplicated code
parent
99d8a45c
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
663 additions
and
885 deletions
+663
-885
src/Algorithms/ParallelCyclotronTracker.cpp
src/Algorithms/ParallelCyclotronTracker.cpp
+634
-862
src/Algorithms/ParallelCyclotronTracker.h
src/Algorithms/ParallelCyclotronTracker.h
+22
-7
src/Steppers/LF2.hpp
src/Steppers/LF2.hpp
+7
-14
src/Steppers/MTS.h
src/Steppers/MTS.h
+0
-0
src/Steppers/Steppers.h
src/Steppers/Steppers.h
+0
-2
No files found.
src/Algorithms/ParallelCyclotronTracker.cpp
View file @
26921708
This diff is collapsed.
Click to expand it.
src/Algorithms/ParallelCyclotronTracker.h
View file @
26921708
...
...
@@ -22,6 +22,7 @@
#include "Structure/DataSink.h"
#include "AbsBeamline/ElementBase.h"
#include <vector>
#include <tuple>
#include "Steppers/Steppers.h"
...
...
@@ -55,6 +56,8 @@ public:
BUNCH
=
2
};
typedef
std
::
vector
<
double
>
dvector_t
;
typedef
std
::
vector
<
int
>
ivector_t
;
typedef
std
::
pair
<
double
[
8
],
Component
*>
element_pair
;
typedef
std
::
pair
<
ElementBase
::
ElementType
,
element_pair
>
type_pair
;
typedef
std
::
list
<
type_pair
*>
beamline_list
;
...
...
@@ -260,11 +263,9 @@ private:
double
PathLength_m
;
void
Tracker_LF
();
void
Tracker_RK4
();
void
Tracker_MTS
();
void
MtsTracker
();
void
Tracker_
Generic
();
void
Generic
Tracker
();
bool
getFieldsAtPoint
(
const
double
&
t
,
const
size_t
&
Pindex
,
Vector_t
&
Efield
,
Vector_t
&
Bfield
);
/*
...
...
@@ -355,7 +356,7 @@ private:
bool
checkGapCross
(
Vector_t
Rold
,
Vector_t
Rnew
,
RFCavity
*
rfcavity
,
double
&
DistOld
);
bool
RFkick
(
RFCavity
*
rfcavity
,
const
double
t
,
const
double
dt
,
const
int
Pindex
);
bool
getTunes
(
std
::
vector
<
double
>
&
t
,
std
::
vector
<
double
>
&
r
,
std
::
vector
<
double
>
&
z
,
int
lastTurn
,
double
&
nur
,
double
&
nuz
);
bool
getTunes
(
d
vector
_t
&
t
,
d
vector
_t
&
r
,
d
vector
_t
&
z
,
int
lastTurn
,
double
&
nur
,
double
&
nuz
);
IpplTimings
::
TimerRef
IntegrationTimer_m
;
IpplTimings
::
TimerRef
DumpTimer_m
;
...
...
@@ -493,9 +494,18 @@ private:
stepper
::
INTEGRATOR
stepper_m
;
void
update_m
(
double
&
t
,
const
double
&
dt
,
const
bool
&
dumpEachTurn
);
std
::
tuple
<
double
,
double
,
double
>
initializeTracking_m
();
void
finalizeTracking_m
(
dvector_t
&
Ttime
,
dvector_t
&
Tdeltr
,
dvector_t
&
Tdeltz
,
ivector_t
&
TturnNumber
);
void
seoMode_m
(
double
&
t
,
const
double
dt
,
bool
&
dumpEachTurn
,
std
::
vector
<
double
>
&
Ttime
,
std
::
vector
<
double
>
&
Tdeltr
,
std
::
vector
<
double
>
&
Tdeltz
,
std
::
vector
<
int
>
&
TturnNumber
);
d
vector
_t
&
Ttime
,
d
vector
_t
&
Tdeltr
,
d
vector
_t
&
Tdeltz
,
i
vector
_t
&
TturnNumber
);
void
singleMode_m
(
double
&
t
,
const
double
dt
,
bool
&
dumpEachTurn
,
double
&
oldReferenceTheta
);
...
...
@@ -519,6 +529,11 @@ private:
void
computeSpaceChargeFields_m
();
bool
computeExternalFields_m
(
const
size_t
&
i
,
const
double
&
t
,
Vector_t
&
Efield
,
Vector_t
&
Bfield
);
void
injectBunch_m
(
bool
&
flagTransition
);
};
...
...
src/Steppers/LF2.hpp
View file @
26921708
#include "BorisPusher.h"
template
<
typename
FieldFunction
,
typename
...
Arguments
>
bool
LF2
<
FieldFunction
,
Arguments
...
>::
advance
(
PartBunch
*
bunch
,
const
size_t
&
i
,
...
...
@@ -66,21 +68,12 @@ bool LF2<FieldFunction, Arguments ...>::kick_m(PartBunch* bunch, const size_t& i
double
const
q
=
bunch
->
Q
[
0
]
/
Physics
::
q_e
;
// For now all particles have the same charge
double
const
M
=
bunch
->
M
[
0
]
*
1.0e9
;
// For now all particles have the same rest energy
double
const
h12Halfqc_M
=
0.5
*
h
*
q
*
Physics
::
c
/
M
;
double
const
h12Halfqcc_M
=
h12Halfqc_M
*
Physics
::
c
;
// Half step E
bunch
->
P
[
i
]
+=
h12Halfqc_M
*
externalE
;
// Full step B
double
const
gamma
=
sqrt
(
1.0
+
dot
(
bunch
->
P
[
i
],
bunch
->
P
[
i
]));
Vector_t
const
r
=
h12Halfqcc_M
*
externalB
/
gamma
;
Vector_t
const
w
=
bunch
->
P
[
i
]
+
cross
(
bunch
->
P
[
i
],
r
);
Vector_t
const
s
=
2.0
/
(
1.0
+
dot
(
r
,
r
))
*
r
;
bunch
->
P
[
i
]
+=
cross
(
w
,
s
);
// Half step E
bunch
->
P
[
i
]
+=
h12Halfqc_M
*
externalE
;
BorisPusher
pusher
;
pusher
.
kick
(
bunch
->
R
[
i
],
bunch
->
P
[
i
],
externalE
,
externalB
,
h
,
M
,
q
);
return
true
;
}
src/Steppers/MTS.h
deleted
100644 → 0
View file @
99d8a45c
src/Steppers/Steppers.h
View file @
26921708
...
...
@@ -3,8 +3,6 @@
#include "RK4.h"
#include "LF2.h"
#include "MTS.h"
namespace
stepper
{
...
...
frey_m
@frey_m
mentioned in issue
#1
·
Apr 02, 2019
mentioned in issue
#1
mentioned in issue #1
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment