# Differences

This shows you the differences between two versions of the page.

 b [2009/08/06 15:36]clare created b [2009/08/27 12:11] (current)clare 2009/08/27 12:11 clare 2009/08/06 15:36 clare created 2009/08/27 12:11 clare 2009/08/06 15:36 clare created Line 1: Line 1: ====== b ====== ====== b ====== + **[//bkg// [@] # # #...]** + + Defines a Chebyshev polynomial where the number of coefficients are equal to the number of numeric values appearing after the //bkg// keyword. + + **[//​bootstrap_errors//​ !Ecycles]** + + **[//​fraction_of_yobs_to_resample//​ !E]** + + **[//​determine_values_from_samples//​]** + + **[//​resample_from_current_ycalc//​]** + + //​bootstrap_errors//​ uses the bootstrap method of error determination (Efron & Tibshirani 1986, DiCiccio & Efron 1996, Chernick 1999). Bootstrapping comprises a series of refinements each with a fraction Yobs data modified to obtain a new bootstrap sample. The standard deviations of the refined values then become the bootstrap errors. !Ecycles corresponds to the number of refinement cycles to perform, it defaults to 200. The resulting bootstrap errors are written to the *.OUT file. + + //​fraction_of_yobs_to_resample//​ corresponds to the fraction of the observed data that is to be replaced each refinement cycle, it defaults to 0.37. Replacement data is by default obtained randomly from the calculated pattern obtained at the end of the first refinement cycle. If //​resample_from_current_ycalc//​ is defined then replacement data are obtained from the currently completed refinement cycle. The updated Yobs data is additionally modified such that the change in Rwp is unchanged in regards to the current Ycalc. + + Parameter values used at the start of each refinement cycle are obtained from the end of the first refinement cycle. //​val_on_continue//​ can additionlly be used to change parameter values at the start of a cycle. + + If //​determine_values_from_samples//​ is defined then parameter values at the end of bootstrapping are updated with values determined from the bootstrapping refinement cycles. + + Parameter values obtained at the end of each bootstrap refinement cycle is written to disk in binary format. These values are then read and processed at the end of the bootstrap process without actually storing all of the values in memory. Thus the bootstrap process has a small memory footprint. + + **[//​box_interaction//​ [//from_N// #] [//to_N// #] [//​no_self_interaction//​] \$site_1 \$site_2 N E]...** + + Defines a site interaction with the name N between [[#​k142|sites identified]] by \$site_1 and \$site_2. E represents the site interaction equation which can be a function of R and Ri. R returns the distance in Å between two atoms; these distances are updated when dependent fractional atomic coordinates are modified. The name of the //​box_interaction//​ N can be used in equations and in particular penalty equations. + + When either //from_N// or //to_N// are defined, the interactions between \$site_1 and \$site_2 are sorted by distance and only the interactions between the //from_N// and //to_N// are considered. + + //​no_self_interaction//​ prevents any interactions between equivalent positions of the same site. This is useful when a general position is used to describe a special position. + + For example, the following could be used to iterate from the nearest atom to the third atom from a site called Si1: + + str + + site Si1... + + site O1... + + site O2... + + site O3... + + box_interaction Si1 O* to_N 2 !si1o = (R-2)^2; + + penalty = !si1o; + + In this example the nearest three oxygen atoms are soft constrained to a distance of 2 Angstroms by the use of the penalty function. Counting starts at zero and thus //to_N// is set to 2 to iterate up to the third nearest atom. + + The wild card character ‘*’ used in “O*” means that sites with names starting with ‘O’ are considered. In addition to using the wild card character, the site names can be explicitly written within double quotation marks, for example: + + box_interaction Si1 “O1 O2 O3” to_N 3 etc... + + Interactions between Si1 and the three oxygen atoms O1, O2, O3 may not all be included, for example, if Si1 had as its nearest neighbours the following: + + Si1 ↔ O1,1 at a distance of 1.0 Angstroms + + Si1 ↔ O2,3 at a distance of 1.1 Angstroms + + Si1 ↔ O2,1 at a distance of 1.2 Angstroms + + Si1 ↔ O1,2 at a distance of 1.3 Angstroms + + then two equivalent positions of site O1 and two equivalent positions of O2 are included in the interaction equation; thus no interaction between Si1-O3 is considered. To ensure that each of the three oxygens had Si1 included in an interaction equation then the following could be used: + + box_interaction “O1 O2 O3” Si1 to_N 0 etc… + + Thus the order of \$site_1 and \$site_2 is important when either from_N or to_N is defined. + + The reserved parameters Ri and Break can also be used in interaction equations when either from_N or to_N is defined. Ri returns the index of the current interaction being operated on with the first interaction starting at Ri=0. + + //​box_interaction//​ is used for example in the Anti_Bump macro. + + **[//​break_if_been_there//​  \$sites !E [//​been_there_buffer//​ #​buffer_size]** **[//​been_there_clear_buffer//​ !E]]** + + Breaks the current [[#​k144|refinement cycle]] if the [[#​k142|sites identified]] in \$sites are less than !E away to a previous configuration. //​been_there_buffer//​ determines the number of previous site configurations to keep. If //​been_there_clear_buffer//​ is defined and it evaluates to non-zero then the "been there buffer"​ is cleared. + + Example ALVO4-GRS.INP demonstrates the use of //​break_if_been_there//​. When the current atomic configuration is similar to a previous configuration then that particular refinement cycle is terminated and the temperature is advanced to the next temperature. + + //​break_if_been_there//​ is typically not used with //​[[#​k133|randomize_on_errors]]//​ as the latter includes its own version of remembering parameter values and breaking a cycle early. + + **[//​brindley_spherical_r_cm//​ !E]** + + Used for applying the Brindley correction for spherical particles. The macro Apply_Brindley_Spherical_R_PD(R,​ PD) is defined as: + + macro Apply_Brindley_Spherical_R_PD(R,​ PD) + + { + + brindley_spherical_r_cm = (R) (PD); + + } + + R is the radius of the particle in cm and PD is the packing density, a number that is not updated and not refined. Here’s an example: + + xdd... + + str + + Apply_Brindley_Spherical_R_PD(R,​ PD) + + MVW(0,0,0) + + str + + Apply_Brindley_Spherical_R_PD(R,​ PD) + + MVW(0,0,0) + + Note, that PD is incorporated by way of an equation definition for //​brindley_spherical_r_cm//​. Also, //​phase_MAC//​ or MVW need not be defined as they are created as needed; their definition however is necessary in order to obtain their respective values. The Brindley correction is not applied to phases without the //​brindley_spherical_r_cm//​ defined. + + The Brindley correction can be applied to all phases including //xo_Is//. In the case of phases that do not have lattice parameters or sites then the User would need to enter values for //​cell_volume//,​ //​cell_mass//​ and //​phase_MAC//​ in order for the Brindley correction to work and for the weight percents to be obtained. This allows for the incorporation of non-structural phases in quantitative analysis. For example, the following works as the necessary information have been included. + + xo_Is + + Apply_Brindley_Spherical_R_PD(.002,​ .6) + + MVW(654, 230, 0) + + phase_MAC 200

##### Toolbox 