Skip to content

Commit ab99474

Browse files
author
Ivan Morozov
committed
28_01_2021
1 parent 0049809 commit ab99474

File tree

3 files changed

+10321
-1567
lines changed

3 files changed

+10321
-1567
lines changed

EXAMPLES

+4-2
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,7 @@ EXAMPLE-30 -- (FORTRAN) FODO ring (double extended)
3232
EXAMPLE-31 -- (FORTRAN) FODO ring (smooth quadrupole gradient)
3333
EXAMPLE-32 -- (FORTRAN) FODO ring (smooth sextupole gradient and fringe effects)
3434
EXAMPLE-33 -- (FORTRAN) Integrator signature patches
35-
36-
21_01_2021
35+
EXAMPLE-34 -- (FORTRAN) FODO ring (quadrupole fringe effects)
36+
EXAMPLE-35 -- (FORTRAN) Inverse tracking
37+
38+
28_01_2021

SRC_PROPAGANDA.WL

+22
Original file line numberDiff line numberDiff line change
@@ -2702,6 +2702,7 @@ I$FORTRAN$ELEMENT[ (* -- FORTRAN CODE FOR ELEMENT *)
27022702
LOCAL,
27032703
"\n",
27042704
StringTemplate[" DO I=1,NUMBER_OF_STEPS(`1`),1\n"][INDEX],
2705+
Part[LPROLOG, LCOUNT],
27052706
" ",
27062707
FACTOR,
27072708
"\n",
@@ -2737,6 +2738,7 @@ I$FORTRAN$ELEMENT[ (* -- FORTRAN CODE FOR ELEMENT *)
27372738
" THIS=NEXT\n",
27382739
" END IF\n",
27392740
" END DO\n",
2741+
Part[LEPILOG, LCOUNT],
27402742
" END DO\n"
27412743
]
27422744
]
@@ -4671,6 +4673,7 @@ I$TRACK[ (* -- TRACKING (INTERNAL & EXTERNAL APERTURE)
46714673
ClearAll[I$LINE] ;
46724674
I$LINE::usage = "
46734675
I$LINE[LENGTH,RADIUS,DISTANCE] -- generate <LENGTH> (integer) lines with maximal radius <RADIUS> (real) with distance between points <DISTANCE> (real)
4676+
I$LINE[LENGTH,RX,RY,LIMIT] -- generate <LENGTH> (integer) lines with <LIMIT> (integer) points on each line and maximal horizontal radius <RX> (real) and verticle radius <RY> (real)
46744677
" ;
46754678
I$LINE[ (* -- INITIAL LINES GENERATION *)
46764679
LENGTH_, (* -- NUMBER OF LINES (INTEGER) *)
@@ -4685,6 +4688,25 @@ I$LINE[ (* -- INITIAL LINES GENERATION *)
46854688
First[Transpose[SortBy[Transpose[List[POINT,ANGLE]],Last]]]
46864689
]
46874690
] ;
4691+
I$LINE[ (* -- INITIAL LINES GENERATION *)
4692+
LENGTH_, (* -- NUMBER OF LINES (INTEGER) *)
4693+
RX_, (* -- H-RADIUS (REAL) *)
4694+
RY_, (* -- V-RADIUS (REAL) *)
4695+
LIMIT_ (* -- DISTANCE BETWEEN POINTS ON A LINE (REAL) *)
4696+
] := Block[
4697+
{CUT},
4698+
CUT[{X_,Y_}] := Block[
4699+
{ANGLE, LIST, INDEX},
4700+
ANGLE = Subdivide[0, Pi, LENGTH-1] ;
4701+
LIST = ParametricPlot[{X*Cos[S], Y*Sin[S]}, {S, 0, Pi}, Mesh -> {ANGLE}, MeshStyle -> Red, PlotStyle -> Black] ;
4702+
LIST = Cases[LIST,GraphicsComplex[DATA__] :> DATA, Infinity] ;
4703+
INDEX = LIST[[-1, -1, 1, -1, 1]] ;
4704+
LIST = LIST[[1, INDEX]] ;
4705+
LIST = Join[LIST, {{X, 0.0}}] // Chop // N ;
4706+
Reverse[SortBy[LIST, First]]
4707+
] ;
4708+
Table[CUT[{RATIO*RX,RATIO*RY}],{RATIO,N[Subdivide[0,1,LIMIT-1]]}] // Transpose
4709+
] ;
46884710
(* ################################################################################################################################################################ *)
46894711
(* GENERATE FULL INITIAL CONDITION *)
46904712
(* ################################################################################################################################################################ *)

0 commit comments

Comments
 (0)