Corrdump and (pairs / triplets / quadruplets)

Hi,

I’m new to this research area and I’m attempting to use corrdump and mcsqs to determine a random alloy state for use in band structures. I am currently, completely unaware of what to select for pairs/triplets/etc. as well as to what is inferred by pairs/triplets/etc. . To be clear I am trying to use cat Ga64As64.cif | python convert.py > rndstr.in.

The input file is as follows (the idea is to keep the Ga atoms in place and to randomize the As and Bi atoms).

16.00799 16.00799 16.00799 60.00000 60.00000 60.00000
1 0 0
0 1 0
0 0 1
0.000000 0.000000 0.000000 Ga
0.750000 0.250000 0.250000 Ga
0.500000 0.500000 0.500000 Ga
0.250000 0.750000 0.750000 Ga
0.250000 0.750000 0.250000 Ga
0.000000 0.000000 0.500000 Ga
0.750000 0.250000 0.750000 Ga
0.500000 0.500000 0.000000 Ga
0.250000 0.250000 0.750000 Ga
0.000000 0.500000 0.000000 Ga
0.750000 0.750000 0.250000 Ga
0.500000 0.000000 0.500000 Ga
0.500000 0.000000 0.000000 Ga
0.250000 0.250000 0.250000 Ga
0.000000 0.500000 0.500000 Ga
0.750000 0.750000 0.750000 Ga
0.000000 0.000000 0.250000 Ga
0.750000 0.250000 0.500000 Ga
0.500000 0.500000 0.750000 Ga
0.250000 0.750000 0.000000 Ga
0.250000 0.750000 0.500000 Ga
0.000000 0.000000 0.750000 Ga
0.750000 0.250000 0.000000 Ga
0.500000 0.500000 0.250000 Ga
0.250000 0.250000 0.000000 Ga
0.000000 0.500000 0.250000 Ga
0.750000 0.750000 0.500000 Ga
0.500000 0.000000 0.750000 Ga
0.500000 0.000000 0.250000 Ga
0.250000 0.250000 0.500000 Ga
0.000000 0.500000 0.750000 Ga
0.750000 0.750000 0.000000 Ga
0.000000 0.250000 0.000000 Ga
0.750000 0.500000 0.250000 Ga
0.500000 0.750000 0.500000 Ga
0.250000 0.000000 0.750000 Ga
0.250000 0.000000 0.250000 Ga
0.000000 0.250000 0.500000 Ga
0.750000 0.500000 0.750000 Ga
0.500000 0.750000 0.000000 Ga
0.250000 0.500000 0.750000 Ga
0.000000 0.750000 0.000000 Ga
0.750000 0.000000 0.250000 Ga
0.500000 0.250000 0.500000 Ga
0.500000 0.250000 0.000000 Ga
0.250000 0.500000 0.250000 Ga
0.000000 0.750000 0.500000 Ga
0.750000 0.000000 0.750000 Ga
0.250000 0.000000 0.000000 Ga
0.000000 0.250000 0.250000 Ga
0.750000 0.500000 0.500000 Ga
0.500000 0.750000 0.750000 Ga
0.500000 0.750000 0.250000 Ga
0.250000 0.000000 0.500000 Ga
0.000000 0.250000 0.750000 Ga
0.750000 0.500000 0.000000 Ga
0.500000 0.250000 0.750000 Ga
0.250000 0.500000 0.000000 Ga
0.000000 0.750000 0.250000 Ga
0.750000 0.000000 0.500000 Ga
0.750000 0.000000 0.000000 Ga
0.500000 0.250000 0.250000 Ga
0.250000 0.500000 0.500000 Ga
0.000000 0.750000 0.750000 Ga
0.062500 0.062500 0.062500 As=0.8594, Bi=0.1406
0.812500 0.312500 0.312500 As=0.8594, Bi=0.1406
0.562500 0.562500 0.562500 As=0.8594, Bi=0.1406
0.312500 0.812500 0.812500 As=0.8594, Bi=0.1406
0.312500 0.812500 0.312500 As=0.8594, Bi=0.1406
0.062500 0.062500 0.562500 As=0.8594, Bi=0.1406
0.812500 0.312500 0.812500 As=0.8594, Bi=0.1406
0.562500 0.562500 0.062500 As=0.8594, Bi=0.1406
0.312500 0.312500 0.812500 As=0.8594, Bi=0.1406
0.062500 0.562500 0.062500 As=0.8594, Bi=0.1406
0.812500 0.812500 0.312500 As=0.8594, Bi=0.1406
0.562500 0.062500 0.562500 As=0.8594, Bi=0.1406
0.562500 0.062500 0.062500 As=0.8594, Bi=0.1406
0.312500 0.312500 0.312500 As=0.8594, Bi=0.1406
0.062500 0.562500 0.562500 As=0.8594, Bi=0.1406
0.812500 0.812500 0.812500 As=0.8594, Bi=0.1406
0.062500 0.062500 0.312500 As=0.8594, Bi=0.1406
0.812500 0.312500 0.562500 As=0.8594, Bi=0.1406
0.562500 0.562500 0.812500 As=0.8594, Bi=0.1406
0.312500 0.812500 0.062500 As=0.8594, Bi=0.1406
0.312500 0.812500 0.562500 As=0.8594, Bi=0.1406
0.062500 0.062500 0.812500 As=0.8594, Bi=0.1406
0.812500 0.312500 0.062500 As=0.8594, Bi=0.1406
0.562500 0.562500 0.312500 As=0.8594, Bi=0.1406
0.312500 0.312500 0.062500 As=0.8594, Bi=0.1406
0.062500 0.562500 0.312500 As=0.8594, Bi=0.1406
0.812500 0.812500 0.562500 As=0.8594, Bi=0.1406
0.562500 0.062500 0.812500 As=0.8594, Bi=0.1406
0.562500 0.062500 0.312500 As=0.8594, Bi=0.1406
0.312500 0.312500 0.562500 As=0.8594, Bi=0.1406
0.062500 0.562500 0.812500 As=0.8594, Bi=0.1406
0.812500 0.812500 0.062500 As=0.8594, Bi=0.1406
0.062500 0.312500 0.062500 As=0.8594, Bi=0.1406
0.812500 0.562500 0.312500 As=0.8594, Bi=0.1406
0.562500 0.812500 0.562500 As=0.8594, Bi=0.1406
0.312500 0.062500 0.812500 As=0.8594, Bi=0.1406
0.312500 0.062500 0.312500 As=0.8594, Bi=0.1406
0.062500 0.312500 0.562500 As=0.8594, Bi=0.1406
0.812500 0.562500 0.812500 As=0.8594, Bi=0.1406
0.562500 0.812500 0.062500 As=0.8594, Bi=0.1406
0.312500 0.562500 0.812500 As=0.8594, Bi=0.1406
0.062500 0.812500 0.062500 As=0.8594, Bi=0.1406
0.812500 0.062500 0.312500 As=0.8594, Bi=0.1406
0.562500 0.312500 0.562500 As=0.8594, Bi=0.1406
0.562500 0.312500 0.062500 As=0.8594, Bi=0.1406
0.312500 0.562500 0.312500 As=0.8594, Bi=0.1406
0.062500 0.812500 0.562500 As=0.8594, Bi=0.1406
0.812500 0.062500 0.812500 As=0.8594, Bi=0.1406
0.312500 0.062500 0.062500 As=0.8594, Bi=0.1406
0.062500 0.312500 0.312500 As=0.8594, Bi=0.1406
0.812500 0.562500 0.562500 As=0.8594, Bi=0.1406
0.562500 0.812500 0.812500 As=0.8594, Bi=0.1406
0.562500 0.812500 0.312500 As=0.8594, Bi=0.1406
0.312500 0.062500 0.562500 As=0.8594, Bi=0.1406
0.062500 0.312500 0.812500 As=0.8594, Bi=0.1406
0.812500 0.562500 0.062500 As=0.8594, Bi=0.1406
0.562500 0.312500 0.812500 As=0.8594, Bi=0.1406
0.312500 0.562500 0.062500 As=0.8594, Bi=0.1406
0.062500 0.812500 0.312500 As=0.8594, Bi=0.1406
0.812500 0.062500 0.562500 As=0.8594, Bi=0.1406
0.812500 0.062500 0.062500 As=0.8594, Bi=0.1406
0.562500 0.312500 0.312500 As=0.8594, Bi=0.1406
0.312500 0.562500 0.562500 As=0.8594, Bi=0.1406
0.062500 0.812500 0.812500 As=0.8594, Bi=0.1406

