Skip to content

Commit

Permalink
atreduce: check entrance and exit angles in bends (#604)
Browse files Browse the repository at this point in the history
  • Loading branch information
lfarv authored Jun 3, 2023
1 parent 597a719 commit b040a20
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion atmat/lattice/atreduce.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,17 @@
bends=atgetcells(newring,'BendingAngle');
keep=true(size(newring));
ba=zeros(size(newring));
inangle=zeros(size(newring));
outangle=zeros(size(newring));
invrad=zeros(size(newring));
ll=atgetfieldvalues(newring,'Length');
ba(bends)=atgetfieldvalues(newring(bends),'BendingAngle');
inangle(bends)=atgetfieldvalues(newring(bends),'EntranceAngle');
outangle(bends)=atgetfieldvalues(newring(bends),'ExitAngle');
invrad(bends)=ba(bends)./ll(bends);
islikenext=cellfun(@isequal,[bring(2:end);{NaN}],bring) & abs(invrad([2:end 1])-invrad)<5*eps(invrad);
islikenext=cellfun(@isequal,[bring(2:end);{NaN}],bring) ...
& abs(invrad([2:end 1])-invrad)<5*eps(invrad) ...
& abs(inangle([2:end 1])+outangle)<1.e-6;
islikeprev=circshift(islikenext,1);
arrayfun(@group,find(islikenext & ~islikeprev),find(~islikenext & islikeprev));
newring=newring(keep);
Expand Down

0 comments on commit b040a20

Please sign in to comment.