Differences

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

Link to this comparison view

Next revision
Previous revision
wppm_macros [2018/07/08 10:56]
johnsoevans created
wppm_macros [2020/07/16 11:29] (current)
Line 1: Line 1:
 ====== WPPM Macros ====== ====== WPPM Macros ======
  
-Paolo Scardi and co-workers have provided a set of macros for their WPPM methods in TOPAS. ​ The macros are listed below. ​ Save these as WPPM_macros.inc in your main TOPAS directory and add a line to your local.inc saying "#​include WPPM_macros.inc"​.  ​More details will follow along with links to tutorials ​and the publication.+Paolo Scardi and co-workers have provided a set of macros for their WPPM methods in TOPAS. ​ The macros are listed below. ​ Save these as WPPM_macros.inc in your main TOPAS directory and add a line to your local.inc saying "#​include WPPM_macros.inc"​.  ​ 
 + 
 +The publication is at: [[ http://​scripts.iucr.org/​cgi-bin/​paper?​S160057671801289X|J. Appl. Cryst 2018]], and the abstract says: 
 + 
 +Macros implementing the main concepts of the whole powder pattern modelling approach have been written for TOPAS. Size and strain broadening components of the diffraction line profiles can be convolved ​with the instrumental profile already available among the standard commands of TOPAS. Specific macros are presented with examples of applications including plastically deformed powders ​and atomistic simulations. A macro is presented for the modelling of surface relaxation effects in spherical nanocrystals. 
 + 
 +Note: delete any old wppm macros you have around before using these.
  
 <code topas> <code topas>
 +
 ' WPPM macros by P. Scardi, C. Perez-Demydenko & C.L. Azanza Ricardo ' WPPM macros by P. Scardi, C. Perez-Demydenko & C.L. Azanza Ricardo
 ' See also: P. Scardi, C. Perez-Demydenko,​ C.L. Azanza Ricardo & A. Coelho, Journal of Applied Crystallography,​ 2018 ' See also: P. Scardi, C. Perez-Demydenko,​ C.L. Azanza Ricardo & A. Coelho, Journal of Applied Crystallography,​ 2018
Line 14: Line 21:
       WPPM_ft_conv = 1 - 0.75*WPPM_L/​RRv + 0.0625*(WPPM_L/​RRv)^3 ;       WPPM_ft_conv = 1 - 0.75*WPPM_L/​RRv + 0.0625*(WPPM_L/​RRv)^3 ;
  
-       '​WPPM_break_on_small = 1e-7; +      ​'​WPPM_break_on_small = 1e-7; 
-       ​WPPM_L_max = 2*CeV(RRc, RRv); +      WPPM_L_max = 2*CeV(RRc, RRv); 
-       ​WPPM_th2_range = 55;+      WPPM_th2_range = 55;
    }    }
- 
 macro WPPM_Sphere_LogNormDIST(muc,​ muv, sigc, sigv) macro WPPM_Sphere_LogNormDIST(muc,​ muv, sigc, sigv)
    {    {
Line 43: Line 49:
          ​WPPM_th2_range = 30;          ​WPPM_th2_range = 30;
    }    }
- 
-    
 macro getInvariant(sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) macro getInvariant(sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15)
-+   
- #if Or(sg == 1, sg == 2); '​Triclinic,​ -1 +      #if Or(sg == 1, sg == 2); '​Triclinic,​ -1 
- E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L) + 4*(E7*(H^3)*K + E8*(H^3)*L + E9*H*(K^3) + E10*(K^3)*L + E11*H*(L^3) + E12*K*(L^3) + E13*H*H*K*L + E14*H*K*K*L + E15*H*K*L*L)+         ​E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L) + 4*(E7*(H^3)*K + E8*(H^3)*L + E9*H*(K^3) + E10*(K^3)*L + E11*H*(L^3) + E12*K*(L^3) + E13*H*H*K*L + E14*H*K*K*L + E15*H*K*L*L) 
 +       
 +      #elseif And(sg >= 3, sg <= 15); '​Monoclinic,​ 2/m 
 +         If (And(Constant(Get(al)) == 90, Constant(Get(ga)) == 90), ' unique axis b  
 +            E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*L*L + E5*K*K*L*L + E6*H*H*K*K) + 4*(E7*(H^3)*L + E8*H*(L^3) + E9*H*K*K*L),​ 
 +            If (And(Constant(Get(al)) == 90, Constant(Get(be)) == 90), ' unique axis c  
 +               ​E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L) + 4*(E7*(H^3)*K + E8*H*(K^3) + E9*H*K*L*L),​ 
 +               "​Invalid Monoclinic lattice parameters"​ 
 +            ) 
 +         ) 
 +      #elseif And(sg >= 16, sg <= 74); '​Orthorhombic,​ mmm 
 +         ​E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L)
  
