Contents Prev Manual

LOGICAL FUNCTION MAGABS(H,IK)

Tests for systematic absence of magnetic reflections.

Arguments:

On entry H is a 1x3 array holding h,k,l
On exit MAGABS = .TRUE. if absent, .FALSE. if present
IK is +1 if the indices correspond to a r.l.v + the
propagation vector ie h=g+k

IK is -1 if h=g-k
IK is 0 if this is irrelevant.

Prerequisite calls:

The space group symmetry should have been set up by SYMOP
The propagation vector PROP should have been set up by DOMAG

Calls:

GMADD GMSUB LATABS

Called by:

CALCFR FCHALC FMCALC FMMPCA LMCALC LMMPCA SATFND CALMSF LCHALC GETMSF MAGPOW

Common blocks used:

/SATELL/ to use PROP IPROP

*** MAGABS modified by PJB Jan 91 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MAGCNC

To find magnetic constraints in a non-least squares calculation.

Prerequisite calls:

The magnetic symmetry must have been set up by calls to SYMOP and
DOMAG

Calls:

MAGCON SPHELI SPHPOL

Called by:

CALMSF CALQSF GETMSF MAG3D MAGPOW MG3DGL MVENTR

Common blocks used:

/MAGDAT/ to use NMAG ANGM SPIND
/SYMMAG/ to use FERO FERA HELI

*** MAGCNC Updated for PSI's C141 March 2006 ***

Classification:

Magnetic Structure Factors . . . . . . . Setting Up

SUBROUTINE MAGCNL

Does the fixing associated with constraints found by MAGCON and
PSICON.

Calls:

MAGCON SPHELI SPHPOL

Called by:

DOMAG2 DOMPL2 MMPLSQ PALSQ

Common blocks used:

/MAGDAT/ to use MAGAT ANGM NPHI SPIND
/PHASE/ to use JPHASE
/POSNS/ to use NATOM
/SYMMAG/ to use FERO FERA HELI MODUL

*** MAGCNL Updated for PSI's C141 March 2006 ***

Classification:

Magnetic Structure Factors . . . . . . . Setting Up

SUBROUTINE MAGCON(IATO,LMFIX,FIRST)

Finds and reports the symmetry constraints on magnetic parameters.

Arguments:

IATO is the number of the magnetic atom in question
LMFIX(I) is set to TRUE if parameter I for this atom is fixed by symmetry
FIRST is TRUE if no constraints have yet been found

Calls:

DEGREE DUMMY ERRCH2 ERRIN2 FACGRP GMADD GMEQ GMREV GMSUB MAKGRP MESS PSICON RANGE RELSM3 ROTSYM SCALPR SPHPOL

Called by:

MAGCNC MAGCNL

Common blocks used:

/ATNAM/ to use ATNAME
/IOUNIT/ to use LPT ITO
/MAGDAT/ to use JMAGAT ANGM SMOD FCENT
/NSYM/ to use NOPC CENTRC
/POSNS/ to use ISGEN
/SATELL/ to use PROP KSTAB IPROP
/SYMDA/ to use TRANS
/SYMMAG/ to use MTSYM MSTAB OTRSYM HELI MODUL

*** MAGCON reoraganised for PSI's by PJB C141 March 2006 *** ***

Classification:

Magnetic Structure Factors . . . . . . . Setting Up

SUBROUTINE MAGDIR(H,QLAM,QQ)

Calculates various geometric corrections for various magnetic
states. The ENTRY ENTMAG sets up the COMMON.

Arguments:

On exit QLAM is the cosine of the angle between the scattering vector
and the polarisation direction.
QQ is the sine of the angle between the magnetisation direction and the scattering vector.

Description:

ENTMAG sets up /MOMDIR/ to contain the magnetisation direction in AMD, and MM to specify the option:
MM = 1 magnetisation parallel to the omega axis
MM = 2 magnetisation parallel to an axis given on an I card
MM = 3 magnetisation between 1 and 2 at cos-1(csphi) to 2
MM = 4 Schwinger scattering

Entries:

ENTMAG called by: SORGAM

Calls:

