Recent Developments in the Radia Project
The following new features were implemented in the most recent version:
Radia 4.29
- New function radObjMltExtPgnCur[z:0,a:"z",{{{x1,y1},{x2,y2},...},{{R1,T1,H1},{R2,T2,H2},...}},I,Frame->Loc|Lab] has been added.
This function attempts to create a set of current-carrying convex polyhedron objects by applying a generalized extrusion to the initial planar convex polygon.
The initial polygon is defined for the "attitude" z (0 by default) by the list of 2D points" {{x1,y1},{x2,y2},...},
with the a character specifying orientation of this polygon normal in 3D space: if a = "z" (default orientation), the polygon is assumed
to be parallel to XY plane of the laboratory frame ("y" for ZX plane, "x" for YZ plane).
The extrusion can consist of a number of "steps", with each step creating one convex polyhedron defined optionally by one (or combination of) rotation(s), and/or translation(s),
and/or one homothety: {Rk,Tk,Hk}, k = 1,2,..., applied to the base polygon (i.e. either the initial base polygon, or the polygon obtained
by previous extrusion step). In case if k-th extrusion step contains one rotation Rk about an axis, it is defined as
{{xRk,yRk,zRk},{vxRk,vyRk,vzRk},phRk}}, where {xRk,yRk,zRk} and {vxRk,vyRk,vzRk} are
respectively 3D coordinates of a point and a vector difining the rotation axis, and phRk the rotation angle in radians; in case if
Rk is a combination of "atomic" rotations about different axes, it should be defined as list: {Rk1,Rk2,...}.
If k-th extrusion step includes translation Tk, it must be defined by vector {vxTk,vyTk,vzTk}; optional homothety
with respect to the base polygon center of gravity should be defined either by two coefficients {pxHk,pyHk} with respect to two orthogonal
axes of the base polygon local frame, or by nested list {{pxHk,pyHk},phHk}, where phHk is rotation angle of the
two homothety axes in radians. The real number I defines average current in Amperes along the extrusion path. The Frame->Loc
or Frame->Lab option specifies whether the transformations at each step of the extrusion path are defined in the frame of the previous base polygon
(Frame->Loc, default), or all the transformations are defined in the laboratory frame (Frame->Lab).
-
Functions radFldFocKickPer and radFldFocKick have been updated to include calculation of longitudinally-integrated squared transverse magnetic field
created by accelerator magnets and insertion devices, for the estimation of synchrotron radiation effects on electron dynamics in accelerators. See help records to these functions for details.
New features in previous versions:
Radia 4.26
-
Analytical calculation of vector potential, magnetic field induction, strength and magnetic field integral (along infinite strate line) created by a polyhedron with constant or linearly-varying current density has been implemented.
To make use of this new feture, one has to create polyhedron(s) by calling the existing function radObjPolyhdr with new optional parameters: radObjPolyhdr[...,J->DataJ,Lin->Rel|Abs],
where DataJ can be {Jx0,Jy0,Jz0} or {{Jx0,Jy0,Jz0},{{dJxdx,dJxdy,dJxdz},{dJydx,dJydy,dJydz},{dJzdx,dJzdy,dJzdz}}},
with Jx0,Jy0,Jz0 being three constant Cartesian-frame current density components (in [A/mm^2]) and dJxdx,dJxdy,dJxdz, dJydx,dJydy,dJydz, dJzdx,dJzdy,dJzdz linear coefficients (in [A/mm^3])
for each of the three current density components. The other new option can have two values: Lin->Rel (default) or Lin->Abs. In the first case (Lin->Rel) the current density linear dependence is treated as defined
with respect to the polyhedron center, i.e. the current density at point {x,y,z} inside the polyhedron is:
J = {Jx0 + dJxdx*(x-xc) + dJxdy*(y-yc) + dJxdz*(z-zc),
Jy0 + dJydx*(x-xc) + dJydy*(y-yc) + dJydz*(z-zc),
Jz0 + dJzdx*(x-xc) + dJzdy*(y-yc) + dJzdz*(z-zc)},
where {xc,yc,zc} are coordinates of the polyhedron center.
In the second case (Lin->Abs) the current density is assumed to be:
J = {Jx0 + dJxdx*x + dJxdy*y + dJxdz*z,
Jy0 + dJydx*x + dJydy*y + dJydz*z,
Jz0 + dJzdx*x + dJzdy*y + dJzdz*z}.
After the polyhedron object with constant or linearly-varying current density is created, the vector potential, magnetic field and field integral from this object can be calculated using existing functions
radFld, radFldLst, radFldInt. The current density can be defined in a polyhedron (using option J->...) only if magnetization in that polyhedron is zero or not defined.
- New function radObjCenFld[obj,"A|B|H|J|M"] has been added. This function returns coordinates of the object obj center point and a requested field characteristic
- vector potemtial ("A"), magnetic field induction ("B"), magnetic field strength ("H"), current density ("J") or magnetization ("M") of obj at that point.
-
Bug fixes.
Radia 4.25
-
Automatic segmentation by extruded triangles has been added.
One can make use of this new feature by creating, via the new function radObjMltExtTri[...],
a "multiple extruded triangle", i.e. a straight prism with its base being, in general case, a non-convex triangulated
polygon. The triangulation parameters must be passed as arguments to this function at creation of the 3D object
(as different from other segmentation methods, which are applied to previously-created volumes by the function radObjDivMag).
In the new function, the "Triangle" - free 2D triangulation library by Jonathan Richard Shewchuk (http://www.cs.cmu.edu/~quake/triangle.html) was used.
- New function radObjScaleCur[obj,k] has been added to scale current (density) in the object obj by multiplying it by k (if obj is a current-carrying object).
If obj is a container, the current (density) scaling applies to all its members.
- New function radRlxUpdSrc[intrc] has been added to allow updating external field data for the relaxation
(to take into account e.g. modification of currents in coils, if any) without re-building the interaction matrix.
- New option has been added to the existing function radRlxAuto[...,ZeroM->False].
"ZeroM->True" (default) sets magnetizations in all sub-volumes to 0 before starting the "automatic" relaxation;
"ZeroM->False" just uses the existing magnetization values in sub-volumes for the first iteration of the relaxation.
-
New detailed Radia example - "Example#7.nb" - has been added.
This new example treats ESRF-type quadrupole magnet id 2D and in 3D, making use of the new triangulation
and the current scaling and interaction matrix update functionalities. The simulation of any other quadrupole can
be derived from this example notebook by changing the routines / parameters in the "Iron, Coil, Yoke and Build Functions" section.
Dipole and sextupole could also be bilt in a similar fashion. This example is longer and quite more involved than any other Radia example (#1 to #6).
-
Miscellaneous small improvements.
Radia 4.116
-
Radia for Igor Pro for Windows released.
-
A function for calculation of 2nd order kick matrices for
trajectories of relativistic charged particles in periodic magnetic field was
added (radFldFocKickPer - this function has the
functionality of the "RadiaToTrack.nb" Mathematica notebook developed by
P.Elleaume).
-
Miscellaneous small improvements.
Radia 4.097
-
More flexible definition of non-linear isotropic magnetic material
(the radMatSatIso function
accepts the definition of M vs H dependence by a list of points, see
Example#3).
-
More robust relaxation. The new relaxation method (No. 4) is more
stable for strongly non-linear material dependencies. It is set now as a
default method in the radRlxAuto
function.
-
The main magnetic field computation function radFld
allows the field computation in many arbitrarily spaced points by only one
function call.
-
Miscellaneous small improvements: bug fixes in force and torque
computation methods.
Radia 4.09
-
New methods of segmentation: subdivision according to elliptic
cylinder and by a set of parallel planes (new options in radObjDivMag).
The new methods of segmentation allow to strongly improve the efficiency of
solving the iron-dominated geometries.
-
New examples illustrating the use of the new subdivision methods
for the efficient simulation of dipole and multipole magnets for particle
accelerators.
-
Miscellaneous small improvements: a possibility of "releasing"
symmetries at duplication of the objects with the symmetries applied (new
option in radObjDpl);
axes of the laboratory Cartesian frame in active 3D graphics (new options in
radObjDrwQD3D); bug fixes.
Radia 4.08
-
Active 3D graphics facilitated by QuickDraw 3D library from Apple
(new function radObjDrwQD3D).
To make use of this new functionality, one needs to have the QuickDraw 3D 1.5
or later installed on one's system. The versions of QuickDraw 3D for Power
Macintosh and Windows 95/NT can be downloaded from the Apple Web site for free
(http://www.apple.com/quicktime/).
Radia 4.07
-
More simple definition of complicated geometries: Automatic
generation of convex polyhedrons based on the information on their horizontal
slices (new functions radObjMltExtPgn
and radObjMltExtRtg).
-
More flexible segmentation: Arbitrary cutting of objects by a
plane; subdivision of objects in their local frames and in the laboratory frame
(new function radObjCutMag
and new options in radObjDivMag).
For the details of the new functions see the Radia
Reference Guide.
Last modified: May 2009.
Comments, suggestions or questions are welcome.