-
Notifications
You must be signed in to change notification settings - Fork 39
/
mad_extrn_f.h
370 lines (317 loc) · 13.2 KB
/
mad_extrn_f.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
#ifndef MAD_EXTRN_F_H
#define MAD_EXTRN_F_H
/*
* Fortran types in C
*/
#ifndef MAD_TYPES_F_H
#include "mad_types_f.h"
#endif
/*
* Called by Fortran
*/
// from mad_cmdpar.c
#define comm_para comm_para_
#define get_string get_string_
#define get_value get_value_ // **
#define get_vector get_vector_
// from mad_const.c
#define next_constraint next_constraint_
#define next_constr_namepos next_constr_namepos_
#define next_global next_global_
// from mad_bbeam.c
#define make_bb6d_ixy make_bb6d_ixy_
// from mad_elem.c
#define element_name element_name_
#define el_par_vector el_par_vector_
#define get_node_vector get_node_vector_
#define is_custom_set is_custom_set_
#define update_node_aperture update_node_aperture_
// from mad_elemerr.c
#define node_al_errors node_al_errors_
#define node_fd_errors node_fd_errors_
// from mad_err.c
#define augmentfwarn augmentfwarn_
#define geterrorflag geterrorflag_
#define seterrorflagfort seterrorflagfort_
// from mad_eval.c
#define pro_input pro_input_
// from mad_gxx11c.c
#define wopen wopen_
#define wclose wclose_
#define wclrwk wclrwk_
#define wpl wpl_
#define wfa wfa_
#define wswn wswn_
#define wtx wtx_
#define wwait wwait_
#define wsetci wsetci_
#define wsetls wsetls_
#define wstring wstring_
#define cbyt cbyt_
#define mydtime mydtime_
// from mad_inter.c
#define interpolate_node interpolate_node_
#define reset_interpolation reset_interpolation_
#define start_interp_node start_interp_node_
#define fetch_interp_node fetch_interp_node_
// from mad_match.c
#define mtcond mtcond_
#define mtputconsname mtputconsname_
// from mad_node.c
#define advance_node advance_node_ // *
#define advance_to_pos advance_to_pos_
#define current_node_name current_node_name_
#define node_name node_name_
#define node_name node_name_
#define node_name_f_lower node_name_f_lower_
#define node_string node_string_
#define node_value node_value_ // **
#define retreat_node retreat_node_
#define store_node_value store_node_value_
#define store_node_vector store_node_vector_
#define store_no_fd_err store_no_fd_err_
#define node_apertype node_apertype_
#define inside_userdefined_geometry inside_userdefined_geometry_
#define get_userdefined_geometry get_userdefined_geometry_
#define get_userdefined_geometry_len get_userdefined_geometry_len_
#define is_permalign is_permalign_
#define node_aperture_vector node_aperture_vector_
#define node_aperture_offset node_aperture_offset_
#define node_obs_point node_obs_point_
#define alloc_tt_attrib alloc_tt_attrib_
#define set_tt_attrib set_tt_attrib_
#define get_tt_attrib get_tt_attrib_
#define set_tt_multipoles set_tt_multipoles_
#define get_tt_multipoles get_tt_multipoles_
#define get_closed_orb_node get_closed_orb_node_
#define set_closed_orb_node set_closed_orb_node_
// from mad_option.c
#define get_option get_option_ // *
#define set_option set_option_
#define set_cont_sequence set_cont_sequence_
#define set_sequence set_sequence_
// from mad_orbit.c
#define f_ctof f_ctof_
// from mad_plot.c
#define get_title get_title_
#define get_version get_version_
#define plot_option plot_option_
// from mad_ptc.c
#define augmentcountmomtabs augmentcountmomtabs_
#define makemomentstables makemomentstables_
#define minimum_acceptable_order minimum_acceptable_order_
#define select_ptc_idx select_ptc_idx_
// from mad_rand.c
#define frndm frndm_
#define grndm grndm_
// from mad_rplot.cpp
#define newrplot newrplot_
#define plottrack plottrack_
#define plottwiss plottwiss_
#define rplotfinish rplotfinish_
#define rviewer rviewer_
#define madxv_setfctnname madxv_setfctnname_
#define madxv_setknobname madxv_setknobname_
#define madxv_setfunctionat madxv_setfunctionat_
// from mad_seq.c
#define restart_sequ restart_sequ_
#define get_nnodes get_nnodes_
#define get_ncavities get_ncavities_
// from mad_table.c
// warning:augment_counts is provided by madx_ptc_knobs.f90
#define augment_count augment_count_
#define augmentcountonly augmentcountonly_
#define table_length table_length_
#define table_exists table_exists_
#define table_cell_exists table_cell_exists_
#define table_column_exists table_column_exists_
#define table_header_exists table_header_exists_
#define double_from_table_header double_from_table_header_
#define double_from_table_row double_from_table_row_ // *
#define string_from_table_row string_from_table_row_
#define double_to_table_row double_to_table_row_
#define string_to_table_row string_to_table_row_
#define double_to_table_curr double_to_table_curr_ // **
#define double_to_table_curr2 double_to_table_curr2_ // **
#define vector_to_table_curr vector_to_table_curr_
#define string_to_table_curr string_to_table_curr_
#define comment_to_table_curr comment_to_table_curr_
#define double_table double_table_
#define make_map_table make_map_table_
#define reset_count reset_count_
#define sector_out sector_out_
#define table_length table_length_
#define table_range table_range_
#define name_to_table_curr name_to_table_curr_
// from mad_track.c
#define deletetrackstrarpositions deletetrackstrarpositions_
#define getcurrentcmdname getcurrentcmdname_
#define getnumberoftracks getnumberoftracks_
#define gettrack gettrack_
#define next_start next_start_
#define track_pteigen track_pteigen_
// from mad_twiss.c
#define copy_twiss_data copy_twiss_data_
#define embedded_twiss embedded_twiss_
#define get_disp0 get_disp0_
// from mad_util.c
#define intrac intrac_
// from mad_var.c
#define set_variable set_variable_
#define get_variable get_variable_
#define next_vary next_vary_
// from mad_vec.c
#define vdot vdot_ // *
#define vmod vmod_
/*
* Provided by Fortran
*/
// from mad_init_f.F90
void mad_init_f_(void);
// from dynap.f90
//void dynap_(F_DOUBLE eigen, F_DOUBLE coords, F_INTEGER turns, F_INTEGER npart, F_DOUBLE distvect,
// F_DOUBLE zn, F_DOUBLE dq, F_DOUBLE onelog, F_DOUBLE turnnumber);
void trdynrun_(F_DOUBLE eigen, F_DOUBLE coords, F_INTEGER turns, F_INTEGER npart, F_DOUBLE distvect,
F_DOUBLE zn, F_DOUBLE onelog, F_DOUBLE turnnumber, F_DOUBLE dq);
// from emit.f90
void emit_(F_DOUBLE deltap, F_DOUBLE tol, F_DOUBLE orbit0, F_DOUBLE disp0, F_DOUBLE rt,
F_DOUBLE u0, F_DOUBLE emit_v, F_DOUBLE nemit_v, F_DOUBLE bmax, F_DOUBLE gmax,
F_DOUBLE dismax, F_DOUBLE tunes, F_DOUBLE sig_v, F_DOUBLE pdamp, F_LOGICAL updatebeam);
// from gxx11.f90(Unix)
// or gxx11ps.f90(Windows)
void gxterm_(void);
// from ibsdb.f90
void ibs_(void);
// from match.f90
void collect_(F_INTEGER ncon, F_DOUBLE fsum, F_DOUBLE fvect);
void mtlmdf_(F_INTEGER ncon, F_INTEGER nvar, F_DOUBLE tol, F_INTEGER calls,
F_INTEGER call_lim, F_DOUBLE vect, F_DOUBLE dvect, F_DOUBLE fun_vec,
F_DOUBLE diag, F_DOUBLE w_ifjac, F_DOUBLE w_ipvt, F_DOUBLE w_qtf,
F_DOUBLE w_iwa1, F_DOUBLE w_iwa2, F_DOUBLE w_iwa3, F_DOUBLE w_iwa4,
F_DOUBLE xold);
void mtmigr_(F_INTEGER ncon, F_INTEGER nvar, F_INTEGER strategy, F_DOUBLE tol,
F_INTEGER calls, F_INTEGER call_lim, F_DOUBLE vect, F_DOUBLE dvect,
F_DOUBLE fun_vect, F_DOUBLE w_iwa1, F_DOUBLE w_iwa2, F_DOUBLE w_iwa3,
F_DOUBLE w_iwa4, F_DOUBLE w_iwa5, F_DOUBLE w_iwa6, F_DOUBLE w_iwa7, F_DOUBLE w_iwa8);
void mtsimp_(F_INTEGER ncon, F_INTEGER nvar, F_DOUBLE tol, F_INTEGER calls, F_INTEGER call_lim,
F_DOUBLE vect, F_DOUBLE dvect, F_DOUBLE fun_vect, F_DOUBLE w_iwa1, F_DOUBLE w_iwa2,
F_DOUBLE w_iwa3);
// from matchjc.f90
void mtsvd_(F_INTEGER M, F_INTEGER N, F_DOUBLE fjac, F_DOUBLE SV, F_DOUBLE U, F_DOUBLE VT);
void mtjac_(F_INTEGER ncon, F_INTEGER nvar, F_INTEGER strategy, F_DOUBLE cool, F_DOUBLE balance,
F_DOUBLE random, F_INTEGER nrep, F_INTEGER bisec, F_DOUBLE cond, F_INTEGER match_mode,
F_DOUBLE tol, F_INTEGER calls, F_INTEGER call_lim, F_DOUBLE vect, F_DOUBLE dvect,
F_DOUBLE fun_vec, F_DOUBLE w_ifjac, F_DOUBLE w_iwa4, F_DOUBLE fval, F_DOUBLE xstart,
F_DOUBLE xold);
// from matchsa.f90
void mtsa_(F_INTEGER ncon, F_INTEGER nvar, F_DOUBLE tol, F_INTEGER calls, F_INTEGER call_lim,
F_DOUBLE vect, F_DOUBLE fun_vect, F_INTEGER iseed, F_INTEGER iprint, F_DOUBLE lb,
F_INTEGER nacp, F_DOUBLE ub, F_DOUBLE xopt, F_DOUBLE c, F_DOUBLE vm, F_DOUBLE xp);
// from orbf.f90
void setup_(F_DOUBLE resp, F_DOUBLE a, F_INTEGER im, F_INTEGER ic, F_INTEGER nm, F_INTEGER nc);
void setupi_(F_INTEGER resp, F_INTEGER a, F_INTEGER im, F_INTEGER ic, F_INTEGER nm, F_INTEGER nc);
void prdmat_(F_DOUBLE a, F_INTEGER nc, F_INTEGER nm);
void primat_(F_INTEGER a, F_INTEGER nc, F_INTEGER nm);
void micit_(F_DOUBLE a, F_CHARACTER conm, F_DOUBLE xin, F_DOUBLE cin, F_DOUBLE res, F_INTEGER nx,
F_DOUBLE rms, F_INTEGER im, F_INTEGER ic, F_INTEGER iter, F_INTEGER ny, F_DOUBLE ax,
F_DOUBLE cinx, F_DOUBLE xinx, F_DOUBLE resx, F_DOUBLE rho, F_DOUBLE ptop, F_DOUBLE rmss, F_DOUBLE xrms,
F_DOUBLE xptp, F_DOUBLE xiter, F_INTEGER ifail);
void haveit_(F_DOUBLE a, F_DOUBLE xin, F_DOUBLE cin, F_DOUBLE res, F_INTEGER nx, F_INTEGER im,
F_INTEGER ic, F_DOUBLE cb, F_DOUBLE xmeas, F_DOUBLE xres, F_DOUBLE y, F_DOUBLE z,
F_DOUBLE xd);
void svddec_(F_DOUBLE a, F_DOUBLE svdmat, F_DOUBLE umat, F_DOUBLE vmat, F_DOUBLE ws, F_DOUBLE wvec,
F_INTEGER sortw, F_DOUBLE sngcut, F_DOUBLE sngval, F_INTEGER im, F_INTEGER ic,
F_INTEGER iflag, F_INTEGER sing, F_INTEGER dbg);
void svdcorr_(F_DOUBLE a, F_DOUBLE svdmat, F_DOUBLE umat, F_DOUBLE vmat, F_DOUBLE wmat, F_DOUBLE utmat,
F_DOUBLE vtmat, F_DOUBLE wtmat, F_DOUBLE xin, F_DOUBLE xc, F_DOUBLE xout,
F_DOUBLE xpred, F_DOUBLE ws, F_DOUBLE wvec, F_INTEGER sortw, F_INTEGER nx,
F_INTEGER im, F_INTEGER ic, F_INTEGER iflag, F_INTEGER dbg);
// from plot.f90
void pesopt_(F_INTEGER ierr);
void pefill_(F_INTEGER ierr);
void pemima_(void);
void plotit_(F_INTEGER initfl);
// from resindex.f90
void res_index_(F_LOGICAL skew, F_INTEGER mynorder, F_INTEGER myn1, F_INTEGER myn2, F_INTEGER indexa,
F_INTEGER mynres);
// from sodd.f90
void soddin_(F_INTEGER ierr);
// from survey.f90
void survey_(void);
void elementloc_(void);
void survtest_(void);
void locslice_(F_DOUBLE, F_DOUBLE, F_DOUBLE);
// from toucheck.f90
void touschek_(void);
// from trrun.f90
void trrun_(F_INTEGER switch_, F_INTEGER turns, F_DOUBLE orbit0, F_DOUBLE rt, F_INTEGER part_id,
F_INTEGER last_turn, F_DOUBLE last_pos, F_DOUBLE z, F_DOUBLE dxt, F_DOUBLE dyt,
F_DOUBLE last_orbit, F_DOUBLE eigen, F_DOUBLE coords, F_INTEGER e_flag,
F_INTEGER code_buf, F_DOUBLE l_buf);
void trbegn_(F_DOUBLE rt, F_DOUBLE eigen);
// from twiss.f90
void tmrefe_(F_DOUBLE rf);
void tmrefo_(F_INTEGER kobs, F_DOUBLE orbit0, F_DOUBLE orbit, F_DOUBLE rt);
void twiss_(F_DOUBLE rt, F_DOUBLE disp0, F_INTEGER tab_name, F_INTEGER sector_tab_name);
void twcpin_(F_DOUBLE rt, F_DOUBLE disp0, F_DOUBLE r0mat, F_INTEGER error);
void twdisp_ini_(F_DOUBLE rt, F_DOUBLE disp0);
// from util.f90
void getclor_(F_DOUBLE orbit0, F_DOUBLE rt, F_DOUBLE tt, F_INTEGER error);
// from wrap.f90
void w_ptc_addknob_(F_INTEGER fibre);
void w_ptc_addknob_i_(F_INTEGER paramn);
void w_ptc_addmoment_(F_INTEGER x, F_INTEGER px, F_INTEGER y, F_INTEGER py, F_INTEGER t, F_INTEGER dp,
F_INTEGER tableIA, F_INTEGER columnIA, F_INTEGER parametric);
void w_ptc_addpush_(F_INTEGER tabname, F_INTEGER colname, F_INTEGER polinomial, F_INTEGER monomial);
void w_ptc_align_(void);
void w_ptc_putbeambeam_(void);
void w_ptc_create_layout_(void);
void w_ptc_create_universe_(void);
void w_ptc_dumpmaps_(void);
void w_ptc_end_(void);
void w_ptc_enforce6d_(F_INTEGER level);
void w_ptc_eplacement_(F_INTEGER elementidx, F_INTEGER rf);
void w_ptc_export_xml_(F_INTEGER filename);
void w_ptc_getnfieldcomp_(F_INTEGER fibreidx, F_INTEGER ncomp, F_DOUBLE nval);
void w_ptc_getsfieldcomp_(F_INTEGER fibreidx, F_INTEGER ncomp, F_DOUBLE nval);
void w_ptc_moments_(F_INTEGER no);
void w_ptc_move_to_layout_(void);
void w_ptc_normal_(void);
void w_ptc_open_gino_(F_INTEGER scriptname);
void w_ptc_printframes_(F_INTEGER scriptname);
void w_ptc_printlayout_rootm_(F_INTEGER filename);
void w_ptc_read_errors_(void);
void w_ptc_refresh_k_(void);
void w_ptc_refreshtables_(void);
void w_ptc_script_(F_INTEGER scriptname);
void w_ptc_setaccel_method_(F_INTEGER method);
void w_ptc_setdebuglevel_(F_INTEGER level);
void w_ptc_setmapdumplevel_(F_INTEGER level);
void w_ptc_setmadprint_(F_INTEGER level);
void w_ptc_setseed_(F_INTEGER level);
void w_ptc_setspin_(F_INTEGER method);
void w_ptc_setstochastic_(F_INTEGER method);
void w_ptc_setfieldcomp_(F_INTEGER fibreidx);
void w_ptc_setexactmis_(F_INTEGER method);
void w_ptc_setenvelope_(F_INTEGER method);
void w_ptc_setfringe_(F_INTEGER method);
void w_ptc_setknobvalue_(F_INTEGER fible);
void w_ptc_setnocavity_(F_INTEGER method);
void w_ptc_setradiation_(F_INTEGER method);
void w_ptc_setmodulation_(F_INTEGER method);
void w_ptc_settime_(F_INTEGER method);
void w_ptc_settotalpath_(F_INTEGER method);
void w_ptc_track_(F_INTEGER max_obs);
void w_ptc_track_everystep_(F_INTEGER max_obs);
void w_ptc_trackline_(F_INTEGER max_obs);
void w_ptc_twiss_(F_INTEGER tab_name, F_INTEGER summary_name);
void w_ptc_writeparresults_(F_INTEGER filename);
// from madx_ptc_distrib.f90
void w_ptc_getmomentstabcol_(F_INTEGER n, F_CHARACTER tabn, F_CHARACTER coln);
int w_ptc_getnmoments_(void);
// from madx_ptc_knobs.f90
void w_ptc_rviewer_(void);
// from taper.f90
void taper_(F_DOUBLE orbit0, F_INTEGER iterate, F_DOUBLE stepsize, F_CHARACTER filename, F_INTEGER error);
void taperreset_(F_INTEGER error);
#endif