DEGREE GMADD GMEQ GMSCA JFIX MESS ONCARD ORTHO RADIAN SCALPR SINCOS UNIVEC VECPRD

Called by:

SORGAM

Common blocks used:

/DGEOM/ to use UM
/IOUNIT/ to use LPT
/MOMDIR/ to use all members

*** MAGDIR corrected by PJB 12-Sept-1998 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MAGDOM(H,HK,IOP,SKIP)

In Least Squares refinement with magnetic scattering, forms the
matrix needed for derivatives of Q with respect to a spin direction.

Arguments:

On entry H is the scattering vector
IOP is the symmetry operator to be used on H

On exit the 3x3 matrix HK contains the required matrix.
LOGICAL SKIP is set to indicate

Prerequisite calls:

MTYP must indicate the type of magnetic structure.
NORD, MSTAB and KSTAB entries for IOP must be set.

Description:

HK is formed, such that Q=KxSxK=S[HK]

Calls:

GMREV ORTHO ROTSYM UNIVEC

Called by:

FMCALC FMMPCA LMCALC LMMPCA

Common blocks used:

/SATELL/ to use KSTAB
/SYMMAG/ to use MSTAB FERO
/SYMTAB/ to use NORD

*** MAGDOM by PJB Apr 87 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MAGSYM(MODE)

Routine with 4 named entry points, MAGSYM, MELIN, NELIN and
ROTMAG, to deal generally with magnetic symmetry. MAGSYM sets magnetic symmetry, MELIN puts in an operator for a generator, NELIN puts in non-symmetric rotation and ROTMAG rotates with a magnetic operator.

Arguments:

On entry to MAGSYM MODE = 0 to initialise
1 to generate the remaining operators and the
orthogonal spin rotations in OTRSYM

On entry to MELIN IOP = which operator
VAL = + or - 1, its value

On entry to ROTMAG S is the 3x3 array to be rotated
IOP = which operator

On exit from ROTMAG RS is the 3x3 rotated array
On entry to NELIN IOP = which operator

Entries:

MELIN called by: DOMAG DOMAG1
NELIN called by: DOMAG DOMAG1
ROTMAG called by: FMCALC FMMPCA LMCALC LMMPCA

Calls:

COSET ERRIN2 ERRMES FACGRP GENGRP GMEQ GMPRD GMREV GMUNI JGMEQ JGMZER MESS MTPROD OPMSYM TRANSQ

Called by:

DOMAG DOMAG1

Common blocks used:

/CARDRC/ to use IERR
/CELPAR/ to use ORTH
/IOUNIT/ to use LPT
/NSYM/ to use NOPC CENTRC
/SATELL/ to use KSTAB
/SYMDA/ to use SYM
/SYMMAG/ to use MTSYM MSTAB OTRSYM NDOM FERO FERA
/SYMTAB/ to use MULTAB INVERS NORD

*** MAGSYM touched up by PJB C141 March 2006 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MAGVAR(IG,IS,NV)

Records the initial fixing, or subsequent varying of magnetic
parameters.

Arguments:

On entry IG is the genus of the parameter (which atom)
IS is the species (13-16 PHIH, 17-20 ANGM, 21,22 SMOD)
NV is 0 if the while lot of parameters are to be initially fixed
the number of the variable, if it is to be varied.

Called by:

VARSMG

Common blocks used:

/MAGDAT/ to use NMAG MAGAT KANGM KSMOD KPHIH

*** MAGVAR updated by JCM 3 Jun 92 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MAJUST

A specialist routine used in the input of the Crystal Data File
needing previously stored Fourier maps.

Description:

MAJUST is called from PREFIN, on discovering that the user has given an "M GE T" card . It adjusts file IO10 so that it contains mainly cards from the previously dumped run (to be found on named file), updated to include any new "M" cards presented for this run. The rule for "M" cards belonging to the "old" and "new" sets is:
take only new cards for PRIN, PLOT, SAVE and GET; take only old cards for NDIM, FTYP, MESH, DTYP, DELT, SCAL, SMAX and AXES.
For CM/A and CONT:
if the card type occurs in "old" but not "new", accept it if card type occurs in "new" but not "old", accept it if card type occurs in both, accept the "new" only.