P.S. I noticed that the view counter on the forum tree does not count unique views.

BTW, the file you gave is not smallest possible unitcell. See
cellcvrt.exe -s < rndstr.in
to find it. You would specify the size of the supercell either with the -n option of mcsqs
or by giving you own cell via the -rc option and a sqscell.out file (see mcsqs -h).

The pair, triplet, etc. describe the correlations between the occupations of a pair of site, a triplet of sites etc. See references in https://dx.doi.org/10.1016/j.calphad.2013.06.006 for more on the theory.
The range you give for each of these limits the maximum size of the clusters considered.
Here size=(largest distance between two sites in the cluster).

Just curious: where did you get that convert.py script?

Yes "views" can be by the same user. (Lets me see if someone is eagerly waiting for an answer… :wink: )

Typical value (not magic value or general values):
Pairs length such that you include the 3rd nearest neighbors.
Triplets length such that you include 2nd nn.
Quads lengths such that you include 1st nn.
(Many researchers only include pairs…)
How much of these the code can actually perfectly match depends on how large you are willing your SQS to be.

The convert.py script was something I made, completely irrelevant :?. What I meant to use was corrdump -l=rndstr.in -ro -noe -nop -clus -2=… . Let me look into the information you gave me so I’m more informed in this conversation.

Regarding the pairs, triplets, etc. Is there a way to pick some generic number that won’t throw the quasi random generator too far from the real value?

