<!DOCTYPE html>
<html data-lt-installed="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body style="padding-bottom: 1px;">
<p><br>
</p>
<div class="moz-cite-prefix">On 05/05/2025 12:52, Chirantan Pramanik
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:VI1P191MB028607E510574C5719D4CD9CB98E2@VI1P191MB0286.EURP191.PROD.OUTLOOK.COM">
<style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
<div class="elementToProof"
style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Dear All, </div>
<div class="elementToProof"
style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof"
style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I am stuck with the format of the interatomic force constant
file obtained by the q2r.x code. Below is a preview of the .fc
file. Please help me to understand the entries. I need the
interatomic force constant, suppose, only for the atom '205'.</div>
</blockquote>
<p>Hello,</p>
<p>please note that force constants always act between two atoms,
assuming you know what you are doing, here is the subroutine that
reads the force constants stripped of all the parallel
distribution and ssafety checks, it is only a couple dozen liens
of code. The subroutine reads the force constants for a supercell
of size nr1×nr2×nr3, because of translational invariance, the
first atom (i,na) is always in the first unit cell (i.e. that with
coordinates 0,0,0) while the second atom (j,nb) is in cell
(nr1-1)*a1 + (nr2-1)*a2 + (nr3-1)*a3. (Or maybe it is the second
atom which is in cell 0,0,0, I never remember).</p>
<p>Because in your case the cell is 1×1×1, it won't make any
difference.</p>
<p><br>
</p>
<p>hth<br>
</p>
<p><br>
</p>
<br>
<p><br>
</p>
<div
style="color: #333333;background-color: #ffffff;font-family: 'Nimbus Mono L', 'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback', 'Droid Sans Mono', 'monospace', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span
style="color: #008000;">!-----------------------------------------------------------------------</span></div><div><span
style="color: #0000ff;">SUBROUTINE</span><span
style="color: #333333;"> </span><span style="color: #795e26;">readfc</span><span
style="color: #333333;"> ( </span><span style="color: #001080;">flfrc</span><span
style="color: #333333;">, </span><span style="color: #001080;">nr1</span><span
style="color: #333333;">, </span><span style="color: #001080;">nr2</span><span
style="color: #333333;">, </span><span style="color: #001080;">nr3</span><span
style="color: #333333;">, </span><span style="color: #001080;">epsil</span><span
style="color: #333333;">, </span><span style="color: #001080;">nat</span><span
style="color: #333333;">, </span><span style="color: #000000;">&</span></div><div><span
style="color: #333333;"> </span><span style="color: #001080;">ibrav</span><span
style="color: #333333;">, </span><span style="color: #001080;">alat</span><span
style="color: #333333;">, </span><span style="color: #001080;">at</span><span
style="color: #333333;">, </span><span style="color: #001080;">ntyp</span><span
style="color: #333333;">, </span><span style="color: #001080;">amass</span><span
style="color: #333333;">, </span><span style="color: #001080;">omega</span><span
style="color: #333333;">, </span><span style="color: #000000;">&</span></div><div><span
style="color: #333333;"> </span><span style="color: #001080;">has_zstar</span><span
style="color: #333333;">, </span><span style="color: #001080;">alph</span><span
style="color: #333333;">, </span><span style="color: #001080;">read_lr</span><span
style="color: #333333;"> )</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!-----------------------------------------------------------------------</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">IMPLICIT</span><span
style="color: #333333;"> </span><span style="color: #0000ff;">NONE</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">! I/O variable</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">CHARACTER</span><span
style="color: #333333;">(</span><span style="color: #001080;">LEN</span><span
style="color: #000000;">=</span><span style="color: #098658;">256</span><span
style="color: #333333;">) </span><span style="color: #000000;">::</span><span
style="color: #333333;"> flfrc</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">CHARACTER</span><span
style="color: #333333;">(</span><span style="color: #001080;">LEN</span><span
style="color: #000000;">=</span><span style="color: #098658;">80</span><span
style="color: #333333;">) </span><span style="color: #000000;">::</span><span
style="color: #333333;"> line</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">INTEGER</span><span
style="color: #333333;"> </span><span style="color: #000000;">::</span><span
style="color: #333333;"> ibrav, nr1,nr2,nr3,nat, ntyp</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">REAL</span><span
style="color: #333333;">(DP) </span><span style="color: #000000;">::</span><span
style="color: #333333;"> alat, at(</span><span
style="color: #098658;">3</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">), epsil(</span><span
style="color: #098658;">3</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">), alph</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">LOGICAL</span><span
style="color: #333333;"> </span><span style="color: #000000;">::</span><span
style="color: #333333;"> has_zstar, read_lr</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">! local variables</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">INTEGER</span><span
style="color: #333333;"> </span><span style="color: #000000;">::</span><span
style="color: #333333;"> i, j, na, nb, m1,m2,m3</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">INTEGER</span><span
style="color: #333333;"> </span><span style="color: #000000;">::</span><span
style="color: #333333;"> ios, ibid, jbid, nabid, nbbid, m1bid,m2bid,m3bid</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">REAL</span><span
style="color: #333333;">(DP) </span><span style="color: #000000;">::</span><span
style="color: #333333;"> amass(ntyp), amass_from_file, omega</span></div><div><span
style="color: #333333;"> </span><span style="color: #0000ff;">INTEGER</span><span
style="color: #333333;"> </span><span style="color: #000000;">::</span><span
style="color: #333333;"> nt</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><div
style="color: #333333;background-color: #ffffff;font-family: 'Nimbus Mono L', 'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback', 'Droid Sans Mono', 'monospace', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span
style="color: #af00db;"> OPEN</span><span style="color: #333333;"> (</span><span
style="color: #001080;">unit</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #001080;">file</span><span style="color: #000000;">=</span><span
style="color: #333333;">flfrc,</span><span style="color: #001080;">status</span><span
style="color: #000000;">=</span><span style="color: #a31515;">'old'</span><span
style="color: #333333;">,</span><span style="color: #001080;">form</span><span
style="color: #000000;">=</span><span style="color: #a31515;">'formatted'</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> !</span></div><div> <span
style="color: #333333;"></span><span style="color: #008000;">! Read cell parameters</span><span
style="color: #333333;"></span></div></div></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;">(</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) ntyp,nat,ibrav,(celldm(i),i</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">6</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">if</span><span
style="color: #333333;"> (ibrav</span><span style="color: #0000ff;">==</span><span
style="color: #098658;">0</span><span style="color: #333333;">) </span><span
style="color: #af00db;">then</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">read</span><span
style="color: #333333;">(</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) ((at(i,j),i</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">),</span><span style="color: #001080;">j</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">end if</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">CALL</span><span
style="color: #333333;"> </span><span style="color: #795e26;">latgen</span><span
style="color: #333333;">(ibrav,celldm,at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">1</span><span style="color: #333333;">),at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">2</span><span style="color: #333333;">),at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">),omega)</span></div><div><span
style="color: #333333;"> alat </span><span style="color: #000000;">=</span><span
style="color: #333333;"> celldm(</span><span style="color: #098658;">1</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> at </span><span style="color: #000000;">=</span><span
style="color: #333333;"> at / alat </span><span
style="color: #008000;">! bring at in units of alat</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">CALL</span><span
style="color: #333333;"> </span><span style="color: #795e26;">volume</span><span
style="color: #333333;">(alat,at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">1</span><span style="color: #333333;">),at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">2</span><span style="color: #333333;">),at(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">),omega)</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">! read atomic types, positions and masses</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">ALLOCATE</span><span
style="color: #333333;"> (atm(ntyp))</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> nt </span><span style="color: #000000;">=</span><span
style="color: #333333;"> </span><span style="color: #098658;">1</span><span
style="color: #333333;">,ntyp</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;">(</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) i,atm(nt),amass_from_file ! type and mass</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">ALLOCATE</span><span
style="color: #333333;"> (tau(</span><span style="color: #098658;">3</span><span
style="color: #333333;">,nat), ityp(nat), zeu(</span><span
style="color: #098658;">3</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">,nat))</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> na</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,nat</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;">(</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) i,ityp(na),(tau(j,na),j</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">) ! positions of atoms in the cell</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">! read macroscopic variables</span></div><div><span
style="color: #008000;"> ! (dielectric constant and effective charges)
</span></div><div><span style="color: #333333;"> </span><span
style="color: #008000;">!</span></div><div><span
style="color: #333333;"> alph </span><span style="color: #000000;">=</span><span
style="color: #333333;"> </span><span style="color: #098658;">1.0_dp</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;"> (</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #a31515;">'(a)'</span><span
style="color: #333333;">) line</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;">(line,</span><span style="color: #000000;">*</span><span
style="color: #333333;">,</span><span style="color: #001080;">iostat</span><span
style="color: #000000;">=</span><span style="color: #333333;">ios) has_zstar, alph</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">IF</span><span
style="color: #333333;"> (has_zstar) </span><span
style="color: #af00db;">THEN</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;">(</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) ((epsil(i,j),j</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">),</span><span style="color: #001080;">i</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> na</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,nat</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">READ</span><span style="color: #333333;">(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #000000;">*</span><span style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">READ</span><span style="color: #333333;">(</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #000000;">*</span><span style="color: #333333;">) ((zeu(i,j,na),j</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">),</span><span style="color: #001080;">i</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #098658;">3</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">ELSE</span></div><div><span
style="color: #333333;"> zeu (:,:,:) </span><span
style="color: #000000;">=</span><span style="color: #333333;"> </span><span
style="color: #098658;">0.d0</span></div><div><span
style="color: #333333;"> epsil(:,:) </span><span
style="color: #000000;">=</span><span style="color: #333333;"> </span><span
style="color: #098658;">0.d0</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END IF</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;"> (</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) nr1,nr2,nr3</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">! read real-space interatomic force constants</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">ALLOCATE</span><span
style="color: #333333;"> ( frc(nr1,nr2,nr3,</span><span
style="color: #098658;">3</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">,nat,nat) )</span></div><div><span
style="color: #333333;"> frc(:,:,:,:,:,:,:) </span><span
style="color: #000000;">=</span><span style="color: #333333;"> </span><span
style="color: #098658;">0.d0</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">ALLOCATE</span><span
style="color: #333333;"> ( frc_lr(nr1,nr2,nr3,</span><span
style="color: #098658;">3</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span><span style="color: #333333;">,nat,nat) )</span></div><div><span
style="color: #333333;"> frc_lr(:,:,:,:,:,:,:) </span><span
style="color: #000000;">=</span><span style="color: #333333;"> </span><span
style="color: #098658;">0.d0</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> i</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> j</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #098658;">3</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">DO</span><span
style="color: #333333;"> na</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,nat</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">DO</span><span style="color: #333333;"> nb</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,nat</span></div><div><span
style="color: #333333;"> </span><span
style="color: #333333;"> </span><span style="color: #af00db;">READ</span><span
style="color: #333333;"> (</span><span style="color: #098658;">1</span><span
style="color: #333333;">,</span><span style="color: #000000;">*</span><span
style="color: #333333;">) ibid, jbid, nabid, nbbid</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">READ</span><span style="color: #333333;"> (</span><span
style="color: #098658;">1</span><span style="color: #333333;">,</span><span
style="color: #000000;">*</span><span style="color: #333333;">) (((m1bid, m2bid, m3bid, </span><span
style="color: #000000;">&</span></div><div><span
style="color: #333333;"> frc(m1,m2,m3,i,j,na,nb), </span><span
style="color: #000000;">&</span></div><div><span
style="color: #333333;"> m1</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">,nr1),m2</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,nr2),</span><span
style="color: #001080;">m3</span><span style="color: #000000;">=</span><span
style="color: #098658;">1</span><span style="color: #333333;">,nr3)</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">END IF</span></div><div><span
style="color: #333333;"> </span><span
style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">END DO</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">CLOSE</span><span
style="color: #333333;">(</span><span style="color: #001080;">unit</span><span
style="color: #000000;">=</span><span style="color: #098658;">1</span><span
style="color: #333333;">)</span></div><div><span
style="color: #333333;"> </span><span style="color: #008000;">!</span></div><div><span
style="color: #333333;"> </span><span style="color: #af00db;">RETURN</span></div><div><span
style="color: #0000ff;">END SUBROUTINE</span><span
style="color: #333333;"> </span><span style="color: #795e26;">readfc</span></div></div>
<p><br>
</p>
<br>
<div class="moz-signature">-- <br>
<small>Dr. Lorenzo Paulatto<br>
IdR @ IMPMC - CNRS UMR 7590 & Sorbonne Université<br>
phone: +33 (0)1 442 79822 / skype: paulatz<br>
<a href="http://people.impmc.fr/lpaulatto/"
class="moz-txt-link-freetext" moz-do-not-send="true">http://people.impmc.fr/lpaulatto/</a>
- <a href="https://anharmonic.github.io/"
class="moz-txt-link-freetext" moz-do-not-send="true">https://anharmonic.github.io/</a><br>
23-24/423 B115, 4 place Jussieu 75252 Paris CX 05</small></div>
<lt-container></lt-container>
</body>
</html>