Also takes a new "N" card , unless there is only an old one.

Notes:

All the cards capable of being telescoped happen to occur in the "take only old" category, so should not pose a problem by hiding something other than in columns 3-6, but - care will be needed with any newly defined cards.

Calls:

CARDIN FILNOM LETTER OPNFIL RDWORD

Called by:

CDFIN

Common blocks used:

/CARDRC/ to use NYZ IO10
/IOUNIT/ to use LPT
/MAPGT/ to use IDUMPG
/SCRACH/ to use all members

*** MAJUST updated by JCM May 88 ***

Classification:

Fourier Calculations . . . . . . . Setting Up

SUBROUTINE MAKEBM(I,A,C,M,N)

A specialist contour plotting routine which makes a bit map to
show where the contours are.

Calls:

BITSET

Called by:

PLOTCT

*** MAKEBM by JCM 24 Nov 82 ***

Classification:

Logical Operations . . . . . . . Utility

SUBROUTINE MAKGRP(IGSB,IOPS,MODE,PRODCT)

Generates the subgroup of a space group from the given generators.

Arguments:

On entry, IGSB holds the generators
IABS(IGSB(1)) is the number of operators in the subgroup, divided
by 2 if the group contains a centre of symmetry.
If 1 it may indicate that the number of operators in the sub-group is not known and should be calculated by the subroutine

IGSB(1) is negative if the group contains a centre of symmetry
IGSB(2) is the identifying number of the first generator; it is
negative if it is the centrosymmetrically related one.

IGSB(3) is as IGSB(2) but for the second generator if there is one
If MODE=1 the subroutine PRODCT is called with to allow evaluation
of a possible representation of the group.

PRODCT is an externally defined subroutine. May be DUMMY.

On exit, IOPS is a table which contains an entry for each operator of the
full group. It is positive and non-zero if the operator belongs to the sub-group, and negative if it is only the centro-symmetric operator which is in the sub-group.

IGSB(1) is set as above using the multiplicity of the sub-group
found by the sub-routine.

Prerequisite calls:

SYMOP

Calls:

JGMZER

Called by:

MAGCON MPCON MUCALC

Common blocks used:

/NSYM/ to use NOPC
/SYMTAB/ to use MULTAB NORD

*** MAKGRP modified by PJB 31-May-1994 ***

Classification:

Basic Crystallography . . . . . . . Setting Up

CHARACTER *4 FUNCTION MAKNAM(CHAR,N)

Makes an A4 name from the given character and the digits of the
given number.

Arguments:

On entry CHAR holds either a single character, to fill the name from the
left, repeatedly, or 2,3 or 4 characters, which are used to fill in on the left unchanged.

N is an integer

On exit MAKNAM is a *4 name with the digits of N at the right hand side,
filled with the characters from CHAR.

Called by:

ADDANG ADDATM ADDBON

*** MAKNAM BY JCM 8 JUL 91 ***

Classification:

CCSL Input/Output Routines . . . . . . . Utility

SUBROUTINE MAPCON(CFOUND,IC,IBMAX,IFMAX)

After a Fourier map has been plotted, sends to the plotter the
list of contours which were plotted, with a frame.

Arguments:

On entry CFOUND is a real array containing the contour values to write,
IC is the number of elements in CFOUND,
IBMAX and IFMAX are handed over to indicate general size of numbers.

Prerequisite calls:

STPLOT shuld set this up, and MPPLOT should call it, having made the list

Calls:

FRAME GMZER KANGA1 KANGA2 NUMA1 PIGLET PLTRIN SPCSET

Called by:

FOURPL

Common blocks used:

/PLODAT/ to use ASPECT CHUNIT
/PLOMAP/ to use WIDPIC HGTMAP HGTTXT WIDCON HGTCON XMARG YMARG YWHITE CHSCAL
/PLTRAN/ to use PMTRIX

*** MAPCON by JCM 22 Aug 86 ***

Classification:

Fourier Calculations . . . . . . . Crystallographic

