Warning: Trying to access array offset on value of type null in /home/site/wwwroot/lib/plugins/move/action/rename.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/common.php on line 1955

Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/actions.php on line 38
refining_setting_weight_percents_directly [topas wiki]

User Tools

Site Tools


refining_setting_weight_percents_directly

Differences

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

Link to this comparison view

Next revision
Previous revision
refining_setting_weight_percents_directly [2011/08/25 07:46] – created alancoelhorefining_setting_weight_percents_directly [2022/11/03 15:08] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Refining/Setting Weight Percents directly ======
 +==== Version 5 ====
  
 +The macro Known_Weight_Percent can be used to either set a weight percent or to refine a weight percent. For example:
 +
 +   str...
 +      ' 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:
 +
 +   str...
 +      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  to hide some of the details. At the top of the file we see:
 +<code topas>prm s4  0.01 min 1.0e-12  ' REFINABLE
 +prm w1  5 min 1.0e-6 ' Refine of fix depending on prior knowledge
 +prm w2  2 min 1.0e-6 ' Refine of fix depending on prior knowledge
 +prm w3  2 min 1.0e-6 ' Refine of fix depending on prior knowledge</code>
 +
 +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>macro wt_dets(n)
 +{
 +   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         ' REFINABLE
 +
 +prm w1  5 min 1.0e-6  ' Refine of fix depending on prior knowledge
 +prm w2  2 min 1.0e-6  ' Refine of fix depending on prior knowledge
 +prm w3  2 min 1.0e-6  ' Refine of fix depending on prior knowledge
 +prm w4 = 100 - w1 - w2 - w3; : 0
 +
 +DAT(zro2)
 +   CuKa2(0.001)
 +   LP_Factor(17)
 +   Radius(200.5)
 +   Divergence(1)
 +   Slit_Width(0.4)
 +   Full_Axial_Model(12, 20, 12, 2.3, @ 10)
 +   ZE(@, 0)
 +   bkg @  0 0 0 0
 +
 +   STR(I_41/A_M_D:2, Zircon)
 +      Tetragonal(6.6020, 5.97960)
 +      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   occ O  1   beq 2
 +      CS_L(500)
 +      MVW( 733.228, 260.629261, 0.675`)
 +      
 +      wt_dets(1)
 +      
 +   STR(P_42/N_M_C_S, "Zr O2")
 +      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  occ O-2     beq 1
 +      Strain_L(@, .1)
 +      Strain_G(@, .1)
 +      MVW( 0, 0, 0)
 +      
 +      wt_dets(2)
 +      
 +   STR(F_M_-3_M, "Cubic Zirconia")
 +      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)
 +      
 +   STR(R_-3_c, "Corundum Al2 O3")
 +      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)</code>
 +
 + --- //[[alan.coelho@bigpond.com|Alan Coelho]] 2011/08/25 19:09//
 +
 +Weights can be restrained using:
 +
 +<code topas>'---------------------------
 +'Example of restraining weight percent to a known value
 +penalties_weighting_K1 .2
 +restraint = (Cubic_Zirconia_wt_percent - 36); : 0
 +'---------------------------</code>
refining_setting_weight_percents_directly.txt · Last modified: 2022/11/03 15:08 by 127.0.0.1