- #elseif And(sg >= 3, sg <= 15); '​Monoclinic,​ 2/m +      ​#elseif And(sg >= 75, sg <= 88); '​Tetragonal,​ 4/m 
- /* unique axis b */ +         ​E1*(H^4 + K^4) + E2*L^4 + 2*E3*H*H*K*K + 2*E4*(H*H + K*K)*L*L + 4*E5*H*K*(H*H - K*K)
- E1*H^4 + E2*L^4 + E3*K^4 + 2*(E4*H*H*L*L + E5*K*K*L*L + E6*H*H*K*K) + 4*(E7*(H^3)*L + E8*H*(L^3) + E9*H*K*K*L) +
- /* unique axis c */  +
- /* E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L) + 4*(E7*(H^3)*K + E8*H*(K^3) + E9*H*K*L*L) */ +
- +
- #elseif And(sg >= 16, sg <= 74); '​Orthorhombic,​ mmm +
- E1*H^4 + E2*K^4 + E3*L^4 + 2*(E4*H*H*K*K + E5*K*K*L*L + E6*H*H*L*L) +
- +
- #elseif And(sg >= 75, sg <= 88); '​Tetragonal,​ 4/m +
- E1*(H^4 + K^4) + E2*L^4 + 2*E3*H*H*K*K + 2*E4*(H*H + K*K)*L*L + 4*E5*H*K*(H*H - K*K)+
                
- #elseif And(sg >= 89, sg <= 142); '​Tetragonal,​ 4/mmm +      ​#elseif And(sg >= 89, sg <= 142); '​Tetragonal,​ 4/mmm 
- E1*(H^4 + K^4) + E2*L^4 + 2*E3*H*H*K*K + 2*E4*(H*H + K*K)*L*L+         ​E1*(H^4 + K^4) + E2*L^4 + 2*E3*H*H*K*K + 2*E4*(H*H + K*K)*L*L
  