SUBROUTINE MAPDRW(CFOUND,IC,IBMAX,IFMAX)

Draws an unframed contour map, in predetermined place.

Arguments:

On exit CFOUND is a real array which holds all the found contour values.
IC is the number of found contours.
IBMAX and IFMAX are sensible sizes for later contour list printing.

Prerequisite calls:

STPLOT must have set up the map contouring

Calls:

FETTLE NEXCON PLOTCT SPCSET

Called by:

FORFIG FOURPL

Common blocks used:

/CONTUR/ to use NCONT
/IOUNIT/ to use LPT ITO
/MAPDA/ to use NX NY DENS

*** MAPDRW by JCM 22 Aug 86 ***

Classification:

Fourier Calculations . . . . . . . Crystallographic

SUBROUTINE MAPFRA

Draws a black frame round a potential contoured map, adding the
labels X Y and a 1A scale.

Prerequisite calls:

Needs to be set up within a whole picture by STPLOT

Output:

Causes (possibly skew) frame to be drawn via PIGLET, with labels X and
Y (and therefore implicit origin), and a one-angstrom scale underneath.

Calls:

FRAME KANGA1 KANGA2 PIGLET PLCONV SPCSET

Called by:

FORFIG FOURPL

Common blocks used:

/MAPDA/ to use NX NY
/PLODAT/ to use CHUNIT
/PLOMAP/ to use YWHITE SCALMP

*** MAPFRA by JCM 22 Aug 86 ***

Classification:

Fourier Calculations . . . . . . . Crystallographic

SUBROUTINE MAPKEY(IFND,NFND,JP)

Plots a key to the atoms found by ATMPLO.

Calls:

FRAME GMZER KANGA1 KANGA2 KANGA3 PIGLET PLCONV PLTRIN SPCSET

Called by:

FORFIG

Common blocks used:

/ATNAM/ to use ATNAME
/MAPDA/ to use NX NY
/PLODAT/ to use ASPECT CHUNIT
/PLOMAP/ to use WIDPIC HGTMAP HGTTXT WIDCON HGTCON XMARG YWHITE CHSCAL

*** MAPKEY updated by JCM Sep 91 ***

Classification:

Fourier Calculations . . . . . . . Crystallographic

SUBROUTINE MAPTIT

Writes a title over a plotted map, with a frame.

Prerequisite calls:

The picture must be initialised by a call of STPLOT, setting up in particular space 6 to be "character type 2" space, measured for suitability for title.
The title must have been read by INPUTN.

Calls:

FRAME KANGA2 SPCSET

Called by:

FORFIG FOURPL

Common blocks used:

/NTITL/ to use NTITLE
/PLODAT/ to use CHUNIT
/TITLE/ to use all members

*** MAPTIT by JCM 22 Aug 86 ***

Classification:

Fourier Calculations . . . . . . . Crystallographic

SUBROUTINE MATCEL(ALSQ,MATSZ)

After a cycle of LSQ gives variance-covariance matrix for cell A*
B* etc in both real and reciprocal space, and the same for abc, alpha,beta,gamma.

Arguments:

The Least Squares matrix ALSQ(MATSZ) must be handed throughout the system as the argument of routine calls in order to make it easily altered.

Prerequisite calls:

The LSQ matrix ALSQ is assumed to hold the inverse matrix after a cycle of refinement.

Description:

Fills in array CELESD(6,6,2) for the variance-covariances of the quadratic products in both spaces, and CELLSD(6,6) for a,b,etc.

Calls:

CELMAT ELEMAT GMINV GMPRD GMTRAN GMZER RADIAN

Common blocks used:

/CELPAR/ to use CELL CPARS KCPARS CELESD CELLSD
/CONSTR/ to use JROWPT JCMAT AMOUNT
/POINTS/ to use LVRBS LBSVR

*** MATCEL corrected by PJB 2-Jan-96 ***

Classification:

General Least Squares Refinement . . . . . . . Crystallographic

FUNCTION MATCH(K)

Checks to see whether two sets of reflection indices match.

Arguments:

On entry K(3,2) holds the two sets of indices, hkl1 hkl2.

