! Absolute feedback ! Zero average displacement and angle of each bunch on each turn ! subroutine feedback(beam, bunch_moments) use bmad use beam_mod use multibunch_mod implicit none type (beam_struct) beam type(moment_struct), allocatable :: bunch_moments(:) integer i,j,k,n do j = 1, size(beam%bunch) ! loop over bunches do i = 1, size(beam%bunch(j)%particle) ! loop over particles in bunch j if(beam%bunch(j)%particle(i)%state == alive$)then beam%bunch(j)%particle(i)%vec(1:6)=beam%bunch(j)%particle(i)%vec(1:6) - bunch_moments(j)%ave(1:6) endif end do end do return end