refining_setting_weight_percents_directly
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
refining_setting_weight_percents_directly [2015/10/29 06:33] – rowlesmr3 | refining_setting_weight_percents_directly [2022/11/03 15:08] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Refining/ | ||
+ | ==== Version 5 ==== | ||
+ | The macro Known_Weight_Percent can be used to either set a weight percent or to refine a weight percent. For example: | ||
+ | |||
+ | | ||
+ | ' scale parameter must not be defined for this phase | ||
+ | Known_Weight_Percent(10) ' set weight percent to 10 | ||
+ | |||
+ | To refine the weight percent then the following could be used: | ||
+ | |||
+ | | ||
+ | prm wt1 10 min 0 max 100 | ||
+ | Known_Weight_Percent(wt1) | ||
+ | |||
+ | Only one phase can have its weight percentage set by this macro. All remaining phases must have a scale factor. | ||
+ | |||
+ | ==== Version 4.1 ==== | ||
+ | |||
+ | Symbols used here are defined in the Technical Reference entry for [cell_mass !E] [cell_volume !E] [weight_percent !E] | ||
+ | |||
+ | Ignoring the Brindley correction we can write | ||
+ | Sp = Q_sum wp / (Mp Vp (1 – wp)) | ||
+ | where Qsum is Qp as written in the manual except that Sp Mp Vp is excluded. | ||
+ | |||
+ | Thus if you had four phases and you knew the weight percents w1, w2, w3, w4 then you could write: | ||
+ | s1 = (s2 m2 + s3 m3 + s4 m4) w1 / (m1 (1 - w1)) | ||
+ | s2 = (s1 m1 + s3 m3 + s4 m4) w2 / (m2 (1 - w2)) | ||
+ | s3 = (s1 m1 + s2 m2 + s4 m4) w3 / (m3 (1 - w3)) | ||
+ | s4 = (s1 m1 + s2 m2 + s3 m3) w4 / (m4 (1 - w4)) | ||
+ | where | ||
+ | m1 = M1 V1 | ||
+ | m2 = M2 V2 | ||
+ | m3 = M3 V3 | ||
+ | m4 = M4 V4 | ||
+ | simplifying: | ||
+ | s1 = s2 m2 x1 + s3 m3 x1 + s4 m4 x1 | ||
+ | s2 = s1 m1 x2 + s3 m3 x2 + s4 m4 x2 | ||
+ | s3 = s1 m1 x3 + s2 m2 x3 + s4 m4 x3 | ||
+ | s4 = s1 m1 x4 + s2 m2 x4 + s3 m3 x4 | ||
+ | where | ||
+ | x1 = w1 / (m1 (1 - w1)) | ||
+ | x2 = w2 / (m2 (1 - w2)) | ||
+ | x3 = w3 / (m3 (1 - w3)) | ||
+ | x4 = w4 / (m4 (1 - w4)) | ||
+ | |||
+ | |||
+ | |||
+ | If you have need for up to 9 phases, please see [[refine_weight_percentage|this macro]] for help. | ||
+ | |||
+ | We need to solve the four equations for three of the scale parameters. We will choose to solve for s1, s2 and s3. | ||
+ | |||
+ | s4 will be refined. | ||
+ | |||
+ | Substitute s2 into equation s1: | ||
+ | s1 = (s1 m1 x2 + s3 m3 x2 + s4 m4 x2) m2 x1 + s3 m3 x1 + s4 m4 x1 | ||
+ | or, | ||
+ | s1 = (s3 (m3 x2 m2 x1 + m3 x1) + s4 (m4 x2 m2 x1 + m4 x1)) / (1 - m1 x2 m2 x1) | ||
+ | Let | ||
+ | t13 = (m3 x2 m2 x1 + m3 x1) / (1 - m1 x2 m2 x1) | ||
+ | t14 = (m4 x2 m2 x1 + m4 x1) / (1 - m1 x2 m2 x1) | ||
+ | or, | ||
+ | s1 = s3 t13 + s4 t14 | ||
+ | Substitute s2 into equation s3: | ||
+ | s3 = s1 (m1 x3 + m1 x2 m2 x3) + s3 m3 x2 m2 x3 + s4 (m4 x2 m2 x3 + m4 x3) | ||
+ | or, | ||
+ | s3 = (s1 (m1 x3 + m1 x2 m2 x3) + s4 (m4 x2 m2 x3 + m4 x3)) / (1 - m3 x2 m2 x3) | ||
+ | Let | ||
+ | t31 = (m1 x3 + m1 x2 m2 x3) / (1 - m3 x2 m2 x3) | ||
+ | t34 = (m4 x2 m2 x3 + m4 x3) / (1 - m3 x2 m2 x3) | ||
+ | or, | ||
+ | s3 = s1 t31 + s4 t34 | ||
+ | Substituting s1 into s3 we get: | ||
+ | s3 = s3 t13 t31 + s4 t14 t31 + s4 t34 | ||
+ | or, | ||
+ | s3 = s4 (t14 t31 + t34) / (1 - t13 t31) | ||
+ | Then we set s4 to a starting refinement value and then calculate s1, s2 and s3 using the above equations, ie. | ||
+ | s3 = s4 (t14 t31 + t34) / (1 - t13 t31) | ||
+ | s1 = s3 t13 + s4 t14 | ||
+ | s2 = s1 m1 x2 + s3 m3 x2 + s4 m4 x2 | ||
+ | Refining on s4 works well and the weight percents are kept to their known values. Similar equations can be written for three phases etc... | ||
+ | |||
+ | Below is and INP file ZRO2-WT.INP (with data file ZRO2.DAT) that shows the above working nicely on Zro2. It uses the helper macro wt_dets | ||
+ | <code topas> | ||
+ | prm w1 5 min 1.0e-6 ' | ||
+ | prm w2 2 min 1.0e-6 ' | ||
+ | prm w3 2 min 1.0e-6 ' | ||
+ | |||
+ | If all of the weight percents were known then the three weight percents should be fixed to their known values. | ||
+ | Here's the ZRO2-WT.INP | ||
+ | <code topas> | ||
+ | { | ||
+ | prm m##n = Get(cell_mass) Get(cell_volume); | ||
+ | prm x##n = w##n / (m##n (100 - w##n)); | ||
+ | scale = s##n; | ||
+ | } | ||
+ | |||
+ | r_wp 0 | ||
+ | |||
+ | prm !t13 = (m3 x2 m2 x1 + x1 m3) / (1 - m1 x2 m2 x1); | ||
+ | prm !t14 = (m4 x2 m2 x1 + x1 m4) / (1 - m1 x2 m2 x1); | ||
+ | prm !t31 = (m1 x2 m2 x3 + x3 m1) / (1 - m3 x2 m2 x3); | ||
+ | prm !t34 = (m4 x2 m2 x3 + x3 m4) / (1 - m3 x2 m2 x3); | ||
+ | |||
+ | prm s1 = s3 t13 + s4 t14; | ||
+ | prm s2 = s1 m1 x2 + s3 m3 x2 + s4 m4 x2; | ||
+ | prm s3 = s4 (t14 t31 + t34) / (1 - t13 t31); | ||
+ | |||
+ | prm s4 0.01 min 1.0e-12 | ||
+ | |||
+ | prm w1 5 min 1.0e-6 | ||
+ | prm w2 2 min 1.0e-6 | ||
+ | prm w3 2 min 1.0e-6 | ||
+ | prm w4 = 100 - w1 - w2 - w3; : 0 | ||
+ | |||
+ | DAT(zro2) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ZE(@, 0) | ||
+ | bkg @ 0 0 0 0 | ||
+ | |||
+ | | ||
+ | Tetragonal(6.6020, | ||
+ | site Zr x 0 y =3/4; z =1/8; occ Zr 1 beq 1 | ||
+ | site Si x 0 y =1/4; z =3/8; occ Si 1 beq 1 | ||
+ | site O x 0 y 0.066 z 0.1951 | ||
+ | CS_L(500) | ||
+ | MVW( 733.228, 260.629261, 0.675`) | ||
+ | | ||
+ | wt_dets(1) | ||
+ | | ||
+ | | ||
+ | Tetragonal(@ 3.60, @ 5.17) | ||
+ | site Zr x 0 y 0 z 0 occ Zr+4 0.95 beq 0.5 | ||
+ | occ Y+3 0.05 beq 0.5 | ||
+ | site O x 0 y 0.5 z 0.20514 | ||
+ | Strain_L(@, .1) | ||
+ | Strain_G(@, .1) | ||
+ | MVW( 0, 0, 0) | ||
+ | | ||
+ | wt_dets(2) | ||
+ | | ||
+ | | ||
+ | Cubic(@ 5.13) | ||
+ | site Zr x 0 y 0 z 0 occ Zr 0.85 beq 1 | ||
+ | occ Y 0.15 beq 1 | ||
+ | site O x 0.25 y 0.25 z 0.25 occ O 0.962 beq 2 | ||
+ | Strain_G(@, .1) | ||
+ | MVW( 0, 0, 0) | ||
+ | |||
+ | wt_dets(3) | ||
+ | | ||
+ | | ||
+ | Trigonal(@ 4.75, @ 12.99) | ||
+ | site Al x 0 y 0 z 0.35218 occ AL+3 1 beq 0.3366 | ||
+ | site O x 0.30665 y 0 z 0.25000 occ O-2 1 beq 0.3879 | ||
+ | CS_L(500) | ||
+ | MVW( 0, 0, 0) | ||
+ | |||
+ | wt_dets(4)</ | ||
+ | |||
+ | --- // | ||
+ | |||
+ | Weights can be restrained using: | ||
+ | |||
+ | <code topas>' | ||
+ | ' | ||
+ | penalties_weighting_K1 .2 | ||
+ | restraint = (Cubic_Zirconia_wt_percent - 36); : 0 | ||
+ | ' |