Description:

The function is set to zero if the indices match
to 1 if hkl1 comes before hkl2 in the standard order
of reflection indices in which h varies fastest then k then l
to 2 if hkl2 comes before hkl1

Notes:

See also MATCHF for floating indices

*** MATCH by PJB 1 Jul 86 ***

Classification:

Manipulation of Reflection Indices . . . . . . . Utility

FUNCTION MATCHF(F)

Checks to see whether two sets of floating point reflection
indices match.

Arguments:

On entry F(3,2) holds the two sets of indices, hkl1 hkl2.

Description:

The function is set to zero if the indices match
to 1 if hkl1 comes before hkl2 in the standard order
of reflection indices in which h varies fastest then k then l
to 2 if hkl2 comes before hkl1

Notes:

See MATCH for fixed point indices

Called by:

PALSQ

*** MATCHF by JBF 19 Jun 87 ***

Classification:

Manipulation of Reflection Indices . . . . . . . Utility

SUBROUTINE MATCOR(ALSQ,MATSZ)

After a Least Squares cycle, prints correlations from the inverse
matrix.

Arguments:

The matrix ALSQ is dimensioned everywhere except in MAIN programs as
ALSQ(MATSZ), and handed through as a routine argument.

Calls:

ELEMAT JFIX MESS NEWLIN PARNAM

Called by:

CHILSQ MAGLSQ MMPLSQ MPLSQ PALSQ SFLSQ SFTLSQ

Common blocks used:

/DERBAS/ to use LVARB
/IOUNIT/ to use LPT
/MATDAT/ to use BLSQ
/REFINE/ to use MAXCOR SIMUL

*** MATCOR updated by JCM 11 Aug 88 **

Classification:

General Least Squares Refinement . . . . . . . Utility

SUBROUTINE MATINV(ALSQ,MATSZ)

Inverts the matrix in ALSQ, of which the upper triangle only is
held.

Arguments:

ALSQ has the dimension MATSZ, which is set in MAIN programs and handed down to here as a parameter of the routine calls.

Notes:

No interchanges are done - a positive definite matrix should not need them.
This should be modified some day to operate on the right hand side BLSQ also.
It is intended to replace it by a QR inversion routine.

Calls:

PARNAM TESTOV

Called by:

CHILSQ MAGLSQ MMPLSQ MPLSQ PALSQ SFLSQ SFTLSQ

Common blocks used:

/DERBAS/ to use all members
/IOUNIT/ to use LPT ITO
/MATDAT/ to use MATPNT BLSQ
/PHASE/ to use KPHASE
/REFINE/ to use SIMUL
/SOURCE/ to use KSOURC

*** MATINV updated by JCM 2 Jun 89 ***

Classification:

General Least Squares Refinement . . . . . . . Utility

SUBROUTINE MATSET(ALSQ,MATSZ)

Sets up pointers into a Least Squares matrix, and clears the
matrix and the corresponding right hand side vector.

Arguments:

The matrix ALSQ is dimensioned everywhere except in MAIN programs as
ALSQ(MATSZ).

Calls:

GMZER

Called by:

CHILSQ MAGLSQ MMPLSQ MPLSQ PALSQ SFLSQ SFTLSQ

Common blocks used:

/DERBAS/ to use LVARB
/IOUNIT/ to use LPT ITO
/MATDAT/ to use MATPNT BLSQ
/REFINE/ to use SIMUL

*** MATSET updated by JCM 11 Aug 88 ***

Classification:

General Least Squares Refinement . . . . . . . Utility

SUBROUTINE MATSHF(ALSQ,MATSZ)

From an inverted Least Squares matrix, calculates shifts in basic
variables.

Arguments:

The Least Squares matrix ALSQ is dimensioned everywhere except in MAIN programs as ALSQ(MATSZ), and both ALSQ and MATSZ are then handed through the system as the arguments of routines.
On entry ALSQ must contain the inverse of the LSQ matrix.

Prerequisite calls:

