Skip to content

Commit

Permalink
Merge 54f7d6b into e352342
Browse files Browse the repository at this point in the history
  • Loading branch information
tpersson committed May 6, 2020
2 parents e352342 + 54f7d6b commit 957648d
Show file tree
Hide file tree
Showing 26 changed files with 429 additions and 408 deletions.
2 changes: 1 addition & 1 deletion doc/latexuguide/conventions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ \subsection{Chromatic Functions}
Notice also that in \madx, PT substitutes DELTAP as longitudinal
variable. Dispersive and chromatic functions are hence derivatives with
respect to PT.
Since PT=BETA*DELTAP, where BETA is the relativistic Lorentz
Since PT=BETA/DELTAP, where BETA is the relativistic Lorentz
factor, those functions given by \madx must be multiplied by BETA a
number of times equal to the order of the derivative to find the
functions given in the literature.
Expand Down
5 changes: 3 additions & 2 deletions src/mad_twiss.c
Original file line number Diff line number Diff line change
Expand Up @@ -923,8 +923,9 @@ pro_twiss(void)
pos = name_list_pos("q2", summ_table->columns);
q2_val = summ_table->d_cols[pos][i];

dq1 = (q1_val_p - q1_val) / DQ_DELTAP;
dq2 = (q2_val_p - q2_val) / DQ_DELTAP;
double beta0 = get_value("probe","beta");
dq1 = (q1_val_p - q1_val) / (beta0*DQ_DELTAP);
dq2 = (q2_val_p - q2_val) / (beta0*DQ_DELTAP);

pos = name_list_pos("dq1", summ_table->columns);
summ_table->d_cols[pos][i] = dq1;
Expand Down
43 changes: 30 additions & 13 deletions src/twiss.f90
Original file line number Diff line number Diff line change
Expand Up @@ -4308,10 +4308,10 @@ SUBROUTINE tmmult_cf(fsec, ftrk, orbit, fmap, re, te)
!Done with all the setting up...

if (elrad.gt.zero) then
lambda(0) = (normal(0) + (0, 1)*skew(0))/(one + deltap)/elrad/Factorial(k)
lambda(0) = (normal(0) + (0, 1)*skew(0))/(one + deltap)/elrad
do k = 1, nord
! The factor (one + deltap) below is taken from the original MAD-X routine.
lambda(k) = (f_errors(2*k) + (0, 1)*f_errors(2*k+1))/(one + deltap)/elrad/Factorial(k)
lambda(k) = (f_errors(2*k) + (0, 1)*f_errors(2*k+1))/elrad/Factorial(k)
enddo
else
lambda = zero
Expand Down Expand Up @@ -4464,7 +4464,7 @@ SUBROUTINE tmmult(fsec,ftrk,orbit,fmap,re,te)
integer :: n_ferr, nord, iord, j, nd, nn, ns
double precision :: f_errors(0:maxferr)
double precision :: normal(0:maxmul), skew(0:maxmul)
double precision :: bi, pt, rfac, bvk, elrad, tilt, angle, an
double precision :: bi, pt, rfac, bvk, elrad, tilt, angle, an, anr, ani
double precision :: x, y, dbr, dbi, dipr, dipi, dr, di, drt, dpx, dpy, dpxr, dpyr, dtmp

integer, external :: get_option, node_fd_errors
Expand Down Expand Up @@ -4495,8 +4495,10 @@ SUBROUTINE tmmult(fsec,ftrk,orbit,fmap,re,te)

!---- Angle (bvk applied later)
an = node_value('angle ')
if (an .ne. 0) f_errors(0) = f_errors(0) + normal(0) - an

if (an .ne. 0) then
anr = an
f_errors(0) = f_errors(0) + normal(0) - an
endif
!---- Dipole error.
dbr = f_errors(0) / (one + deltap)
dbi = f_errors(1) / (one + deltap)
Expand All @@ -4517,13 +4519,17 @@ SUBROUTINE tmmult(fsec,ftrk,orbit,fmap,re,te)
dtmp = sqrt(dbi**2 + dbr**2)
dbr = dtmp * cos(angle)
dbi = dtmp * sin(angle)
anr = an * cos(angle)
ani = an * sin(angle)
anr = bvk * anr
ani = bvk * ani
endif

dbr = bvk * dbr
dbi = bvk * dbi

dbr = bvk * dbr
dbi = bvk * dbi
dipr = bvk * dipr
dipi = bvk * dipi

!---- Other components and errors.
nord = 0
! that loop should start at one since nominal dipole strength already taken into account above
Expand Down Expand Up @@ -4588,10 +4594,14 @@ SUBROUTINE tmmult(fsec,ftrk,orbit,fmap,re,te)

