#include "row119.inc" macro Output { Out_Results_QPARR2(outFileName) { O_R_noErr(col_time) O_R_noErr(Yobs_dx_at(Xo)) O_R_noErr((stepsize/1000)) O_R_noErr(HAL) O_R_noErr(reftype) O_R_noErr(datasetnumber) O_R_normErr(bkg0v) O_R_normErr(bkg1v) O_R_normErr(bkg2v) O_R_normErr(bkg3v) O_R_normErr(bkg4v) O_R_normErr(bkg5v) O_R_normErr(bkg6v) O_R_normErr(ze) O_R_normErr(sd) O_R_normErr(pd) O_R_normErr(abs) O_R_normErr(MLAC) O_R_normErr(sc) O_R_normErr(csL) O_R_normErr(csG) O_R_normErr(strL) O_R_normErr(strG) O_R_normErr(lvolp) O_R_normErr(e0p) O_R_normErr(Get(a)) O_R_normErr(Get(c)) O_R_normErr(Get(cell_volume)) O_R_normErr(Get(cell_mass)) O_R_normErr(M_B) O_R_normErr(NM_B) O_R_normErr(Get(smv)) O_R_normErr(Get(sum_smvs)) O_R_normErr(Get(sum_smvs_minus_this)) O_R_normErr(Get(weight_percent)) O_R_noErr(Y_obs) O_R_noErr(Y_calc) O_R_noErr(abs_Yo_Yc) O_R_noErr(D_Yo_Yc) O_R_noErr(Yo_Yc_2) O_R_noErr(w_Yo_Yc_2) O_R_noErr(w_Yo_2) O_R_noErr(N_data) O_R_noErr(N_prms) O_R_noErr(Get(numerical_area)) O_R_noErr(Get(r_bragg)) O_R_noErr(Get(r_wp)) O_R_noErr(Get(r_exp)) O_R_noErr(Get(r_p)) O_R_noErr(Get(r_wp_dash)) O_R_noErr(Get(r_exp_dash)) O_R_noErr(Get(r_p_dash)) O_R_noErr(Get(wdw)) 'weighted Durbin-Watson O_R_noErr(Get(gof)) } } macro All_prms_to_file { '{{{ Prm_to_file(bkg0v) Prm_to_file(bkg1v) Prm_to_file(bkg2v) Prm_to_file(bkg3v) Prm_to_file(bkg4v) Prm_to_file(bkg5v) Prm_to_file(bkg6v) Prm_to_file(ze) Prm_to_file(sd) Prm_to_file(pd) Prm_to_file(sc_cor) Prm_to_file(csL_cor) Prm_to_file(csG_cor) Prm_to_file(strL_cor) Prm_to_file(strG_cor) Prm_to_file(a_cor) Prm_to_file(c_cor) Prm_to_file(Al_B_cor) Prm_to_file(O_B_cor) Prm_to_file(sc_flu) Prm_to_file(csL_flu) Prm_to_file(csG_flu) Prm_to_file(strL_flu) Prm_to_file(strG_flu) Prm_to_file(a_flu) Prm_to_file(Ca_B_flu) Prm_to_file(F_B_flu) Prm_to_file(sc_zin) Prm_to_file(csL_zin) Prm_to_file(csG_zin) Prm_to_file(strL_zin) Prm_to_file(strG_zin) Prm_to_file(a_zin) Prm_to_file(c_zin) Prm_to_file(Zn_B_zin) Prm_to_file(O_B_zin) } '}}} macro All_bkg(ref) { prm ref##bkg0v Prm_from_file(bkg0v) prm ref##bkg1v Prm_from_file(bkg1v) prm ref##bkg2v Prm_from_file(bkg2v) prm ref##bkg3v Prm_from_file(bkg3v) prm ref##bkg4v Prm_from_file(bkg4v) prm ref##bkg5v Prm_from_file(bkg5v) prm ref##bkg6v Prm_from_file(bkg6v) } macro All_abs(ref){ prm ref##pd Prm_from_file(pd) min 0.001 max 10 } macro All_ze(ref){ prm ref##ze Prm_from_file(ze) min -0.3 max 0.3 } macro All_sd(ref){ prm ref##sd Prm_from_file(sd) min -0.5 max 0.5 } macro All_sc(ref){ prm ref##sc_cor Prm_from_file(sc_cor) min 0 'min 8e-7 max 8e-5 prm ref##sc_zin Prm_from_file(sc_zin) min 0 'min 4e-6 max 4e-4 prm ref##sc_flu Prm_from_file(sc_flu) min 0 'min 1e-6 max 1e-4 } macro All_cellprm(ref){ prm ref##a_cor Prm_from_file(a_cor) min 4.7 max 4.8 prm ref##c_cor Prm_from_file(c_cor) min 12.95 max 13.05 prm ref##a_zin Prm_from_file(a_zin) min 3.2 max 3.3 prm ref##c_zin Prm_from_file(c_zin) min 5.15 max 5.25 prm ref##a_flu Prm_from_file(a_flu) min 5.4 max 5.5 } macro All_csL(ref){ prm ref##csL_cor Prm_from_file(csL_cor) min 20 max 10000 prm ref##csL_zin Prm_from_file(csL_zin) min 20 max 10000 prm ref##csL_flu Prm_from_file(csL_flu) min 20 max 10000 } macro All_strG(ref){ prm !strG_cor Prm_from_file(strG_cor) min 0.0001 max 6 prm !strG_zin Prm_from_file(strG_zin) min 0.0001 max 6 prm !strG_flu Prm_from_file(strG_flu) min 0.0001 max 6 } macro All_csG(ref){ prm !csG_cor Prm_from_file(csG_cor) min 20 max 10000 prm !csG_zin Prm_from_file(csG_zin) min 20 max 10000 prm !csG_flu Prm_from_file(csG_flu) min 20 max 10000 } macro All_strL(ref){ prm ref##strL_cor Prm_from_file(strL_cor) min 0.0001 max 6 prm !strL_zin Prm_from_file(strL_zin) min 0.0001 max 6 prm ref##strL_flu Prm_from_file(strL_flu) min 0.0001 max 6 } macro All_B(ref){ prm ref##Al_B_cor Prm_from_file(Al_B_cor) min -10 max 10 prm ref##O_B_cor Prm_from_file(O_B_cor) min -10 max 10 prm ref##Zn_B_zin Prm_from_file(Zn_B_zin) min -10 max 10 prm ref##O_B_zin Prm_from_file(O_B_zin) min -10 max 10 prm ref##Ca_B_flu Prm_from_file(Ca_B_flu) min -10 max 10 prm ref##F_B_flu Prm_from_file(F_B_flu) min -10 max 10 } iters 250 r_wp 0.367427059 r_exp 6.0191679 r_p 0.257688955 r_wp_dash 0.367427059 r_exp_dash 6.0191679 r_p_dash 0.257688955 weighted_Durbin_Watson 0.000671365293 gof 0.0610428327 do_errors seed #seed #prm numruns =7; num_runs #out numruns #ifndef BATCH_FILE macro sample { 1e } macro col_time { 0010000 } macro stepsize { 010 } macro seqno { -1 } macro HAL { 150 } macro reftype { 3 } macro datasetnumber { 001 } #endif macro filename { sample##_##col_time##_0-##stepsize##_n##datasetnumber##.xy } macro file { data\##filename } #ifdef BATCH_FILE verbose 0 #endif #ifdef SCRAMBLE 'macro outFileName { output\output_##filename##_##HAL##_##reftype##_scramble.txt } macro outFileName { output\output2_scramble.txt } #else 'macro outFileName { output\output_##filename##_##HAL##_##reftype##.txt } macro outFileName { output\output2_##sample##_##reftype##.txt } #endif xdd file 'parameter setup '{{{ #if (Run_Number == 0) 'global prms #prm bkg0v =0; #prm bkg1v =0; #prm bkg2v =0; #prm bkg3v =0; #prm bkg4v =0; #prm bkg5v =0; #prm bkg6v =0; #prm ze =0; #prm sd =0; #prm pd = (Rand(0.1,0.7)); 'str prms #prm sc_cor = (Rand(0.0057,0.57)); #prm csL_cor = (Rand(50,500)); #prm csG_cor = 10000; #prm strL_cor = (Rand(0.01,0.1)); #prm strG_cor = 0.0001; #prm a_cor = randomValue(4.758935, 0.01); #prm c_cor = randomValue(12.991078, 0.05); #prm Al_B_cor = 0.249; '=0.32; #prm O_B_cor = 0.193; '=0.33; #prm sc_flu = (Rand(0.0086,0.86)); #prm csL_flu = (Rand(50,500)); #prm csG_flu = 10000; #prm strL_flu = (Rand(0.01,0.1)); #prm strG_flu = 0.0001; #prm a_flu = randomValue(5.463712, 0.02); #prm Ca_B_flu = 0.468; '=0.41; #prm F_B_flu = 0.692; '=0.62; #prm sc_zin = (Rand(0.028,2.8)); #prm csL_zin = (Rand(50,500)); #prm csG_zin = 10000; #prm strL_zin = 0.0001; #prm strG_zin = 0.0001; #prm a_zin = randomValue(3.249633, 0.01); #prm c_zin = randomValue(5.206291, 0.02); #prm Zn_B_zin = 0.524; '=0.45; #prm O_B_zin = 0.321; '=0.73; #endif #if (Run_Number == 0) #define CSL prm bkg0v #out bkg0v prm bkg1v #out bkg1v prm bkg2v #out bkg2v prm bkg3v #out bkg3v prm bkg4v #out bkg4v prm bkg5v #out bkg5v prm bkg6v #out bkg6v prm !ze #out ze prm !sd #out sd prm !pd #out pd min 0 max 10 'normally should be max = 1;, but I want to be able to let it error out prm sc_cor #out sc_cor min 0 'min 8e-7 max 8e-5 prm !csL_cor #out csL_cor min 20 max 10000 prm !csG_cor #out csG_cor min 20 max 10000 prm !strL_cor #out strL_cor min 0.0001 max 2 prm !strG_cor #out strG_cor min 0.0001 max 2 prm !a_cor #out a_cor min 4.74 max 4.78 prm !c_cor #out c_cor min 12.9 max 13.1 prm !Al_B_cor #out Al_B_cor min -10 max 10 prm !O_B_cor #out O_B_cor min -10 max 10 prm sc_flu #out sc_flu min 0 'min 1e-6 max 1e-4 prm !csL_flu #out csL_flu min 20 max 10000 prm !csG_flu #out csG_flu min 20 max 10000 prm !strL_flu #out strL_flu min 0.0001 max 2 prm !strG_flu #out strG_flu min 0.0001 max 2 prm !a_flu #out a_flu min 5.4 max 5.5 prm !Ca_B_flu #out Ca_B_flu min -10 max 10 prm !F_B_flu #out F_B_flu min -10 max 10 prm sc_zin #out sc_zin min 0 'min 4e-6 max 4e-4 prm !csL_zin #out csL_zin min 20 max 10000 prm !csG_zin #out csG_zin min 20 max 10000 prm !strL_zin #out strL_zin min 0.0001 max 2 prm !strG_zin #out strG_zin min 0.0001 max 2 prm !a_zin #out a_zin min 3.21 max 3.29 prm !c_zin #out c_zin min 5.15 max 5.25 prm !Zn_B_zin #out Zn_B_zin min -10 max 10 prm !O_B_zin #out O_B_zin min -10 max 10 All_prms_to_file #elseif (Run_Number == 1) #define CSL All_bkg() All_sc() All_cellprm() All_ze(!) All_sd(!) All_csL(!) All_strG(!) All_csG(!) All_strL(!) All_abs(!) All_B(!) All_prms_to_file #elseif (Run_Number == 2) #define CSL All_bkg() All_sc() All_cellprm() All_ze() All_sd() All_csL(!) All_strG(!) All_csG(!) All_strL(!) All_abs(!) All_B(!) All_prms_to_file #elseif (Run_Number == 3) #define CSL All_bkg() All_sc() All_cellprm() All_ze() All_sd() All_csL() All_strG(!) All_csG(!) All_strL(!) All_abs(!) All_B(!) All_prms_to_file #elseif (Run_Number == 4) #define CSL #define ABS All_bkg() All_sc() All_cellprm() All_ze() All_sd() All_csL() All_strG(!) All_csG(!) All_strL(!) All_abs() All_B(!) All_prms_to_file #elseif (Run_Number == 5) #define CSL #define ABS #define STRG #define STRL #define CSG All_bkg() All_sc() All_cellprm() All_ze() All_sd() All_csL() All_strG() All_csG() All_strL() All_abs() All_B(!) All_prms_to_file #elseif (Run_Number == 6) #define CSL #define ABS #define STRG #define STRL #define CSG All_bkg() All_sc() All_cellprm() All_ze() All_sd() All_csL() All_strG() All_csG(!) All_strL() All_abs() All_B(!) #ifdef SCRAMBLE continue_after_convergence randomize_on_errors #endif #endif '}}} 'all xdd_sum Y_obs = Yobs; : 0 xdd_sum Y_calc = Ycalc; : 0 xdd_sum abs_Yo_Yc = Abs(Yobs - Ycalc); xdd_sum D_Yo_Yc = Yobs - Ycalc; xdd_sum Yo_Yc_2 = (Yobs - Ycalc)^2; xdd_sum w_Yo_Yc_2 = Get(weighting) (Yobs - Ycalc)^2; xdd_sum w_Yo_2 = Get(weighting) (Yobs)^2; xdd_sum N_data = Yobs-Yobs + 1; prm N_prms = Get(number_independent_parameters); 'weighting = If(Yobs >=1, 1/Yobs, 1); local bg0 = bkg0v; local bg1 = bkg1v; local bg2 = bkg2v; local bg3 = bkg3v; local bg4 = bkg4v; local bg5 = bkg5v; local bg6 = bkg6v; bkg =bg0; =bg1; =bg2; =bg3; =bg4; =bg5; =bg6; 'more_accurate_Voigt 'use Voigt peakshape instead of pseudo-Voigt 'LP_Factor_X( 26.6) 'scale point by point LP_Factor( 0) 'scale peak by peak Zero_Error(ze) Specimen_Displacement(sd) Rp 250 Rs 250 start_X 21 finish_X HAL lpsd_th2_angular_range_degrees 2.994 lpsd_equitorial_divergence_degrees 0.3 Tube_Tails(, 0.04, , -0.555189814 min =-4; max =4; , , 0.772701111 min =-4; max =4; , , 0.00152295) axial_conv filament_length 12 sample_length 15 receiving_slit_length 12 primary_soller_angle 2.5 secondary_soller_angle 2.5 axial_n_beta 30 mixture_MAC 58.3457491` mixture_density_g_on_cm3 4.03892634` prm MLAC = Get(mixture_MAC) Get(mixture_density_g_on_cm3); : 235.65418` prm abs = pd MLAC; : 50.75999` #ifdef ABS Absorption(abs) #endif x_calculation_step = Yobs_dx_at(Xo); lam ymin_on_ymax 1e-05 la 0.0159 lo 1.534753 lh 3.6854 la 0.5691 lo 1.540596 lh 0.437 lo_ref la 0.0762 lo 1.541058 lh 0.6 la 0.2517 lo 1.54441 lh 0.52 la 0.0871 lo 1.544721 lh 0.62 la 0.4846078521 lo 1.392216 lh 0.5502872 la 0.05 lo 1.4769 lh 0.5 'these values chosen emperically from the 1000000 data sets of different step sizes #if (stepsize == 010) prm !a_white =279.471 / 1000000; : 0 #elseif (stepsize == 020) prm !a_white =68.3388 / 1000000; : 0 #elseif (stepsize == 040) prm !a_white =0.5 / 1000000; : 0 '32.2323 / 1000000; : 0 #elseif (stepsize == 080) prm !a_white =0.1 / 1000000; : 0 '12.5819 / 1000000; : 0 #elseif (stepsize == 160) prm !a_white =0.2 / 1000000; : 0 '3.51154/ 1000000; : 0 #elseif (stepsize == 200) prm !a_white =0.3 / 1000000; : 0 '1.61149 / 1000000; : 0 #elseif (stepsize == 250) prm !a_white =0.5 / 1000000; : 0 '0.74243 / 1000000; : 0 #elseif (stepsize == 320) prm !a_white =0.21560 / 1000000; : 0 #endif prm !b_white 61.20577 prm !a_erf 492.78664 prm !edge_extra = 6.72369 / 1000; : 0 Absorption_Edge_Correction( 2,, 1.486 ,, a_white ,, b_white ,, a_erf ,, edge_extra) ' Absorption_Edge_Correction( 2,, 1.486 ' ,, 0.0004514077516 ' ,, 40.97618323 ' ,, 487.3642629 ' ,!cedge_scale, 0.007886435005) str phase_name "Corundum" local sc =sc_cor col_time / 1000000; : 0 local csL =csL_cor ; : 0 local csG =csG_cor ; : 0 local strL =strL_cor; : 0 local strG =strG_cor; : 0 local a_cell =a_cor ; : 0 local c_cell =c_cor ; : 0 local M_B =Al_B_cor; : 0 local NM_B =O_B_cor ; : 0 local lvolp = LVol_v(csG, csL); : 145.29722 local e0p = e0_v(strG, strL); : 0.00011 #ifdef CSL CS_L(csL) #endif #ifdef STRG Strain_G(strG) #endif #ifdef CSG CS_G(csG) #endif #ifdef STRL Strain_L(strL) #endif scale =sc; space_group R_-3_C Trigonal(=a_cell;, =c_cell;) site Al num_posns 12 x =0; y =0; z !z1_cor 0.3522 occ AL+3 1 beq =M_B ; site O num_posns 18 x !x2_cor 0.6937 y =0; z =1/4; occ O-2 1 beq =NM_B; str phase_name "Fluorite" local sc =sc_flu col_time / 1000000; : 0 local csL =csL_flu ; : 0 local csG =csG_flu ; : 0 local strL =strL_flu; : 0 local strG =strG_flu; : 0 local a_cell =a_flu ; : 0 local M_B =Ca_B_flu; : 0 local NM_B =F_B_flu ; : 0 local lvolp = LVol_v(csG, csL); : 145.29722 local e0p = e0_v(strG, strL); : 0.00011 #ifdef CSL CS_L(csL) #endif #ifdef STRG Strain_G(strG) #endif #ifdef CSG CS_G(csG) #endif #ifdef STRL Strain_L(strL) #endif scale =sc; space_group F_M_-3_M Cubic(=a_cell;) site Ca num_posns 4 x =0; y =0; z =0; occ CA+2 1 beq =M_B ; site F num_posns 8 x =1/4; y =1/4; z =1/4; occ F-1 1 beq =NM_B; str phase_name "Zincite" local sc =sc_zin col_time / 1000000; : 0 local csL =csL_zin ; : 0 local csG =csG_zin ; : 0 local strL =strL_zin; : 0 local strG =strG_zin; : 0 local a_cell =a_zin ; : 0 local c_cell =c_zin ; : 0 local M_B =Zn_B_zin; : 0 local NM_B =O_B_zin ; : 0 local lvolp = LVol_v(csG, csL); : 145.29722 local e0p = e0_v(strG, strL); : 0.00011 #ifdef CSL CS_L(csL) #endif #ifdef STRG Strain_G(strG) #endif #ifdef CSG CS_G(csG) #endif #ifdef STRL Strain_L(strL) #endif scale =sc; space_group P_63_M_C Hexagonal(=a_cell;, =c_cell;) site Zn num_posns 2 x =1/3; y =2/3; z !z1_zincite 0 occ ZN+2 1 beq =M_B ; site O num_posns 2 x =1/3; y =2/3; z !z2_zincite 0.375 occ O-2 1 beq =NM_B; #if (Run_Number == numruns-1) 'the last one. for strs { Output } C_matrix #ifdef SCRAMBLE out_file = String(OUT\output2_##filename##_##HAL##_##reftype##_##seqno##_scramble.out); #else out_file = String(OUT\output2_##filename##_##HAL##_##reftype##_##seqno##.out); #endif #endif