The vector BLSQ must hold the rhs of the Least Squares equations.
SUMWD in /OBSCAL/ holds the sum of weighted differences,
NOBS in /OBSCAL/ = number of observations used,
LVARB in /DERBAS/= number of basic variables.

Description:

Calculates shifts from the inverse matrix (ALSQ) and the rhs (BLSQ), putting the answers in BLSQ and the esds in DERIVB.

Notes:

Eventually MATINV will modify BLSQ to give shifts, but for now we must form them separately.

Calls:

PARNAM

Called by:

CHILSQ MAGLSQ MMPLSQ MPLSQ PALSQ SFLSQ SFTLSQ

Common blocks used:

/DERBAS/ to use all members
/IOUNIT/ to use LPT ITO
/MATDAT/ to use BLSQ
/OBSCAL/ to use SUMWD NOBS CSQTOT
/REFINE/ to use SIMUL
/RSTATS/ to use CHI2
/SLAKDA/ to use NSKTOT

*** MATSHF updated by JCM 30 Sep 88 ***

Classification:

General Least Squares Refinement . . . . . . . Utility

SUBROUTINE MATTOT(ALSQ,MATSZ)

Add in contributions to LSQ matrix and RHS for one observation.

Arguments:

All reference to the lsq matrix ALSQ is made through routines with arguments ALSQ and MATSZ.
This enables ALSQ to be dimensioned everywhere except in MAIN as ALSQ(MATSZ)

Prerequisite calls:

On entry DERIVB holds the derivatives wrt all basic variables
DIFF holds OBS-CALC
SQRTWT holds the square root of the weight
SIMUL is TRUE if this is only a simulation cycle

Called by:

GEOMLS CHILSQ MAGLSQ MMPLSQ MPLSQ PALSQ SFLSQ SFTLSQ

Common blocks used:

/DERBAS/ to use all members
/MATDAT/ to use BLSQ
/OBSCAL/ to use DIFF SQRTWT
/REFINE/ to use SIMUL

*** MATTOT updated by JCM 17 Oct 89 ***

Classification:

General Least Squares Refinement . . . . . . . Utility

SUBROUTINE MB11A(M,N,A,IA,W)

Inverts a rectangular matrix whose order is the smaller dimension;
used by the Harwell refinement routine VA05A.

Calls:

ERRIN2

Called by:

VA05A

*** MB11A from HARWELL 25 May 79 ***

Classification:

Matrices and Vectors . . . . . . . Utility

SUBROUTINE MC04B(A,ALPHA,BETA,M,IA,Q)

Harwell routine to perform Householder reduction of a symmetric
matrix to tri-diagonal form.

Notes:

Called by EA06C when finding eigenvalues

Called by:

EA06C

Classification:

Mathematical Functions . . . . . . . Utility

SUBROUTINE MESS(LUNIT,N,TXT)

Writes on unit LUNIT the given message, preceded by N empty lines.

Arguments:

On entry TXT is a CHARACTER variable holding the message,
N is in integer requesting N empty lines before the message, and
may be 0, for no lines or > 98, for a page throw.

Output:

Writes to unit LUNIT N empty lines or a page throw, then the given text with a "space" carriage control.

Calls:

LENGT

Called by:

AINOUT ANGLST APSHSF ARREAD ASK ATOPOS BATCH BIGGAM BNDLST CDFIN CELSDP DEPRIN DOCHI1 DOMAG DOMAG1 DOMPL2 ERRATM ERRCHK ERRMES FILPRO FIXVAR FUDGIN GEOMCO GEOMIN GEOMLS ICDFMT IICD1 IICD3 INPLSF INPUTD INPUTE INPUTG INPUTM LERCHK LLSCAL LLTFAC MAGCON MAGDIR MAGSYM MATCOR MOLORB MPCON NOPFIL OPMSYM OPSYM ORTFUN PARSFW PRIVAR PRNTMP RADFUN REAORB RECIP RFACS RREFSF SAVMAP SETABS SETANI SETFOR SETFOU SETLP SETPOL STLSSF SUBSYM SYMBAK SYMFRI SYMOP SYMTID UNITID VA05A WGHTLS ARRINC ARRNGE BONDS CALMSF CALQSF D3OP99 POBPRC NCHECK INFILE EXTCAL FORFAC GETMSF GETSFZ GRAFIC MAG3D MAGPOW PALSQ POWDER SFLSQ SFTLSQ SORGAM