!---- Add the missing focussing component of thin dipoles for co
if (elrad.gt.zero .and. get_option('thin_foc ').eq.1) then
orbit(2) = orbit(2) - dipr*dipr/elrad * x
orbit(4) = orbit(4) - dipi*dipi/elrad * y
if (an .ne. 0) then
orbit(2) = orbit(2) - anr*dipr/elrad * x !
orbit(4) = orbit(4) - ani*dipi/elrad * y
else
orbit(2) = orbit(2) - (one+deltap)*dipr*dipr/elrad * x !
orbit(4) = orbit(4) - (one+deltap)*dipi*dipi/elrad * y
endif
endif

!---- Radiation effects at exit.
if (radiate .and. elrad.ne.zero) then
orbit(2) = orbit(2) * f_damp_t;
Expand Down Expand Up @@ -4621,9 +4631,16 @@ SUBROUTINE tmmult(fsec,ftrk,orbit,fmap,re,te)
endif

!---- Add the missing focussing component of thin dipoles
!---- The (1+deltap) is from that the term is h*k0 (so one geometrical and one is bending strength)
if (elrad.gt.zero.and.get_option('thin_foc ').eq.1) then
re(2,1) = re(2,1) - dipr*dipr/elrad
re(4,3) = re(4,3) - dipi*dipi/elrad
if (an .ne. 0) then
re(2,1) = re(2,1) - anr*dipr/elrad
re(4,3) = re(4,3) - ani*dipi/elrad
else
re(2,1) = re(2,1) - (one+deltap)*dipr*dipr/elrad
re(4,3) = re(4,3) - (one+deltap)*dipi*dipi/elrad
endif

endif
re(2,6) = + dipr * bi
re(4,6) = - dipi * bi
Expand Down
8 changes: 4 additions & 4 deletions tests/test-c6t-6/test-c6t-6.ref
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
+ MAD-X 5.05.02 (64 bit, Linux) +
+ Support: mad@cern.ch, http://cern.ch/mad +
+ Release date: 2019.07.25 +
+ Execution date: 2019.09.27 13:36:38 +
+ Execution date: 2020.04.23 10:25:42 +
++++++++++++++++++++++++++++++++++++++++++++
SET, FORMAT="12d", "-18.5e", "25s";

Expand Down Expand Up @@ -97,18 +97,18 @@ enter Twiss module

open line - error with deltap: 0.000000E+00
initial orbit vector: 5.000000E-03 0.000000E+00 7.000000E-03 0.000000E+00 0.000000E+00 0.000000E+00
final orbit vector: 2.000000E-01 3.900000E-01 1.050000E-02 7.000000E-03 -4.303726E-02 0.000000E+00
final orbit vector: 1.995000E-01 3.890000E-01 1.050000E-02 7.000000E-03 -4.284251E-02 0.000000E+00

++++++ table: summ

length orbit5 alfa gammatr
1.00000e+00 -0.00000e+00 0.00000e+00 0.00000e+00

q1 dq1 betxmax dxmax
2.50000e-01 0.00000e+00 1.25000e+00 3.05000e-01
2.84802e-01 0.00000e+00 1.25000e+00 3.05500e-01

dxrms xcomax xcorms q2
1.99669e-01 2.00000e-01 1.30985e-01 1.10571e-01
1.99997e-01 1.99500e-01 1.30658e-01 1.10571e-01

dq2 betymax dymax dyrms
0.00000e+00 3.81250e+00 3.50000e-03 2.29129e-03
Expand Down
10 changes: 5 additions & 5 deletions tests/test-match-10/line_out.txt.ref
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
@ GAMMATR %le 0
@ Q1 %le 1.531423661
@ Q2 %le 1.060565274
@ DQ1 %le 1.187955434
@ DQ2 %le -0.545673954
@ DQ1 %le 1.936237007
@ DQ2 %le -0.8893886702
@ DXMAX %le 3.523221083
@ DYMAX %le 0
@ XCOMAX %le 0
Expand All @@ -41,9 +41,9 @@
@ SYNCH_4 %le 3.049096885
@ SYNCH_5 %le 10.03783676
@ TITLE %18s "TRANSLINE_2+4 type"
@ ORIGIN %16s "5.04.00 Linux 64"
@ DATE %08s "15/05/18"
@ TIME %08s "18.53.23"
@ ORIGIN %16s "5.05.02 Linux 64"
@ DATE %08s "23/04/20"
@ TIME %08s "10.26.51"
* NAME S BETX ALFX MUX DX DPX BETY ALFY MVAR1 MVAR2
$ %s %le %le %le %le %le %le %le %le %le %le
"TRANS$START" 0 6 0 0 0 0 3 0 0.003 0.003
Expand Down

0 comments on commit 957648d

Please sign in to comment.