Hi again,

After about a week of trying various things, I used the nncell command to determine nearest neighbours and inputed them accordingly to your previous suggestion. However, I notice, when I do this and I try to start the mcsqs, it is getting hung up on generating a supercell structure - any idea why?

My input file after running the exe you suggested earlier gives:

16.007990 0.000000 0.000000
8.003995 13.863326 0.000000
8.003995 4.621109 13.070469
0.250000 0.000000 -0.250000
-0.000000 0.000000 -0.250000
-0.000000 0.250000 -0.250000
0.062500 0.062500 -0.187500 As=0.8594,Bi=0.1406
0.250000 0.250000 -0.750000 Ga

Which I tried running for mcsqs -n 20.

With your input file, it takes a few minutes to generate the supercells and then the error message is:
Impossible to match point correlations due to incompatible supercell size.

This is because 0.1406*20/2=14.06, not an integer.

Hi Axel,

Thanks for putting up with my silly questions so far as I slowly understand the software package and confuse things.

Regarding the composition, ultimately I want a zinc-blende structure with 64 atoms of Ga, 55 atoms of As, 9 atoms of Bi. So as you said I couldn’t generate the supercell structure due to the integer problem for 20 sites. However when I try 128 … I still think it gets stuck because of the tolerance for rounding as you mentioned in one of the earlier forum posts (I think it said it rounds at 1E-4). The entire number I would need to get an integer is:

As=0.859375,Bi=0.140625

so .140625*128/2 = 9.

Do you know if this is still the problem, if so what is the easiest way to fix it? Also, how are you determining that the error was in the rounding (I didn’t get any error notification)?. Hopefully, I’ll have more scientific questions next time :slight_smile: .

I don’t think it is necessarily an issue of rounding. The issue was with using -n=20
As the number of atom per unit cell.

Sorry if I was unclear, I changed it to -n 128, and it still didn’t work after I updated the decimal places.

Sorry - you were clear, I just misread!
Is there an error message? If not, it is just that enumerating 128 atom cells takes time! You could speed things up using the -rc option (see manual).

I’ll give the rc option a shot and get back to you later tonight. Thing is, I never got an error message for the -n 20 case, where would it show up? In the mcsqs.log file, or would the error be output to screen.

To screen.

Sorry for the delay, I ended up being quite busy this weekend, however it seems to have happened in good favour.

The first generation took ~ 38 hours to generate, without the rc option. Regarding the rc option, if I increase or decrease the range of my pairs, triplets, etc., a new sqscell.out file that is different will be produced (presumably since different supercells would be considered, is this correct?). Assuming this is the case, how different would my end result be if I used the sqscell.out file for the ‘original’ distance range. Any idea if this varies drastically with a system size such as mine?

I’ll let you know if I run into any more trouble, thanks again.

No the sqscell.out does not depend on the range of pairs, triplets, etc.
So you can re-use the previously generated one.
But sqscell.out does depend on the value of the -n option.

Hi avdw,

Quick question this time, is there any way to record each and every configuration (after I guess the default 10000 MC steps) so that I can plot the convergence of my final result. Ultimately, I want to check if the band gap is converging.

Or does this have to be done manually (which isn’t too much of a problem since my case is taking a while, unless it has already converged)

You could modify the mcsqs code. Just before the line

ofstream strfile;

insert a line

system("whatever command you want to use to archive results");

Dear Axel,

Can you give some references supporting this statement please? I would like to justify my choice (pairs up to 4th nn, triplets up to 3rd nn and quadruplets up to 2nd nn) based on previous papers.

No I don’t have a reference for this recipe :wink: I was just trying to give an idea of what a reasonable choice would be.
The only rigorous way is to show how the values you care about about (e.g. energy) converge as your enlarge your SQS. But you can always just state the criterion you used and use the largest SQS that you can comfortably run. I never had problems with referees complaining about this.
-Axel