To draw magnetic structures in 3D
Description:
-
MAG3D is a program to draw magnetic structures, described in a
standard crystal data file, on a terminal screen. The picture can be
rotated to obtain a satisfactory viewing angle and a high quality
representation of the structure can finally be written in postscript
format.
Input:
-
The crystal data file must contain all the information that would
be required for magnetic structure factor calculations viz:
- Symmetry (S) cards
Cell (C) card
Atom (A) cards
Form factor (F) cards
Magnetic structure (Q) cards
in addition special
"X" cards
are required to describe the graphical
output these are:
- X ARRO <Data> to define the proportions of arrows representing
- the magnetic moments.
The <Data> are 5 real numbers: the head length, the head radius,
the tail radius and the linewidth, all given as fractions of
the total length of the arrow. The final number is the scale
relating the length of an arrow in Angstroms to its moment
in Bohr magnetons.
X CM/A <Scale>
- <Scale> gives the scale of the picture in cms/Angstrom unit.
X PERS <Data> to define the perspective
- The <Data> are 3 real numbers: the cosine and sine of the angle
that the direction perpendicular to the plane of the projection
makes, in projection, with the negative x axis of the picture;
and a factor giving the contraction in projection of vector
components perpendicular to the plane of projection.
X <Atom Name> SYMB <Data> indicating how to draw each type of
- atom.
There should be one SYM
B card
with a matching <Atom Name> for
each
A card
.
The <Data> are 2 real numbers: the radius of the atom in Angstrom
units and the grey level to be used to paint it. Grey levels
are in the range 0 to 1 with 0 being jet black and 1 pure white.
X TRAN <Data> The transformation matrix
- The <Data> are 9 real numbers describing the transformation from
orthogonal crystallographic axes to the projection axes for
which x is perpendicular to the projection plane, z is
vertical and y horizontal in the projection plane. The data
are the direction cosines of the projection axes x,y,z on the
crystal axes.
Example
X cards
for Fe2Ti
X PERS .5 .7660 .6428
X ARRO .333 0.1667 .0833 .02 1.2
X TRAN 1 0 0 0 1 0 0 0 1
X SYMB Fe1 .25 0.25
X SYMB Fe2 .25 0.25
X SYMB Ti .4 .8
X CM/A 1
Output:
-
The usual listing file MAG3D.LIS reporting what was read from the
crystal data file and how it was interpreted.
An optional screen dump of the graphic terminal can be obtained after
each picture is drawn if the plotter driver supports "hard copy".
At the end of the program a "postscript" output file can be written
which gives a high quality rendering of the final picture. This file
will have the same name as the crystal data file and the
extension .PS.
Notes:
-
The program can be run in conjunction with any graphical output
device for which a CCSL graphical driver(PIGLET) is available. It is
most conveniently run from an X-terminal or one which emulates a
Tektronix 4010.
Running the program:
-
Once running, the program the user will be asked in the usual way for the
name of the crystal data file. Next the numbers of unit cells
to be drawn in the directions of the a,b and c crystallographic axes,
are required. They should be given in that order.
The screen will then switch to graphic mode and the magnetic
structure will be drawn. When the drawing is complete the user is
asked whether a hard copy of the graphic screen is required. There is
then an option to rotate the picture about any of the the projection
axes; if this is selected the rotated structure is drawn. When no
further rotation is requested the user may, if he wishes, record a new
crystal data file containing the latest rotation matrix. Finally the
user is given the option of making a "PostScript" output file. If this
is chosen a file with a name of the form 'CDF'.ps (where 'CDF' is
name of the crystal data file) is written before the program ends.
Calls:
- AROW3D
ARTILT
ASK
ATLABS
CIRCLE
CLOFIL
DEGREE
EQPOS
ERRCHK
ERRMES
FILNOM
FINDCD
FRAME
GMADD
GMEQ
GMPRD
GMSCA
GMSUB
GMUNI
GMZER
INDFIX
INDFLO
INPUTN
JGMEQ
JGMZER
KANGA1
KANGA2
LABAXE
LATGEN
MAG3DX
MAGCNC
MESS
NEWCRY
NFIND
ORTHO
PERSPC
PIGLET
PLTRIN
POSOUT
PREFIN
RADIAN
RDNUMS
ROTSYM
SAYS
SCALPR
SETFCM
SPCSET
SPHPOL
UNIVEC
Common blocks used:
-
- /ARRAYS/ to use all members
- /ATMLAB/ to use all members
- /ATNAM/ to use ATNAME
- /CONSTA/ to use TWOPI
- /IOUNIT/ to use LPT ITO IPLO
- /MAGDAT/ to use NMAG MAGAT ANGM SMOD PHIH LPHI SPIND
- /NTITL/ to use NTITLE
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA APERMB PWIDTH PHGHT X0 Y0
- /PLODAT/ to use ASPECT CHUNIT
- /POSTSC/ to use all members
- /POSNS/ to use NATOM
- /NSYM/ to use NCENT NOPC NLAT
- /SATELL/ to use PROP KSTAB NKC
- /SYMDA/ to use TRANS ALAT
- /SYMMAG/ to use OTRSYM MTYP MODUL
- /TITLE/ to use all members
*** MAG3D Postscript arrows included C110 ***
Classification:
Magnetic Structure Factors . . . . . . . Main Program
To draw 3D arrows
Arguments:
-
XP,YP is the position for the arrow in space 4
AL is the length in Angstoms(space 4)
Arrow drawing data in ARDAT(4): can be filled in by subroutine ARTILT
- PHI1 (ARDAT(1)) is the angle of rotation of the projected
- arrow from the x axis of the picture (in radians)
PHI2 (ARDAT(2)) is the angle of rotation of the minor axis of
- projected ellipses from the projected arrow direction.
FR (ARDAT(3)) is the perspective foreshortening factor in the
- direction parallel to the projection of the arrow
EX (ARDAT(4)) is the ratio of the minor to major axes of
- projected ellipses
Prerequisite calls:
-
MAG3DX to put the arrow definition in COMMON PICDEF
Notes:
-
Uses plotter space 5 to keep the transformation for the arrow rotation
Calls:
- KANGA1
PLTRIN
SPCSET
Called by:
- MAG3D
LABAXE
Common blocks used:
-
- /CONSTA/ to use PI TWOPI
- /PICDAT/ to use all members
*** AROW3D improved by PJB March 1992 ***
To define the tilt parameters for 3d arrows
Arguments:
-
On entry: R is a unit vector parallel to the spin, on the orthogonal
- coordinate system of the picture.
On exit: Arrow drawing data in ARDAT(4)
- PHI1 (ARDAT(1)) is the angle of rotation of the projected
- arrow from the x axis of the picture (in radians)
PHI2 (ARDAT(2)) is the angle of rotation of the minor axis of
- projected ellipses from the projected arrow direction.
FR (ARDAT(3)) is the perspective foreshortening factor in the
- direction parallel to the projection of the arrow
FT (ARDAT(4)) is the ratio of the minor to major axes of
- projected ellipses
Prerequisite calls:
-
MAG3DX to set the perspective transformation in COMMON PICDAT and the
arrow definition in PICDEF
Calls:
- PERSPC
TESTOV
UNIVEC
Called by:
- MAG3D
Common blocks used:
-
- /PICDAT/ to use all members
*** ARTILT NEW BY PJB MARCH 1992 ***
Writes postscript output to plot an arrow in MAG3D
Calls:
- DEGREE
GMSCA
Called by:
- ATLABS
POSORT
Common blocks used:
-
- /GRAYS/ to use all members
- /IOUNIT/ to use IPLO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA
*** ARROW NEW BY PJB DECEMBER 1991 ***
Classification:
Graphical Output . . . . . . . Utility
Writes an atom name on the postscript output file
Arguments:
-
P gives the position and NAME the name
Calls:
- GMSCA
Called by:
- ATLABS
Common blocks used:
-
- /IOUNIT/ to use IPLO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA
*** ATLAB new by PJB March 1992 ***
Makes a key for the atom symbols in MAG3D
Arguments:
-
A multiple entry subprogram driven by MODE
MODE = 1 Identify the inequivalent atoms
MODE = 2 Arrange the space needed for the key
MODE = 3 Write the key
Calls:
- ARROW
ATLAB
ATOM
LENGT
Called by:
- MAG3D
POSOUT
Common blocks used:
-
- /ARRAYS/ to use all members
- /ATMLAB/ to use all members
- /ATNAM/ to use ATNAME
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA PWIDTH PHGHT X0 Y0
- /POSNS/ to use NATOM
*** ATLABS new by PJB April 92 ***
Writes postscript output to plot an atom in MAG3D
Calls:
- GMSCA
Called by:
- ATLABS
POSORT
Common blocks used:
-
- /GRAYS/ to use all members
- /IOUNIT/ to use IPLO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA
*** ATOM new by PJB Dec 91 ***
To draw an arc of an ellipse
Arguments:
-
X,Y are the coordinates of the centre.
R is the length of the major axis
EX is the ratio of the minor to the major axis
ANG is the angle by which the major axis is inclined to the x-axis
The arc is drawn from ANG1 to ANG2 measured counter clockwise from
the x-axis.
Calls:
- KANGA1
PLCONV
Common blocks used:
-
- /CONSTA/ to use TWOPI
- /PLTRAN/ to use NSPCE
*** ELIPSE new by PJB Mar 92 ***
Inverse perspective transformation
Description:
-
Given the x,y components of the 2D representation in P and the
x(out of plane) component of the 3D vector in Q, fills in the
other two components.
Called by:
- OVERLA
Common blocks used:
-
- /PICDAT/ to use all members
*** INVPRS new by PJB March 1992 ***
Labels the axes of a diagram
Calls:
- AROW3D
KANGA2
PLCONV
SPCSET
Called by:
- MAG3D
Common blocks used:
-
- /GRAYS/ to use all members
- /PICDAT/ to use all members
- /PLODAT/ to use CHUNIT
*** LABAXE revised by PJB Apr 92 ***
Puts arrows and labels to identify the axes of a postscript
picture
Calls:
- DEGREE
GMSCA
Called by:
- POSORT
Common blocks used:
-
- /GRAYS/ to use all members
- /IOUNIT/ to use IPLO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA FRLINE
*** LAXIS new by PJB Apr 92 ***
Writes postscript output to plot a line in MAG3D
Calls:
- GMSCA
Called by:
- POSORT
PSPOUT
Common blocks used:
-
- /IOUNIT/ to use IPLO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA
*** LINE new by PJB Dec 91 ***
To read the
"X" cards
for MAG3D
Calls:
- ERRCHK
ERRMES
FINDCD
IATOM
RDNUMS
RDREAL
RDWORD
Called by:
- MAG3D
Common blocks used:
-
- /ATNAM/ to use ATNAME
- /IOUNIT/ to use ITO
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA FRLINE APERMB
- /POSNS/ to use NATOM
*** MAG3DX new by PJB Mar 92 ***
Determines what next to plot in MAG3D
Arguments:
-
IQ and IP mark the current positions in the arrays of atoms,lines and
labels. IQ directly and IP with respect to the sorted arrays.
IQ is given on entry and Ip is set in the subprogram.
Notes:
-
The function returns 1,2,or 3 to indicate that an atom, a line or an
axis label should be plotted next. The return value 4 indicates the end.
Calls:
- MINZ
Called by:
- MINZ
POSORT
Common blocks used:
-
- /ARRAYS/ to use all members
*** MINZ new by PJB Mar 92 ***
Determines whether a line goes through an atom
Arguments:
-
II labels the atom in the arrays ARRAT, ARRAZ etc.
JJ labesl a line in the arrays ALINE, BLINE etc.
RAD is the radius of the atom.
If OVERLA is TRUE ie line and atom intersect P is returned containing
the perspective coordinates of the intersection point nearest to the
viewer
Calls:
- FACT
GMADD
GMSCA
GMSUB
INVPRS
OVERLA
PERSPC
SCALPR
UNIVEC
VECPRD
Called by:
- OVERLA
POSORT
Common blocks used:
-
- /ARRAYS/ to use all members
*** OVERLA new by PJB Mar 92 ***
Perspective transformation
Arguments:
-
IS Indicates the space in which R is given
IS=0 Orthogonal and no transformation
IS=1 or 2 for real or reciprocal respectively, both with transformation
Prerequisite calls:
-
The common PICDAT must be set up to contain the perspective factors
and any required transformation
Calls:
- GMEQ
GMPRD
ORTHO
Called by:
- MAG3D
ARTILT
OVERLA
Common blocks used:
-
- /PICDAT/ to use all members
*** PERSPC new by PJB Jan 91 ***
Sorts the arrows and atoms for postscript output of MAG3D
Arguments:
-
NARRAS is the number of atom/arrows to be plotted
NLINES is the number of lines to be plotted
Calls:
- ARROW
ATOM
GMEQ
JGMEQ
LAXIS
LINE
MINZ
OVERLA
SORTX
Called by:
- POSOUT
Common blocks used:
-
- /ARRAYS/ to use all members
- /PICDAT/ to use all members
Drives the postscript output for MAG3D
Arguments:
-
NARRAS is the number of atom/arrows to be plotted
NLINES is the number of lines to be plotted
Calls:
- ATLABS
FILNOM
LENGT
NOPFIL
POSORT
PSPROC
UPONE
Called by:
- MAG3D
Common blocks used:
-
- /CARDRC/ to use ICRYDA
- /IOUNIT/ to use LPT ITO IPLO LUNI
- /NTITL/ to use NTITLE
- /PICDAT/ to use all members
- /PICDEF/ to use CMPERA FRLINE PWIDTH PHGHT X0 Y0
- /TITLE/ to use all members
- /SCRACH/ to use MESSAG
- /WHEN/ to use all members
*** POSOUT new by PJB Apr 92 ***
Formats and prints CHARS on LUNO in lines only breaking at spaces
Calls:
- LINE
Called by:
- PSPROC
Print postscript arrow procedures on unit LUN
Calls:
- PSPOUT
Called by:
- POSOUT
Common blocks used:
-
P. Jane Brown
Institut Laue Langevin,
Grenoble, FRANCE