Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • O OPALManualWiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • snuverink_j
  • OPALManualWiki
  • Wiki
  • fieldmaps

fieldmaps · Changes

Page history
add fieldmaps chapter authored Sep 13, 2017 by snuverink_j's avatar snuverink_j
Hide whitespace changes
Inline Side-by-side
fieldmaps.asciidoc 0 → 100644
View page @ 915e95d8
:toc:
[[chp:opalcycl]]
:stem: latexmath
:sectnums:
[[opal-t-field-maps]]
_OPAL-t_ Field Maps
-------------------
[[chp:app_fieldmaps]]
Introduction
~~~~~~~~~~~~
In this chapter details of the different types of field maps in _OPAL-t_
are presented. _OPAL-t_ can use many different types of field maps input
in several different file formats. What types of maps are supported and
in what format has tended to be a function mostly of what developers
have needed, and to a lesser extent what users have asked for. The list
below shows all field maps that are currently supported and also field
maps that are not yet supported, but on the list of things to do when we
get a chance.
[[comments-in-field-maps]]
Comments in Field Maps
~~~~~~~~~~~~~~~~~~~~~~
The possibility to add comments (almost) everywhere in field map files
is common to all field maps. Comments are initiated by a # and contain
the rest of a line. Comments are accepted at the beginning of the file,
between the lines and at the end of a line. If in the following sections
two values are shown on one line then they have to be on the same line.
They should not be separated by a comment and, consequently, be on
different lines. Three examples of valid comments:
....
# This is valid a comment
1DMagnetoStatic 40 # This is another valid comment
-60.0 60.0 9999
# and this is also a valid comment
0.0 2.0 199
....
The following examples will break the parsing of the field maps:
....
1DMagnetoStatic # This is an invalid comment
40
-60.0 60.0 # This is another invalid comment # 9999
0.0 2.0 199
....
[[normalization]]
Normalization
~~~~~~~~~~~~~
All field maps that are in ASCII are normalized with the maximum
absolute value of the longitudinal field on the axis. The only
exceptions is the type 1DProfile1. This behavior can be disabled by
adding `FALSE` at the end of the first line of the field map.
[[field-map-warnings-and-errors]]
Field Map Warnings and Errors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If _OPAL-t_ encounters an error while parsing a field map it disables
the corresponding element, outputs a warning message and continues the
simulation. The following messages may be output:
....
************ W A R N I N G ***********************************
THERE SEEMS TO BE SOMETHING WRONG WITH YOUR FIELD MAP file.t7.
There are only 10003 lines in the file, expecting more.
Please check the section about field maps in the user manual.
**************************************************************
....
In this example there is something wrong with the number of grid
spacings provided in the header of the file. Make sure that you provide
the number of grid *spacings* and not the number of grid *points*! The
two numbers always differ by 1.
....
************ W A R N I N G ***********************************
THERE SEEMS TO BE SOMETHING WRONG WITH YOUR FIELD MAP file.t7.
There are too many lines in the file, expecting only 10003 lines.
Please check the section about field maps in the user manual.
**************************************************************
....
Again there seems to be something wrong with the number of grid spacings
provided in the header. In this example _OPAL-t_ found more lines than
it expected. Note that comments and empty lines at the end of a file are
ignored such that *they don’t cause* this warning.
....
************ W A R N I N G ***********************************
THERE SEEMS TO BE SOMETHING WRONG WITH YOUR FIELD MAP file.t7.
_error_msg_
expecting: '_expecting_' on line 3,
found instead: '_found_'.
**************************************************************
....
Where `_error_msg_` is either
[cols="<,<",]
|=======================================================================
|`Didn’t find enough values!` |If _OPAL-t_ expects more values on this
line.
|`Found more values than expected!` |If _OPAL-t_ expects less values on
this line.
|`Found wrong type of values!` |If _OPAL-t_ found e.g. characters
instead of an integer number.
|=======================================================================
`_expecting_` is replaced by the types of values _OPAL-t_ expects on the
line. E.g. it could be replaced by `double double int`. Finally
`_found_` is replaced by the actual content of the line without any
comment possibly following the values. If line 3 of a file consists of
`-60.0 60.0 # This is an other invalid comment # 9999` _OPAL-t_ will
output `-60.0 60.0`.
....
************** W A R N I N G *********************************
DISABLING FIELD MAP file.t7 SINCE FILE COULDN'T BE FOUND!
**************************************************************
....
This warning could be issued if the file name is mistyped or otherwise
if the file couldn’t be read.
....
************ W A R N I N G **********************************
THERE SEEMS TO BE SOMETHING WRONG WITH YOUR FIELDMAP file.t7.
Could not determine the file type.
Please check the section about field maps in the user manual.
*************************************************************
....
In this case _OPAL-t_ didn’t recognize the string of characters which
identify the type of field map stored in the file.
For one-dimensional field maps an other warning may be issued:
....
* ************ W A R N I N G ***************************************************
* IT SEEMS THAT YOU USE TOO FEW FOURIER COMPONENTS TO SUFFICIENTLY WELL *
* RESOLVE THE FIELD MAP 'file.T7'. *
* PLEASE INCREASE THE NUMBER OF FOURIER COMPONENTS! *
* The ratio (f_i - F_i)^2 / F_i^2 is 0.019685 and *
* the ratio (max_i(|f_i - F_i|) / max_i(|F_i|) is 0.019023. *
* Here F_i is the field as in the field map and f_i is the reconstructed *
* field. *
* The lower limit for the two ratios is 1e-2 *
* ******************************************************************************
....
This warning is issued when the low pass filter that is applied to the
field sampling uses too few Fourier coefficients. In this case increase
the number of Fourier coefficients, see the next section for details.
The relevant criteria are that
latexmath:[\[\frac{\sum_{i=1}^N (F_{z,i} - \tilde{F}_{z,i})^2}{\sum_{i=1}^N F_{z,i}^2} \le 0.01,\]]
and
latexmath:[\[\frac{\max_i |F_{z,i} - \tilde{F}_{z,i}|}{\max_i |F_{z,i}|} \le 0.01,\]]
where latexmath:[$F_{z_i}$] is the field sampling as in the file and
latexmath:[$\tilde{F}_{z,i}$] is the one-dimensional field reconstructed
from the result received after applying the low pass filter.
[[sec:fieldmaps]]
Types and Format
~~~~~~~~~~~~~~~~
Field maps in _OPAL-t_ come in three basic types:
1. 2D or 3D field map. For this type of map, a field is specified on a
grid and linear interpolation is used to find field values at
intermediate points.
2. 1D on axis field map. For this type of map, one on-axis field
profile is specified. _OPAL-t_ calculates a Fourier series from this
profile and then uses the first, second and third derivatives of the
series to compute the off-axis field values. (This type of field is very
smooth numerically, but can be inaccurate far from the field axis.) Only
a few (user specified) terms from the Fourier series are used.
3. Enge function [enge] field map. This type of field map uses Enge
functions to describe the fringe fields of a magnet. Currently, this is
only used for `RBEND` and `SBEND` elements see Section [RBend,SBend].
It is important to note that in all cases, the input field map will be
normalized so that the peak field magnitude value on axis is equal to
either 1 MV/m in the case of electric field maps (static or dynamic), or
1 T in the case of magnetic field maps. (The sign of the values from the
field map are preserved.) Therefore, the field multiplier for the map in
your simulation will be the peak field value on axis in those respective
units.
Depending on the field map type, _OPAL-t_ uses different length units
(either cm or meters). This is due to the origin programs of the field
maps used (e.g. Poisson/Superfish [superfish] uses cm). So be careful.
There are no required field extensions for any _OPAL-t_ field map (e.g.
.T7, .dat etc.). _OPAL-t_ determines the type of field map by a string
descriptor which is the first element on the first line of the file.
Below we list the possible descriptors. (Note that we list all of the
descriptors/field map types that we plan to eventually implement. Not
all of them are, which is indicated in the description.)
1DElectroStatic::
1D electrostatic field map. 1D field maps are described by the on-axis
field. +
*_Not implemented yet_*. A work around is to use a 1DDynamic field map
with a very low frequency.
1DMagnetoStatic::
1D magnetostatic field map. See Section [1DMagnetoStatic].
AstraMagnetoStatic::
1D magnetostatic field map with possibly non-equidistant sampling.
This file type is compatible with ASTRA field maps with small changes.
See Section [ AstraMagnetostatic].
1DDynamic::
1D dynamic electromagnetic field map. See Section [1DDynamic].
AstraDynamic::
1D dynamic electromagnetic field map with possibly non-equidistant
sampling. This file type is compatible with ASTRA field maps with
small changes. See Section [AstraDynamic].
1DProfile1::
This type of field map specifies the Enge functions (see [enge]) for
the entrance and exit fringe fields of a magnet. Currently this type
of field map is only used by `RBEND` and `SBEND` elements
see Section [RBend,SBend]. See Section [1DProfile1].
2DElectroStatic::
2D electrostatic field map. 2D field maps are described by the
electromagnetic field in one half-plane. See
Section [2DElectroStatic].
2DMagnetoStatic::
2D magnetostatic field map. Other than this descriptor at the head of
the file, the format for this field map type is identical to the T7
file format as produced by Poisson [superfish]. See
Section [2DMagnetoStatic].
2DDynamic::
2D dynamic electromagnetic field map. Other than this descriptor at
the head of the file, the format for this field map type is identical
to the T7 field format as produced by Superfish [superfish]. See
Section [2DDynamic].
3DElectroStatic::
3D electrostatic field map. +
*_Not implemented yet_*.
3DMagnetoStatic::
3D magnetostatic field map, see Section [3DMagnetoStatic].
3DMagnetoStatic_Extended::
2D magnetostatic field map of field on mid-plane that _OPAL_ extends
to 3D.
3DDynamic::
3D dynamic electromagnetic field map. See Section [3DDynamic].
We will give examples and descriptions of each of the implemented field
map types in the sections below.
[[sec:fieldorientation]]
Field Map Orientation
~~~~~~~~~~~~~~~~~~~~~
In the case of 2D and 3D field maps an additional string has to be
provided describing the orientation of the field map.
For 2D field maps this can either be
XZ::
if the primary direction is in z direction and the secondary in r
direction.
ZX::
if the primary direction is in r direction and the secondary in z
direction.
For 3D field maps this can be
XYZ::
if the primary direction is in z direction, the secondary in y
direction and the tertiary in x direction
Each line after the header corresponds to a grid point of the field map.
This point can be referred to by two indices in the case of a 2D field
map and three indices in the case of a 3D field map, respectively. Each
column describes either
latexmath:[$E_z,\; E_r,\; B_z,\; B_r\; \text{or}\;H_{\phi}$] in the 2D
case and latexmath:[$E_x\;, E_y\;, E_z,\; B_x,\; B_y,\;B_z$] in the 3D
case.
By primary, secondary and tertiary direction is meant the following (see
also Figure [order1] and Figure [order2]):
* The index of the primary direction increases the fastest, the index of
the tertiary direction the slowest.
* The order of the columns is accordingly: if the z direction in an 2D
electrostatic field map is the primary direction then latexmath:[$E_z$]
is on the first column, latexmath:[$E_r$] on the second. For all other
cases it’s analogous.
* For the 2D dynamic case in XZ orientation there are four columns:
latexmath:[$E_z$], latexmath:[$E_r$], latexmath:[$|E|$] (unused) and
latexmath:[$H_{\phi}$] in that order. In the other orientations the
first and the second columns are interchanged ,but the third and fourth
columns are unchanged.
[fig:order1] image:./figures/Fieldmaps/order-1.png[Ordering of points
for 2D field maps in T7 files,title="fig:",scaledwidth=45.0%]
[fig:order2] image:./figures/Fieldmaps/order-2.png[Ordering of points
for 2D field maps in T7 files,title="fig:",scaledwidth=45.0%]
[[sec:fastattribute]]
FAST Attribute for 1D Field Maps
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For some 1D field maps, there exists a Boolean attribute, `FAST`, which
can be used to speed up the calculation. When set to true
(`FAST = TRUE`), _OPAL-t_ will generate a 2D internal field map and then
use bi-linear interpolation to calculate field values during the
simulation, rather than the generally slower Fourier coefficient
technique. The caution here is that this can introduce unwanted
numerical noise if you set the grid spacing too coarse for the 2D map.
As a general warning: be wise when you choose the type of field map to
be used! Figure [fieldnoiseexample] shows three pictures of the
longitudinal phase space after three gun simulations using different
types of field maps. In the first picture, Figure [1ddynamic_step82], we
used a 1DDynamic field map see Section [1DDynamic] resulting in a smooth
longitudinal distribution. In Figure [1ddynamic_fast_step82] we set the
`FAST` attribute to true, resulting in some fine structure in the phase
space due to the bi-linear interpolation of the internally generated 2D
field map. Finally, in the last figure (Figure [2ddynamic_step82]), we
generated directly a 2D field map from Superfish [superfish]. Here we
could observe two different structures: first the fine structure,
stemming from the bi-linear interpolation, and secondly a much stronger
structure of unknown origin, but presumably due to errors in the
Superfish [superfish] interpolation algorithm.
image:./figures/Fieldmaps/1DDynamic_step82.png[The longitudinal phase
space after a gun simulation using a 1D field map (on-axis field) of the
gun, a 1D field map (on-axis field) of the gun in combination with the
`FAST` switch, and a 2D field map of the gun generated by
Superfish [superfish].,title="fig:",scaledwidth=32.0%]
image:./figures/Fieldmaps/1DDynamic_fast_step82.png[The longitudinal
phase space after a gun simulation using a 1D field map (on-axis field)
of the gun, a 1D field map (on-axis field) of the gun in combination
with the `FAST` switch, and a 2D field map of the gun generated by
Superfish [superfish].,title="fig:",scaledwidth=32.0%]
image:./figures/Fieldmaps/2DDynamic_step82.png[The longitudinal phase
space after a gun simulation using a 1D field map (on-axis field) of the
gun, a 1D field map (on-axis field) of the gun in combination with the
`FAST` switch, and a 2D field map of the gun generated by
Superfish [superfish].,title="fig:",scaledwidth=32.0%]
[[sec:1DMagnetoStatic]]
1DMagnetoStatic
~~~~~~~~~~~~~~~
....
1DMagnetoStatic 40
-60.0 60.0 9999
0.0 2.0 199
0.00000e+00
4.36222e-06
8.83270e-06
+ 9'994 lines
1.32490e-05
1.73710e-05
2.18598e-05
....
A 1D field map describing a magnetostatic field using 10000 grid points
(9999 grid spacings) in the longitudinal direction. The field is
non-negligible from -60.0cm to +60.0cm relative to `ELEMEDGE` in the
longitudinal direction. From the 10000 field values, 5000 complex
Fourier coefficients are calculated. However, only 40 are kept when
calculating field values during a simulation. _OPAL-t_ normalizes the
field values internally such that
latexmath:[$\max(|B_{\text{on axis}}|) = {1.0}{T}$]. If the `FAST`
attribute is set to true in the input deck, a 2D field map is generated
internally with 200 values in the radial direction, from 0cm to 2cm, for
each longitudinal grid point.
.Layout of a `1DMagnetoStatic` field map file.
[cols="<,<,<",]
|=======================================================================
|1DMagnetoStatic |latexmath:[$N_{Fourier}$] |TRUE | FALSE (optional)
|latexmath:[$z_{start}$] (in cm) |latexmath:[$z_{end}$] (in cm)
|latexmath:[$N_{z}$]
|latexmath:[$r_{start}$] (in cm) |latexmath:[$r_{end}$] (in cm)
|latexmath:[$N_{r}$]
|latexmath:[$B_{z,\,1}$] (T) | |
|latexmath:[$B_{z,\,2}$] (T) | |
|. | |
|. | |
|. | |
|latexmath:[$B_{z,\,N_{z} + 1}$] (T) | |
|=======================================================================
A `1DMagnetoStatic` field map has the general form shown in
Table [1DMagnetoStatic]. The first three lines form the file header and
tell _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`1DMagnetoStatic`)
and how many Fourier coefficients to keep (latexmath:[$N_{Fourier}$])
when doing field calculations.
Line 2::
This tells gives the extent of the field map (from
latexmath:[$z_{start}$] to latexmath:[$z_{end}$]) relative to the
`ELEMEDGE` of the field map, and how many grid spacings there are in
the field map.
Line 3::
If one sets `FAST = TRUE` for the field map, this tells _OPAL-t_ the
radial extent of the internally generated 2D field map. Otherwise this
line is ignored. (Although it must always be present.)
The lines following the header give the 1D field map grid values from
latexmath:[$1$] to latexmath:[$N_{z} + 1$]. From these,
latexmath:[$N_{z}/2$] complex Fourier coefficients are calculated, of
which only latexmath:[$N_{Fourier}$] are used when finding field values
during the simulation.
Figure [1DMagnetoStatic] gives an example of a `1DMagnetoStatic` field
file.
[[sec:AstraMagnetostatic]]
AstraMagnetostatic
~~~~~~~~~~~~~~~~~~
....
AstraMagnetostatic 40
-3.0000000e-01 0.0000000e+00
-2.9800000e-01 2.9075045e-05
-2.9600000e-01 5.9367702e-05
-2.9400000e-01 9.0866460e-05
-2.9200000e-01 1.2374798e-04
-2.9000000e-01 1.5799850e-04
...
2.9000000e-01 1.5799850e-04
2.9200000e-01 1.2374798e-04
2.9400000e-01 9.0866460e-05
2.9600000e-01 5.9367702e-05
2.9800000e-01 2.9075045e-05
3.0000000e-01 0.0000000e+00
....
A 1D field map describing a magnetostatic field using latexmath:[$N$]
non-equidistant grid points in the longitudinal direction. From these
values latexmath:[$N$] equidistant field values are computed from which
in turn latexmath:[$N/2$] complex Fourier coefficients are calculated.
In this example only 40 Fourier coefficients are kept when calculating
field values during a simulation. The z-position of each field sampling
is in the first column (in meters), the corresponding longitudinal
on-axis magnetic field amplitude is in the second column. As with the
1DMagnetoStatic see Section [1DMagnetoStatic] field maps, _OPAL-t_
normalizes the field values to
latexmath:[$\max(|B_{\text{on axis}}|) = {1.0}{T}$]. In the header only
the first line is needed since the information on the longitudinal
dimension is contained in the first column of the data. (_OPAL-t_ does
not provide a `FAST` version of this map type.)
.Layout of an `AstraMagnetoStatic` field map file.
[cols="<,<,<",]
|======================================================================
|AstraMagnetoStatic |latexmath:[$N_{Fourier}$] |TRUE | FALSE (optional)
|latexmath:[$z_{1}$] (in meters) |latexmath:[$B_{z,\,1}$] (T) |
|latexmath:[$z_{2}$] (in meters) |latexmath:[$B_{z,\,s}$] (T) |
|. | |
|. | |
|. | |
|latexmath:[$z_{N}$] (in meters) |latexmath:[$B_{z,\,N}$] (T) |
|======================================================================
An `AstraMagnetoStatic` field map has the general form shown in
Table [AstraMagnetoStatic]. The first line forms the file header and
tells _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is
(`AstraMagnetoStatic`) and how many Fourier coefficients to keep
(latexmath:[$N_{Fourier}$]) when doing field calculations.
The lines following the header gives latexmath:[$N$] non-equidistant
field values and their corresponding latexmath:[$z$] positions (relative
to `ELEMEDGE`). From these, _OPAL-t_ will use cubic spline interpolation
to find latexmath:[$N$] equidistant field values within the range
defined by the latexmath:[$z$] positions. From these equidistant field
values, latexmath:[$N/2$] complex Fourier coefficients are calculated,
of which only latexmath:[$N_{Fourier}$] are used when finding field
values during the simulation.
Figure [AstraMagnetoStatic] gives an example of an `AstraMagnetoStatic`
field file.
[[sec:1DDynamic]]
1DDynamic
~~~~~~~~~
....
1DDynamic 40
-3.0 57.0 4999
1498.953425154
0.0 2.0 199
0.00000e+00
4.36222e-06
8.83270e-06
+ 4'994 lines
1.32490e-05
1.73710e-05
2.18598e-05
....
A 1D field map describing a dynamic field using 5000 grid points (4999
grid spacings) in the longitudinal direction. The field is
non-negligible from -3.0cm to 57.0cm relative to `ELEMEDGE` in the
longitudinal direction. The field frequency is 1498.953425154MHz. From
the 5000 field values, 2500 complex Fourier coefficients are calculated.
However, only 40 are kept when calculating field values during the
simulation. _OPAL-t_ normalizes the field values internally such that
latexmath:[$max(|E_{on axis}|) = {1}{MV/m}$]. If the `FAST` switch is
set to true in the input deck, a 2D field map is generated internally
with 200 values in the radial direction, from 0.0cm to 2.0cm, for each
longitudinal grid point.
.Layout of a `1DDynamic` field map file.
[cols="<,<,<",]
|=======================================================================
|1DDynamic |latexmath:[$N_{Fourier}$] |TRUE | FALSE (optional)
|latexmath:[$z_{start}$] (in cm) |latexmath:[$z_{end}$] (in cm)
|latexmath:[$N_{z}$]
|latexmath:[$Frequency$] (in MHz) | |
|latexmath:[$r_{start}$] (in cm) |latexmath:[$r_{end}$] (in cm)
|latexmath:[$N_{r}$]
|latexmath:[$E_{z,\,1}$] (MV/m) | |
|latexmath:[$E_{z,\,2}$] (MV/m) | |
|. | |
|. | |
|. | |
|latexmath:[$E_{z,\,N_{z} + 1}$] (MV/m) | |
|=======================================================================
A `1DDynamic` field map has the general form shown in Table [1DDynamic].
The first four lines form the file header and tell _OPAL-t_ how the
field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`1DDynamic`) and
how many Fourier coefficients to keep (latexmath:[$N_{Fourier}$]) when
doing field calculations.
Line 2::
This tells gives the extent of the field map (from
latexmath:[$z_{start}$] to latexmath:[$z_{end}$]) relative to the
`ELEMEDGE` of the field map, and how many grid spacings there are in
the field map.
Line 3::
Field frequency.
Line 4::
If one sets `FAST = TRUE` for the field map, this tells _OPAL-t_ the
radial extent of the internally generated 2D field map. Otherwise this
line is ignored. (Although it must always be present.)
The lines following the header give the 1D field map grid values from
latexmath:[$1$] to latexmath:[$N_{z} + 1$]. From these,
latexmath:[$N_{z}/2$] complex Fourier coefficients are calculated, of
which only latexmath:[$N_{Fourier}$] are used when finding field values
during the simulation.
Figure [1DDynamic] gives an example of a `1DDynamic` field file.
[[sec:AstraDynamic]]
AstraDynamic
~~~~~~~~~~~~
....
AstraDynamic 40
2997.924
0.0000000e+00 0.0000000e+00
5.0007941e-04 2.8090000e-04
9.9991114e-04 5.6553000e-04
1.4996762e-03 8.4103000e-04
...
1.9741957e-01 1.4295000e-03
1.9792448e-01 1.1306000e-03
1.9841987e-01 8.4103000e-04
1.9891525e-01 5.6553000e-04
1.9942016e-01 2.8090000e-04
1.9991554e-01 0.0000000e+00
....
A 1D field map describing a dynamic field using latexmath:[$N$]
non-equidistant grid points in longitudinal direction. From these
latexmath:[$N$] non-equidistant field values latexmath:[$N$] equidistant
field values are computed from which in turn latexmath:[$N/2$] complex
Fourier coefficients are calculated. In this example only 40 Fourier
coefficients are kept when calculating field values during the
simulation. The z-position of each sampling is in the first column (in
meters), the corresponding longitudinal on-axis electric field amplitude
is in the second column. _OPAL-t_ normalizes the field values such that
latexmath:[$\max(|E_{\text{on axis}}|) = {1}{MV/m}$]. The frequency of
this field is 2997.924MHz. (_OPAL-t_ does not provide a `FAST` version
of this map type.)
.Layout of an `AstraDynamic` field map file.
[cols="<,<,<",]
|======================================================================
|AstraMagnetoStatic |latexmath:[$N_{Fourier}$] |TRUE | FALSE (optional)
|latexmath:[$Frequency$] (in MHz) | |
|latexmath:[$z_{1}$] (in meters) |latexmath:[$E_{z,\,1}$] (MV/m) |
|latexmath:[$z_{2}$] (in meters) |latexmath:[$E_{z,\,s}$] (MV/m) |
|. | |
|. | |
|. | |
|latexmath:[$z_{N}$] (in meters) |latexmath:[$E_{z,\,N}$] (MV/m) |
|======================================================================
An `AstraDynamic` field map has the general form shown in
Table [AstraDynamic]. The first line forms the file header and tells
_OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`AstraDynamic`) and
how many Fourier coefficients to keep (latexmath:[$N_{Fourier}$]) when
doing field calculations.
Line 2::
Field frequency.
The lines following the header gives latexmath:[$N$] non-equidistant
field values and their corresponding latexmath:[$z$] positions (relative
to `ELEMEDGE`). From these, _OPAL-t_ will use cubic spline interpolation
to find latexmath:[$N$] equidistant field values within the range
defined by the latexmath:[$z$] positions. From these equidistant field
values, latexmath:[$N/2$] complex Fourier coefficients are calculated,
of which only latexmath:[$N_{Fourier}$] are used when finding field
values during the simulation.
Figure [AstraDynamic] gives an example of an `AstraDynamic` field file.
[[sec:1DProfile1]]
1DProfile1
~~~~~~~~~~
A `1DProfile1` field map is used to define Enge functions [enge] that
describe the fringe fields for the entrance and exit of a magnet:
latexmath:[\[F(z) = \frac{1}{1 + e^{\sum\limits_{n=0}^{N_{order}} c_{n} (z/D)^{n}}}\]]
where latexmath:[$D$] is the full gap of the magnet,
latexmath:[$N_{order}$] is the Enge function order and latexmath:[$z$]
is the distance from the Enge function origin perpendicular to the edge
of the magnet. The constants, latexmath:[$c_n$], and the Enge function
origin are fitted parameters chosen to best represent the fringe field
of the magnet being modeled.
A `1DProfile1` field map describes two Enge functions: one for the
magnet entrance and one for the magnet exit. An illustration of this is
shown in Figure [rbend_field_profile]. In the top part of the figure we
see a plot of the relative magnet field strength along the mid-plane for
a rectangular dipole magnet. To describe this field with a `1DProfile1`
field map, an Enge function is fit to the entrance fringe field between
_zbegin_entry_ and _zend_entry_ in the figure, using the indicated
entrance origin. Likewise, an Enge function is fit to the exit fringe
field between _zbegin_exit_ and _zend_exit_ using the indicated exit
origin. The parameters for these two Enge functions are subsequently
entered into a `1DProfile1` field map, as described below.
Currently, `1DProfile1` field maps are only implemented for `RBEND` and
`SBEND` elements see Section [RBend,SBend,opaltrbendsbendfields].
image:./figures/Fieldmaps/profile-1.png[Example of Enge functions
describing the entrance and exit fringe fields of a rectangular bend
magnet. The top part of the figure shows the relative field strength on
the mid-plane. The bottom part of the figure shows an example of a
particle trajectory through the magnet. Note that the magnet field is
naturally divided into three regions: entrance fringe field, central
field, and exit fringe field.]
A `1DProfile1` field map has the general form shown in
Table [1DProfile1]. The first three lines form the file header and tell
_OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`1DProfile1`), the
Enge coefficient order for the entrance fringe fields
(latexmath:[$N_{Enge\,Entrance}$]), the Enge coefficient order for the
exit fringe fields (latexmath:[$N_{Enge\,Exit}$]), and the gap of the
magnet.
Line 2::
The first three values on the second line are used to define the
extent of the fringe fields for the entrance region of the magnet.
This can be done two different ways as will be described below
see Section [1DProfile1Type1,1DProfile1Type2]. The fourth value on
line 2 is not currently used (but must still be present).
Line 3::
The first three values on the third line are used to define the extent
of the fringe fields for the exit region of the magnet. This can be
done two different ways as will be described below
see Section [1DProfile1Type1,1DProfile1Type2]. The fourth value on
line 3 is not currently used (but must still be present).
The lines following the three header lines give the entrance region Enge
coefficients from latexmath:[$c_0$] to
latexmath:[$c_{N_{Enge\,Entrance}}$], followed by the exit region Enge
coefficients from latexmath:[$c_0$] to latexmath:[$c_{N_{Enge\,Exit}}$].
There are two types of `1DProfile1` field map files: `1DProfile Type 1`
and `1DProfile1 Type 2`. The difference between the two is a small
change in how the entrance and exit fringe field regions are described.
This will be explained in Section [1DProfile1Type1] and
Section [1DProfile1Type2].
.Layout of a `1DProfile1` field map file.
[cols="<,<,<,<",]
|=======================================================================
|1DProfile1 |latexmath:[$N_{Enge\,Entrance}$]
|latexmath:[$N_{Enge\,Exit}$] |latexmath:[$Gap$] (in cm)
|Entrance Parameter 1 (in cm) |Entrance Parameter 2 (in cm) |Entrance
Parameter 3 |Place Holder
|Exit Parameter 1 (in cm) |Exit Parameter 2 (in cm) |Exit Parameter 3
|Place Holder
|latexmath:[$c_{0\, Entrance}$] | | |
|latexmath:[$c_{1\, Entrance}$] | | |
|. | | |
|. | | |
|. | | |
|latexmath:[$c_{N_{Enge\,Entrance}}$] | | |
|latexmath:[$c_{0\,Exit}$] | | |
|latexmath:[$c_{1\,Exit}$] | | |
|. | | |
|. | | |
|. | | |
|latexmath:[$c_{N_{Enge\,Exit}}$] | | |
|=======================================================================
image:./figures/Fieldmaps/RBendType1.png[Illustration of a rectangular
bend (`RBEND`, see Section [RBend]) showing the entrance and exit fringe
field regions. latexmath:[$\Delta_{1}$] is the perpendicular distance in
front of the entrance edge of the magnet where the magnet fringe fields
are non-negligible. latexmath:[$\Delta_{2}$] is the perpendicular
distance behind the entrance edge of the magnet where the entrance Enge
function stops being used to calculate the magnet field. The reference
trajectory entrance point is indicated by latexmath:[$O_{entrance}$].
latexmath:[$\Delta_{3}$] is the perpendicular distance in front of the
exit edge of the magnet where the exit Enge function starts being used
to calculate the magnet field. (In the region between
latexmath:[$\Delta_{2}$] and latexmath:[$\Delta_{3}$] the field of the
magnet is a constant value.) latexmath:[$\Delta_{4}$] is the
perpendicular distance after the exit edge of the magnet where the
magnet fringe fields are non-negligible. The reference trajectory exit
point is indicated by latexmath:[$O_{exit}$],scaledwidth=45.0%]
image:./figures/Fieldmaps/SBendType1.png[Illustration of a sector bend
(`SBEND`, see Section [SBend]) showing the entrance and exit fringe
field regions. latexmath:[$\Delta_{1}$] is the perpendicular distance in
front of the entrance edge of the magnet where the magnet fringe fields
are non-negligible. latexmath:[$\Delta_{2}$] is the perpendicular
distance behind the entrance edge of the magnet where the entrance Enge
function stops being used to calculate the magnet field. The reference
trajectory entrance point is indicated by latexmath:[$O_{entrance}$].
latexmath:[$\Delta_{3}$] is the perpendicular distance in front of the
exit edge of the magnet where the exit Enge function starts being used
to calculate the magnet field. (In the region between
latexmath:[$\Delta_{2}$] and latexmath:[$\Delta_{3}$] the field of the
magnet is a constant value.) latexmath:[$\Delta_{4}$] is the
perpendicular distance after the exit edge of the magnet where the
magnet fringe fields are non-negligible. The reference trajectory exit
point is indicated by latexmath:[$O_{exit}$].,scaledwidth=45.0%]
[[ssec:1DProfile1Type1]]
1DProfile1 Type 1 for Bend Magnet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A `1DProfile1 Type 1` field map is the same `1DProfile1` field map found
in versions of _OPAL_ previous to _OPAL_ __OPAL__version1.2.0 .
Figure [rbendengetype1,sbendengetype1] illustrate the fringe field
regions for an `RBEND` and an `SBEND` element. Referring to the general
field map file shown in Table [1DProfile1], the values on lines 2 and 3
are given by:
latexmath:[\[\begin{aligned}
Entrance\,Parameter\,1 &= Entrance\,Parameter\,2 - \Delta_{1} \\
Entrance\,Parameter\,3 &= Entrance\,Parameter\,2 + \Delta_{2} \\
Exit\,Parameter\,2 &= L - Entrance\,Parameter\,2 \\
Exit\,Parameter\,1 &= Exit\,Parameter\,2 - \Delta_{3} \\
Exit\,Parameter\,3 &= Exit\,Parameter\,2 + \Delta_{4}\end{aligned}\]]
The value of latexmath:[$Entrance\,Parameter\,2$] can be any value.
_OPAL_ only cares about the relative differences between parameters.
Also note that, internally, the origins of the entrance and exit Enge
functions correspond to the reference trajectory entrance and exit
points see Figure [rbendengetype1,sbendengetype1].
Internally, _OPAL_ reads in a `1DProfile Type 1` map and uses the
provided parameters to calculate the values of:
latexmath:[\[\begin{aligned}
L &= Exit\,Parameter\,2 - Entrance\,Parameter\,2 \\
\Delta_{1} &= Entrance\,Parameter\,2 - Entrance\,Parameter\,1 \\
\Delta_{2} &= Entrance\,Parameter\,3 - Entrance\,Parameter\,2 \\
\Delta_{3} &= Exit\,Parameter\,2 - Exit\,Parameter\,1 \\
\Delta_{4} &= Exit\,Parameter\,3 - Exit\,Parameter\,2\end{aligned}\]]
These values, combined with the entrance fringe field Enge coefficients
latexmath:[$c_0$] through latexmath:[$c_{N_{Enge_Entrance}}$] and exit
fringe field Enge coefficients latexmath:[$c_0$] through
latexmath:[$c_{N_{Enge_Exit}}$], allow _OPAL_ to find field values
anywhere within the magnet. (Again, note that a `1DProfile Type 1` map
always places the entrance Enge function origin at the entrance point of
the reference trajectory and the exit Enge function origin at the exit
point of the reference trajectory.)
Figure [1DProfile1Type1] shows an example of a `1DProfile1 Type 1` field
map file.
....
1DProfile1 6 7 3.0
-6.0 -2.0 2.0 1000
24.0 28.0 32.0 0
0.00000e+00
4.36222e-06
8.83270e-06
+ 9 lines
1.32490e-05
1.73710e-05
2.18598e-05
....
A 1D field map describing the fringe field of an element using 7 Enge
coefficients for the entrance fringe field and 8 Enge coefficients for
the exit fringe field (polynomial order 6 and 7 respectively). The
element has a gap height of 3.0cm, and a length of 30.0cm. The entrance
fringe field is non-negligible from 4.0cm in front of the magnet’s
entrance edge and reaches the core strength at 4.0cm behind the entrance
edge of the magnet. (The entrance edge position is given by the
element’s `ELEMEDGE` attribute.) The exit fringe field region begins
4.0cm in front of the exit edge of the magnet and is non-negligible
4.0cm after the exit edge of the magnet. The value 1000 at the end of
line 2 and 0 at the end of line 3 do not have any meaning.
[[ssec:1DProfile1Type2]]
1DProfile1 Type 2 for Bend Magnet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The `1DProfile1 Type 2` field map file format was introduced in _OPAL_
__OPAL__version1.2.0 to allow for more flexibility when defining the
Enge functions for the entrance and exit fringe fields. Specifically, a
`1DProfile1 Type 2` map does not contain any information about the
length of the magnet. Instead, that value is set using the element’s `L`
attribute. In turn, this allows us the freedom to make slight changes to
how the parameters on lines 2 and 3 of the field map file shown in
Table [1DProfile1] are defined. Now
latexmath:[\[\begin{aligned}
Entrance\,Parameter\,2 &= \perp \text{distance of entrance Enge function origin from magnet entrance edge} \\
Exit\,Parameter\,2 &= \perp \text{distance of exit Enge function origin from magnet exit edge}\end{aligned}\]]
The other parameters are defined the same as before:
latexmath:[\[\begin{aligned}
Entrance\,Parameter\,1 &= Entrance\,Parameter\,2 - \Delta_{1} \\
Entrance\,Parameter\,3 &= Entrance\,Parameter\,2 + \Delta_{2} \\
Exit\,Parameter\,1 &= Exit\,Parameter\,2 - \Delta_{3} \\
Exit\,Parameter\,3 &= Exit\,Parameter\,2 + \Delta_{4}\end{aligned}\]]
As before, internally, _OPAL_ reads in a `1DProfile Type 2` map and uses
the provided parameters to calculate the values of:
latexmath:[\[\begin{aligned}
\Delta_{1} &= Entrance\,Parameter\,2 - Entrance\,Parameter\,1 \\
\Delta_{2} &= Entrance\,Parameter\,3 - Entrance\,Parameter\,2 \\
\Delta_{3} &= Exit\,Parameter\,2 - Exit\,Parameter\,1 \\
\Delta_{4} &= Exit\,Parameter\,3 - Exit\,Parameter\,2\end{aligned}\]]
These values, combined with the length of the magnet, `L` ( set by the
element attribute) and the entrance fringe field Enge coefficients
latexmath:[$c_0$] through latexmath:[$c_{N_{Enge_Entrance}}$] and exit
fringe field Enge coefficients latexmath:[$c_0$] through
latexmath:[$c_{N_{Enge_Exit}}$], allow _OPAL_ to find field values
anywhere within the magnet.
The `1DProfile1 Type 2` field map file format has two main advantages:
1. The Enge function origins can be adjusted to more accurately model a
magnet’s fringe fields as they are no longer fixed to the entrance and
exit points of the reference trajectory.
2. Two magnets with the same fringe fields, but different lengths, can
be modeled with a single `1DProfile Type 2` field map file rather than
two separate files.
Figure [1DProfile1Type2] shows an example of a `1DProfile1 Type 2` field
map file.
....
1DProfile1 6 7 3.0
-6.0 -2.0 2.0 0
-2.0 2.0 6.0 0
0.00000e+00
4.36222e-06
8.83270e-06
+ 9 lines
1.32490e-05
1.73710e-05
2.18598e-05
....
A 1D field map describing the fringe field of an element using 7 Enge
coefficients for the entrance fringe field and 8 Enge coefficients for
the exit fringe field (polynomial order 6 and 7 respectively). The
element has a gap height of 3.0cm. The entrance fringe field is
non-negligible from 4.0cm in front of the magnet’s entrance edge and
reaches the core strength at 4.0cm behind the entrance edge of the
magnet. The exit fringe field region begins 4.0cm in front of the exit
edge of the magnet and is non-negligible 4.0cm after the exit edge of
the magnet. The value 0 at the end of line 2 and 0 at the end of line 3
do not have any meaning. The entrance Enge function origin is 2.0cm in
front (upstream) of the magnet’s entrance edge. The exit Enge function
origin is 2.0cm behind (downstream of) the exit edge of the magnet.
[[sec:2DElectroStatic]]
2DElectroStatic
~~~~~~~~~~~~~~~
....
2DElectroStatic XZ
-3.0 51.0 4999
0.0 2.0 199
0.00000e+00 0.00000e+00
4.36222e-06 0.00000e+00
8.83270e-06 0.00000e+00
+ 999994 lines
1.32490e-05 0.00000e+00
1.73710e-05 0.00000e+00
2.18598e-05 0.00000e+00
....
A 2D field map describing an electrostatic field using 5000 grid points
in the longitudinal direction times 200 grid points in the radial
direction. The field between the grid points is calculated using
bi-linear interpolation. The field is non-negligible from -3.0cm to
51.0cm relative to `ELEMEDGE` and the 200 grid points in the radial
direction span the distance from 0.0cm to 2.0cm. The field values are
ordered in XZ orientation, so the index in the longitudinal direction
changes fastest and therefore latexmath:[$E_z$] values are stored in the
first column and latexmath:[$E_r$] values in the second
see Section [fieldorientation]. _OPAL-t_ normalizes the field so that
latexmath:[$max(|E_{z, \text{ on axis}}|) = {1}{MVm^{-1}}$].
.Layout of a `2DElectroStatic` field map file.
[cols="<,<,<",]
|=======================================================================
|2DElectroStatic |Orientation (XZ or ZX) |TRUE | FALSE (optional)
|latexmath:[$z_{start}$] (or latexmath:[$r_{start}$]) (in cm)
|latexmath:[$z_{end}$] (or latexmath:[$r_{end}$]) (in cm)
|latexmath:[$N_{z}$] (or latexmath:[$N_{r}$])
|latexmath:[$r_{start}$] (or latexmath:[$z_{start}$]) (in cm)
|latexmath:[$r_{end}$] (or latexmath:[$z_{end}$]) (in cm)
|latexmath:[$N_{r}$] (or latexmath:[$N_{z}$])
|latexmath:[$E_{z,\,1}$] (or latexmath:[$E_{r,\,1}$]) (MV/m)
|latexmath:[$E_{r,\,1}$] (or latexmath:[$E_{z,\,1}$]) (MV/m) |
|latexmath:[$E_{z,\,2}$] (or latexmath:[$E_{r,\,2}$]) (MV/m)
|latexmath:[$E_{r,\,2}$] (or latexmath:[$E_{z,\,2}$]) (MV/m) |
|. | |
|. | |
|. | |
|latexmath:[$E_{z,\,N}$] (or latexmath:[$E_{r,\,N}$]) (MV/m)
|latexmath:[$E_{r,\,N}$] (or latexmath:[$E_{z,\,N}$]) (MV/m) |
|=======================================================================
A `2DElectroStatic` field map has the general form shown in
Table [2DElectroStatic]. The first three lines form the file header and
tell _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`2DElectroStatic`)
and the field orientation see Section [fieldorientation].
Line 2::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing index direction
see Section [fieldorientation].
Line 3::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing index direction (see
Section [fieldorientation].
The lines following the header give the 2D field map grid values from
latexmath:[$1$] to latexmath:[$N = (N_{z} + 1) \times (N_{r} + 1)$]. The
order of these depend on the field orientation
see Section [fieldorientation] and can be one of two formats:
If Orientation = XZ:::
latexmath:[$E_{z}$] (MV/m) latexmath:[$E_{r}$] (MV/m)
If Orientation = ZX:::
latexmath:[$E_{r}$] (MV/m) latexmath:[$E_{z}$] (MV/m)
Figure [2DElectroStatic] gives an example of a `2DElectroStatic` field
file.
[[sec:2DMagnetoStatic]]
2DMagnetoStatic
~~~~~~~~~~~~~~~
....
2DMagnetoStatic ZX
0.0 2.0 199
-3.0 51.0 4999
0.00000e+00 0.00000e+00
0.00000e+00 4.36222e-06
0.00000e+00 8.83270e-06
+ 999994 lines
0.00000e+00 1.32490e-05
0.00000e+00 1.73710e-05
0.00000e+00 2.18598e-05
....
A 2D field map describing a magnetostatic field using 5000 grid points
in the longitudinal direction times 200 grid points in the radial
direction. The field between the grid points is calculated using
bi-linear interpolation. The field is non-negligible from -3.0cm to
51.0cm relative to `ELEMEDGE` and the 200 grid points in the radial
direction span the distance from 0.0cm to 2.0cm. The field values are
ordered in the ZX orientation, so the index in the radial direction
changes fastest and therefore latexmath:[$B_r$] values are stored in the
first column and latexmath:[$B_z$] values in the second
see Section [fieldorientation]. _OPAL-t_ normalizes the field so that
latexmath:[$max(|B_{z,\text{ on axis}}|) = {1}{T}$].
.Layout of a `2DMagnetoStatic` field map file.
[cols="<,<,<",]
|=======================================================================
|2DMagnetoStatic |Orientation (XZ or ZX) |TRUE | FALSE (optional)
|latexmath:[$z_{start}$] (or latexmath:[$r_{start}$]) (in cm)
|latexmath:[$z_{end}$] (or latexmath:[$r_{end}$]) (in cm)
|latexmath:[$N_{z}$] (or latexmath:[$N_{r}$])
|latexmath:[$r_{start}$] (or latexmath:[$z_{start}$]) (in cm)
|latexmath:[$r_{end}$] (or latexmath:[$z_{end}$]) (in cm)
|latexmath:[$N_{r}$] (or latexmath:[$N_{z}$])
|latexmath:[$B_{z,\,1}$] (or latexmath:[$B_{r,\,1}$]) (T)
|latexmath:[$B_{r,\,1}$] (or latexmath:[$B_{z,\,1}$]) (T) |
|latexmath:[$B_{z,\,2}$] (or latexmath:[$B_{r,\,2}$]) (T)
|latexmath:[$B_{r,\,2}$] (or latexmath:[$B_{z,\,2}$]) (T) |
|. | |
|. | |
|. | |
|latexmath:[$B_{z,\,N}$] (or latexmath:[$B_{r,\,N}$]) (T)
|latexmath:[$B_{r,\,N}$] (or latexmath:[$B_{z,\,N}$]) (T) |
|=======================================================================
A `2MagnetoStatic` field map has the general form shown in
Table [2DMagnetoStatic]. The first three lines form the file header and
tell _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`2DMagnetoStatic`)
and the field orientation see Section [fieldorientation].
Line 2::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing index direction
see Section [fieldorientation].
Line 3::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing index direction (see
Section [fieldorientation].
The lines following the header give the 2D field map grid values from
latexmath:[$1$] to latexmath:[$N = (N_{z} + 1) \times (N_{r} + 1)$]. The
order of these depend on the field orientation
see Section [fieldorientation] and can be one of two formats:
If Orientation = XZ:::
latexmath:[$B_{z}$] (T) latexmath:[$B_{r}$] (T)
If Orientation = ZX:::
latexmath:[$B_{r}$] (T) latexmath:[$B_{z}$] (T)
Figure [2DMagnetoStatic] gives an example of a `2DMagnetoStatic` field
file.
[[sec:2DDynamic]]
2DDynamic
~~~~~~~~~
....
2DDynamic XZ
-3.0 51.0 4121
1498.953425154
0.0 1.0 75
0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00
4.36222e-06 0.00000e+00 0.00000e+00 4.36222e-06
8.83270e-06 0.00000e+00 0.00000e+00 8.83270e-06
+ 313266 lines
1.32490e-05 0.00000e+00 0.00000e+00 1.32490e-05
1.73710e-05 0.00000e+00 0.00000e+00 1.73710e-05
2.18598e-05 0.00000e+00 0.00000e+00 2.18598e-05
....
A 2D field map describing a dynamic field oscillating with a frequency
of 1498.953425154MHz. The field map provides 4122 grid points in the
longitudinal direction times 76 grid points in radial direction. The
field between the grid points is calculated with a bi-linear
interpolation. The field is non-negligible between -3.0cm and 51.0cm
relative to `ELEMEDGE` and the 76 grid points in radial direction span
the distance from 0.0cm to 1.0cm. The field values are ordered in the XZ
orientation, so the index in the longitudinal direction changes fastest
and therefore latexmath:[$E_z$] values are stored in the first column
and latexmath:[$E_r$] values in the second. The third column contains
the electric field magnitude, latexmath:[$|E|$], and is not used (but
must still be included). The fourth column is latexmath:[$H_{\phi}$] in
A/m. The third and fourth columns are always the same and do not depend
on the field orientation see Section [fieldorientation]. _OPAL-t_
normalizes the field so that
latexmath:[$max(|E_{z,\text{ on axis}}|) = {1}{MVm^{-1}}$].
.Layout of a `2DDynamic` field map file.
[cols="<,<,<,<",]
|=======================================================================
|2DDynamic |Orientation (XZ or ZX) |TRUE | FALSE (optional) |
|latexmath:[$z_{start}$] (or latexmath:[$r_{start}$]) (in cm)
|latexmath:[$z_{end}$] (or latexmath:[$r_{end}$]) (in cm)
|latexmath:[$N_{z}$] (or latexmath:[$N_{r}$]) |
|latexmath:[$Frequency$] (in MHz) | | |
|latexmath:[$r_{start}$] (or latexmath:[$z_{start}$]) (in cm)
|latexmath:[$r_{end}$] (or latexmath:[$z_{end}$]) (in cm)
|latexmath:[$N_{r}$] (or latexmath:[$N_{z}$]) |
|latexmath:[$E_{z,\,1}$] (or latexmath:[$E_{r,\,1}$]) (MV/m))
|latexmath:[$E_{r,\,1}$] (or latexmath:[$E_{z,\,1}$]) (MV/m)
|latexmath:[$|E_1|$] (MV/m) |latexmath:[$H_{\phi,\,1}$] (A/m)
|latexmath:[$E_{z,\,2}$] (or latexmath:[$E_{r,\,2}$]) (MV/m))
|latexmath:[$E_{r,\,2}$] (or latexmath:[$E_{z,\,2}$]) (MV/m)
|latexmath:[$|E_2|$] (MV/m) |latexmath:[$H_{\phi,\,2}$] (A/m)
|. | | |
|. | | |
|. | | |
|latexmath:[$E_{z,\,N}$] (or latexmath:[$E_{r,\,N}$]) (MV/m))
|latexmath:[$E_{r,\,N}$] (or latexmath:[$E_{z,\,N}$]) (MV/m)
|latexmath:[$|E_N|$] (MV/m) |latexmath:[$H_{\phi,\,N}$] (A/m)
|=======================================================================
A `2DDynamic` field map has the general form shown in Table [2DDynamic].
The first four lines form the file header and tell _OPAL-t_ how the
field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`2DDynamic`) and
the field orientation see Section [fieldorientation].
Line 2::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing index direction
see Section [fieldorientation].
Line 3::
Field frequency.
Line 4::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing index direction
see Section [fieldorientation].
The lines following the header give the 2D field map grid values from
latexmath:[$1$] to latexmath:[$N= (N_{z} + 1) \times (N_{r} + 1)$]. The
order of these depend on the field orientation
see Section [fieldorientation] and can be one of two formats:
If Orientation = XZ:::
latexmath:[$E_{z}$] (MV/m) latexmath:[$E_{r}$] (MV/m)
latexmath:[$|E|$] (MV/m) latexmath:[$H_{\phi}$] (A/m)
If Orientation = ZX:::
latexmath:[$E_{r}$] (MV/m) latexmath:[$E_{z}$] (MV/m)
latexmath:[$|E|$] (MV/m) latexmath:[$H_{\phi}$] (A/m)
The third item (the field magnitude) on each data line is not used by
_OPAL-t_, but must be there.
Figure [2DDynamic] gives an example of a `2DDynamic` field file.
[[sec:3DMagnetoStatic]]
3DMagnetoStatic
~~~~~~~~~~~~~~~
....
3DMagnetoStatic
-1.5 1.5 227
-1.0 1.0 151
-3.0 51.0 4121
0.00e+00 0.00e+00 0.00e+00
0.00e+00 4.36e-06 0.00e+00
0.00e+00 8.83e-06 0.00e+00
+ 142'852'026 lines
0.00e+00 1.32e-05 0.00e+00
0.00e+00 1.73e-05 0.00e+00
0.00e+00 2.18e-05 0.00e+00
....
A 3D field map describing a magnetostatic field. The field map provides
4122 grid points in z-direction times 228 grid points in x-direction and
152 grid points in y-direction. The field between the grid points is
calculated with a tri-linear interpolation. The field is non-negligible
between -3.0cm to 51.0cm relative to `ELEMEDGE`, the 228 grid points in
x-direction range from -1.5cm to 1.5cm and the 152 grid points in
y-direction range from -1.0cm to 1.0cm relative to the design path. The
field values are ordered such that the index in z-direction changes
fastest, then the index in y-direction while the index in x-direction
changes slowest. The columns correspond to latexmath:[$B_x$],
latexmath:[$B_y$] and latexmath:[$B_z$].
.Layout of a `3DMagnetoStatic` field map file.
[cols="<,<,<,<,<,<",]
|=======================================================================
|3DMagnetoStatic |TRUE | FALSE (optional) | | | |
|latexmath:[$x_{start}$] (in cm) |latexmath:[$x_{end}$] (in cm)
|latexmath:[$N_{x}$] | | |
|latexmath:[$y_{start}$] (in cm) |latexmath:[$y_{end}$] (in cm)
|latexmath:[$N_{y}$] | | |
|latexmath:[$z_{start}$] (in cm) |latexmath:[$z_{end}$] (in cm)
|latexmath:[$N_{z}$] | | |
|latexmath:[$B_{x,\,1}$] (A/m) |latexmath:[$B_{y,\,1}$] (A/m)
|latexmath:[$B_{z,\,1}$] (A/m) | | |
|latexmath:[$B_{x,\,2}$] (A/m) |latexmath:[$B_{y,\,2}$] (A/m)
|latexmath:[$B_{z,\,2}$] (A/m) | | |
|. | | | | |
|. | | | | |
|. | | | | |
|latexmath:[$B_{x,\,N}$] (A/m) |latexmath:[$B_{y,\,N}$] (A/m)
|latexmath:[$B_{z,\,N}$] (A/m) | | |
|=======================================================================
A `3DMagnetoStatic` field map has the general form shown in
Table [3DMagnetoStatic]. The first five lines form the file header and
tell _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`3DMagnetoStatic`).
Line 3::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing index direction.
Line 4::
This gives the extent of the field map and how many grid spacings
there are in the next fastest changing index direction.
Line 5::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing index direction.
The lines following the header give the 3D field map grid values from
latexmath:[$1$] to
latexmath:[$N= (N_{z} + 1) \times (N_{y} + 1) \times (N_{x} + 1)$].
Figure [3DMagnetoStatic] gives an example of a `3DMagnetoStatic` field
file.
[[sec:3DMagnetoStatic_Extended]]
3DMagnetoStatic_Extended
~~~~~~~~~~~~~~~~~~~~~~~~
....
3DMagnetoStatic_Extended
-9.9254 9.9254 133
-2.0 1.0 15
-22.425 47.425 465
-8.10970000e-05
-8.38540000e-05
-8.64960000e-05
+ 62'438 lines
-8.64960000e-05
-8.38540000e-05
-8.10970000e-05
....
A 3D field map describing a magnetostatic field on the mid-plane. The
field map provides 466 grid points in z-direction times 134 grid points
in x-direction. The field is non-negligible between -22.425cm to
47.425cm relative to `ELEMEDGE`, the 134 grid points in x-direction
range from -9.9254cm to 9.9254cm. The field should be integrated using
Maxwell’s equations from the mid-plane to 2.0cm using 16 grid points.
The mid-plane is regarded as a perfect magnetic conductor (PMC) i.e. the
magnetic field on the mid-plane has no tangential component. This leads
to a symmetry where the perpendicular component is mirrored whereas the
tangential component is anti-parallel. Instead of integrating the field
from the mid-plane to -2.0cm and 1.0cm we only integrate it to +2.0cm
and store only the upper half of the field map. For positions
latexmath:[$R(x,\;-y,\;z)$] with latexmath:[$y > 0.0$] the correct field
can then be derived from the latexmath:[$R(x,\;y,\;z)$].
.Layout of a `3DMagnetoStatic_Extended` field map file.
[cols="<,<,<",]
|=======================================================================
| |TRUE | FALSE (optional) |
|latexmath:[$x_{start}$] (in cm) |latexmath:[$x_{end}$] (in cm)
|latexmath:[$N_{x}$]
|latexmath:[$y_{start}$] (in cm) |latexmath:[$y_{end}$] (in cm)
|latexmath:[$N_{y}$]
|latexmath:[$z_{start}$] (in cm) |latexmath:[$z_{end}$] (in cm)
|latexmath:[$N_{z}$]
|latexmath:[$B_{y,\,1}$] (T) | |
|latexmath:[$B_{y,\,2}$] (T) | |
|. | |
|. | |
|. | |
|latexmath:[$B_{y,\,N}$] (T) | |
|=======================================================================
A `3DMagnetoStatic_Extended` field map has the general form shown in
Table [3DMagnetoStatic_Extended]. The first four lines form the file
header and tell _OPAL-t_ how the field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is
(`3DMagnetoStatic_Extended`).
Line 2::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing direction.
Line 3::
This gives the extent of the field map and how many grid spacings
there are in the next fastest changing direction.
Line 4::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing direction.
The lines following the header give the 3D field map grid values from
latexmath:[$1$] to latexmath:[$N= (N_{z} + 1) \times (N_{x} + 1)$]. The
order of these depend on the field orientation
see Section [fieldorientation] and can currently only be the format
shown in Table [3DMagnetoStatic_Extended].
Figure [3DMagnetoStatic_Extended] gives an example of a
`3DMagnetoStatic_Extended` field file.
[[sec:3DDynamic]]
3DDynamic
~~~~~~~~~
....
3DDynamic
1498.9534
-1.5 1.5 227
-1.0 1.0 151
-3.0 51.0 4121
0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00
4.36e-06 0.00e+00 4.36e-06 0.00e+00 4.36e-06 0.00e+00
8.83e-06 0.00e+00 8.83e-06 0.00e+00 8.83e-06 0.00e+00
+ 142'852'026 lines
1.32e-05 0.00e+00 1.32e-05 0.00e+00 1.32e-05 0.00e+00
1.73e-05 0.00e+00 1.73e-05 0.00e+00 1.73e-05 0.00e+00
2.18e-05 0.00e+00 2.18e-05 0.00e+00 2.18e-05 0.00e+00
....
A 3D field map describing a dynamic field oscillating with 1.4989534.
The field map provides 4122 grid points in z-direction times 228 grid
points in x-direction and 152 grid points in y-direction. The field
between the grid points is calculated with a tri-linear interpolation.
The field is non-negligible between -3.0cm to 51.0cm relative to
`ELEMEDGE`, the 228 grid points in x-direction range from -1.5cm to
1.5cm and the 152 grid points in y-direction range from -1.0cm to 1.0cm
relative to the design path. The field values are ordered such that the
index in z-direction changes fastest, then the index in y-direction
while the index in x-direction changes slowest. The columns correspond
to latexmath:[$E_x$], latexmath:[$E_y$], latexmath:[$E_z$],
latexmath:[$H_x$], latexmath:[$H_y$] and latexmath:[$H_z$]. _OPAL-t_
normalizes the field so that
latexmath:[$max(|E_{z,\text{ on axis}}|) = {1}{MVm^{-1}}$].
.Layout of a `3DDynamic` field map file.
[cols="<,<,<,<,<,<",]
|=======================================================================
|3DDynamic |TRUE | FALSE (optional) | | | |
|latexmath:[$Frequency$] (in MHz) | | | | |
|latexmath:[$x_{start}$] (in cm) |latexmath:[$x_{end}$] (in cm)
|latexmath:[$N_{x}$] | | |
|latexmath:[$y_{start}$] (in cm) |latexmath:[$y_{end}$] (in cm)
|latexmath:[$N_{y}$] | | |
|latexmath:[$z_{start}$] (in cm) |latexmath:[$z_{end}$] (in cm)
|latexmath:[$N_{z}$] | | |
|latexmath:[$E_{x,\,1}$] (MV/m)) |latexmath:[$E_{y,\,1}$] (MV/m)
|latexmath:[$E_{z,\,1}$] (MV/m) |latexmath:[$H_{x,\,1}$] (A/m)
|latexmath:[$H_{y,\,1}$] (A/m) |latexmath:[$H_{z,\,1}$] (A/m)
|latexmath:[$E_{x,\,2}$] (MV/m)) |latexmath:[$E_{y,\,2}$] (MV/m)
|latexmath:[$E_{z,\,2}$] (MV/m) |latexmath:[$H_{x,\,2}$] (A/m)
|latexmath:[$H_{y,\,2}$] (A/m) |latexmath:[$H_{z,\,2}$] (A/m)
|. | | | | |
|. | | | | |
|. | | | | |
|latexmath:[$E_{x,\,N}$] (MV/m)) |latexmath:[$E_{y,\,N}$] (MV/m)
|latexmath:[$E_{z,\,N}$] (MV/m) |latexmath:[$H_{x,\,N}$] (A/m)
|latexmath:[$H_{y,\,N}$] (A/m) |latexmath:[$H_{z,\,N}$] (A/m)
|=======================================================================
A `3DDynamic` field map has the general form shown in Table [3DDynamic].
The first five lines form the file header and tell _OPAL-t_ how the
field map data is being presented:
Line 1::
This tells _OPAL-t_ what type of field file it is (`3DDynamic`).
Line 2::
Field frequency.
Line 3::
This gives the extent of the field map and how many grid spacings
there are in the slowest changing index direction.
Line 4::
This gives the extent of the field map and how many grid spacings
there are in the next fastest changing index direction.
Line 5::
This gives the extent of the field map and how many grid spacings
there are in the fastest changing index direction.
The lines following the header give the 3D field map grid values from
latexmath:[$1$] to
latexmath:[$N= (N_{z} + 1) \times (N_{y} + 1) \times (N_{x} + 1)$].
Figure [3DDynamic] gives an example of a `3DDynamic` field file.
Clone repository
  • autophase
  • beam command
  • benchmarks
  • control
  • conventions
  • distribution
  • elements
  • fieldmaps
  • fieldsolvers
  • format
  • geometry
  • Home
  • introduction
  • lines
  • opal madx
View All Pages