Table of Contents
Mass attenuation coefficient from elemental composition
Sometimes you want to calculate the mass attenuation coefficient (MAC) of a sample from either a nominal or measured elemental composition. This is required if doing quantification by the external standard approach.
I've put together a series of macros to calculate the MAC of a material or mixture containing up to a maximum of 20 different elements, given an elemental composition expressed as either weight fractions or mols. It uses a dummy_str
in order to leverage internal Topas machinations to do the calculation.
The calculated MAC can either be assigned to a prm for further use, or just reported in the input file.
An example input file is also given.
See also K-Factor.
Macros by: Matthew Rowles.
Main macro
The main macro is not designed to be called directly by the user. The helper macros given below are to be used by the user.
'The main macro which is called to calculate the MAC values.' ' e == element symbol, q == amount of that element.' ' You can explicitly name the parameter that holds the phase MAC.' ' If wt_pct == 1, then the amount of element is interpreted as a weight unit (be it ppm, wt%,...)' ' If wt_pct == 0, then the amount of element is interpreted as number of moles.' macro make_phase_MAC_main(prm_name, phase_mac, e01, q01, e02, q02, e03, q03, e04, q04, e05, q05, e06, q06, e07, q07, e08, q08, e09, q09, e10, q10, e11, q11, e12, q12, e13, q13, e14, q14, e15, q15, e16, q16, e17, q17, e18, q18, e19, q19, e20, q20, num_of_elements, wt_pct) { #if wt_pct == 1; 'formula masses' macro wt_H { 1.008 } macro wt_He { 4.003 } macro wt_Li { 6.941 } macro wt_Be { 9.012 } macro wt_B { 10.811 } macro wt_C { 12.011 } macro wt_N { 14.007 } macro wt_O { 15.999 } macro wt_F { 18.998 } macro wt_Ne { 20.18 } macro wt_Na { 22.99 } macro wt_Mg { 24.305 } macro wt_Al { 26.982 } macro wt_Si { 28.086 } macro wt_P { 30.974 } macro wt_S { 32.065 } macro wt_Cl { 35.453 } macro wt_Ar { 39.948 } macro wt_K { 39.098 } macro wt_Ca { 40.078 } macro wt_Sc { 44.956 } macro wt_Ti { 47.867 } macro wt_V { 50.942 } macro wt_Cr { 51.996 } macro wt_Mn { 54.938 } macro wt_Fe { 55.845 } macro wt_Co { 58.933 } macro wt_Ni { 58.693 } macro wt_Cu { 63.546 } macro wt_Zn { 65.39 } macro wt_Ga { 69.723 } macro wt_Ge { 72.64 } macro wt_As { 74.922 } macro wt_Se { 78.96 } macro wt_Br { 79.904 } macro wt_Kr { 83.8 } macro wt_Rb { 85.468 } macro wt_Sr { 87.62 } macro wt_Y { 88.906 } macro wt_Zr { 91.224 } macro wt_Nb { 92.906 } macro wt_Mo { 95.94 } macro wt_Tc { 98 } macro wt_Ru { 101.07 } macro wt_Rh { 102.906 } macro wt_Pd { 106.42 } macro wt_Ag { 107.868 } macro wt_Cd { 112.411 } macro wt_In { 114.818 } macro wt_Sn { 118.71 } macro wt_Sb { 121.76 } macro wt_Te { 127.6 } macro wt_I { 126.905 } macro wt_Xe { 131.293 } macro wt_Cs { 132.906 } macro wt_Ba { 137.327 } macro wt_La { 138.906 } macro wt_Ce { 140.116 } macro wt_Pr { 140.908 } macro wt_Nd { 144.24 } macro wt_Pm { 145 } macro wt_Sm { 150.36 } macro wt_Eu { 151.964 } macro wt_Gd { 157.25 } macro wt_Tb { 158.925 } macro wt_Dy { 162.5 } macro wt_Ho { 164.93 } macro wt_Er { 167.259 } macro wt_Tm { 168.934 } macro wt_Yb { 173.04 } macro wt_Lu { 174.967 } macro wt_Hf { 178.49 } macro wt_Ta { 180.948 } macro wt_W { 183.84 } macro wt_Re { 186.207 } macro wt_Os { 190.23 } macro wt_Ir { 192.217 } macro wt_Pt { 195.078 } macro wt_Au { 196.967 } macro wt_Hg { 200.59 } macro wt_Tl { 204.383 } macro wt_Pb { 207.2 } macro wt_Bi { 208.98 } macro wt_Po { 209 } macro wt_At { 210 } macro wt_Rn { 222 } macro wt_Fr { 223 } macro wt_Ra { 226 } macro wt_Ac { 227 } macro wt_Th { 232.038 } macro wt_Pa { 231.036 } macro wt_U { 238.029 } #endif dummy_str phase_name "Dummy str for MAC calc" prm prm_name = Get(phase_MAC); : phase_mac scale 0 space_group P1 a 5 b 5 c 5 al 90 be 90 ga 90 site q x 0 y 0 z 0 #if num_of_elements >= 1; occ e01 #if wt_pct == 0; q01 #else =q01/wt_##e01; : 0 #endif #endif #if num_of_elements >= 2; occ e02 #if wt_pct == 0; q02 #else =q02/wt_##e02; : 0 #endif #endif #if num_of_elements >= 3; occ e03 #if wt_pct == 0; q03 #else =q03/wt_##e03; : 0 #endif #endif #if num_of_elements >= 4; occ e04 #if wt_pct == 0; q04 #else =q04/wt_##e04; : 0 #endif #endif #if num_of_elements >= 5; occ e05 #if wt_pct == 0; q05 #else =q05/wt_##e05; : 0 #endif #endif #if num_of_elements >= 6; occ e06 #if wt_pct == 0; q06 #else =q06/wt_##e06; : 0 #endif #endif #if num_of_elements >= 7; occ e07 #if wt_pct == 0; q07 #else =q07/wt_##e07; : 0 #endif #endif #if num_of_elements >= 8; occ e08 #if wt_pct == 0; q08 #else =q08/wt_##e08; : 0 #endif #endif #if num_of_elements >= 9; occ e09 #if wt_pct == 0; q09 #else =q09/wt_##e09; : 0 #endif #endif #if num_of_elements >= 10; occ e10 #if wt_pct == 0; q10 #else =q10/wt_##e10; : 0 #endif #endif #if num_of_elements >= 11; occ e11 #if wt_pct == 0; q11 #else =q11/wt_##e11; : 0 #endif #endif #if num_of_elements >= 12; occ e12 #if wt_pct == 0; q12 #else =q12/wt_##e12; : 0 #endif #endif #if num_of_elements >= 13; occ e13 #if wt_pct == 0; q13 #else =q13/wt_##e13; : 0 #endif #endif #if num_of_elements >= 14; occ e14 #if wt_pct == 0; q14 #else =q14/wt_##e14; : 0 #endif #endif #if num_of_elements >= 15; occ e15 #if wt_pct == 0; q15 #else =q15/wt_##e15; : 0 #endif #endif #if num_of_elements >= 16; occ e16 #if wt_pct == 0; q16 #else =q16/wt_##e16; : 0 #endif #endif #if num_of_elements >= 17; occ e17 #if wt_pct == 0; q17 #else =q17/wt_##e17; : 0 #endif #endif #if num_of_elements >= 18; occ e18 #if wt_pct == 0; q18 #else =q18/wt_##e18; : 0 #endif #endif #if num_of_elements >= 19; occ e19 #if wt_pct == 0; q19 #else =q19/wt_##e19; : 0 #endif #endif #if num_of_elements >= 20; occ e20 #if wt_pct == 0; q20 #else =q20/wt_##e20; : 0 #endif #endif #if wt_pct == 1; #delete_macros { wt_H wt_He wt_Li wt_Be wt_B wt_C wt_N wt_O wt_F wt_Ne wt_Na wt_Mg wt_Al wt_Si wt_P wt_S wt_Cl wt_Ar wt_K wt_Ca wt_Sc wt_Ti wt_V wt_Cr wt_Mn wt_Fe wt_Co wt_Ni wt_Cu wt_Zn wt_Ga wt_Ge wt_As wt_Se wt_Br wt_Kr wt_Rb wt_Sr wt_Y wt_Zr wt_Nb wt_Mo wt_Tc wt_Ru wt_Rh wt_Pd wt_Ag wt_Cd wt_In wt_Sn wt_Sb wt_Te wt_I wt_Xe wt_Cs wt_Ba wt_La wt_Ce wt_Pr wt_Nd wt_Pm wt_Sm wt_Eu wt_Gd wt_Tb wt_Dy wt_Ho wt_Er wt_Tm wt_Yb wt_Lu wt_Hf wt_Ta wt_W wt_Re wt_Os wt_Ir wt_Pt wt_Au wt_Hg wt_Tl wt_Pb wt_Bi wt_Po wt_At wt_Rn wt_Fr wt_Ra wt_Ac wt_Th wt_Pa wt_U } #endif }
Helper macros
These are the ones to be used by the user. `e` is the standard element symbol. `q` is the amount of that element present.
There are two types of helper macro, and two subsets in each of those. The first divides the elemental composition given in moles or weight fraction. The second divides each of those into whether or not you want to assign the MAC to a prm for further use, or just to report it in the input file.
Molar composition
'if you do care about the prm name' macro calc_phase_MAC(prm_name, phase_mac, e01,q01) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,,,,,,,,,,,,,,,,,,,,,,,,,,, 7,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,,,,,,,,,,,,,,,,,,,,,,,,, 8,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,,,,,,,,,,,,,,,,,,,,,,, 9,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,,,,,,,,,,,,,,,,,,,,,10,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,,,,,,,,,,,,,,,,,,,11,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,,,,,,,,,,,,,,,,,12,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,,,,,,,,,,,,,,,13,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,,,,,,,,,,,,,14,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,,,,,,,,,,,15,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,,,,,,,,,16,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,,,,,,,17,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,,,,,18,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,,,19,0) } macro calc_phase_MAC(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20,20,0) } 'if you do not care about the prm name' macro calc_phase_MAC(phase_mac, e01,q01) { make_phase_MAC_main(, phase_mac,e01,q01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,,,,,,,,,,,,,,,,,,,,,,,,,,, 7,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,,,,,,,,,,,,,,,,,,,,,,,,, 8,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,,,,,,,,,,,,,,,,,,,,,,, 9,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,,,,,,,,,,,,,,,,,,,,,10,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,,,,,,,,,,,,,,,,,,,11,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,,,,,,,,,,,,,,,,,12,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,,,,,,,,,,,,,,,13,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,,,,,,,,,,,,,14,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,,,,,,,,,,,15,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,,,,,,,,,16,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,,,,,,,17,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,,,,,18,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,,,19,0) } macro calc_phase_MAC(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20,20,0) }
Weight composition
'if you do care about the prm name' macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,,,,,,,,,,,,,,,,,,,,,,,,,,, 7,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,,,,,,,,,,,,,,,,,,,,,,,,, 8,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,,,,,,,,,,,,,,,,,,,,,,, 9,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,,,,,,,,,,,,,,,,,,,,,10,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,,,,,,,,,,,,,,,,,,,11,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,,,,,,,,,,,,,,,,,12,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,,,,,,,,,,,,,,,13,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,,,,,,,,,,,,,14,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,,,,,,,,,,,15,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,,,,,,,,,16,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,,,,,,,17,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,,,,,18,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,,,19,1) } macro calc_phase_MAC_wt(prm_name, phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20) { make_phase_MAC_main(prm_name, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20,20,1) } 'if you do not care about the prm name' macro calc_phase_MAC_wt(phase_mac, e01,q01) { make_phase_MAC_main(, phase_mac,e01,q01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,,,,,,,,,,,,,,,,,,,,,,,,,,, 7,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,,,,,,,,,,,,,,,,,,,,,,,,, 8,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,,,,,,,,,,,,,,,,,,,,,,, 9,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,,,,,,,,,,,,,,,,,,,,,10,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,,,,,,,,,,,,,,,,,,,11,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,,,,,,,,,,,,,,,,,12,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,,,,,,,,,,,,,,,13,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,,,,,,,,,,,,,14,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,,,,,,,,,,,15,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,,,,,,,,,16,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,,,,,,,17,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,,,,,18,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,,,19,1) } macro calc_phase_MAC_wt(phase_mac, e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20) { make_phase_MAC_main(, phase_mac,e01,q01,e02,q02,e03,q03,e04,q04,e05,q05,e06,q06,e07,q07,e08,q08,e09,q09,e10,q10,e11,q11,e12,q12,e13,q13,e14,q14,e15,q15,e16,q16,e17,q17,e18,q18,e19,q19,e20,q20,20,1) }
Example input file
yobs_eqn row119.xy = 1; min 5 max 90 del 0.1 'If you need the MAC at a different energy/wavelength, change it here. ' lam ymin_on_ymax 0.0001 la 1 lo 1.540596 lh 0.01 'The MAC of a mixture consisting of Al and O, as defined by the number of moles of each element' ' The absolute values do not matter, only the relative.' calc_phase_MAC(one, 31.5908044, Al, 2, O, 3) ' == Al2O3' calc_phase_MAC(two, 31.5908044, Al, 1, O, 1.5) calc_phase_MAC( 31.5908044, Al, 2, O, 3) 'The MAC of a mixture defined by weight fractions.' ' They can be given as ppm, wt%, wt fraction,... As long as they are self-consistent.' calc_phase_MAC_wt( 31.5907593, Al, 0.52926, O, 0.47074) calc_phase_MAC_wt( 31.5907593, Al, 52.926, O, 47.074) 'this is the MAC of the first Al & O mixture from above' prm = one; : 31.5908044 'Here is a MAC calculated from the elemental analysis of a process residue.' calc_phase_MAC_wt( big_MAC, 61.0476108, O ,47.595, Si,26.500, Fe,9.5200, Al,7.6247, Mg,4.1855, Na,1.3584, K ,1.2414, Ca,0.6471, S ,0.4900, Ti,0.3035, F ,0.1621)