source: PSPA/madxPSPA/src/mad_elemrfc.c @ 430

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

import madx-5.01.00

File size: 1.9 KB
Line 
1#include "madx.h"
2
3void
4print_rfc(void)
5  /* prints the rf cavities present */
6{
7  double freq0, harmon, freq;
8  int i, n = current_sequ->cavities->curr;
9  struct element* el;
10  if (n == 0)  return;
11  freq0 = command_par_value("freq0", probe_beam);
12  printf("\n RF system: \n");
13  printf(v_format(" %S %NFs %NFs %NFs %NFs %NFs\n"),
14         "Cavity","length[m]","voltage[MV]","lag","freq[MHz]","harmon");
15  for (i = 0; i < n; i++)
16  {
17    el = current_sequ->cavities->elem[i];
18    if ((harmon = el_par_value("harmon", el)) > zero)
19    {
20      freq = freq0 * harmon;
21      printf(v_format(" %S %F %F %F %F %F\n"),
22             el->name, el->length, el_par_value("volt", el),
23             el_par_value("lag", el), freq, harmon);
24    }
25  }
26}
27
28void
29adjust_rfc(void)
30{
31  /* adjusts rfc frequency to given harmon number */
32  double freq0, harmon, freq;
33  int i;
34  struct element* el;
35  freq0 = command_par_value("freq0", probe_beam);
36  for (i = 0; i < current_sequ->cavities->curr; i++)
37  {
38    el = current_sequ->cavities->elem[i];
39    if ((harmon = command_par_value("harmon", el->def)) > zero)
40    {
41      freq = freq0 * harmon;
42      store_comm_par_value("freq", freq, el->def);
43    }
44  }
45}
46
47double
48rfc_slope(void)
49  /* calculates the accumulated "slope" of all cavities */
50{
51  double slope = zero, harmon, charge, pc;
52  struct node* c_node = current_sequ->range_start;
53  struct element* el;
54  charge = command_par_value("charge", current_beam);
55  pc = command_par_value("pc", current_beam);
56  do
57  {
58    el = c_node->p_elem;
59    if (strcmp(el->base_type->name, "rfcavity") == 0 &&
60        (harmon = command_par_value("harmon", el->def)) > zero)
61    {
62      double volt = command_par_value("volt", el->def);
63      double lag = command_par_value("lag", el->def);
64      slope += ten_m_3 * charge * volt * harmon * cos(twopi * lag) / pc;
65    }
66    if (c_node == current_sequ->range_end) break;
67    c_node = c_node->next;
68  }
69  while (c_node != NULL);
70  return slope;
71}
72
73
Note: See TracBrowser for help on using the repository browser.