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
sequential_refinements_-_save_phase_pattern [topas wiki]

User Tools

Site Tools


sequential_refinements_-_save_phase_pattern

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sequential_refinements_-_save_phase_pattern [2020/04/20 12:04] iangiesequential_refinements_-_save_phase_pattern [2023/05/19 07:47] (current) iangie
Line 1: Line 1:
 +====== Extracting the intensity contribution from a certain phase for a batch of dataset ======
 +Intensity contribution from individual phase can be saved out from GUI interface "right-click -> save if displayed...".
 +
 +However, there were multiple questions asked in the forum concerning how to extract phase contribution through Launch Mode .inp file setup, and how to do this even for a batch dataset.
 +
 +The solution below has been enlightened by Alan Coelho's 2-step refinement solution & Matthew Rowles's Sequential Refinement method.
 +
 +TOPAS V6 allows a keyword //num_runs// which instructs the programme to run an .inp file multiple times. This means above 2-step solution can be devised in one .inp file with "num_runs 2" and several #if switches:
 +
 +====== 1. Extracting phase contribution from a single data ====== 
 +<code topas>
 +num_runs 2
 +
 +#if (Run_Number == 1)
 +iters 0
 +#endif
 +
 +#if Run_Number == 0;
 +system_before_save_OUT { copy INP_File##.inp INP_File##.backup }  /* Backup this .inp file in the first run. */
 +#endif  
 +
 +out_file = Concat(String(INP_File), ".INP");           /* This allow the refinement result to be accepted. */
 +
 +#if Run_Number == 1;
 +system_after_save_OUT { copy INP_File##.backup INP_File##.inp }    /* Restore this .inp file to its initial status from the backup in the final run */
 +#endif   
 +    
 +xdd "somepattern.raw"
 +   
 +#if (Run_Number == 0)
 +   bkg @ 713.3525387 332.4034599 -218.0099371
 +   One_on_X(@, 9993.352223)
 +#else bkg 1                             /* A arbitrary 1 count is added to the phase contribution in case some plotting software does not like 0 intensity.  */
 +#endif   
 +
 +   LP_Factor( 0)
 +   Specimen_Displacement(samp_disp, -0.05080112471)
 +   Radius(300)
 +   lpsd_th2_angular_range_degrees  2.29
 +      lpsd_equitorial_divergence_degrees  0.5
 +      Full_Axial_Model(12, 20, 20, 5, 5)
 +   CuKa(0.0001)
 +   
 +#if (Run_Number == 1)
 +      xdd_out Output_phase_contribution.xy load out_record out_fmt out_eqn
 +      {
 +       " %11.6f  " = X + 2 samp_disp Cos(X Deg_on_2)/Rp Rad;                     /* Correct sample displacement from an internal standard, hkl_Al in this case */       
 +       " %11.6f\n  " = Ycalc;                                                    /* You can add Ln() in the equation , if you want to plot as the intensity of the 2D plot in logarithm scale. */
 +       }
 +#endif
 + 
 +#if (Run_Number == 0)
 + xo_Is                               /* Amorphous Hump */
 +      xo @ 14.70505682
 +      peak_type spv
 +         spv_h1 @ 0.9845624876
 +         spv_h2 @ 1.396576759
 +         spv_l1  0.0040801296_LIMIT_MIN_0
 +         spv_l2  0.9958599408_LIMIT_MAX_1
 +      I  97.34548273
 + 
 +   hkl_Is 
 +      hkl_m_d_th2 1 1 1 8 2.33311367 38.5568314 I @ 74.14699402
 +      hkl_m_d_th2 2 0 0 6 2.02053571 44.8203506 I @ 96.76241314
 +      LVol_FWHM_CS_G_L( 1, 113.2882082, 0.89, 158.3779042,,,@, 177.9527013_LIMIT_MAX_115.908746)
 +      Stephens_cubic(@, 0.2634600653_LIMIT_MIN_0,@, -2072.424113,@, -5379.345555)
 +      r_bragg  1.213209076
 +      phase_MAC 0
 +      phase_name "hkl_Al"                /*  Internal Standard  */      
 +      MVW( 0, 65.99173092, 0)
 +      space_group Fm-3m
 +      Cubic(!a_000040787 4.049)          /*  Fixed to the lattice parameter from a PDF card. */
 +
 +#endif
 +
 +   hkl_Is 
 +      hkl_m_d_th2 0 0 2 2 5.54676771 15.9653101 I @ 2.664253279
 +      hkl_m_d_th2 0 0 4 2 2.77338386 32.2515259 I @ 10.48756371
 +      ...
 +      LVol_FWHM_CS_G_L( 1, 173.7971979, 0.89, 242.97,,,, 273_LIMIT_MIN_200 min =200;)
 +      e0_from_Strain( 0.001701696021,, 0.78,,)
 +      r_bragg  0.2228689481
 +      phase_MAC 0
 +      phase_name "hkl_Na0.53MnO2"        /* This is the phase of interest, which you want its intensity contributions saved out */      
 +      MVW( 0, 78.20697387, 0)
 +      space_group P63/mmc
 +      Hexagonal(a_040201752 2.853135761,c_040201752 11.09353545)
 + 
 +</code>     
 +It can be seen that, in the first run (Run_Number = 0), the #if switches allow a normal Pawley refinement which refines the sample displacement according to an internal standard (hkl_Al in this case). 
 +
 +In the second run (Run_Number = 1), the #if switches only turn on the phase of interest with "iters 0" and get the intensity saved out.
 +
 +====== 2. Extracting phase contribution from a batch dataset ======
 +
 +To apply this method for a batch of data set (e.g. in-situ data set), which contains, say 100 patterns, an .inp file with "num_run = 2 * 100;" can be set as below: 
 +
 +(The restriction of this setup is, the file names of the dataset must contain an increasing run number: e.g. ***_1.raw, ***_2.raw, ***_3.raw, ..... A simple windows/DOS batch rename can achieve this. ) 
 +
 +<code topas>
 +
 +num_runs =2*100;                /* This set the Reserved Keywords "Run_Number" goes from 0 to 199 */
 +
 +#if (Mod(Run_Number,2) == 1)    /* Normal Pawley refinement when Run_Number is an even number; Save the phase intensity when Run_Number is an odd number. Refinements goes on like tik-tok tik-tok … */
 +iters 0
 +#endif
 +
 +#if Run_Number == 0;
 +system_before_save_OUT { copy INP_File##.inp INP_File##.backup }
 +#endif  
 +
 +out_file = Concat(String(INP_File), ".INP");           /* This accepts the refinement result, especially the sample displacement */
 +
 +#if Run_Number == 2*100-1;
 +system_after_save_OUT { copy INP_File##.backup INP_File##.inp }
 +#endif   
 +
 +#prm filenum = Round((Run_Number+1)/2);    /* This calculates the run number of the file, __NOTE Round(0.5) evaluates to 0 in TOPAS V5, but evaluates to 1 in TOPAS V6!__ */
 +
 +xdd Somepattern_#out filenum##.raw         /* This allow TOPAS to find the corresponding pattern  */
 +
 +#if (Mod(Run_Number,2) == 0)
 +   bkg @ 713.3525387 332.4034599 -218.0099371
 +   One_on_X(@, 9993.352223)
 +#else bkg 1                             /* A arbitrary 1 count is added to the phase contribution in case some plotting software does not like 0 intensity.  */
 +#endif   
 +
 +   LP_Factor( 0)
 +   Specimen_Displacement(samp_disp, -0.05080112471)
 +   Radius(300)
 +   lpsd_th2_angular_range_degrees  2.29
 +      lpsd_equitorial_divergence_degrees  0.5
 +      Full_Axial_Model(12, 20, 20, 5, 5)
 +   CuKa(0.0001)
 +
 +#if (Mod(Run_Number,2) == 1)            /* When Run_Number is an odd number, save the phase contribution to a file with the run number of its raw data  */
 +      xdd_out OUTPUT_NMO_#out filenum##.xy load out_record out_fmt out_eqn
 +      {
 +       " %11.6f  " = X + 2 samp_disp Cos(X Deg_on_2)/Rp Rad;   /* Correct sample displacement of the phase, because the in-situ cell pops up */       
 +       " %11.6f\n  " = Ycalc;                                  /* You can add Ln() in the equation , if you want to plot as the intensity of the 2D plot in logarithm scale. */
 +       }
 +#endif
 +
 +#if (Mod(Run_Number,2) == 0)
 + xo_Is                              /*  Amorphous hump */
 +      xo @ 14.70505682
 +      peak_type spv
 +         spv_h1 @ 0.9845624876
 +         spv_h2 @ 1.396576759
 +         spv_l1  0.0040801296_LIMIT_MIN_0
 +         spv_l2  0.9958599408_LIMIT_MAX_1
 +      I  97.34548273
 +
 +   hkl_Is 
 +      hkl_m_d_th2 1 1 1 8 2.33311367 38.5568314 I @ 74.14699402
 +      hkl_m_d_th2 2 0 0 6 2.02053571 44.8203506 I @ 96.76241314
 +      LVol_FWHM_CS_G_L( 1, 113.2882082, 0.89, 158.3779042,,,@, 177.9527013_LIMIT_MAX_115.908746)
 +      Stephens_cubic(@, 0.2634600653_LIMIT_MIN_0,@, -2072.424113,@, -5379.345555)
 +      r_bragg  1.213209076
 +      phase_MAC 0
 +      phase_name "hkl_Al"                   / Internal Standard with fixed lattice parameter  */      
 +      MVW( 0, 65.99173092, 0)
 +      space_group Fm-3m
 +      Cubic(!a_000040787 4.049)
 +
 +#endif
 +
 +   hkl_Is 
 +      hkl_m_d_th2 0 0 2 2 5.54676771 15.9653101 I @ 2.664253279
 +      hkl_m_d_th2 0 0 4 2 2.77338386 32.2515259 I @ 10.48756371
 +      ...
 +      LVol_FWHM_CS_G_L( 1, 173.7971979, 0.89, 242.97,,,, 273_LIMIT_MIN_200 min =200;)
 +      e0_from_Strain( 0.001701696021,, 0.78,,)
 +      r_bragg  0.2228689481
 +      phase_MAC 0
 +      phase_name "hkl_Na0.53MnO2"    /* The phase of interest, the intensity of which needs be saved out */      
 +      MVW( 0, 78.20697387, 0)
 +      space_group P63/mmc
 +      Hexagonal(a_040201752 2.853135761,c_040201752 11.09353545)
 +      
 +</code>      
 +
 +====== 3. Plot the extracted phase intensity as 2D plot using TOPAS V6 ======
 +Note the saved phase intensities .xy files will be in different X step positions. 
 +
 +Some algorithms require long time to create 2D plot when the data are not in an uniform mesh. 
 +
 +Surprisingly the 2D plot function in TOPAS v6 can create below 2D plot from 100 .xy data of non-uniform data step very quickly, which persuaded me no need to turn to other plotting software:
 +
 +The example of the plot is like [[https://drive.google.com/file/d/1G2ws5Anfzaa2NHtMpf6aRU9AHg1c3JVk/view?usp=sharing | this]].
 +