1
Documentation of the Library FPP Documentation of the Library FPP 高高高高高高高高高高高高高 高高高高高高高高高高高高高 KEK KEK Etienne Forest and Yukiko Nogiwa Etienne Forest and Yukiko Nogiwa With the help of Frank Schmidt and Piotr Skowronski With the help of Frank Schmidt and Piotr Skowronski polym orphic_com plextaylor p o lym o rp h ic_ taylor com plex_taylor tp salie_ an alysis tp salie tpsa d efin itio n dabnew lielib _ b erz d a_ array s p recisio n _ co n stan ts file_ h an d ler m y_ow n_1D _TPSA g au ss_ d is

Documentation of the Library FPP 高エネルギー加速器研究機構 KEK Etienne Forest and Yukiko Nogiwa With the help of Frank Schmidt and Piotr Skowronski FPP creates a type

Embed Size (px)

Citation preview

Page 1: Documentation of the Library FPP 高エネルギー加速器研究機構 KEK Etienne Forest and Yukiko Nogiwa With the help of Frank Schmidt and Piotr Skowronski FPP creates a type

Documentation of the Library FPPDocumentation of the Library FPP高エネルギー加速器研究機構高エネルギー加速器研究機構

KEKKEKEtienne Forest and Yukiko NogiwaEtienne Forest and Yukiko Nogiwa

With the help of Frank Schmidt and Piotr SkowronskiWith the help of Frank Schmidt and Piotr Skowronski

po lymo rph ic_ comp lex taylo r

p o lymo rph ic_ taylo r

c om p le x_ ta y lo r

tp sa l ie_ an alys is

tp sa l ie

tp sa

d efin it io n

d abn ew

lie lib _ b erz

d a_ arrays

p rec is io n _ con s tan tsfi le_ h and ler

my_own_1D _TP SAgau ss_ d is

L B L V ersion of B erz orig in al p ackag e,p orted in F ortran 9 0 .

B erz's m aster arrays for the T aylor seriesare now d ynam ically a llocated

L B L V ersion of F orest orig inalana lysis tools, a lso p orted in F ortran 9 0 .

O verload ing of B erz's D ab n ewacting on typ e ta y lo r.

O verload ing of F orest's lib rary actingon variou s typ es: dam ap , no rm a lfo rm ,d ra g tfin n , in versed ra g tfinn , etc ...

C om p letes the overload ing of B erz'sD ab new and a lso creates a typ e ca lledcom p lex ta ylo r .

C reates tw o p olym orp hic typ es:rea l_ 8 an d dou b le_ com p lex .

FPP

S ch em a tic V iew o f F P P

M ap P ost P rocessor

T aylorM ap

A n a ly s is : N o rm a lFo rm

A b erra tio n se tc . . . M ap P ost P rocessor

P o ly m orp h ic In tegra tor(P T C for exa m p le)

T aylor M ap

A n a ly s is : N o rm a lFo rm

A b erra tio n se tc . . .

L attice(s )D es crip tion

M ap P ost P rocessor

P ro du c e M a ps a n y wa y y o uwa n t (C O SY -In fin i tym e th o ds fo r e x a m ple )

T aylor M ap

A n a ly s is : N o rm a lFo rm

A b erra tio n se tc . . .

L attice(s )D es crip tion

FPPFPP FPP

W a y s to u se F P P in A cce lera to r P h y sics

FPP creates a type Taylor to overload the LBL version of Berz’s “DA” package and the associated Lielib of Forest. Out of this Taylor type, we creates a polymorphic taylor type that can switch between double and Taylor at execution time.

mad.web.cern.ch/mad/PTC_proper

PROGRAM EXAMPLEUSE POLYMORPHIC_COMPLEXTAYLORIMPLICIT NONE INTEGER NO,NVTYPE(TAYLOR) F,DF

NO=4; NV= 2; ! NO: THE ORDER OF THE POLYNOMIAL !NV: THE NUMBER OF VARIABLESCALL INIT(NO,NV) ! INITIALIZES TAYLOR SERIES WITHOUT MAPS

CALL ALLOC(F,DF) ! MUST BE CONSTRUCTED AFTER INIT

F=(2.D0.MONO.'12') + (3.D0.MONO.'11') + 4.D0 ! CREATES 2.D0 X_1 X_ 2 ^2+3.D0 X_1X_2 +4.D0DF=F.D.2 ! DF/DX_2 CREATES 4.D0 X_1X_2 + 3.D0 X_1

CALL PRINT(F,6)CALL PRINT(DF,6)

CALL KILL(F,DF) ! MUST BE DESTROYEDEND PROGRAM EXAMPLE

PROGRAM EXAMPLEUSE POLYMORPHIC_COMPLEXTAYLORIMPLICIT NONE INTEGER NO,NVTYPE(TAYLOR) F,DF

