Forum: Forums topas RSS
Distortion mode refinement, strain, lattice parameters
chloec19 #1
User title: chloe c
Member since Apr 2016 · 3 posts · Location: Oxford
Group memberships: Members
Show profile · Link to this post
Subject: Distortion mode refinement, strain, lattice parameters
Hi all,

I am performing a distortion mode refinement from tetragonal to monoclinic C2/c. I have started by refining simply the strain modes (GM5+, GM4+, 2 * GM1+). However, the resulting lattice parameters have alpha ~ 90.5 gamma ~ 90.1, so the distortions have resulted in a triclinic cell.

I wonder if this is just a feature of rounding from all the transformations required, or whether there is some other way of constraining my refinement to make sure alpha = gamma = 90?

Thanks in advance for any insight,
johnsoevans (Administrator) #2
User title: John Evans
Member since Aug 2009 · 239 posts
Group memberships: Administrators, Members
Show profile · Link to this post

Do you really need to refine the strain directly?

You should just be able to refine a/b/c/al/be/ga in the same way as you would for a conventional refinement.  i.e. fix al/ga to 90.  Just check that the low symmetry description is in a standard b-unique monoclinic setting.

rowlesmr #3
Member since Oct 2011 · 229 posts
Group memberships: Members
Show profile · Link to this post
I'm assuming you're using the macros as output from isodistort?

I've run across this before. There was some technicality in the way as parameter was defined that lead to the slight error.

Ill try and go through my emails to see if I wrote down how I fixed it.
This post was edited on 2019-10-16, 19:54 by rowlesmr.
rowlesmr #4
Member since Oct 2011 · 229 posts
Group memberships: Members
Show profile · Link to this post
Found them. I've attached the input file I sent to Alan. I can't do the data file as it is too big, and I'm on my phone.

Emails are reproduced below.  I'm going to assume that my input file is legible. I can't remember what the final fix was, but perhaps we should pass the result on to Brandon to update the output from isodistort.

From me to Alan :
Hi Alan

I’ve come across a slight difference in refined cell parameter values depending on whether or not I use a macro, or explicitly type out all of the formulae contained in the macro.

I’m doing a distortion mode refinement with a structure generated from Isodistort. The macros in question are also generated by Isodistort.

I am doing a strain-mode refinement, where I refine strain modes to give me the lattice parameters. There are 3 strain modes to give the 3 unit cell lengths. They are also used to calculate al, be and ga, but, in my case, these should evaluate to exactly 90.

If I use the macros, then the beta parameter gives a value of ~90.00002°, and if I explicitly copy out the macro contents, then the value is exactly 90. Furthermore, if I fix the three strain modes and use the macros, the a,c,al,be,ga parameters show as refining. If I fix the three strain modes and do not use the macros, then all cell parameters are shown as fixed parameters (as expected).

By inspection of the error matrix, it appears that parameter “a0x” (see line 227) is refining when I use macros.

You can switch on and off USE_MACROS on line 43.

The strain mode parameters are on lines 59-61.

The strain-mode macros are on lines 215-274.

The expected behaviour is that al, be, ga always evaluate to exactly 90, and that all cell parameters show as not refining.




From  Alan to me

Hi Matthew

First, use Rad instead of radian; ie.

prm radian = Rad;

Rad is defined with double precision in mind in TOPAS.INC, ie.

macro Rad { 57.2957795130823 }

This makes a difference when one wants 90 degrees to the nth decimal place.

The With and Without USE_MACROS is doing different things. Consider the following:

macro fwhm(& g)
prm f = g;
gauss_fwhm = f;


Here the macro expands to (ignoring the comment):

prm f = 2; ‘ f is refined as the equation contains only constants and evaluates to a constant
gauss_fwhm = f;

f is refined and the gauss_fwhm is refined. This what you have in your USE_MACROS case.

If we don’t have USE_MACROS and instead write out fwhm then we would have:

prm !g 2
prm f = g; ‘ f is not refined as g is not refined
gauss_fwhm = f;

The f parameter is similar to your a0x parameter. With USE_MACROS in your INP file, the a0x line in TOPAS.LOG is:

prm a0x = 3.87600;

a0x is refined.

Without USE_MACROS the line in TOPAS.LOG is:

prm a0x = pa0; 

However, pa0 is defined as:

prm !pa0 3.87600

Thus a0x is not refined.

Thus a0x is refined when USE_MACROS is defined and not refined when USE_MACROS is not defined.

Not sure how to make things work better in regards to defining what is refined and what is not refined except one has to use the ! character where needed.


The author has attached one file to this post:
The file “distort.inp” attached to this post was not found!
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Not logged in. · Lost password · Register
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2020-09-20, 12:19:54 (UTC +00:00)