## Site map |
||||

**The expression interpreter**-
**Variables in the task description SAV file for BGMN**-
NTHREADS,
VAL,
VERZERR,
STRUC, STRUCOUT,
SimpleSTRUCOUT,
PDBOUT, RESOUT,
FCFOUT,
OUTPUT, LIST,
RU, UNT,
UNTC, DDM,
PARAM,
LAMBDA, SYNCHROTRON,
EPS1, EPS2, EPS3, EPS4, POL,
PROTOKOLL, ONLYISO,
ITMAX,
DIAGRAMM, PLAN,
STANDALONEPLAN,
GOAL, WMIN, WMAX,
CUT,
LIMIT2, LIMIT4, LIMIT6, LIMIT8, LIMIT10, ANISOLIMIT,
ANISO4LIMIT
**Items in the structure description *.str-file**-
- Definition of the lattice
- SpacegroupNo, HermannMauguin, GeneralCondition, A, B, C, ALPHA, BETA, GAMMA, UNIT
- Anisotropic variables
- ANISO, ANISOLIN, ANISOSQR, ANISO4
- Scaling factor/prefered orientation
- GEWICHT, SPHAR0, SPHAR2, SPHAR4, SPHAR6, SPHAR8, SPHAR10
- Real structure
- B1, B2, k1, k2, k3, sk, H, h, k, l, zweiTheta, RP
- Peak deselection
- GeneralCondition
- Atomic positions
- E=, Wyckoff, x, y, z, TDS, B, betaij, U, Uij
- GOAL's, quant analysis
- GOAL, GEWICHT
- BGMN-specific functions
- PHASE, sk, B1, k2, ANISO, GEWICHT(h,k,l), GrainSize, TDS,
- Advanced feature: subphases
- RefMult, iref, GEWICHT[i], B1[i], B2[i], k1[i], k2[i], k3[i], DELTAsk, DELTAzweiTheta, LeBail, FPARAM
- Advanced feature: Structure amplitudes etc
- F, Finv, H
- Advanced feature: User calculated structure amplitudes
- FMult, F[i], phi[i], Finv[i], phiinv[i]
- Advanced feature: molecules
- set, setgitter, cross, diffvec, normvec, skalpro, distance, angle, cpXYZ, T, D, X, Y, Z, WW, WWalt, Straf, Theory, Bondings, BondLevel
- Micro absorption correction according to Brindley
- my, my[i]
- X ray density
- density, density[i]

**Variables in the task description SAV file for computation of standard profiles**- NTHREADS, VERZERR, TubeTails, R, FocusH, FocusW, HSlitR, HSlitW, RoundSlitR, RoundSlitD PColl, PCollA, VSlitR, VSlitH, SamplD, SamplW, SamplH, DeltaOmega, SCollA, SSlitW, SSlitR, SColl, SCollA, DetW, DetH, DetArrayW, MonR, MonH, EPSG, zweiTheta[i], GSUM, TSlitR, TSlitH, FocusS, FocusA, GEOMETRY, WMIN, WMAX, WSTEP, GEQ, D, T, STANDARDPAR, VAL,

name[i,j,k]Variables may hold numeric values (double format) or strings. In special, a string may hold an expression. Expressions are stored as-is and evaluated every time they are used. Therefore expression evaluation may become recursive: An expression may contain a variable, which refers to a second expression etc. Bracket level is unlimited. A lot of standard functions are predetermined:

**abs, sqr, sqrt, sin, cos, tan, asin, acos, atan, log, exp**- with one argument. As usual, the argument of the angular functions sin, cos,tan and the result of its inverses (asin, acos, atan) are in radians.
**mod, power**- with two arguments,
**min, max**- with variable argument count,
**ge, gt, le, lt, eq, ne**- This functions accept two or
more arguments.

ge, gt, le, lt, eq return 1.0 (TRUE), if the condition holds for each neighboured pair of arguments, starting from the first. If some pair does not hold the condition, 0.0 (FALSE) will be returned immedially, errors in following arguments will not cause this function to cause errors.

ne looks for inequality between any pair (also not neighboured) of arguments. If two arguments are equal, ne returns 0.0 (FALSE). Otherwise, ne returns 1.0 (TRUE). **and, or**- with variable argument count. Evaluation of arguments is done until the result is determined (C-like evaluation).
**not**- with one argument,
**ifthenelse**- with three arguments. If the first argument is TRUE, then the result of the second expression is returned, otherwise the result of the third. The other argument will cause no error to the result.
**select**- with variable argument count returns the value of the i+1-th argument
depending on the value of the first argument. An error occurs if the value
of the first argument is zero or below or above the select parameter
number. The other parameters will cause no error if they are undefined or
cannot be evaluated as a number. Examples:
select(2,1,3,5)

return 3,select(1,4,2,7)

returns 4. **integral(y,x,xu,xo)**- with four or five arguments calculates a numeric integral. Integrand will
be y, the integral will be carried out over x between xu and xo. For
minmization of the numeric effort, an adaptive 7-point-formula will be used.
The precision of the numeric integration may be set as a fifth parameter,
default is 1E-13 (which will, for the fast converging 7-point formula,
reach a precision near to 1E-15). Example:
integral(sin(x),x,0,acos(0))