NO=4; NV= 2; ! NO: THE ORDER OF THE POLYNOMIAL NV: THE NUMBER OF VARIABLESCALL INIT(NO,NV) ! INITIALIZES TAYLPROGRAM EXAMPLEUSE POLYMORPHIC_COMPLEXTAYLORIMPLICIT NONE INTEGER NO,NVREAL(DP) RTYPE(TAYLOR) F,G

INTEGER, ALLOCATABLE :: J(:),K(:)

NO=4; NV= 2; ! NO: THE ORDER OF THE POLYNOMIAL NV: THE NUMBER OF VARIABLES CALL INIT(NO,NV) ! INITIALIZES TAYLOR SERIES WITHOUT MAPS

CALL ALLOC(F,G) ! MUST BE CONSTRUCTED AFTER INIT

ALLOCATE(J(NV))ALLOCATE(K(NV)) J=0J(1)=1;J(2)=2;

K=0K(1)=3;K(2)=1;

F=(2.D0.MONO.J) + 5.D0 ! CREATES 2.D0 X_1 X_ 2 ^2 + 5.D0R=F.SUB.J ! PEEKS COEFFICIENT 2.D0

CALL PRINT( F,6)WRITE(6,*) R

F=(2.D0.MONO.J) + (4.D0.MONO.K) + 5.D0 ! CREATES 2.D0 X_1 X_ 2 ^2 + 4.D0 X_1 ^3 X_ 2 + 5.D0R=F.SUB.K ! PEEKS COEFFICIENT 4.D0

CALL PRINT( F,6)WRITE(6,*) R

F=(2.D0.MONO.'12' ) + (4.D0.MONO.'13' ) + ( 3.D0.MONO.'01') + 5.D0 ! CREATES 2.D0 X_1 X_ 2 ^2 + 4.D0 X_1 X_ 2 ^3 + 3.D0 X_ 2 + 5.D0R=F.SUB.'13' ! PEEKS COEFFICIENT 4.D0

CALL PRINT( F,6)WRITE(6,*) R

DEALLOCATE(J)CALL KILL(F,G) ! MUST BE DESTROYEDEND PROGRAM EXAMPLER SERIES WITHOUT MAPS

WRITE(MF,*) " "WRITE(MF,*) " ORIGINAL VECTOR FIELD - COMPUTED ONE LIE EXPONENT "CALL PRINT(RESIDUAL,MF,PREC)

DF=MAP

WRITE(MF,*) " "WRITE(MF,*) " DRAGT-FINN REPRESENTATION "WRITE(MF,*) " "CALL PRINT(DF,MF,PREC)

RESIDUAL=DFRESIDUAL=MAP-RESIDUAL

WRITE(MF,*) " "WRITE(MF,*) " ORIGINAL MAP - COMPUTED DRAGT-FINN "WRITE(MF,*) " "CALL PRINT(RESIDUAL,MF,PREC)

RDF=MAP

WRITE(MF,*) " "WRITE(MF,*) " REVERSE DRAGT-FINN REPRESENTATION "WRITE(MF,*) " "CALL PRINT(RDF,MF,PREC)

RESIDUAL=RDFRESIDUAL=MAP-RESIDUAL

WRITE(MF,*) " "WRITE(MF,*) " ORIGINAL MAP - COMPUTED REVERSE DRAGT-FINN "WRITE(MF,*) " "CALL PRINT(RESIDUAL,MF,PREC)

CALL KILL(ID, MAP, RESIDUAL)CALL KILL(F); CALL KILL(SINGLE);CALL KILL(DF);CALL KILL(RDF);CLOSE(MF);END PROGRAM MAPS

SUBROUTINE VECFIELD_QUAD(L,K,F)USE POLYMORPHIC_COMPLEXTAYLORIMPLICIT NONETYPE(VECFIELD) FREAL(DP) L,K

! DRIFT PARTF%V(1)=L*(1.D0.MONO.'01') /SQRT(1.D0-(1.D0.MONO.'02')-(1.D0.MONO.'0002'))F%V(3)=L*(1.D0.MONO.'0001')/SQRT(1.D0-(1.D0.MONO.'02')-(1.D0.MONO.'0002'))

! QUADRUPOLE PART

F%V(2)=-L*K*(1.D0.MONO.'1')F%V(4)= L*K*(1.D0.MONO.'001')

END SUBROUTINE VECFIELD_QUAD

SUBROUTINE PBFIELD_QUAD(L,K,H)USE POLYMORPHIC_COMPLEXTAYLORIMPLICIT NONETYPE(PBFIELD) HREAL(DP) L,K