- #elseif And(sg >= 143, sg <= 148); '​Trigonal,​ -3 +      ​#elseif And(sg >= 143, sg <= 148); '​Trigonal,​ -3 
- #if Or(sg == 146, sg == 148); '​Trigonal space groups supporting also rhombohedral axes  +         ​#if Or(sg == 146, sg == 148); '​Trigonal space groups supporting also rhombohedral axes       
- /* conventional rhombohedral setting */ +            If (Constant(Get(ga)) == 120, 
- /* E1*(H^4 + K^4 + L^4) + 2*E2*(H*H*K*K + H*H*L*L ​+ K*K*L*L4*E3*H*K*L*(H + K + L) + 4*E4*((H^3)*K + (K^3)*L ​+ H*(L^3)) ​+ 4*E5*(H*(K^3) + (H^3)*L + K*(L^3)) */  +               ​E1*(H*H - H*K + K*K)^+ 2*E2*(H*H - H*K + K*K)*L*L + E3*L^4 + 4*E5*(H^3 - 3*H*K*K + (K^3))*L + 4*E4*H*(H - K)*K*L, 
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +               If (Constant(Get(ga)) == 60
- E1*(H*H ​H*K + K*K)^2 ​ + 2*E2*(H*H ​H*K + K*K)*L*L + E3*L^4 + 4*E5*(H^3 3*H*K*K + (K^3))*L + 4*E4*H*(- K)*K*L +                  E1*(H*H ​H*K + K*K)^2 + 2*E2*L*L*(H*H H*K + K*K) + E3*L^4 + (4/3)*E4*L*(H^3 3*H*H*K K^3) + (4/3)*E5*L*(-H^3 + 3*H*K*K + K^3)' ​60deg 
- /*non conventional hexagonal setting, {a,​b,​c}->​{a+b,b,c}gamma=60deg*/ +                  E1*(H^4 + K^4 L^4) + 2*E2*(H*H*K*K + H*H*L*L + K*K*L*L) + 4*E3*((H^3)*K + (K^3)*L + H*(L^3)) 4*E4*(H*(K^3) + (H^3)*L + K*(L^3))4*E5*H*K*L*(H + K + L
- /* E1*(H*H H*K + K*K)^2 + 2*E2*L*L*(H*H + H*+ K*K) + E3*L^+ (4/3)*E4*L*(H^3 + 3*H*H*K - K^3) + (4/3)*E5*L*(-H^3 + 3*H*K*+ K^3*/ +               ) 
- +            ) 
- #else  +         #else       
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +            If (Constant(Get(ga)) ​== 120, 
- E1*(H*H - H*K + K*K)^2 ​ + 2*E2*(H*H - H*K + K*K)*L*L + E3*L^4 + 4*E5*(H^3 - 3*H*K*K + (K^3))*L + 4*E4*H*(H - K)*K*L +               ​E1*(H*H - H*K + K*K)^2 + 2*E2*(H*H - H*K + K*K)*L*L + E3*L^4 + 4*E5*(H^3 - 3*H*K*K + (K^3))*L + 4*E4*H*(H - K)*K*L, 
- /*non conventional hexagonal setting{a,​b,​c}->​{a+b,​b,​c},​ gamma=60deg*/​ +               ​E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + (4/​3)*E4*L*(H^3 + 3*H*H*K - K^3) + (4/​3)*E5*L*(-H^3 + 3*H*K*K + K^3) ' 60 
- /* E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + (4/​3)*E4*L*(H^3 + 3*H*H*K - K^3) + (4/​3)*E5*L*(-H^3 + 3*H*K*K + K^3) */ +            ) 
- #endif +         ​#endif 
-  +       
- #elseif And(sg >= 149, sg <= 167); '​Trigonal,​ -3m +      #elseif And(sg >= 149, sg <= 167); '​Trigonal,​ -3m 
- #if Or(sg ==150, sg ==152, sg ==154, sg ==155, sg ==156, sg ==158, sg ==160, sg ==161, sg ==164, sg ==165 , sg ==166, sg ==167); '​Trigonal,​ -3m1 +         ​#if Or(sg ==150, sg ==152, sg ==154, sg ==155, sg ==156, sg ==158, sg ==160, sg ==161, sg ==164, sg ==165 , sg ==166, sg ==167); '​Trigonal,​ -3m1 
- #if Or(sg == 155, sg == 160, sg == 161, sg == 166, sg == 167); '​Trigonal space groups supporting also rhombohedral axes  +            #if Or(sg == 155, sg == 160, sg == 161, sg == 166, sg == 167); '​Trigonal space groups supporting also rhombohedral axes       
- /* conventional rhombohedral setting */ +               If (Constant(Get(ga)) == 120, 
- /​* ​E1*(H^4 + K^4 + L^4) + + 2*E2*(H*H*K*K + H*H*L*L ​+ K*K*L*L) + 4*E3*H*K*L*(H + K + L) +  4*E4*(H*K*(H*H + K*K) + H*L*(H*H + L*L) + K*L*(K*K + L*L)) */ +                  E1*(H*H ​H*K + K*K)^2 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H - K)
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +                  If (Constant(Get(ga)) == 60
- E1*(H*H ​H*K + K*K)^2 + 2*E2*L*L*(H*H ​H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H ​K) +                     ​E1*(H*H ​H*K + K*K)^2 + 2*E2*L*L*(H*H ​H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H ​K), ' ​60deg 
- /*non conventional hexagonal setting{a,​b,​c}->​{a+b,​b,​c},​ gamma=60deg*/ +                     ​E1*(H^4 + K^4 + L^4) + 2*E2*(H*H*K*K + H*H*L*L ​+ K*K*L*L) + 4*E3*(H*K*(H*H + K*K) + H*L*(H*H + L*L) K*L*(K*K + L*L)) + 4*E4*H*K*L*(H + K + L
- /​* ​E1*(H*H ​H*K + K*K)^2 2*E2*L*L*(H*H + H*K + K*KE3*L^4 + 4*E4*H*K*L*(H + K) */ +                  ) 
- +               ) 
- #else  +            #else       
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +               If (Constant(Get(ga)) == 120
- E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H - K) +                  E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H - K), 
- /*non conventional hexagonal setting{a,​b,​c}->​{a+b,​b,​c},​ gamma=60deg*/​ +                  E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H + K) ' 60deg 
- /​* ​E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + 4*E4*H*K*L*(H + K) */ +               ) 
- #endif  +            ​#​endif ​            
- #else '​Trigonal,​ -31m +         ​#else '​Trigonal,​ -31m 
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +            If (Constant(Get(ga)) == 120
- E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 + E4*L*(4*(H^3) - 6*H*H*K - 6*H*K*K + 4*(K^3)) +               ​E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 + E4*L*(4*(H^3) - 6*H*H*K - 6*H*K*K + 4*(K^3)), 
- /*non conventional hexagonal setting{a,​b,​c}->​{a+b,​b,​c},​ gamma=60deg*/​ +               ​E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + (4/​3)*E4*L*(2*(H^3) + 3*H*H*K - 3*H*K*K - 2*(K^3)) ​' 60deg 
- /* E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 + (4/​3)*E4*L*(2*(H^3) + 3*H*H*K - 3*H*K*K - 2*(K^3)) ​*/ +            ) 
- #endif +         ​#endif 
-  +       
- #elseif And(sg >= 168, sg <= 194); '​Hexagonal,​ 6/m and 6/mmm +      #elseif And(sg >= 168, sg <= 194); '​Hexagonal,​ 6/m and 6/mmm 
- /* conventional hexagonal setting {a,b,c}, gamma=120deg */ +         If (Constant(Get(ga)) == 120
- E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4 +            E1*(H*H - H*K + K*K)^2 + 2*E2*L*L*(H*H - H*K + K*K) + E3*L^4, 
- /*non conventional hexagonal setting{a,​b,​c}->​{a+b,​b,​c},​ gamma=60deg*/​ +            E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 ​' 60deg 
- /* E1*(H*H + H*K + K*K)^2 + 2*E2*L*L*(H*H + H*K + K*K) + E3*L^4 ​*/ +         ) 
- +      #elseif And(sg >= 195, sg <= 230); '​Cubic,​ m-3 and m-3m 
- #elseif And(sg >= 195, sg <= 230); '​Cubic,​ m-3 and m-3m +         ​E1*(H^4 + K^4 + L^4) + 2*E2*(H*H*K*K + H*H*L*L + K*K*L*L) 
- E1*(H^4 + K^4 + L^4) + 2*E2*(H*H*K*K + H*H*L*L + K*K*L*L) +      #​else 
- #endif +      ​#endif 
-} +   ​
- +macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9)     
-' E1 to E9 for space groups 3 to 15 (2/m) +   
-macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9) { +      ' E1 to E9 for space groups ​to 15 (2/m
- Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9,,,,,,)  +      Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6, E7E8E9,,,,,,)  
-+   ​
- +macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6)  
-' E1 to E6 for space groups ​16 to 64 (mmm+   { 
-macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6) { +      ' E1 to E6 for space groups ​16 to 64 (mmm) 
- Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5, E6,,,,,,,,,​)  +      Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5E6,,,,,,,,,)  
-} +   ​}
- +
-' E1 to E5 for space groups 75 to 88 (4/m) and 143 to 148 (-3) +
-macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5) { +
- Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5,,,,,,,,,,)  +
-+
- +
-' E1 to E4 for space groups ​89 to 142 (4/mmm) and 149 to 167 (-3m+
-macro Out_Invariant(file,​sg,​ E1, E2, E3, E4) { +
- Out_Invariant(file,​sg,​ E1, E2, E3, E4,,,,,,,,,,,​)  +
-+
- +
-' E1 to E3 for space groups 168 to 194 (6/m and 6/mmm) +
-macro Out_Invariant(file,​sg,​ E1, E2, E3) { +
- Out_Invariant(file,​sg,​ E1, E2, E3,,,,,,,,,,,,​)  +
-}+
  
-' E1 to E2 for space groups ​195 to 230 (m-3 and m-3m) +macro Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5)  
-macro Out_Invariant(file,​sg,​ E1, E2) { +   { 
- Out_Invariant(file,​sg,​ E1, E2,,,,,,,,,,,,,​)  +      ​' E1 to E5 for space groups ​75 to 88 (4/m) and 143 to 148 (-3
-+      Out_Invariant(file,​sg,​ E1, E2, E3, E4, E5,,,,,,,,,,​)  
-   +   } 
 +macro Out_Invariant(file,​sg,​ E1, E2, E3, E4)  
 +   { 
 +      ' E1 to E4 for space groups 89 to 142 (4/​mmm) ​and 149 to 167 (-3m) 
 +      Out_Invariant(file,​sg,​ E1, E2, E3, E4,,,,,,,,,,,​)  
 +   } 
 +macro Out_Invariant(file,​sg,​ E1, E2, E3 
 +   
 +      '​ E1 to E3 for space groups 168 to 194 (6/m and 6/mmm) 
 +      ​Out_Invariant(file,​sg,​ E1, E2, E3,,,,,,,,,,,,​)  
 +   ​} 
 +macro Out_Invariant(file,​sg,​ E1, E2)  
 +   
 +      ' E1 to E2 for space groups 195 to 230 (m-3 and m-3m) 
 +      Out_Invariant(file,​sg,​ E1, E2,,,,,,,,,,,,,​)  
 +   }
 macro Out_Invariant(file,​sg,​E1,​ E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) macro Out_Invariant(file,​sg,​E1,​ E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15)
-+   
-   ​out file +      out file 
-      Out_String("​\nCell Parameters"​) +         ​Out_String("​\nCell Parameters"​) 
-      Out(Get(a), "\na =  %V;"​) +         ​Out(Get(a), "\na =  %V;"​) 
-      Out(Get(b), "\tb = %V;"​) +         ​Out(Get(b), "\tb = %V;"​) 
-      Out(Get(c), "\tc = %V") +         ​Out(Get(c), "\tc = %V") 
-      Out(Get(al),​ "​\nalpha = %V;"​) +         ​Out(Get(al),​ "​\nalpha = %V;"​) 
-      Out(Get(be),​ "​\tbeta = %V;"​) +         ​Out(Get(be),​ "​\tbeta = %V;"​) 
-      Out(Get(ga),​ "​\tgamma = %V") +         ​Out(Get(ga),​ "​\tgamma = %V")
-    +
-      Out_String("​\n\n/"​) +
-      Out_String("​*"​) +
-      Out_String("​ H - K - L ------ Inv"​) +
-      Out_String("​ *") +
-      Out_String("/​")+
  
-      phase_out file append +         ​Out_String("\n\n/") 
-         load out_record out_fmt out_eqn +         Out_String("*") 
-         { +         Out_String(" H - K - L ------ Inv"
-            ​"\n%4.0f" ​= H; +         Out_String(" *"
-            "%4.0f" ​= K; +         Out_String("/"​)
-            "​%4.0f"​ = L; +
-            "​%12.2f"​ = getInvariant(sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15; +
-         +
- } +
-    +
- +
-' E1 to E9 for space groups 3 to 15 (2/m) +
-macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9) { +
- WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9,,,,,,)  +
-+
- +
-' E1 to E6 for space groups 16 to 64 (mmm) +
-macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6) { +
- WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6,,,,,,,,,​)  +
-+
- +
-' E1 to E5 for space groups 75 to 88 (4/m) and 143 to 148 (-3) +
-macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5) { +
- WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5,,,,,,,,,,​)  +
-+
- +
-' E1 to E4 for space groups 89 to 142 (4/mmm) and 149 to 167 (-3m) +
-macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4) { +
- WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4,,,,,,,,,,,​)  +
-+
- +
-' E1 to E3 for space groups 168 to 194 (6/m and 6/mmm) +
-macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3) { +
- WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3,,,,,,,,,,,,​)  +
-+
- +
-' E1 to E2 for space groups 195 to 230 (m-3 and m-3m+
-macro WPPM_Strain_InvariantWilkens(rhoc, rhov, Rec, Rev, burger, wsg, E1, E2{ +
- WPPM_Strain_InvariantWilkens(rhoc, rhov, Rec, Rev, burger, wsg, E1, E2,,,,,,,,,,,,,​ +
-}+
  
 +         ​phase_out file append
 +            load out_record out_fmt out_eqn
 +            {
 +               "​\n%4.0f"​ = H;
 +               "​%4.0f"​ = K;
 +               "​%4.0f"​ = L;
 +               "​%12.2f"​ = getInvariant(sg,​ E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) ;
 +            }
 +    }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9) 
 +   {
 +      ' E1 to E9 for space groups 3 to 15 (2/m)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9,,,,,,​) ​
 +   }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6) 
 +   {
 +      ' E1 to E6 for space groups 16 to 64 (mmm)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5, E6,,,,,,,,,​) ​
 +   }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5) 
 +   {
 +      ' E1 to E5 for space groups 75 to 88 (4/m) and 143 to 148 (-3)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4, E5,,,,,,,,,,​) ​
 +   }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4) 
 +   {
 +      ' E1 to E4 for space groups 89 to 142 (4/mmm) and 149 to 167 (-3m)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3, E4,,,,,,,,,,,​) ​
 +   }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3) 
 +   {
 +      ' E1 to E3 for space groups 168 to 194 (6/m and 6/mmm)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2, E3,,,,,,,,,,,,​) ​
 +   }
 +macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2) 
 +   {
 +      ' E1 to E2 for space groups 195 to 230 (m-3 and m-3m)
 +      WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burger, wsg, E1, E2,,,,,,,,,,,,,​) ​
 +   }
 macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burgers, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) macro WPPM_Strain_InvariantWilkens(rhoc,​ rhov, Rec, Rev, burgers, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15)
    {    {
Line 209: Line 213:
       If_Prm_Eqn_Rpt(rhoc,​ rhov, min 0 max = Min(2 Val + .0001, 0.100);)       If_Prm_Eqn_Rpt(rhoc,​ rhov, min 0 max = Min(2 Val + .0001, 0.100);)
       If_Prm_Eqn_Rpt(Rec , Rev , min 1 max = Min(2 Val + .0001, 0.100);)       If_Prm_Eqn_Rpt(Rec , Rev , min 1 max = Min(2 Val + .0001, 0.100);)
-      ​#prm sg = wsg; +       
-      WPPM_ft_conv = { +      WPPM_ft_conv = {                   ​ 
-        def invariantTerm ​= getInvariant(sg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) ; +         ​def invariantTerm_0 ​= getInvariant(wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15); 
-        invariantTerm ​ = If (invariantTerm ​< 0, 1000, invariantTerm); +         def invariantTerm = If (invariantTerm_0 ​< 0, 1000, invariantTerm_0); 
-        def dstar = 1/​(D_spacing*0.1); +         ​def dstar = 1/​(D_spacing 0.1); 
-        def aa = Constant(Get(a) 0.1); +         ​def aa = Constant(Get(a) 0.1);  
-        def strainINV = invariantTerm/​((aa*dstar)^4);​ +         ​def strainINV = invariantTerm/​((aa dstar)^4);​ 
-        def rhoVal = CeV(rhoc, rhov); +         ​def rhoVal = CeV(rhoc, rhov); 
-        def fact = Pi*burgers*burgers*rhoVal*dstar*dstar*strainINV*0.01/2.0+         ​def fact = Pi burgers burgers rhoVal dstar dstar strainINV 0.01 0.5
- def Reval = CeV(Rec, Rev); +         ​def Reval = CeV(Rec, Rev); 
- def eta = Abs(WPPM_L/​Reval);​ +         ​def eta = Abs(WPPM_L/​Reval);​ 
- def fstar = If ( eta < 1, -Ln(eta) + 7/4 - Ln(2) + eta*eta/6 - (32*eta*eta*eta)/​(225*Pi),​ 256.0/​(45.0*Pi*eta)-(11.0/​24.0 + (Ln(2)+Ln(eta))/​4.0)/​(eta*eta));​ +         ​def fstar = If ( eta < 1, -Ln(eta) + 7/4 - Ln(2) + eta*eta/6 - (32*eta*eta*eta)/​(225*Pi),​ 256.0/​(45.0*Pi*eta)-(11.0/​24.0 + (Ln(2)+Ln(eta))/​4.0)/​(eta*eta));​ 
- def result = If (WPPM_L == 0, 1, Exp(-fact*(WPPM_L*WPPM_L*fstar)));​ +         ​def result = If (WPPM_L == 0, 1, Exp(-fact*(WPPM_L*WPPM_L*fstar)));​ 
-        return result;+           ​return result;
       }       }
       WPPM_break_on_small = 1e-7;       WPPM_break_on_small = 1e-7;
Line 228: Line 232:
       WPPM_th2_range = 30;       WPPM_th2_range = 30;
     }     }