will calculate 1.0. **cintegral(phi,yabs,yphase,x,xu,xo)**- with six or seven parameters calculates a complex
numeric integral. The absolute value of the integrand will be yabs, its
complex phase angle yphase. The integral will be carried out over x
between xu and xo. For minmization of the numeric effort, an
adaptive 7-point-formula will be used. The precision of the numeric
integration may be set as a fifth parameter, default is 1E-13 (which will,
for the fast converging 7-point formula, reach a precision near to 1E-15).
cintegral returns the absolute value of the integral, its phase angle
will be set to the variable given at first position (phi).
Example:
cintegral(phi,1,90*x/acos(0),x,0,acos(0))

will calculate the square root of 2, phi will be set to 45. **ifdef**- with variable argument count. Delivers TRUE, if all arguments may be evaluated to a numeric (double) value. In the case one value is undefined (causes an error), ifdef results in an error.
**cat**- Concatenation of commands, with variable argument count. Arguments may be expressions or assignments. At least one expression must be in the argument list, the rightmost expression determines the return value of the function.
**while**- looping of commands, with variable argument count. The first argument must be an expression. As long as its value is non-zero and no error occurs, all following arguments are evaluated. Returns the number of loop iterations.
**ergibt**- with one argument, executes the assignment given as argument. Returns TRUE, if the assignment is succesfull, otherwise FALSE.
**gauss, cgauss**- are high-level standard functions for solving linear equation
systems. Called as
gauss(A,x,b,eps,n) cgauss(Areal,Aimag,xreal,ximag,breal,bimag,eps,n)

A,x,b are placeholder for arrays, therefore only non-indexed names are allowed. Both the standard functions solve the inhomogen linear equation system

**Ax**=**b**

where**A**is the matrix A[1,1]...A[n,n],**b**is the right side b[1]...b[n] and**x**is the unknown solution x[1]...x[n]. eps is a limit for the pivot element, if any pivot element is smaller than eps the equation leaves unsolved and zero (false) will be returned. If the equation system has been solved and x[1]...x[n] hold the solution, 1 (true) will be returned.`cgauss`

is the equivalent for a complex array**A**, a complex right side**b**and a complex unknown**x**.

a=b+cassigns the string

`"b+c"`

to the variable named `a`

.
Every multiple assignment symbol makes one deeper evaluation. e.g.
d==a e===a

`d`

holds the string `"b+c"`

. On case `b`

as well as `c`

may be evaluated to numeric values, the triple
assignment `e===a`

will set `e`

to the numeric value of
`b+c`

. Otherwise, the assignment `e===a`

will cause an
error.
In the input, the user may define string functions in the manner of:

name(argumentcount):expressionA positive count of argument defines a fixed value, the absolute value of a negative argument count defines a lower limit of argument count. expression may contain the special symbols

#1 #2...which are replaced by the evaluated numeric value of the first, second... argument. Every argument is evaluated only once. An errorneous argument causes an error only if it will be used. Example:

faculty(1):ifthenelse(eq(#1,0),1,#1*faculty(#1-1))or using level 3.3.29 or above:

faculty(1):cat(n==#1,ret==1,while(n,ret==ret*n,n==n-1),ret)BGMN defines a lot of structure-description specific functions with limited validity. Most of them are only valid in the structure description files. Some are only valid in GOAL's, others only in the description of atomic positions (E=...).

**NTHREADS**- This variable controlls the parallelization of the BGMN code.
Up-to-date PCs have multicore processors. For example on a
dual core processor you may select
NTHREADS=2

and most of the time-consuming parts of the BGMN code will be distributed over both the cores. The parallel eficiency of BGMN may be above 90% on Linux or Mac machines with capable processors. You may put the above assignment into the bgmn.cfg file, so it will valid for all BGMN runs. **VAL[1], VAL[2]...**- Files with pattern data. BGMN assumes patterns in free XY[E] format,
in general: Leading comments starting with # will be ignored, all
following lines may contain
- angle 2 Theta
- intensity (cps)
- (optionally) esd.

Special file formats are chosen depending from the filename suffix:

***.val**files will be assumed to be in the APX file format of the firm SEIFERT FPM.***.rd**files with be assumed to be in an old PHILLIPS format. In this case the variable STEPWIDTH may be uses to assign a non-raster stepwidth (STEPWIDTH≠n*0.005)of the pattern data (e.g. PHILLIPS format in conjunction with a scanning PSD from SIEMENS).***.raw**files will be assumed to be in an old SIEMENS format.***.gsa**files will be assumed in GSAS format, restricted to equidistant angular steps (both the variants STD and ESD of the GSAS data format).

**VERZERR**- name of the GEQ-file (output of makegeq). This is the recommended case. If only the GER-file (output of geomet) exists, BGMN interpolates it for every measuring point. If no file is available, you can give an expression as value. This expression may depend from the variable zweiTheta (two Θ). It describes the width parameter of a single squared Lorentzian function, which is used instead of the complicated sum of squared lorentzians. The width parameter refers to Θ, unit radian.
**STRUC[1], STRUC[2]...**- Structure description files for the phases present in the specimen.
**STRUCOUT[1], STRUCOUT[2]...**- Output of structure descriptions in the same format as the input (*.str).
**SimpleSTRUCOUT[1]...**- Generates "Simple Structure" output. These files will contain no atomic
position data. Instead of, a full list of structure factors depending from
h k l (plus, for compatibility, iref) will be generated.
In case you want to convert a LeBail structure refinement into a Simple Structure, you must provide proper values of GEWICHT and density. E.g. while refinement of a 50:50 mixture of an internal standard and a LeBail structure, you should place an assignment of the GEWICHT value as retrieved from the internal standard to the GEWICHT value inside the LeBail structure.

**PDBOUT[1], PDBOUT[2]...**- Output of the structures in the *.pdb format (Brookhaven Protein Data Base, e.g. usable for image generation with RasMol)
**RESOUT[1], RESOUT[2]...**- Output of the structures in ShelX format.
**FCFOUT[1], FCFOUT[2]...**- Output of observed and calculated F's plus phase angle in ShelX
format. I have choosed the No. 5 format from the ShelX 97 manual.
Cited from those manual:

Write h, k, l, Fo, Fc, and f (phase angle in degree) ... This is indented for input to somestandard macromolecular FFT programs (such as W. Furey's PHASES program), thereby providing a possible route to a graphical display of the electron density.

**New in version 2.5.0!**

**New in Version 2.5.1:**All Fs and the phase angles are corrected for dispersion. This means: They really are fourier coefficents of electron density maps. See (newest) ShelX manual.This output is disabled if the

`i`

-th phase uses the "user calculated structure amplitudes" feature by defining`FMult`

it its`*.str`

file. **OUTPUT**- *.par-file (peak parameters of all peaks). Used for diagramm generation with SHOW and for peaklist generation with OUTPUT.
**LIST**- General result output
**RU**- Number of background parameters. If omitted, BGMN automatic selects a value depending from the 2Θ range and the data accuracy.
**UNT**- A single file with pattern data. If this parameter is used, its intensities describes a kind of "amorphous background" and are multiplied with the last background parameter and added to the model during refinement.
**UNTC**- A single file with pattern data, If this parameter is used, its intensities will be added to the model during refinement (no scaling with a refined parameter at all).
**DDM**- If set to
DDM=Y

the DDM method as described inL. A. Solovyov

Full-profile refinement by derivative difference minimization

J. Appl. Cryst.**37**(2004), pp. 743-749

http://www.geocities.com/l_solovyov/ddm.htmlwill be used. As inherent to this method, the number of background parameters RU is set to zero. The DDM method is indented to cases with complicated background.

**PARAM[1], PARAM[2]...**- Global parameters for the fit. Needs a starting value in the kind
PARAM[i]=name=startingvalue

Possible extensions arePARAM[i]=name=startingvalue_lowerlimit PARAM[i]=name=startingvalue^upperlimit

which may be combined. **LAMBDA**- specifies a wavelength file, for example LAMBDA=CU selects the file cu.lam for the wavelength distribution (profile of the K alpha doublet) and cu.ano for the corresponding anomalous dispersion.
**SYNCHROTRON**- same as LAMBDA, but switches on some specialities for synchrotron
radiation. Knows an extended form as
SYNCHROTRON=0.079776

for specifying an ideal narrow (delta-peak) wavelength distribution at the given wavelength in nanometers. Then, no anomalous dispersion may be specified. **EPS1, EPS2, EPS3, EPS4**- describes angular corrections of the measured diagram:
**EPS1**describes the shift of X ray tube and/or detector in radian. Positive values of EPS1 correspond to the tube's resp. detector shift towards the Θ=90° position and therefore to shifting the pattern towards lower angle.**EPS2**describes the shift of the specimen out of the goniometer axis. Again, the unit is radian. Positive values of EPS2 correspond to:- GEOMETRY=REFLEXION, GEOMETRY=CAPILLARY:
- shift of the specimen out of the zero line and orthogonal to this
line opposite of the side of tube/detector, which means shift of
the pattern towards lower angle. The shift of the specimen is
equal to:

R*EPS2/2 - GEOMETRY=TRANSMISSION:
- shift of the specimen parallel to the zero line in detector direction. The shift of the specimen is equal to R*EPS2/2

**EPS3**corrects for penetration depth. Should only be used with**GEOMETRY=REFLEXION**, a better way is correction of the profile by penetration depth using the D variable**EPS4**should only be used without modelling the apparatus function (without having runned geomet/makegeq and without using *.ger/*.geq-files)

**POL**- used in the polarisation factor. Default POL=1 means no monochromator.
Cannot be declared as parameter. Should be in the kind
POL=sqr(cos(2 ThetaMonochromator))

For Cu K_{α}radiation and graphite monochromator, usePOL=sqr(cos(26.6*pi/180)) pi=2*acos(0)

**PROTOKOLL**- determines, wether a iteration protocol is given or not.

Y/y/J/j: A protocol is printed.

N/n: A protocol is not printed.

Default value is N. **ONLYISO**- if this value is set to Y/y/J/j, only a fast isotropic computation is done. All anisotropies and spherical harmonics are ignored. A numeric value controls the exit from iteration. In the case of Y, 1.0E-4 is assumed. Default value is N.
**ITMAX**- Maximum stepcount while iteration. BGMN uses the 10 fold of the parameter count. In critical cases (e.g. structure solution) this limit should be enlarged.
**DIAGRAMM**- In every iteration step, a file containing a line per measuring point is
written. Each line contains
2Θ I

, followed by a list of intensities, each for every phase involved in the refinement. This is for graphical observation of the refinement progress (Diagram window in BGMNwin)_{mess}I_{calc}I_{background} **PLAN**- A simple list, each line contains angle, count and measuring time of a futural measurement. Output of (optional) Optimal Experimental Design.
**STANDALONEPLAN**- Logical switch. Decides, if the Designed Measurement has to be evaluated together with the unplanned pre-measurement (STANDALONEPLAN=N) or standalone (STANDALONEPLAN=Y). For a single task, I would prefer N, which is the default. However, in the environment of a routine analysis in a factory, which has to been done cyclically every few minutes (specimen does not change very largely), STANDALONEPLAN=Y becomes significant.
**GOAL[1], GOAL[2]...**- global goal of the experiment. Possible values are:
GOAL[i]=expression GOAL[i]=expression=value GOAL[i]=expression=value+-σ

The second line is written in the output SAV file. It contains the result. The third line ist written in the LIST file, supporting a fitted value and an error (1σ) for the expression. If one uses the third line in the SAV-file, Optimal Experimental Design is done and the σ value should be reached after a planned measurement an fit of both measurements at once. **WMIN, WMAX**- Angular limits for selection of measuring values, unit degree in 2Θ.
**CUT[1], CUT[2]...**- Angular limits for deselection of measuring values. Format:
CUT[i]=wmin:wmax

, units are again degree in 2Θ -
**LIMIT2, LIMIT4, LIMIT6, LIMIT8, LIMIT10, ANISOLIMIT, ANISO4LIMIT** - These variables controls the automatic reduction of degree of spherical harmonics and/or anisotropies. After isotropic calculation, the value of the variable GEWICHT must exceed the LIMITx-fold of its error (1σ). Otherwise, the degree of spherical harmonics is reduced. ANISOLIMIT, ANISO4LIMIT works in the same kind for any variable declared as ANISO or ANISO4. ANISO4 is reduced to ANISOSQR. If not given (which should be mostly the case), BGMN chooses an advanced value depending from the Laue Group of the phase.

HermannMauguin=... SpacegroupNo=...in the structure description file. In addition, one may set

GeneralCondition=...as a bool switch for the selection of the reflection (depending on h k l) conditions as given in the International Tables. Zero (false) will omit the reflection, non-zero (true) activates the reflection. And give the non-trivial lattice constants, e.g.

A=... C=...for tetragonal or hexagonal lattice. The full set of lattice constants (triclinic) must be named

A=... B=... C=... ALPHA=... BETA=... GAMMA=...In normally, this lattice constants should be parametrized and boundaries should be used, e.g.

PARAM=A=0.314_0.312^0.316Attention! Units of measure are nanometers, or you must use the key

UNIT=ANGSTROEMin this structure description file!

name=ANISOLIN name=ANISOSQRThere are some special keys for backward comptibility:

B1=ANISO stands for B1=ANISOLIN

k2=ANISO stands for k2=ANISOSQR

GEWICHT=ANISO stands for GEWICHT=ANISOSQR

ANISO4 is recommended in the case of complicated micro strain, use k2=ANISO4. This means a fully symmetric product of hkl with a positive definite tensor of forth rank. See:

- P. Thompson et al.,J. Less Common Met.
**129**(1987) 105 - J. Rodriguez-Carvajal et al., J. Phys. Condens. Matter
**3**(1991) 3215 - Both cited corresponding to an oral presentation of P.W. Stephens on EPDIC 5, Parma, Italy

B1=ANISO^0.02This boundary is valid only in the first steps of computation. In this steps isotropic replacements for such variables are used. Therefore, the limit is only a hint for the iteration procedure.

The symmetriy of the anisotropic values is automatically corrected to the lattice symmetry.

GEWICHTOf course, one may define this variable as anisotropic. For strong and multiple prefered orientation there are possible spherical harmonics. The keywords therefore are:

GEWICHT=SPHAR0/SPHAR2/SPHAR4/SPHAR6/SPHAR8/SPHAR10Only the even coefficients up to the given order are used. This means 6/15/28/45/66 independent parameters in triclinic lattices. Of course, the symmetry of the spherical harmonics is atomatically corrected to the lattice symmetry. Plus, BGMN guarantees these spherical harmonics to be positive definite. For details see:

J. Bergmann, T. Monecke, R. Kleeberg

Alternative algorithm for the correction of preferred orientation in Rietveld analysis

J. Appl. Cryst.

The effective count of parameters is reduced, thereby, for
all non-triclinic lattices. SPHAR0 corresponds to an isotropic value.

GEWICHT is corrected with the usual factors for weight content
analysis. This includes in special the value as predefined
in the variable density, which is defined from the sum
over all FMult atomic settings in case FMult is set. In case FMult is not set,
density defaults to that of the first subphase.
In General, SPHARx starts with the isotropic value zero. **But** if
no measuring data are given (only theoretic computation), the value 1
is assumed.

If both GEWICHT=SPHARx and GEWICHT=ANSIO are active:

- GEWICHT=ANISO dominates over GEWICHT=SPHAR0.
- GEWICHT=SPHARx (x>0) dominates over GEWICHT=ANISO.
- By defining GEWICHT=ANISO
**and**GEWICHT=SPHARx (x>0) one gets the extended switching SPHAR6->SPHAR4->SPHAR2->ANISO->ISOTROPIC, which makes senso in complicated cases.

**B1**- stands for a lorentzian broadening caused by size effects. It should
be parametrized. Units of measure is the inverse of that used for the
lattice constants, in common 1/nm. You are encouraged to declare it
anisotropic using the key
B1=ANISO

if the specimens crystals are of anisotropic shape. **B2**- Is the square of the broadening of a squared lorentzian, which is more
gaussian-like. Using the square of the broadening solves a convergence
problem, which will occur for B2=0 by handling the squared lorentzian
with itself. In usual, you should not use this variable direct.
BGMN predetermines the formula
B2=k1*sqr(b1)+k2*sqr(1/d)+k3*sqr(cost*max(0.0,cot(twoTheta)))

k1 describes a gaussian-like part of the size effects. It should be parametrized in the wayPARAM=k1=starting_value_0^1

Values greater 1 leads to negative contents of smallest particles in the particle size distribution. The greater the value of k2, the narrower is the particle size distribution.k2 may describe the micro strain effect. It is the quare of the usual micro strain. You may describe it anisotropic by using

k2=ANISO

ork2=ANISO4

But k2=ANISO should be restricted to very special cases, for which you have any hints for the reallity of anisotropic strain.You should never use k3, except in case you don't use any predetermined specimens function's (which are generated by running geomet/makegeq and sored in *.ger/*.geq files). In such cases, k3 describes a broadening of the line for small angles. Asymmetry is never described, in this way!

**sk**- holds the 1/d-value of the reflection, unit 1/nanometer (or 1/Å in case you use UNIT=ANGSTROEM for this structure file).
**h, k, l**- hold the Miller indices of the reflection. Attention: In general, reflections are multiple. For each reflection only one triple of Miller indices is used for computation, and intensity is multiplied with the multiplicity!
**zweiTheta**- holds the 2Θ value of the reflection.
**H**- holds the multiplicity of the reflection.

**RP=2**- means ideal lines, no specimen influence on line shapes.
**RP=3**- means usage of Lorentzian-broadening B1 only.
**RP=4**- means usage of both Lorentzian B1 and squared Lorentzian broadening B2. This is the default value.

`GeneralCondition`

should depend
from h k l. Enables the deselection of peaks from the pattern.
Example:
GeneralCondition=and(eq(h,0),eq(k,0),eq(abs(l),2)will select the 002 reflection only, for hexagonal lattice. Of course, such a selection must select/deselect

E=C E=(NA(p),K(1-p)) E=(NA(p),K)The last two lines are equivalent. All non-weighted elements are used to complete the position's total occupation probability to one. Ionic charges may be specified:

E=C+4For a list of all defined ionic charges, see file

`afaparm.dat`

.
For neutron data, an isotopic number may be specified:
E=C12Both the ionic and isotopic selectors may be combined:

E=C12+4

E(a,b,c...)=is a special definition for the case

`FMult>0`

or `RefMult>1`

.
In case `FMult`

is set, it defines
the contributions of the atomic position to the different `F[i]`

etc. Otherwise, it defines the contributions of the atomic position to
the different subphases `1...RefMult`

.
The next is the Wyckoff symbol in accordance to the spacegrp.dat file, e.g.

Wyckoff=cThe next are the x, y, z values as demanded by the Wyckoff symbol:

x=0.312 z=0.574For structure refinement, these values may be parametrized:

PARAM=x=0.312_0.31^0.315The Debye-Waller-Factor is given by the variable TDS. It may be declared as anisotropic:

TDS=ANISOThe isotropic TDS value is equal to the common used B, except for the unit of measure (default nm**2, otherwise use UNIT=ANGSTROEM). The anisotropic TDS values given in the LIST file are dimensionless and are equivalent to the β

TDS=8π^{2}U

If no TDS is defined, a phase-specific of measurement-global expression for TDS is used. Otherwise, TDS is assumed to be zero.

GOAL=A/Cfor determining the lattice constants ratio A/C. A special feature for non-global GOAL's are the so-called auxiliary goals:

goal:name=expressionIn opposite to normal assignments, the right side of the auxiliary goal's assignment is evaluated to a numeric (double) value. Furthermore you can use GOAL-time specific functions in auxiliary goals.

Quant analysis is supported by the GOAL's. Therefore, in each phase's structure description file use the auxiliary GOAL

GOAL:phasei=GEWICHTIn the case of three phases, use the three GOAL's

GOAL[1]=phase1/(phase1+phase2+phase3) GOAL[2]=phase2/(phase1+phase2+phase3) GOAL[3]=phase3/(phase1+phase2+phase3)in the SAV file. The values for GEWICHT are corrected for the phase's X ray density (that of the 1st Subphase in case RefMult>1). So they can used for quant analysis, directly.

**PHASE**- with one argument serves TRUE, if the string given as argument is identic to the phase identificator given for the phase.
**sk**- uses three arguments: A set of Miller indices. It serves the 1/d value for the given reflection. Usable only in GOALs
**B1**- uses the Miller indices as three arguments. Serves the B1 value of this reflection. Usable only in GOALs.
**k2**- uses the Miller indices as three arguments. Serves the k2 value of this reflection. Usable only in GOALs.
**ANISO**- First parameter is a variable declared as ANISO, followed by three Miller indices. Serves the value of this variable in the given direction. Usable only in GOALs.
**GEWICHT**- uses the Miller indices as three arguments. Serves the value of GEWICHT
for this direction. Usable only in GOALs.
As a special feature, the mean value of GEWICHT is set to the variable
GEWICHT at GOAL time. So you can get the value of the prefered
orientation's correction for a given direction simply by writing
GOAL=GEWICHT(h,k,l)/GEWICHT

**GrainSize**- uses the Miller indices as three arguments. Serves the value of a mean
grain diameter in the given direction, which is influenced by B1 and k1.
Usable only in GOALs.

**TDS**- uses the Miller indices as three arguments, Serves the value of the Debye-Waller-factor for the given direction. May be used in a position description and only in GOALs. If you defines a global TDS, you may use this GOAL function outside a position description, too.

- the values of prefered orientation hold in the variable GEWICHT (which is automatic set in dependence from the Miller indices, in the case of GEWICHT=ANISO/GEWICHT=SPHARx)
- the lattice constants and therefore the variables sk/zweiTheta, which are automatic set, too.

GEWICHT[i]=expressionIf not defined, BGMN uses the variable GEWICHT. You can use the value of the variable GEWICHT as well as some new parameters in the above expression. So you can define arbitrary subphase's scaling factors. You can define subphase-specific values of the real-structure variables

B1[1], B1[2]...

B2[1], B2[2]...

k1[1], k1[2]...

k2[1], k2[2]...

k3[1], k3[2]...

and/or you can use the variable

irefin the expressions for non-indexed real structure variables. You can assign arbitrary values to the variable

DELTAskand/or

DELTAzweiThetaand/or these variables indexed with the subphase's number. Their values are used for position correction of the subphase's peaks.

Setting `LeBail=i`

to a value between `1...RefMult`

will cause to omit calculation of `F`

, `GEWICHT`

or `GEWICHT[i]`

for that subphase. Instead of, all peak
intensities of that subphase will be refined independently (LeBail-fit).

`F`

resp. `Finv`

. In
addition, the multiplicity of the reflection is served by the variable
`H`

.
In case of combined refinement, all peak intensities are refined independently.
That means: Any individual (hkl) triplet gets as many intensity parameters as
devices are defined. That holds for `RefMult`

>1 too. This
behaviour may be changed by setting

FPARAM=Y(or "Yes" or "yes"). In such case, the structure factors

`F`

of all
occuring (hkl) become parameters. Of course, `GEWICHT`

and
`density`

have to be defined for intensity calculations.

FMultto a positive integer. Using

`FMult`

, BGMN will provide
F[i]and

phi[i]for the absolute value resp. phase angle (in degree 0...360) of the complex structure amplitudes as defined in

`E(a,b,c)=`

.
>From that, one may
do arbitrary operations and at the end set the structural amplitude
`F`

of the whole phase, which will then used for intensity calculation.
The values for the inverse reflection are set to

`Finv[i]`

and `phiinv[i]`

.
In case both `Fmult`

and `RefMult`

are set, one may use `iref`

while calculating `F`

.
Thereby, different `F`

values for different subphases
may result.

BGMN provides a function `F(phi...)`

for dynamic
structure factor calculation. Atomic positions as defined in part 2
of the structure file are evaluated prior to all peak parameter
calculations. Instead of, `F(phi...`

calculates the
structure factor for the atomic positions defined within F(phi...)
each time it will be called. It returns the absolute value of the
complex structure factor, its pahse angle will be set to the variable
given at first position (phi). `F(phi...)`

may, for example,
usde within `cintegral`

for evaluation of arbitrary
atomic position distributions. Example:

FMult=1 F=cat(fmittelbetrag==cintegral(fi,F(psi, D2(r1,r2,rot,EOZ1,eoz1,EOZ2,eoz2,EOZ3,eoz3,EOZ4,eoz4,EOZ5,eoz5,EOZ6,eoz6), E=NA+1(pCA),Wyckoff=c,XYZ(ECA),TDS==tdsint, E=O-2(pOZ),Wyckoff=c,XYZ(eoz1),TDS==tdsH2O, E=O-2(pOZ),Wyckoff=c,XYZ(eoz2),TDS==tdsH2O, E=O-2(pOZ),Wyckoff=c,XYZ(eoz3),TDS==tdsH2O, E=O-2(pOZ),Wyckoff=c,XYZ(eoz4),TDS==tdsH2O, E=O-2(pOZ),Wyckoff=c,XYZ(eoz5),TDS==tdsH2O, E=O-2(pOZ),Wyckoff=c,XYZ(eoz6),TDS==tdsH2O), psi,rot,0,120)/120, sqrt(sqr(F[1]*cos(pi*phi[1]/180)+fmittelbetrag*cos(pi*fi/180))+ sqr(F[1]*sin(pi*phi[1]/180)+fmittelbetrag*sin(pi*fi/180))))will calculate the strucure factor including a rotating octahedron.

Therefore BGMN uses some special functions:

**set**- uses 4 parameters. The first is a position descriptor, e.g. C1 for the
first carbon atom. The following three are the cartesian co-ordinates
of this atom in the molecule. They are assigned to the indexed variables
C1[1] C1[2] C1[3]

according to the example (in further referred as a vector). **setgitter**- makes the same task, except that it reads atomic (fractional) co-ordinates. An error occurs, if this function is used before full definition of the lattice constants.
**cross**- Arguments must be 4 vectors. The first 3 must be defined. Computes the cross product between two connection vectors: The vector between the first and the second position and the vector between the second and the third position. The result equals the vector between the second and the fourth position (the fourth position is set in this kind).
**diffvec**- Needs three vectors as arguments. Sets the third vector to the difference of the second minus the first.
**normvec**- Arguments are two vectors. Calculates the second vector as the unit vector in the direction of the first.
**skalpro**- Needs two vector descriptors. Calculates the scalar product between both and returns it as the function's result.
**distance**- Needs two vectors as argument. Calculates the distance between both vectors (the atomic distance).
**angle**- Needs 2, 3 or 4 vectors as arguments.
- For 2 arguments it returns the angle between both vectors.
- For 3 arguments, it returns the bonding angle between the 3 positions.
- For 4 arguments, it returns the torsion angle between the 4 positions.

**cpXYZ**- with even parameter count: After having defined the molecule with
`set(a,x,y,z)`

(or`setgitter(a,x,y,z)`

),`cpXYZ(a,b...)`

generates copies with identic co-ordinates. Within each pair of parameters, the co-ordinates of the left one are copied to the right-one. The right-one parameter may be a comma-separated list in brackets:cpXYZ(a,(b,c,d),e,f)

By this way, multiple copies are generated from one source. **T**- Needs at least 7 parameters. Use it in the kind:
T(x,y,z,alpha,beta,gamma,E1,...)

Defines an arbitrary unitary transformation of the positions E1,... At first, all positions are rotated for the three euler angles alpha,beta,gamma. At second, all positions are shifted for the values x,y,z. alpha,beta,gamma must be given in degree! **T2**- Needs at least 8 parameters, parameter count must be even..
Quite similar to T, but instead of in-place postion operations it
uses in/out position pairs. So you may omit an extra call to cpXYZ:
T2(x,y,z,alpha,beta,gamma,E,e)

is an abbreviation ofcpXYZ(E,e) T(x,y,z,alpha,beta,gamma,e)

**D**- Needs at least 4 parameters. Use in in the kind:
D(A,B,chi,E1,...)

Defines a rotation of the positions E1,... around the axis A-B for the angle chi. chi must be given in degree! **D2**- Needs at least 5 parameters, parameter count must be odd.
Quite similar to D, but instead of in-place postion operations it
uses in/out position pairs. So you may omit an extra call to cpXYZ:
D2(A,B,chi,E,e)

is an abbreviation ofcpXYZ(E,e) T(A,B,chi,e)

**X, Y, Z**- Need each one argument: a position descriptor. Returns the (fractional)
atomic co-ordinates of this descriptor. Must be used in definition of
any atomic position after
E=...

for defining the values of x,y,z in accordance with the Wyckoff symbol. E.g.x=X(C1) y=Y(C1) z=Z(C1)

**XYZ**- needs one argument: a position descriptor. Usage:
XYZ(C1)

is simply an abbreviation forx=X(C1) y=Y(C1) z=Z(C1)

**WW**- Needs at least 5 arguments. It defines an interaction energy in accordance
to common used values in molecular dynamics. Use it in the way:
WW(a,m,b,n,(A1,A2,...)) WW(a,m,b,n,(A1,A2,...),(B1,B2,...))

The interaction energy in common is given as a*r^{m}+b*r^{n}, where r is the distance between both atoms. The results for all significant atomic pairs (also in neighbour elementary cells etc.) are added and multiplied with the value of the variable Theory (default: zero). This value then is added to the minimized value during Rietveld's fit. The first line means all combinations of one list (e.g. all interactions between carbon atoms of a molecule). The second line means all combinations between two lists of atoms (e.g. all interactions between all carbon and all nitrogen atoms of a molecule).As a special feature, you can define an occupation probability of the position A (usable for multiple conformations):

WW(a,m,b,n,(A1,A2(p),...),(B1(q),...))

**WWalt**- Needs one additional parameter to WW. This last parameter is an interaction probability. You need it for correlated occupation probabilities of two atomic positions. In WW, the interaction probability is computed as the product of the two occupation probabilities.
**Straf**- Needs one argument: An expression. The square of this expression is used as an energy term. So you can define any arbitrary penalty function.

Bondings=E1,E2,...as many as you want. They are controlled by the variable BondLevel (default value 1). This means: Every atom didn't interact (in WW/WWalt) with itself (BondLevel=0), the next bonded atoms (the atoms must be neighbours in any Bondings list, case BondLevel=1), the next next bonded atoms (BondLevel=2) and so on.

`my`

, which holds
the linear attenuation coefficient of the phase.
In the case `FMult`

is set,
`my`

holds the sum of the linear attenuation
coefficients of all `my[i]`

. Otherwise, `my`

defaults to `my[1]`

. Using `my[i]`

, one may
compute total my values differing from the above defaults.
For a simple Brindley
correction (identic grain size for every phase) please use the auxiliary GOAL

GOAL:phasex=GEWICHT*exp(my*d*3/4)where d holds the mean grain diameter in microns. This is valid since my is given in the unusual unit µm

In cases you use other wavelengths than the usual (Co, Cr, Cu, Fe) for which
no file *.mdr exist, `my`

will be set to zero. This is especially
the case when using
`SYNCHROTRON=`

or `LAMDA=`

with an numeric value in the *.sav file for this BGMN run.

In addition the variable

my[i]holds the linear absorption coefficient as caused by all atomic settings contibuting to

`F[i]`

(in case
`FMult`

is set). Otherwise, it holds
the linear absorption coefficient of the i`RefMult`

.

densityholds the sum of the X ray densities density[i] (in case

`FMult`

is defined), otherwise
the X ray density of the 1`RefMult`

is defined).
density[i]holds the X ray density as caused from all atomic settings contibuting to

`F[i]`

(in case `FMult`

is set).
Otherwise, it holds the X ray density of the i**NTHREADS**- Number of threads as used for calculation in parallel. Should
less or equal the number of CPUs in your PC. As of level
5.0.7, all three geometry programs (GEOMET, MAKEGEQ, VERZERR) are
parallelized, altough with quite different efficiency:
**GEOMET**- will use multiple threads for increased precision: There will be additional angular positions in the generated *.ger file. Parallel efficiency is quite good.
**MAKEGEQ**- will even use a smaller step size, except for capillary geometry where MAKEGEQ is much slower. Parallel efficiency is far from being 100%.
**VERZERR**- will speed up, but parallel efficiency is even far from being 100%.

**VERZERR**- Name of the GER-file (output of GEOMET and VERZERR) and (if no variable GEQ is defined) the output GEQ-file of MAKEGEQ.
**TubeTails**- File with pattern data for Tube Tails correction. Implementation restriction: This file may contain only one scan of equidistant data. Possible file formats are identic to the VAL[i] entry.
**R**- Gomiometer radius.
**FocusH FocusW**- Axial (FocusH) and equatorial (FocusW) dimension of the X-ray tube's focus. FocusW means the optical focus width. Usually, the thermal focus dimensions are printed on the X-ray tube. The optical equatorial focus dimension is reduced by the take-off angle of X-rays from the anode surface (usually 6°). In following, the optical equatorial focus dimension equals the 10th part of the thermal one.
**HSlitR, HSlitW**- Radius (distance from device axis) and width of the equatorial divergence slit. May depend from the variable zweiTheta, which means variable divergence slit. In this case GSUM=Y should be used.
**RoundSlitR, RoundSlitD**- Radius (distance from device axis) and diameter of a round slit (plate with a circular hole) in the primary beam.
**PColl**- Divergency angle of the primary soller slit, e.g. 0.5/25 (unit is radian). Default is no collimator.
**PCollA**- Out-of-plane-angle of primary soller slit.
**VSlitR, VSlitH**- Radius (distance from device axis) and width of the axial divergence slit.
**SamplD**- Diameter of a round specimen. Default value is infinite (sufficient large). Using a small value, you should give GSUM=Y.
**DeltaOmega**- Ω twist of the specimen, valid only for
`GEOMTRY=REFLEXION`

. Changes profile shapes plus intensities (GEOMET) and changes effective penetration depths depending from`zweiTheta`

(MAKEGEQ). May depend from`zweiTheta`

. Therefore, may be used for simulating grazing incidence, too. **AirScat**`AirScat=`

may be set for defining an air scatter blocker (a metal plate perpendicular to the sample surface, the goniometer axis within the plane of the plate).`AirScat`

should be set to the height of the blocker above sample surface. Valid only for`GEOMETRY=REFLEXION`

.**SamplW, SamplH**- Length and equatorial dimension of a rectangular, not rotated specimen. Default values are infinite (sufficient large).
**SSlitW, SSlitR**- Radius (distance from device axis) and width of the anti-scatter
slit. May depend from the variable zweiTheta, which means variable
anti-scatter slit. If used in conjunction with
TubeTails, you should use the switch
`GSUM=Y`

. **SColl**- Divergency angle of the secondary soller slit.
**SCollA**- Out-of-plane-angle of secondary soller slit.
**DetW, DetH**- Equatorial (DetW) and axial (DetH) dimension of the receiving slit. DetW may depend on Bragg angle zweiTheta in cases of variable receiving slit, as described for variable divergence slits.
**DetArrayW**- Total equatorial dimension (in mm) of a 1D array of detectors such as Vantec-1, Lynxeye (Bruker) or X'Celerator (Panalytical). In such cases, DetW should be assigned the equatorial dimension of a single detection unit and DetH the axial dimension of the detection units.
**MonR, MonH**- Radius of a secondary monochromator (beam path length from device axis). It's axial dimension is smaller than those of the detection slit, in most cases. Therefore give MonR and use the monochromator crystal's axial dimension as MonH.
**EPSG**- Computational accuracy. Default value: 0.7 per cent.
**zweiTheta[1] zweiTheta[2]...**- 2Θ values, for which geomet computes profile shapes.
**GSUM**- Logical switch. Values J/j/Y/y means: A variable GSUM is computed and written to each profile in the GER file. GSUM holds the relative intensity of each profile. Use it for small specimens, variable divergence slits etc.
**TSlitR, TSlitH**- The usage of an additional axial slit near the X-ray tube is supported. These variables describe it's distance from device axis and axial dimension. Optional.
**FocusS, FocusA**- These variables describe a axial shift and an rotation angle (around the line tube-specimen) of the X-ray focus. Optional.
**GEOMETRY**- Measuring geometry. Default value is REFLEXION. The value TRANSMISSION describes a planar, thin transmission specimen. The value CAPILLARY describes a thin, wire-like specimen in the goniometer axis. In the case CAPILLARY, SamplD or SamplH describes the length (heigth) of the specimen, and T desribes the diameter of the wire (capillary).
**WMIN, WMAX**- Angular range for the computation done by makegeq. Default range: 20°...140°
**WSTEP**- Stepwidth of makegeq. Default value is 0.01 degree, higher values are recommended. May depend from zweiTheta.
**GEQ**- Output file of makegeq. Default value: The value of the variable VERZERR, but with the extension geq.
**D**- Reciprocal value of the linear absorption's coefficient of the specimen. Default value: zero (no correction of the profile shape for penetration depth)
**T**- Thickness of specimen (GEOMETRY=REFLEXION/TRANSMISSION) or capillary/wire diameter (GEOMETRY=CAPILLARY). Default value: Infinity (sufficient thick) in the case REFLEXION, zero (thin specimen or capillary) in the cases TRANSMISSION/CAPILLARY.
**STANDARDPAR**- Name of the
`*.par`

file containing only the selected reference lines of the standard specimen. Used for learnt profiles. **VAL[x]**- Enumeration of the measured scans, which will be accumulated by the
VERZERR program. Used for learnt profiles.
**Attention**: Take care to unify all multiple reflectios. Unequal crystallographic directions giving identic 1/d should be unified to one line in this file.