*** MESS updated by JCM 12 Sep 92 ***

Classification:

CCSL Input/Output Routines . . . . . . . Utility

SUBROUTINE MF5ADD(ISPC,IG,IS,N)

A specialist routine to deal with the refinement of multipoles.
Converts each type of LSQ family 5 (multipoles) addressing to the other.

Arguments:

On entry N=1 requests "give answer in in ISPC genus 1 from IG,IS"
N=-1 requests "give answers as IG, IS from species ISPC"

So for N=1 IG, IS are set on entry to genus and species
for N=-1, ISPC is set on entry to contain "species" in one long genus.

Prerequisite calls:

Table MPNAM must have been set up to contain species names, and
MPTAB to point in it for each genus of family 5.

Called by:

PARNAM

Common blocks used:

/MPODA/ to use NMPAT MPTAB

*** MF5ADD by JCM 13 Jun 88 ***

Classification:

Multipole Form Factors . . . . . . . Crystallographic

FUNCTION MINIM(LIST,N,M)

Finds the position and value of the minimum in a list of integers.

Arguments:

On entry LIST is a list of integers
N is the number of entries in the list

On exit MINIM is set to the value of the smallest menber of LIST
where LIST(M)=MINIM

Called by:

ADDCON

Common blocks used:

/LENINT/ to use all members

*** MINIM by JCM 15 Jan 88 ***

Classification:

Tests . . . . . . . Utility

SUBROUTINE MOLORB(IAT,IPTI)

To read molecular orbital wave-functions from "W atom-name
FUN C" card .

Arguments:

IAT on entry gives which atom
IPTI on entry is the pointer in ICARD in /SCRACH/ from which to read
unless IPTI=-ve, when it signals a request for initialisation or IPTI=0, which asks for the functions to be checked and printed

Calls:

ERRMES JGMZER MESS RDINTG RDREAL RDWORD

Common blocks used:

/CARDRC/ to use IERR
/IOUNIT/ to use LPT ITO
/POSNS/ to use NATOM
/SCRAT/ to use all members
/WAVEFN/ to use AMP NFUN NEIG

*** MOLORB by PJB 6 Apr 87 ***

Classification:

Magnetic Structure Factors . . . . . . . Crystallographic

SUBROUTINE MPCON(MAT,KMAX)

Finds the symmetry constraints on multipoles.

Arguments:

MAT the multipole atom number
KMAX = 2l+1

Calls:

DEGREE DIJROT DUMMY EULSYM GMADD GMEQ GMNORM GMPRD GMREV GMSCA GMZER MAKGRP MESS REAORB TRANSQ TRINV3

Called by:

PFSET

Common blocks used:

/IOUNIT/ to use LPT IOUT
/MPODA/ to use MPATAB
/NSYM/ to use NOPC
/POSNS/ to use ISGEN
/QROT/ to use all members
/SCRAT2/ to use all members
/SYMDA/ to use SYM
/SYMTAB/ to use INVERS NORD

*** MPCON by PJB ***

Classification:

Multipole Form Factors . . . . . . . Setting Up

SUBROUTINE MPFORM(IDT,NJ)

Finds out which radial form factors to apply to which atom and L
value.

Arguments:

IDT is the position in the CDF of the first J card
NJ the number of J cards

Prerequisite calls:

ATOPOS etc.

Description:

Called normally by PFSET factor to use for multipole atom I and L value J, if negative a radial wave function is to be used to compute the form factors

Calls:

ERRCHK ERRMES INPUTJ ISCAT JGMZER LERCHK NFIND RDINTG RDWORD

Called by:

PFSET

Common blocks used:

/CARDRC/ to use NYZ IERR
/FORMDA/ to use NUMFNM
/FONAM/ to use FONAME
/MAGDAT/ to use NMAG NMFORM
/POLFOR/ to use MPFOR NMPFOR MPLFOR NUMGEN
/REFINE/ to use MAG