- +macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9)  
- +   { 
-' E1 to E9 for space groups 3 to 15 (2/m) +      ' E1 to E9 for space groups 3 to 15 (2/m) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9,,,,,,)  
- WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9,,,,,,)  +   } 
-+macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6)  
- +   { 
-' E1 to E6 for space groups 16 to 64 (mmm) +      ' E1 to E6 for space groups 16 to 64 (mmm) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6,,,,,,,,,)  
- WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6,,,,,,,,,)  +   } 
-+macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5)  
- +   { 
-' E1 to E5 for space groups 75 to 88 (4/m) and 143 to 148 (-3) +      ' E1 to E5 for space groups 75 to 88 (4/m) and 143 to 148 (-3) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5,,,,,,,,,,)  
- WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5,,,,,,,,,,​)  +   } 
-+macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4)  
- +   { 
-' E1 to E4 for space groups 89 to 142 (4/mmm) and 149 to 167 (-3m) +      ' E1 to E4 for space groups 89 to 142 (4/mmm) and 149 to 167 (-3m) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4,,,,,,,,,,,)  
- WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4,,,,,,,,,,,​)  +   } 
-+macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3)  
- +   { 
-' E1 to E3 for space groups 168 to 194 (6/m and 6/mmm) +      ' E1 to E3 for space groups 168 to 194 (6/m and 6/mmm) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3,,,,,,,,,,,,​)  
- WPPM_Strain_InvariantPAH(acavbcbvwsgE1E2, E3,,,,,,,,,,,,​)  +   } 
-+macro WPPM_Strain_InvariantPAH(acavbcbvwsgE1E2)  
- +   { 
-' E1 to E2 for space groups 195 to 230 (m-3 and m-3m) +      ' E1 to E2 for space groups 195 to 230 (m-3 and m-3m) 
-macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2) { +      WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2,,,,,,,,,,,,,​)  
- WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2,,,,,,,,,,,,,​)  +   ​}
-} +
 macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) macro WPPM_Strain_InvariantPAH(ac,​ av, bc, bv, wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15)
    {    {
Line 266: Line 268:
       If_Prm_Eqn_Rpt(ac,​ av, min 0 max = Min(2 Val + .0001, 0.100);)       If_Prm_Eqn_Rpt(ac,​ av, min 0 max = Min(2 Val + .0001, 0.100);)
       If_Prm_Eqn_Rpt(bc,​ bv, min 0 max = Min(2 Val + .0001, 0.100);)       If_Prm_Eqn_Rpt(bc,​ bv, min 0 max = Min(2 Val + .0001, 0.100);)
-      #prm sg = wsg; 
       WPPM_ft_conv = {       WPPM_ft_conv = {
-        def invariantTerm ​= getInvariant(sg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) ; +        def invariantTerm_0 ​= getInvariant(wsg, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15) ; 
-        invariantTerm ​ = If (invariantTerm ​< 0, 1000, invariantTerm);+        ​def invariantTerm ​ = If (invariantTerm_0 ​< 0, 1000, invariantTerm_0);
         def dstar = 1/​(D_spacing*0.1);​         def dstar = 1/​(D_spacing*0.1);​
         def aa = Constant(Get(a) 0.1);         def aa = Constant(Get(a) 0.1);
Line 282: Line 283:
       WPPM_th2_range = 30;       WPPM_th2_range = 30;
     }     }
 +
 +
 </​code> ​ </​code> ​

Personal Tools