source: PSPA/madxPSPA/libs/ptc/src/a_def_element_fibre_layout.inc @ 430

Last change on this file since 430 was 430, checked in by touze, 11 years ago

import madx-5.01.00

File size: 17.8 KB
Line 
1!The Polymorphic Tracking Code
2!Copyright (C) Etienne Forest and CERN
3! The concept of the fibre and the concept of the
4! integration node, with their resulting link list types,
5! the layout and the node_layout,
6! are based on concepts first ellaborated  with J. Bengtsson.
7! The node_layout is similar to the Lagrangian class that
8! Bengtsson and Forest contemplated around 1990 for the
9! C++ collaboration later known as CLASSIC.
10
11
12TYPE girder
13   INTEGER, pointer :: i
14   INTEGER, pointer :: pos
15   INTEGER, pointer :: mul    ! number of magnets in the girder
16   INTEGER, pointer :: added
17   INTEGER, pointer :: discarded
18   real(dp), pointer:: a(:),ent(:,:)
19   TYPE (girder_info),POINTER :: info
20   TYPE (girder),POINTER :: PREVIOUS   ! Terminated link list
21   TYPE (girder),POINTER :: NEXT
22END TYPE girder
23
24TYPE girder_info
25   CHARACTER(nlp), POINTER ::  NAME    ! Identification
26   real(dp), POINTER ::  d(:)
27   type (element), pointer :: mag
28   real(dp), pointer:: a(:),ent(:,:)
29   type (girder), pointer :: parent_girder
30   TYPE (girder_info),POINTER :: NEXT            ! Terminated link list
31end TYPE girder_info
32
33TYPE girder_list
34   CHARACTER(120), POINTER ::  NAME ! IDENTIFICATION
35   INTEGER,  POINTER :: N     ! TOTAL ELEMENT IN THE CHAIN
36
37   INTEGER, POINTER :: discarded   ! duplicate magnets
38   INTEGER, POINTER :: LASTPOS   ! POSITION OF LAST VISITED
39   TYPE (girder), POINTER :: LAST ! LAST VISITED
40   !
41   TYPE (girder), POINTER :: END
42   TYPE (girder), POINTER :: START
43   type (fibre), pointer :: lastfibre
44
45END TYPE girder_list
46
47
48
49TYPE MUL_BLOCK
50   ! stuff for setting multipole
51   real(dp) AN(NMAX),BN(NMAX)
52   INTEGER NMUL,NATURAL,ADD
53END TYPE MUL_BLOCK
54
55type work
56   real(dp) beta0,energy,kinetic,p0c,brho,gamma0I,gambet
57   real(dp) mass
58   LOGICAL(lp) rescale
59   integer power
60end type work
61
62
63TYPE INTERNAL_STATE
64   INTEGER TOTALPATH
65   !    LOGICAL(LP) TIME,RADIATION,NOCAVITY,FRINGE,EXACTMIS,STOCHASTIC,ENVELOPE
66   LOGICAL(LP) TIME,RADIATION,NOCAVITY,FRINGE,STOCHASTIC,ENVELOPE
67   LOGICAL(LP) PARA_IN,ONLY_4D,DELTA
68   LOGICAL(LP) SPIN,MODULATION
69END TYPE INTERNAL_STATE
70
71
72
73TYPE POL_BLOCK
74   CHARACTER(nlp) NAME
75   integer n_name
76   CHARACTER(vp) VORNAME
77   ! STUFF FOR SETTING MAGNET USING GLOBAL ARRAY TPSAFIT
78   real(dp),DIMENSION(:), POINTER :: TPSAFIT
79   LOGICAL(lp), POINTER ::  SET_TPSAFIT
80   LOGICAL(lp), POINTER ::  SET_ELEMENT
81   ! STUFF FOR PARAMETER DEPENDENCE
82   INTEGER NPARA
83   INTEGER IAN(NMAX),IBN(NMAX)
84   real(dp) SAN(NMAX),SBN(NMAX)
85   INTEGER IVOLT, IFREQ,IPHAS
86   INTEGER IB_SOL
87   real(dp) SVOLT, SFREQ,SPHAS
88   real(dp) SB_SOL
89   integer g,np,nb   !  group index  number of blocks
90   ! User defined Functions
91   TYPE(POL_BLOCK_sagan) sagan
92END TYPE POL_BLOCK
93
94TYPE POL_BLOCK_INICOND
95   INTEGER       :: BETA(3)
96   INTEGER       :: ALFA(3)
97   INTEGER       :: DISPERSION(4)
98END TYPE POL_BLOCK_INICOND
99
100
101TYPE MADX_APERTURE
102   INTEGER,pointer ::  KIND   ! 1,2,3,4
103   REAL(DP),pointer :: R(:)
104   REAL(DP),pointer :: X,Y,DX,DY
105END TYPE MADX_APERTURE
106
107TYPE S_APERTURE
108   type(MADX_APERTURE), pointer:: APERTURE
109END TYPE S_APERTURE
110
111
112TYPE MAGNET_CHART
113   type(magnet_frame), pointer:: f
114   type(MADX_APERTURE), pointer:: APERTURE
115   type(S_APERTURE), pointer:: A(:)
116   real(dp),pointer :: charge  ! propagator
117   integer,pointer :: dir    ! propagator
118   real(dp), POINTER :: BETA0,GAMMA0I,GAMBET,MASS,ag
119   real(dp), POINTER :: P0C
120   real(dp), POINTER :: LD,B0,LC         !
121   real(dp), POINTER :: TILTD      ! INTERNAL FRAME
122   real(dp),  DIMENSION(:), POINTER :: EDGE         ! INTERNAL FRAME
123
124   !
125   LOGICAL(lp), POINTER :: EXACT
126   LOGICAL(lp), POINTER :: KILL_ENT_FRINGE,KILL_EXI_FRINGE, bend_fringe,permFRINGE                  !
127   !
128   INTEGER, POINTER :: METHOD,NST                   ! METHOD OF INTEGRATION 2,4,OR 6 YOSHIDA
129   INTEGER, POINTER :: NMUL                         ! NUMBER OF MULTIPOLE
130
131END TYPE MAGNET_CHART
132
133TYPE tilting
134   real(dp) tilt(0:nmax)
135   LOGICAL(lp) natural                 ! for mad-like
136END TYPE tilting
137
138  TYPE time_energy
139     real(dp),pointer :: time
140     real(dp),pointer :: energy
141     real(dp),pointer :: an(:),bn(:)
142     real(dp),pointer :: b_t
143  END TYPE time_energy
144 
145  TYPE ramping
146     integer,pointer :: n
147     real(dp), pointer :: r,t_max    !, unit_time
148     type(time_energy),pointer :: table(:)
149     character(255), pointer :: file
150  END TYPE ramping
151
152
153
154!   Element
155TYPE ELEMENT
156   INTEGER, POINTER :: KIND
157   logical(lp), POINTER :: recut,even
158   LOGICAL(LP), POINTER :: PLOT
159   LOGICAL(LP), POINTER :: electric
160
161   ! common stuff to all element
162   type(MAGNET_CHART), pointer :: P
163   CHARACTER(nlp), POINTER ::  NAME    ! Identification
164   CHARACTER(vp), POINTER ::  VORNAME    ! Identification
165   !
166   !
167   ! Length is common although certain things like Markers should not have a length
168   ! Well let us say it is zero
169   real(dp), POINTER ::  L                               ! Length of integration often same as LD
170   !
171   real(dp),   DIMENSION(:), POINTER:: AN,BN         !Multipole component
172   real(dp),   POINTER:: FINT,HGAP         !FRINGE FUDGE FOR MAD
173   real(dp),   POINTER:: H1,H2         !FRINGE FUDGE FOR MAD
174   real(dp),   POINTER:: VA,VS         !valishev-like multipole
175   !
176   real(dp), POINTER :: VOLT, FREQ,PHAS,DELTA_E,LAG       ! Cavity information
177   real(dp), POINTER :: DC_ac,A_ac,theta_ac,D_AC      ! slow RF: amplitude and phase
178   real(dp),   DIMENSION(:), POINTER:: D_AN,D_BN,D0_AN,D0_BN         !Multipole component
179   logical(lp), POINTER :: THIN,slow_ac
180   real(dp), POINTER ::  B_SOL                                          ! Solenoidal field
181   !  misalignements and rotation
182   logical(lp), POINTER ::  MIS
183   !   real(dp),  DIMENSION(:), POINTER ::d,r                             !  Misalignements
184   !storage  space
185   !integer  twiss                                                            !
186   ! TYPES OF MAGNETS
187   TYPE(DRIFT1), POINTER :: D0               ! DRIFT
188   TYPE(DKD2), POINTER :: K2               ! INTEGRATOR
189   TYPE(KICKT3), POINTER :: K3               !  THIN KICK
190   TYPE(CAV4), POINTER :: C4               ! CAVITY
191   TYPE(SOL5), POINTER :: S5               ! solenoid
192   TYPE(KTK), POINTER :: T6               ! INTEGRATOR   thick slow
193   TYPE(TKTF), POINTER :: T7               ! INTEGRATOR   thick fast
194   TYPE(NSMI), POINTER :: S8               ! NORMAL SMI
195   TYPE(SSMI), POINTER :: S9               ! SKEW SMI
196   TYPE(TEAPOT), POINTER :: TP10                ! sector teapot
197   TYPE(MON), POINTER :: MON14              ! MONITOR OR INSTRUMENT
198   TYPE(ESEPTUM), POINTER :: SEP15              ! MONITOR OR INSTRUMENT
199   TYPE(STREX), POINTER :: K16               ! EXACT STRAIGHT INTEGRATOR
200   TYPE(ENGE), POINTER :: ENGE17               ! SOLENOID SIXTRACK STYLE
201   TYPE(RCOL), POINTER :: RCOL18             ! RCOLLIMATOR
202   TYPE(ECOL), POINTER :: ECOL19             ! ECOLLIMATOR
203   TYPE(CAV_TRAV), POINTER :: CAV21            ! CAVITY TRAVELLING WAVE
204   TYPE(SAGAN), POINTER :: WI                ! USER DEFINED
205   TYPE(PANCAKE), POINTER :: PA          ! GENERAL B
206   TYPE(HELICAL_DIPOLE), POINTER :: HE22          ! GENERAL B
207   TYPE(FIBRE), POINTER :: PARENT_FIBRE
208   TYPE(fibre_appearance), POINTER :: doko
209   type(element), pointer :: siamese
210   type(element), pointer :: girders
211   TYPE(AFFINE_FRAME), POINTER :: SIAMESE_FRAME
212   TYPE(AFFINE_FRAME), POINTER :: girder_FRAME
213   !   integer, POINTER ::girder_index
214   type(girder),pointer :: assembly
215   type(ramping), pointer :: ramp
216
217END TYPE  ELEMENT
218
219
220TYPE ELEMENTP
221   INTEGER, POINTER :: KIND ! WHAT IT IS
222   logical(lp), POINTER :: KNOB ! FALSE IF NO KNOB
223   CHARACTER(nlp), POINTER ::  NAME    ! Identification
224   CHARACTER(vp), POINTER ::  VORNAME    ! Identification
225   LOGICAL(LP), POINTER :: electric
226   !
227   !
228   !
229   TYPE(REAL_8), POINTER ::  L    ! LENGTH OF INTEGRATION OFTEN SAME AS LD, CAN BE ZERO
230   TYPE(REAL_8),  DIMENSION(:), POINTER :: AN,BN         !MULTIPOLE COMPONENT
231   TYPE(REAL_8),   POINTER:: FINT,HGAP         !FRINGE FUDGE FOR MAD
232   TYPE(REAL_8),   POINTER:: H1,H2         !FRINGE FUDGE FOR MAD
233   TYPE(REAL_8),    POINTER:: VA,VS         !valishev-like multipole
234   !
235   TYPE(REAL_8), POINTER :: VOLT, FREQ,PHAS ! CAVITY INFORMATION
236   real(dp), POINTER :: DELTA_E     ! CAVITY ENERGY GAIN
237   TYPE(REAL_8), POINTER :: DC_ac,A_ac,theta_ac,D_AC      ! slow RF: amplitude and phase
238   TYPE(REAL_8),   DIMENSION(:), POINTER:: D_AN,D_BN,D0_AN,D0_BN         !Multipole component
239   !
240   TYPE(REAL_8), POINTER :: B_SOL
241   logical(lp), POINTER :: THIN,slow_ac
242
243   !  MISALIGNEMENTS AND ROTATION
244   logical(lp), POINTER ::  MIS
245   !   real(dp),  DIMENSION(:), POINTER :: D,R
246
247   TYPE(MAGNET_CHART), POINTER :: P
248
249   ! TYPES OF POLYMORPHIC MAGNETS
250   TYPE(DRIFT1P), POINTER :: D0             ! DRIFT
251   TYPE(DKD2P), POINTER :: K2               ! INTEGRATOR
252   TYPE(KICKT3P), POINTER :: K3             ! THIN KICK
253   TYPE(CAV4P), POINTER :: C4               ! DRIFT
254   TYPE(SOL5P), POINTER :: S5               ! CAVITY
255   TYPE(KTKP), POINTER :: T6                ! INTEGRATOR
256   TYPE(TKTFP), POINTER :: T7               ! INTEGRATOR   THICK FAST
257   TYPE(NSMIP), POINTER :: S8               ! NORMAL SMI
258   TYPE(SSMIP), POINTER :: S9               ! SKEW SMI
259   TYPE(TEAPOTP), POINTER :: TP10           ! SECTOR BEND WITH CYLINDRICAL GEOMETRY
260   TYPE(MONP), POINTER :: MON14              ! MONITOR OR INSTRUMENT
261   TYPE(ESEPTUMP), POINTER :: SEP15              ! MONITOR OR INSTRUMENT
262   TYPE(STREXP), POINTER :: K16               ! EXACT STRAIGHT INTEGRATOR
263   TYPE(ENGEP), POINTER :: ENGE17               ! SOLENOID SIXTRACK STYLE
264   TYPE(RCOLP), POINTER :: RCOL18             ! RCOLLIMATOR
265   TYPE(ECOLP), POINTER :: ECOL19             ! ECOLLIMATOR
266   TYPE(CAV_TRAVP), POINTER :: CAV21            ! CAVITY TRAVELLING WAVE
267   TYPE(HELICAL_DIPOLEP), POINTER :: HE22          ! GENERAL B
268   TYPE(SAGANP), POINTER :: WI                ! USER DEFINED
269   TYPE(PANCAKEP), POINTER :: PA          ! GENERAL B
270   TYPE(FIBRE), POINTER :: PARENT_FIBRE
271   !   TYPE(fibre_appearance), POINTER :: doko
272   type(ramping), pointer :: ramp
273END TYPE  ELEMENTP
274
275type fibre_appearance
276   TYPE(FIBRE), POINTER :: PARENT_FIBRE
277   TYPE(fibre_appearance), POINTER :: next
278end type fibre_appearance
279
280type info
281   real(sp),pointer :: s
282   real(sp),pointer ::  beta(:)
283   real(sp),pointer ::  fix0(:)
284   real(sp),pointer ::  fix(:)
285   real(sp), pointer:: pos(:)
286END type info
287
288TYPE FIBRE
289   !  BELOW ARE THE DATA CARRIED BY THE NODE
290   INTEGER,POINTER ::DIR
291   TYPE(PATCH),POINTER ::PATCH
292   TYPE(CHART),POINTER ::CHART
293   TYPE (ELEMENT), POINTER ::  MAG
294   TYPE (ELEMENTP),POINTER ::  MAGP
295   !  END OF DATA
296   !  POINTER TO THE MAGNETS ON EACH SIDE OF THIS NODE
297   TYPE (FIBRE),POINTER :: PREVIOUS
298   TYPE (FIBRE),POINTER :: NEXT
299   !  POINTING TO PARENT LAYOUT AND PARENT FIBRE DATA
300   TYPE (LAYOUT),POINTER :: PARENT_LAYOUT
301   type(info),pointer ::i
302   TYPE(INTEGRATION_NODE),POINTER :: T1,T2   ! FIRST AND LAST INTEGRATION_NODE CHILDREN CORRESPOUNDING TO PATCHES
303   TYPE(INTEGRATION_NODE),POINTER :: TM      ! MIDDLE INTEGRATION_NODE
304   INTEGER,POINTER ::pos              ! POSITION IN LAYOUT
305   ! NEW STUFF....
306   real(dp), POINTER :: BETA0,GAMMA0I,GAMBET,MASS   !,P0C
307   real(dp), POINTER :: CHARGE
308   real(dp), POINTER :: AG  ! spin g-2
309   ! TO TIE LAYOUTS
310   TYPE (FIBRE),POINTER :: P
311   TYPE (FIBRE),POINTER :: N
312   INTEGER,POINTER :: loc
313
314END TYPE FIBRE
315
316TYPE LAYOUT
317   CHARACTER(120), POINTER ::  NAME ! IDENTIFICATION
318   INTEGER, POINTER ::  INDEX,HARMONIC_NUMBER ! IDENTIFICATION, CHARGE SIGN
319   logical(lp),POINTER ::CLOSED
320   INTEGER,  POINTER :: N     ! TOTAL ELEMENT IN THE CHAIN
321   INTEGER,POINTER ::NTHIN  ! NUMBER IF THIN LENSES IN COLLECTION  (FOR SPEED ESTIMATES)
322   REAL(DP),  POINTER :: THIN    ! PARAMETER USED FOR AUTOMATIC CUTTING INTO THIN LENS
323   !POINTERS OF LINK LAYOUT
324   INTEGER, POINTER :: LASTPOS   ! POSITION OF LAST VISITED
325   TYPE (FIBRE), POINTER :: LAST ! LAST VISITED
326   !
327   TYPE (FIBRE), POINTER :: END
328   TYPE (FIBRE), POINTER :: START
329   TYPE (FIBRE), POINTER :: START_GROUND ! STORE THE GROUNDED VALUE OF START DURING CIRCULAR SCANNING
330   TYPE (FIBRE), POINTER :: END_GROUND ! STORE THE GROUNDED VALUE OF END DURING CIRCULAR SCANNING
331   TYPE (LAYOUT), POINTER :: NEXT
332   TYPE (LAYOUT), POINTER :: PREVIOUS
333   type(NODE_LAYOUT), pointer :: T   !  ASSOCIATED  CHILD THIN LENS LAYOUT
334   TYPE (MAD_UNIVERSE), POINTER :: parent_universe
335   TYPE(layout_array), POINTER :: DNA(:)
336END TYPE LAYOUT
337
338type layout_array
339   type(layout), pointer :: L
340   integer   :: counter
341END type layout_array
342
343type girder_siamese
344   type(element), pointer :: mag
345END type girder_siamese
346
347TYPE MAD_UNIVERSE             ! THE MOTHER OF ALL STRUCTURES
348   INTEGER,  POINTER :: N     ! NUMBERS OF LAYOUT
349   INTEGER,  POINTER :: SHARED     ! NUMBERS OF REPOSITORY LAYOUTS
350   TYPE (LAYOUT), POINTER :: END
351   TYPE (LAYOUT), POINTER :: START
352   !POINTERS OF UNIVERSE IN CONJUNCTION WITH THE POINTERS N AND P OF THE FIBRES
353   INTEGER, POINTER :: NF   ! number of fibres in tied layouts
354   INTEGER, POINTER :: LASTPOS   ! POSITION OF LAST VISITED
355   TYPE (FIBRE), POINTER :: LAST ! LAST VISITED
356END TYPE MAD_UNIVERSE
357
358TYPE BEAM
359   REAL(DP), POINTER :: X(:,:)
360   LOGICAL(LP), POINTER :: U(:)
361   TYPE(BEAM_LOCATION), POINTER::POS(:)
362   INTEGER, POINTER :: N,LOST
363   REAL(DP), POINTER :: A(:),D(:)
364END TYPE BEAM
365
366TYPE INTEGRATION_NODE
367   INTEGER, POINTER :: pos_in_fibre, CAS
368   INTEGER, POINTER ::  pos,lost
369   real(dp), POINTER :: S(:)
370   real(dp), POINTER :: ds_ac
371   real(dp), POINTER :: ref(:)
372   real(dp), pointer :: ent(:,:),a(:)
373   real(dp), pointer :: exi(:,:),b(:)
374   real(dp), POINTER :: delta_rad_in
375   real(dp), POINTER :: delta_rad_out
376   INTEGER, POINTER :: TEAPOT_LIKE
377   TYPE (INTEGRATION_NODE), POINTER :: NEXT
378   TYPE (INTEGRATION_NODE), POINTER :: PREVIOUS
379   TYPE (NODE_LAYOUT), POINTER :: PARENT_NODE_LAYOUT
380   TYPE(FIBRE), POINTER :: PARENT_FIBRE
381   !   TYPE(EXTRA_WORK), POINTER :: WORK
382   TYPE(BEAM_BEAM_NODE), POINTER :: BB
383   TYPE(tree_element), POINTER :: T
384END TYPE INTEGRATION_NODE
385
386TYPE BEAM_LOCATION
387   TYPE (INTEGRATION_NODE), POINTER :: NODE
388END TYPE BEAM_LOCATION
389
390TYPE NODE_LAYOUT
391   CHARACTER(120), POINTER ::  NAME ! IDENTIFICATION
392   INTEGER, POINTER ::  INDEX ! IDENTIFICATION
393   logical(lp),POINTER ::CLOSED
394   INTEGER,  POINTER :: N     ! TOTAL ELEMENT IN THE CHAIN
395   !POINTERS OF LINK LAYOUT
396   INTEGER, POINTER :: LASTPOS   ! POSITION OF LAST VISITED
397   TYPE (INTEGRATION_NODE), POINTER :: LAST ! LAST VISITED
398   !
399   TYPE (INTEGRATION_NODE), POINTER :: END
400   TYPE (INTEGRATION_NODE), POINTER :: START
401   TYPE (INTEGRATION_NODE), POINTER :: START_GROUND ! STORE THE GROUNDED VALUE OF START DURING CIRCULAR SCANNING
402   TYPE (INTEGRATION_NODE), POINTER :: END_GROUND ! STORE THE GROUNDED VALUE OF END DURING CIRCULAR SCANNING
403   TYPE (LAYOUT), POINTER :: PARENT_LAYOUT
404   TYPE(ORBIT_LATTICE), POINTER :: ORBIT_LATTICE
405END TYPE NODE_LAYOUT
406
407TYPE ORBIT_NODE
408   TYPE (INTEGRATION_NODE), POINTER :: NODE
409   REAL(DP), POINTER :: LATTICE(:)
410   integer, POINTER :: DPOS
411   integer, POINTER :: ENTERING_TASK
412   integer, POINTER :: PTC_TASK
413   logical, POINTER :: cavity
414END TYPE ORBIT_NODE
415
416TYPE ORBIT_LATTICE
417   TYPE(ORBIT_NODE), pointer :: ORBIT_NODES(:)
418   INTEGER, pointer  ::  ORBIT_N_NODE  ! GET_N_NODE
419   LOGICAL(lp), pointer  ::  ORBIT_USE_ORBIT_UNITS,accel
420   INTEGER, pointer  ::  ORBIT_WARNING
421   REAL(DP), pointer  ::  ORBIT_LMAX    ! GET_LMAX
422   REAL(DP), pointer  ::  ORBIT_MAX_PATCH_TZ
423   REAL(DP), pointer  ::  ORBIT_mass_in_amu  ! GET_MASS_AMU
424   REAL(DP), pointer  ::  ORBIT_gammat    ! GET_GAMMAT
425   REAL(DP), pointer  ::  ORBIT_harmonic  ! GET_HARMONIC
426   REAL(DP), pointer  ::  ORBIT_L    ! GET_CIRCUMFERENCE
427   real(dp),pointer ::  ORBIT_CHARGE  ! GET_CHARGE
428   REAL(DP), pointer  ::  ORBIT_OMEGA  ! GET_omega
429   REAL(DP), pointer  ::  ORBIT_P0C   ! GET_P0C
430   REAL(DP), pointer  ::  ORBIT_BETA0 ! GET_BETA0
431   REAL(DP), pointer  ::  orbit_kinetic  ! GET_kinetic
432   REAL(DP), pointer  ::  orbit_brho   ! GET_brho
433   REAL(DP), pointer  ::  orbit_energy ! GET_total_energy
434   REAL(DP), pointer  ::  orbit_gamma ! GET_gamma
435   !   REAL(DP), pointer  ::  orbit_dppfac ! GET_dppfac
436   REAL(DP), pointer  ::  orbit_deltae ! GET_deltae
437   REAL(DP), pointer  ::  ORBIT_OMEGA_after
438   !   REAL(DP), pointer  ::  freqb,freqa,voltb,volta,phasa,phasb,xs6,dxs6
439   TYPE(INTERNAL_STATE),pointer :: STATE
440   TYPE(INTEGRATION_NODE), pointer :: tp
441   TYPE(layout), pointer :: parent_layout
442   real(dp), pointer :: dt(:)
443END TYPE ORBIT_LATTICE
444
445
446!  BEAM BEAM
447
448TYPE BEAM_BEAM_NODE
449   REAL(DP), POINTER :: S
450   REAL(DP), POINTER :: SX,SY,FK
451   REAL(DP), POINTER :: XM,YM   ! trivial transverse displacement: not needed
452   REAL(DP), POINTER :: BBK(:)  ! kick on closed orbit
453   !    REAL(DP), pointer :: MID(:,:),O(:)
454   REAL(DP), POINTER :: A(:)    ! patch angles
455   REAL(DP), POINTER :: D(:)    ! patch translation
456   INTEGER, POINTER :: A_X1,A_X2 ! patch inverse propagator (not needed)
457   LOGICAL(LP), POINTER :: PATCH ! true= patch
458END TYPE BEAM_BEAM_NODE
459
460!  Additional work at node
461TYPE EXTRA_WORK
462   INTEGER, POINTER :: KIND
463   TYPE(INTEGRATION_NODE), POINTER :: NODE
464   TYPE(BEAM_BEAM_NODE), POINTER :: BB
465   TYPE(MADX_APERTURE), POINTER :: A
466   REAL(DP), POINTER :: ORB(:)
467END TYPE EXTRA_WORK
468
469TYPE fibre_array
470   type(fibre), pointer :: p
471   integer, pointer :: pos
472END TYPE fibre_array
473
474!!!!  graphical arrays used in Su_hiromi only now
475  real(sp), allocatable :: z_hiromi(:,:),z_hiromi0(:,:)
476  integer n_hiromi,above_kicker,n_hiromi_lost
477  logical(lp) :: fill_hiromi =my_false
478  real(dp) :: r_hiromi=10.0,h_hiromi=10.0,kicker_hiromi=0.4d0,angle_hiromi(3)=0.d0
479  real(dp) :: ent_hiromi(3,3),x0_hiromi(6),t0_hiromi,dt_hiromi
480  type(internal_state) state_hiromi
Note: See TracBrowser for help on using the repository browser.