I have a system, containing 16 atoms, a=23,b=c=~4Ang, pmn21 space group. ATAT generates a supercell with 128 atoms: a=b=~12,c=23Ang. The DFT calculations of all perturbation directories are finished successfully. However, when I am trying to get phonon dispersion using "fitfc -f -fr=6.0 -df=KPATH", the running is forever (It has been running for three days). I am curious what’s wrong with fitfc? Is there any possible trick to accelerate fitfc procedure, something like MPI parallel? Thanks.
The easiest way to speed it up is this:
In the makefile, comment out (put # in front) the line:
CXXFLAGS=(PATCHCXXFLAGS) -O3
uncomment the lines:
CXXFLAGS=(PATCHCXXFLAGS) -O3 -DATATUSELAPACK
and
LDLIBS=-lm -lgomp -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core
You may need to modify the list of libraries for your system: this is if you have intel’s mkl library.
But any other implementation of Lapack should work.
yes there is a recommendation when i continuing to do the calculation using the command ‘fitfc -f -fr~the nearest bond length -dr=kpath’ : the nearest bond length =2.8 supercell: 48 - contain 16 primitive cell as the input structure
-
when i using ‘fitfc -f -fr=4 -dr=kpath’ –> it shows: Unstable modes found.
Aborting. ‘fitfc -f -fr=4 -dr=kpath -fu’’ –> unstable.out showed ‘two large’ -
so i change ‘fitfc -f -fr=4 -dr=kpath -mau=1600 -fu’ –> in the unstable.out [nb_atom =1152]
but the
vol*/fvib : ‘-nan -nan’
fc.out contain the results ‘svsl Ti Ti 2.90168 0.78652 0.18852
0.91660 0.75000 0.66660 -0.16660 0.00000 -0.16660’
svib_ht ‘-nan’ -
if i use:’ fitfc -f -fr=4 -dr=kpath -mau=1600 -fn’ it shows:
vol_2
p+0.1_12_0
Generating Fitting matrices
1/576
Performing least square fit…
Problem size= 576 x 21
Done
Creating Force constants…
Done
Performing normal modes calculations
kmesh= 3 4 2
Unstable modes found.
*** glibc detected *** fitfc: double free or corruption (out): 0x0000000002630170 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3093e75f3e]
/lib64/libc.so.6[0x3093e78dd0]
fitfc[0x4152ca]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x3093e1ed1d]
fitfc[0x4027a9]
======= Memory map: ========
00400000-0045d000 r-xp 00000000 00:1e 3202794753 /public/home/hpclxm/vasptool/atat/bin/fitfc
0065c000-0065e000 rw-p 0005c000 00:1e 3202794753 /public/home/hpclxm/vasptool/atat/bin/fitfc
02546000-02734000 rw-p 00000000 00:00 0 [heap]
3093a00000-3093a20000 r-xp 00000000 fd:00 393244 /lib64/ld-2.12.so
3093c1f000-3093c20000 r–p 0001f000 fd:00 393244 /lib64/ld-2.12.so
3093c20000-3093c21000 rw-p 00020000 fd:00 393244 /lib64/ld-2.12.so
3093c21000-3093c22000 rw-p 00000000 00:00 0
3093e00000-3093f8a000 r-xp 00000000 fd:00 393358 /lib64/libc-2.12.so
3093f8a000-309418a000 —p 0018a000 fd:00 393358 /lib64/libc-2.12.so
309418a000-309418e000 r–p 0018a000 fd:00 393358 /lib64/libc-2.12.so
309418e000-3094190000 rw-p 0018e000 fd:00 393358 /lib64/libc-2.12.so -
if i use the command ‘fitfc -f -fr=3.5 -dr=kpath -mau=1200 -gu=1’
all the results file contain data. but come out a new file’p_uns_0_1000_1’
what should i do withi this file and how can i do the calculation of this file ?
can i use the results directly with unstabl.out contains?
is i just 'fitfc -f -fr=4 -dr=kpath -mau=1600 ’ it still show : Unstable modes found. Aborting
so what can i do or choose as the results?
Please help
The easiest way to speed it up is this:
In the makefile, comment out (put # in front) the line:
CXXFLAGS=$(PATCHCXXFLAGS) -O3
uncomment the lines:
CXXFLAGS=$(PATCHCXXFLAGS) -O3 -DATATUSELAPACK
and
LDLIBS=-lm -lgomp -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core
Professor:
I met the same situation as the previous users mentioned.
And I didn’t find ‘CXXFLAGS’ and ‘LDLIBS’ command in the makefile
Do you have any other suggestions to solve this problem, please?
Thanks a lot!
waiting for your replying!
Take a look at the makefile under the src directory (not in the main directory). You’ll find LDLIBS and CXXFLAGS in there.
thank you very much !
I found it.
I have a confusion, can you help me to recover it?
actually, when i was using the fitfc to calculate the quansi-harmonic calculation: after the second time to use command ‘fitfc -er=7.8 -ns=5 -ms=0.02 -dr=0.1’ (the same command used to produce the vol* file). I only have one file in each vol_* ('like 'vol_0/p+0.1_7.8_0) is that correct?
in the manual, it said every vol_* file contains a number of subdirectories.
and if I just use each one subdirectory in the vol_*, after ‘fitfc -f -fr=3.5 -df=kpath’ there is no fitfc.out produced.
Can you give me some suggestions?
Thank you very much!
There could be only one symmetrically distinct perturbation, in which case, this is fine.
The lack of output could be due to something else. -fr too large or too small perhaps.
Any error messages?
I would try reducing -fr=… This might improve the stability of the fit and reduce memory requirements. Do not use fr>er/2 .
The "double free or corruption " could be due to an out of memory error.