*** MPFORM updated by PJB C128 Feb 2004 ***

Classification:

Multipole Form Factors . . . . . . . Setting Up

SUBROUTINE MPOVAR(I,J)

Records whether each multipole parameter is fixed or varied.

Arguments:

On entry I=which parameter (or 0 if it is the initial entry to fix all)
J=which variable it will be (or 0 if it is the initial entry)

Description:

If this is the initial entry records all multipoles fixed by clearing the array KPOLMP in /MPODA. Otherwise, records there that parameter I is variable J.

Common blocks used:

/MPODA/ to use NMPOL KPOLMP

*** MPOVAR by JCM 9 Feb 91 ***

Classification:

Multipole Form Factors . . . . . . . Setting Up

SUBROUTINE MTPROD(I,J,N)

Puts entries into the table of time inversion operators.

Arguments:

I, J, and N are operator numbers. The entry in MTSYM for N is
set to the product of that for I and J.

Notes:

Called from MAGSYM through MAKGRP using the internal subroutine name PRODCT.

Called by:

MAGSYM

Common blocks used:

/SYMMAG/ to use MTSYM

*** MTPROD new by PJB Nov 90 ***

Classification:

Magnetic Structure Factors . . . . . . . Utility

SUBROUTINE MUCALC

To calculate induced moments from anisotropic susceptibilities and
elipsoid orientation

Calls:

DUMMY FACGRP GMADD GMEQ GMPRD JGMZER MAKGRP ROTSYM SORTX TQLI TRED2

Called by:

CHILSQ

Common blocks used:

/ATNAM/ to use ATNAME
/IOUNIT/ to use LPT
/MAGCHI/ to use all members
/MAGDAT/ to use NMAG JMAGAT
/NSYM/ to use NOPC
/POSNS/ to use ISGEN
/SYMDA/ to use TRANS

*** MUCALC put into library by PJB March 2006 ***



FUNCTION MULBOX(H)

Tests indices for being in the asymmetric unit, and gives
multiplicity.

Arguments:

On entry H(3) is a real 1x3 vector holding the reflection indices.

Description:

The function is set to the multiplicity of the reflection if the reciprocal lattice point represented by H is inside the exact asymmetric unit.
If the point is not inside the function is returned as zero.

Calls:

INBOX SCALPR

Called by:

ASUNIT GENMAG GENMUL GETGEN SATGEN GETSFZ

Common blocks used:

/FUNIT/ to use NASYM EDGE NMUL
/GUNIT/ to use MARK BSYM IBOX

*** MULBOX updated by JCM 14 Jun 88 ***

Classification:

Manipulation of Reflection Indices . . . . . . . Utility

SUBROUTINE MULIND(MUL)

Used by ARRNGE for data whose indices may be submultiples of
integers

Arguments:

MUL is a logical which is set to .TRUE. if the indices are submultiples
For the entries INDMUL and INDDIV the 3 component vectors HI and HO are the input and output indices respectively.

Prerequisite calls:

INPUT I to set up the commons /IINFO/ and /IINFOW/.

Description:

MULIND interprets the numbers following MULH, MULK, and MULL entries on I cards to be the numbers by which to multiply H,K,L respectively in order to obtain integer indices. These numbers are placed in AMUL in common /MULPLY/.
ENTRY INDMUL returns HO(I),I=1,3 = HI(I)*AMUL(I)
ENTRY MULDIV returns HO(I),I=1,3 = HI(I)/AMUL(I)

Entries:

INDMUL called by: ARRNGE
INDDIV called by: ARRNGE

Calls:

JFIX TESTOV

Called by:

ARRNGE AVEXAR

Common blocks used:

/IINFO/ to use all members
/IINFOW/ to use all members
/IOUNIT/ to use LPT
/MULPLY/ to use all members

*** MULIND new by PJB 14-Nov-1997 ***

Classification:

Data Collection and Reduction . . . . . . . Utility


Contents Manual

P. Jane Brown e-mail: brown@ill.fr
Institut Laue Langevin,
Grenoble, FRANCE