! DRIFT PARTH=L*SQRT(1.D0-(1.D0.MONO.'02')-(1.D0.MONO.'0002'))

! QUADRUPOLE PART

H%H=H%H-(L*K/2.D0)*((1.D0.MONO.'2')-(1.D0.MONO.'002'))

END SUBROUTINE PBFIELD_QUAD

PROGRAM MAPSUSE POLYMORPHIC_COMPLEXTAYLORTYPE(DAMAP) ID, MAP, RESIDUALREAL(DP) L1,KICK1,L2,KICK2,LD REAL(DP) :: PREC = 1.D-10TYPE(VECFIELD) FTYPE(ONELIEEXPONENT) SINGLETYPE(DRAGTFINN) DFTYPE(REVERSEDRAGTFINN) RDFINTEGER I

INTEGER MF,MEMF=20OPEN(UNIT=MF,FILE='RESULTS.TXT')CALL INIT(NO1=4,ND1=2,NP1=0,NDPT1 =0) ! -INIT FOR MAPS IN ND1 DEGREES OF FREEDOM

CALL ALLOC(ID, MAP, RESIDUAL) ;CALL ALLOC(F); CALL ALLOC(SINGLE);CALL ALLOC(DF);CALL ALLOC(RDF);

KICK2=-0.9D0; L2=0.1D0

CALL VECFIELD_QUAD(L2,KICK2,F)

F%V(1)=0.01D0+F%V(1)F%V(2)=0.02D0+F%V(2)

ID=1MAP=TEXP(F,ID)

CALL PRINT(MAP,MF)

SINGLE=MAP

DO I=1,C_%ND2 RESIDUAL%V(I)=SINGLE%VECTOR%V(I)-F%V(I)ENDDO

Illustrating vector fields by creating a quadrupole Taylor map using

“COSY-INFINITY-style” methods

PROGRAM TWISS_PTCUSE MADX_KEYWORDSIMPLICIT NONEREAL(DP) X_ORBIT(6)INTEGER I,NOTYPE(FIBRE), POINTER :: PTYPE(LAYOUT), POINTER :: MY_RINGREAL(DP) BETA_X,BETA_ZTYPE(REAL_8) X_POL(6)TYPE(DAMAP) IDTYPE(NORMALFORM) NFORMTYPE(MAD_UNIVERSE) M_U

CALL SET_UP_UNIVERSE(M_U)CALL APPEND_EMPTY_LAYOUT(M_U)CALL READ_INTO_VIRGIN_LAYOUT(M_U%START,"ALS.TXT")

MY_RING=>M_U%STARTP=>MY_RING%START

CALL ALLOC(X_POL);

X_ORBIT=0.D0; CALL FIND_ORBIT(MY_RING,X_ORBIT,1,DEFAULT,1.D-6)WRITE(6,*) X_ORBIT

WRITE(6,*) "GIVE ORDER OF TAYLOR MAP ";READ(5,*) NO;

IF(NO>0) THEN CALL INIT(DEFAULT,NO,0,BERZ) CALL ALLOC(ID);CALL ALLOC(NFORM); ID=1 X_POL=X_ORBIT+IDELSE X_POL=X_ORBITENDIF

CALL TRACK(MY_RING,X_POL,1,DEFAULT)

WRITE(6,*) "POLYMORPHS PRINTED "CALL PRINT(X_POL,6)

IF(NO>0) THEN ! WE WILL DO A TWISS CALCULATION OF BETA_X

NFORM=X_POL

WRITE(6,*) NFORM%TUNE

X_POL=X_ORBIT+NFORM%A_T

BETA_X= (X_POL(1).SUB.'100000')**2+(X_POL(1).SUB.'010000')**2 BETA_Z= (X_POL(6).SUB.'000010')**2+(X_POL(6).SUB.'000001')**2

WRITE(6,*) 'POS = ',0,' BETA_X = ', BETA_X WRITE(6,*) ' BETA_Z = ', BETA_Z

DO I=1,MY_RING%N CALL TRACK(MY_RING,X_POL,I,I+1,DEFAULT) BETA_X= (X_POL(1).SUB.'100000')**2+(X_POL(1).SUB.'010000')**2 BETA_Z= (X_POL(6).SUB.'000010')**2+(X_POL(6).SUB.'000001')**2 IF(MOD(I,50)==1.OR.I==MY_RING%N) THEN WRITE(6,*) 'POS = ',I,' BETA_X = ', BETA_X WRITE(6,*) ' BETA_Z = ', BETA_Z ENDIF

ENDDO

ENDIF

CALL KILL(X_POL);IF(NO>1) THEN CALL KILL(ID);ENDIF

END PROGRAM TWISS_PTC

Simple calculation of x and z in a tracking code, here PTC using FPP.

TheoryCom

puter Implem

entation