Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix NxN ID table in atidtable_dat.m, update second order kick variables in C, include first order kick in pyat #683

Closed
wants to merge 40 commits into from
Closed
Changes from 7 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
54ebb57
fix N by N table data catch
orblancog Oct 26, 2023
765056a
adds help info
oscarxblanco Oct 27, 2023
d55ad96
header_mat is not used. Removed
oscarxblanco Oct 27, 2023
e844ce8
trying to fix matlab Build matlab test error
oscarxblanco Oct 27, 2023
5b3943f
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Oct 27, 2023
4d25942
importdat replaces mhdrload_bis in text file readout
oscarxblanco Nov 2, 2023
0bfca60
refactor: use physics constant library + modification of the style
lnadolski Nov 4, 2023
0eca69f
check data separator
oscarxblanco Nov 7, 2023
5423d3e
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 9, 2023
e4f178c
implements first order kick. Deprecates xkick ykick names
oscarxblanco Nov 13, 2023
effaf74
renames kick to kick2
oscarxblanco Nov 13, 2023
b5d6f56
renames kick to kick2
oscarxblanco Nov 13, 2023
7ac7564
adapt to mat or text fileformats
oscarxblanco Nov 13, 2023
f57eb27
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 13, 2023
f422b8a
pep8
oscarxblanco Nov 13, 2023
ee7e321
include type conversion for kick2
oscarxblanco Nov 13, 2023
1727d93
keep backwards compat of ID kicks
oscarxblanco Nov 15, 2023
489998f
checking number of blocks
oscarxblanco Nov 15, 2023
4488920
fix Brho
oscarxblanco Nov 15, 2023
f281fb3
fix Brho
oscarxblanco Nov 15, 2023
a3e9b03
renames factor as factor2
oscarxblanco Nov 15, 2023
78235cf
separates matlab backwards commpatibility
oscarxblanco Nov 16, 2023
a03077b
updates file example
oscarxblanco Nov 16, 2023
3d7d08f
updates file example
oscarxblanco Nov 16, 2023
77cf81f
renames kick maps
oscarxblanco Nov 16, 2023
784a7e5
limits characters in one line
oscarxblanco Nov 16, 2023
c82d6c8
removes print
oscarxblanco Nov 16, 2023
d66731f
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 20, 2023
d13e8b3
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 20, 2023
b561c0d
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 20, 2023
b98a732
t.kick as t.kick2
oscarxblanco Nov 22, 2023
d66c312
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Nov 27, 2023
33b49d6
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Dec 7, 2023
d4dcb0e
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Dec 15, 2023
560e7ba
pep8 and comments
oscarxblanco Dec 21, 2023
8157d2b
removes sign from first order kick
oscarxblanco Dec 21, 2023
1764813
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Dec 21, 2023
c265d1f
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Jan 2, 2024
9a70c7f
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Jan 23, 2024
e98c81a
Merge branch 'master' into fix_nbyn_idtable_dat
oscarxblanco Feb 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 76 additions & 64 deletions atmat/pubtools/create_elems/atidtable_dat.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
function Elem = atidtable_dat(FamName, Nslice, filename, Energy, method)
% atidtable(FamName, Nslice, filename, Energy, method)
% atidtable_dat Read - RADIA kick maps of 1st and 2nd order in energy
%
% FamName family name
% Nslice number of slices (1 means the Insertion Device is represented by a
Expand All @@ -9,11 +9,14 @@
% method name of the function to use for tracking. Use 'IdTablePass'
% or 'WigTablePass'
%
% returns atinsertiondevicekickmap
%
%
% This function creates an AT element read from an integrated kickmap file.
%
% The tracking table method is described in
% P. Elleaume, "A new approach to the electron beam dynamics in undulators
% and wigglers", EPAC92.
%
% returns atinsertiondevicekickmap

%---------------------------------------------------------------------------
% Modification Log:
Expand All @@ -39,67 +42,76 @@
%Elem.T2 = zeros(1,6);
%Elem.PassMethod = method;

lightspeed = PhysConstant.speed_of_light_in_vacuum.value * 1e-9;

factor=1/((Energy/0.299792458)^2);
factor1=-1/((Energy/0.299792458));
% energy scaling for 1st order kick-map
factor1 = -1 / ((Energy / lightspeed));
% energy scaling for 2st order kick-map
factor2 = (factor1) ^ 2;

% Read the file
D=importdata(filename);
if isfield(D,'Kick1x')
x=(D.x)';
y=(D.y)';
xkick1=factor1*D.Kick1x;
ykick1=factor1*D.Kick1y;
xkick=factor*D.Kick2x;
ykick=factor*D.Kick2y;
L=D.Len;
nn=size(xkick1);
Ny=nn(1);
Nx=nn(2);
% ElemData.MultiKick= 1;
% ElemData.nkicks= nn(3);
D = importdata(filename);

if isfield(D, 'Kick1x')
x = (D.x)';
y = (D.y)';
xkick1 = factor1 * D.Kick1x;
ykick1 = factor1 * D.Kick1y;
xkick2 = factor2 * D.Kick2x;
ykick2 = factor2 * D.Kick2y;
L = D.Len;
nn = size(xkick1);
Ny = nn(1);
Nx = nn(2);
% ElemData.MultiKick= 1;
% ElemData.nkicks= nn(3);
else
[header_mat, data_mat]=mhdrload_bis(filename);
L=data_mat(:,:,1);
Nx=data_mat(:,:,2);
Ny=data_mat(:,:,3);
A = importdata(filename,' ',10);
x=A.data;
x=x(1,1:Nx);
A = importdata(filename,' ',11);
txkick=A.data;
y=txkick(1:Ny,1);
txkick=txkick(:,2:end);
A=importdata(filename,' ',11+Ny+3);
tykick=A.data;
tykick=tykick(:,2:end);
A=importdata(filename,' ',11+2*Ny+2*3);
A = importdata(filename, ' ', 3);
L = A.data;
A = importdata(filename, ' ', 5);
Nx = A.data;
A = importdata(filename, ' ', 7);
Ny = A.data;
A = importdata(filename, ' ', 10);
x = A.data;
x = x(1, 1:Nx);
A = importdata(filename, ' ', 11);
txkick = A.data;
y = txkick(1:Ny, 1);
txkick = txkick(:, 2:end);
A = importdata(filename, ' ', 11 + Ny + 3);
tykick = A.data;
tykick = tykick(:, 2:end);
A = importdata(filename, ' ', 11 + 2 * Ny + 2 * 3);

if isstruct(A)
txkick1=A.data;
txkick1=txkick1(:,2:end);
txkick1 = A.data;
txkick1 = txkick1(:, 2:end);
else
txkick1=0*txkick;
txkick1 = 0 * txkick;
end
A=importdata(filename,' ',11+3*Ny+3*3);

A = importdata(filename, ' ', 11 + 3 * Ny + 3 * 3);

if isstruct(A)
tykick1=A.data;
tykick1=tykick1(:,2:end);
tykick1 = A.data;
tykick1 = tykick1(:, 2:end);
else
tykick1=0*tykick;
tykick1 = 0 * tykick;
end

xkick=factor*txkick;
ykick=factor*tykick;
xkick2 = factor2 * txkick;
ykick2 = factor2 * tykick;

xkick1=factor1*txkick1;
ykick1=factor1*tykick1;
xkick1 = factor1 * txkick1;
ykick1 = factor1 * tykick1;

% Sort arrays in ascending order (needed for "IdTablePass.c")
[y indy]=sort(y);
[x indx]=sort(x);
x=x';
xkick=xkick(indy,indx);
ykick=ykick(indy,indx);
[y, indy] = sort(y);
[x, indx] = sort(x);
x = x';
xkick2 = xkick2(indy, indx);
ykick2 = ykick2(indy, indx);

end

Expand All @@ -116,17 +128,17 @@
%Elem.PolynomA= [0 0 0 0];
%Elem.PolynomB= [0 0 0 0];

Elem = atinsertiondevicekickmap( FamName, ...
method, ...
filename, ...
Energy, ...
Nslice, ...
L, ...
xkick, ...
ykick, ...
xkick1, ...
ykick1, ...
x, ...
y ...
);

Elem = atinsertiondevicekickmap( ...
FamName, ...
method, ...
filename, ...
Energy, ...
Nslice, ...
L, ...
xkick2, ...
ykick2, ...
xkick1, ...
ykick1, ...
x, ...
y ...
);