refining_setting_weight_percents_directly
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| refining_setting_weight_percents_directly [2011/08/25 18:14] – alancoelho | refining_setting_weight_percents_directly [2025/09/19 15:18] (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 | ||
| + | ' | ||