Dear all,
I am trying to use the function km2dds to compute the kick map from an undulator for the element UKICKMAP.
If I want to build the kick map by myself it is clear that I have to generate a file which has (x,y,kickX,kickY) columns, because kickX and kickY will be two scalars for each couple (x,y), and I will finish with a grid.
I would like to use the km2sdds, if possible. In this case it is not clear to me how to pass the inputs. I have a Radia model of an undulator, so I can have the 3D field map. At the moment it is in the format (the .log file is):
per = 36.
Br = 1.35
fa = 10
rass1 = 0
gap/slit = 4
k8 = 1
ka = kb = 0.5
kae2 = 0.63*ka= 0.41
Nkeeperlong= 18
ypos = {4, 2, 1, 0.5, 0.3, 0.1, 0, 0.1, 0.3, 0.5, 1, 2, 4}
zpos = {2, 1, 0.5, 0.3, 0.1, 0, 0.1, 0.3, 0.5, 1, 2}
File structure:
Coordinate system: Bx longitudinal, By horizontal, Bz vertical
pos Bx[y1,z1] By[y1,z1] Bz[y1,z1] Bx[y2,z1], By[y2,z1] ...
I can provide (s,x,y,Bx,By), but Bx and By in this case will be two arrays, so should I do something like:
s1 x1 y1 Bx(x1,y1,s1) By(x1,y1,s1)
s2 x1 y1 Bx(x1,y1,s2) By(x1,y1,s2)
...
sN x1 y1 Bx(x1,y1,sN) By(x1,y1,sN)
s1 x2 y1 Bx(x2,y1,s1) By(x2,y1,s1)
s2 x2 y1 Bx(x2,y1,s2) By(x2,y1,s2)
...
sN x2 y1 Bx(x2,y1,sN) By(x2,y1,sN)
?
Is there a way to say for each (x,y) take a couple of arrays, which will be Bx and By for example? Is there any example which I did not find to use km2dds?
I tried to give x,y,z,Bx,By as:
SDDS1ASTRA2ELEGANT2003
&column name=x, units=m, type=double, &end
&column name=y, units=m, type=double, &end
&column name=z, units=m, type=double, &end
&column name=By, units=T, type=double, &end
&column name=Bx, units=T, type=double, &end
&data mode=ascii, &end
! page number 1
1.00000e+00 2.00000e+00 3.00000e+00 4.00000e+00 5.00000e+00
6.00000e+00 7.00000e+00 8.00000e+00 9.00000e+00 5.00000e+00
2.00000e+00 3.00000e+00 4.00000e+00 8.00000e+00 7.00000e+00
...
but I get an error message when I try to run km2sdds:
can't read "value": no such variable
while executing
"set [lindex $itemList $index] $value"
("while" body line 9)
invoked from within
"while {![eof $fdi]} {
gets $fdi data
if [string match "\#*" $data] continue
if [string compare START $data]==0 {
set found 1
..."
(file "/opt/psi/MPI/elegant/2021.4.02_slurm/openmpi/4.0.51_slurm/gcc/10.3.0/oag/apps/bin/linuxx86_64/km2sdds" line 31)
Sorry for the maybe trivial question, but I did not find how to pass the data.
Best regards,
Simona.
km2sdds
Moderators: cyao, michael_borland
Re: km2sdds
Dear Simona,
Make sure that you are using the Radia and the the Mathematica notebook “RadiaToTrack” which is originally developed by the ESRF. The output .dat file of the programe easily convert to SDDS and you can use it in Elegant.
See this page:
https://www.esrf.fr/Accelerators/Groups ... a/Examples
Make sure that you are using the Radia and the the Mathematica notebook “RadiaToTrack” which is originally developed by the ESRF. The output .dat file of the programe easily convert to SDDS and you can use it in Elegant.
See this page:
https://www.esrf.fr/Accelerators/Groups ... a/Examples
Sara

 Posts: 42
 Joined: 06 Jul 2011, 03:14
Re: km2sdds
Thanks a lot for your reply!
Kind regards,
Simona.
Kind regards,
Simona.