Uğur Bozkaya Araştırma Grubu
PSI4
Cover Art
TÜBA-GEBİP Ödül Töreni
TÜBA-GEBİP Ödül Töreni
Coupled-Cluster (CC)
Su Kümeleri
Katyon-Pi Etkileşimleri
Parlar Vakfı Ödül Töreni
Beytepe
Psi4

Psi4 programına ait tüm örnekler ve kullanım ayarlarına bu linkte bulunan Psi4 Manualinden ulaşabilirsiniz. Aşağıda psi4 programı için bazı temel inputlar verilmiştir.



Temel Psi4 İnputu: Temel bir psi4 inputu aşağıdaki şekildedir. 

memory 5 gb

molecule {              

0 1
H 0.0000 0.0000 0.0000
H 0.3000 0.0000 0.0000
}
set {
basis cc-pvdz
}
energy('scf')



Temel Opt/Freq/Energy İnputu: Temel bir psi4 optimizasyon inputu aşağıdaki şekildedir. En alt opt argümanı yapıyı optimize etmek için eklenir. 

memory 5 gb

molecule h2o {
0 1
o
h 1 0.958
h 1 0.958 2 104.4776
}

set {
  basis cc-pvdz
  df_basis_scf cc-pvdz-jkfit
  df_basis_cc cc-pvdz-ri
  scf_type df
  qc_module occ
  guess sad
}
opt('mp2')

En alttaki opt yerine freq yazıldığında optimize edilen geometrinin harmonik titreşim frekansı hesaplanabilmektedir. Yine aynı şekilde opt yerine energy yazıldığında enerji hesabı yapılabilmektedir.



Diatomik İnputu: Psi4 programı ile diatomik moleküllerin optimizasyon, frekans (harmonik ve anharmonik) ve enerji hesaplamaları aşağıdaki input ile gerçekleştirilebilir. rvals değerlerini belirlerken deneysel değere 0.05 ekleyip çıkararak sağına ve soluna ekleyebilirsiniz. 

molecule diatomic {
0 1
O
O 1 R
symmetry c1
}

set {
  basis cc-pvdz
  df_basis_scf cc-pvdz-jkfit
  df_basis_cc cc-pvdz-ri
  scf_type df
  cc_type df
  qc_module occ
  guess sad
}


energies = []
rvals=[1.1468, 1.1968, 1.2468, 1.2968, 1.3468]

for r in rvals:
  mol.R = r
  energies.append(energy('ccsd'))

# now compute spectroscopic constatnts
phys_consts = anharmonicity(rvals, energies)

 



PES İnputu: Psi4 programı ile potansiyel enerji yüzeyi (Potential Energy Surfaces, PES) hesaplamalarında aşağıdaki input örneği kullanılır.
 
memory 5 gb

molecule mol{
0 1
F
F 1 R
symmetry c1
}

set {
  basis cc-pvdz
  df_basis_scf cc-pvdz-jkfit
  df_basis_cc cc-pvdz-ri
  reference rhf
}

energies = {}
rvals=[1.3119,1.3619,1.4119,1.4619,1.5119]

for r in rvals:
  clean()
  mol.R = r
  energies[r]= energy('mp2')

psi4.print_out("\n")
psi4.print_out("PES\n\n")
psi4.print_out("        R [Ang]         E [au]             \n")
psi4.print_out("-----------------------------------------------------\n")
for r in rvals:
   e = energies[r]
   psi4.print_out("        %3.3f            %12.12f\n" % (r, e))

 



Non-kovalent Etkileşim Enerjisi Hesaplamaları: Psi4 programı ile non-kovalent etkileşim enerjisi (Non-covalent Interaction Energy, NCIE) cp (counter-poise) düzeltmesi kullanılarak aşağıdaki input örneği ile hesaplanabilir. cp düzeltmesi kullanılarak yapılan hesaplamalarda monomerler ve dimerin enerji hesaplamaları tek seferde yapılır ve total etkileşim enerjisi (dimer-mono1-mono2) outputta basılır. Bazı problematik durumlarda monomerler ve dimerler ayrı ayrı inputlarda çalışıtırılıp, excel yardımı ile etkileşim enerjisi hesaplaması gerçekleştirilir.

memory 5 gb

molecule a24_1 {
  0 1
  O          0.00000000      -0.05786571      -1.47979303
  H          0.00000000       0.82293384      -1.85541474
  H          0.00000000       0.07949567      -0.51934253
  --
  0 1
  N          0.00000000       0.01436394       1.46454628
  H          0.00000000      -0.98104857       1.65344779
  H         -0.81348351       0.39876776       1.92934049
  H          0.81348351       0.39876776       1.92934049
  units angstrom
  symmetry c1
}

set {
  basis aug-cc-pvdz
  df_basis_scf aug-cc-pvdz-jkfit
  df_basis_cc aug-cc-pvdz-ri
  guess sad
  reference rhf
  scf_type df
  mp_type df
}

energy('mp2', bsse_type='cp')

Psi4 programı ile non-kovalent etkileşim enerjisi hesaplamalarında, monomerler ayrı ayrı hesaplanmak istenirse hayalet (ghost) atom yöntemi kullanılabilir. Bu yöntemde hesaplamayacağımız moleküle ait tüm atomların başına @ sembolü eklenir ve aradaki -- işareti ile charge multiplicity satırı silinir.

memory 5 gb

molecule a24_1 {
  0 1
  O          0.00000000      -0.05786571      -1.47979303
  H          0.00000000       0.82293384      -1.85541474
  H          0.00000000       0.07949567      -0.51934253
 @N          0.00000000       0.01436394       1.46454628
 @H          0.00000000      -0.98104857       1.65344779
 @H         -0.81348351       0.39876776       1.92934049
 @H          0.81348351       0.39876776       1.92934049
  units angstrom
  symmetry c1
}

set {
  basis aug-cc-pvtz
  df_basis_scf aug-cc-pvtz-jkfit
  df_basis_cc aug-cc-pvtz-ri
  guess sad
  reference rhf
  scf_type df
  mp_type df
}

energy('mp2')



Custom Basis Set İnputu : Programın veri tabanında mevcut olmayan veya çalışmaya özel olarak tanımlamak istediğiniz bir baz setini kullanmak için aşağıda verilen input ile devam edebilirsiniz. İlk örnekte; her bir atom için ayrı ayrı baz seti tanımlanmıştır.  Programın veri tabanında mevcut olmayan ve bu yapı için özel olarak tanımlanan baz setleri my3-21G ve DZ olarak adlandırılmıştır. Detaylı bilgi için tıklayınız. 

memory 5 gb 

molecule bz {
    X
    X   1  RXX
    X   2  RXX  1  90.0
    C   3  RCC  2  90.0  1   0.0
    C   3  RCC  2  90.0  1  60.0
    C1  3  RCC  2  90.0  1 120.0
    C   3  RCC  2  90.0  1 180.0
    C1  3  RCC  2  90.0  1 240.0
    C   3  RCC  2  90.0  1 300.0
    H1  3  RCH  2  90.0  1   0.0
    H   3  RCH  2  90.0  1  60.0
    H   3  RCH  2  90.0  1 120.0
    H1  3  RCH  2  90.0  1 180.0
    H   3  RCH  2  90.0  1 240.0
    H   3  RCH  2  90.0  1 300.0

    RCC  = 1.3915
    RCH  = 2.4715
    RXX  = 1.00
}

basis  {

   assign DZ
   assign C my3-21G
   assign H1 sto-3g
   assign C1 sto-3g

   [my3-21G] 
   cartesian
   ****
   H     0
   S   2   1.00
         5.4471780              0.1562850
         0.8245470              0.9046910
   S   1   1.00
         0.1831920              1.0000000
   ****
   C     0
   S   3   1.00
       172.2560000              0.0617669
        25.9109000              0.3587940
         5.5333500              0.7007130
   SP   2   1.00
         3.6649800             -0.3958970              0.2364600
         0.7705450              1.2158400              0.8606190
   SP   1   1.00
         0.1958570              1.0000000              1.0000000
   ****
   [DZ]
   spherical
   ****
   H     0 
   S   3   1.00
        19.2406000              0.0328280        
         2.8992000              0.2312080        
         0.6534000              0.8172380        
   S   1   1.00
         0.1776000              1.0000000        
   ****
}

 
set d_convergence 11
set e_convergence 11
set scf_type pk
 
scfenergy = energy('scf')

 

Çalıştığınız sistemdeki her bir atom için tanımlı ortak baz seti bulamıyorsanız baz setini haricen belirleyebilirsiniz. Aşağıdaki örnekte her bir atom için ayrı ayrı yardımcı baz seti tanımlaması yapılmıştır.

molecule { 
0 1
C     -1.948844    0.619359   -0.000000
C     -0.016018    0.608680    0.000000
H      0.336565   -0.131599   -0.687440
H      0.345972    1.571195   -0.295683
H      0.339394    0.380532    0.983124
H     -2.301427    1.359637    0.687439
H     -2.304256    0.847506   -0.983124
H     -2.310834   -0.343156    0.295683
Zn    -0.186875    3.128829    0.000000
noreorient 
nocom 
symmetry c1 

SET { 
BASIS AUG-CC-PVDZ 
GUESS SAD 
REFERENCE RHF 
SCF_TYPE DF 
QC_MODULE OCC 
MP2_TYPE DF 
MP_TYPE DF 
CC_TYPE DF 

DF_BASIS_SCF { 
 ASSIGN C AUG-CC-PVDZ-JKFIT 
 ASSIGN H AUG-CC-PVDZ-JKFIT 
 ASSIGN ZN DEF2-UNIVERSAL-JKFIT 

DF_BASIS_CC { 
 ASSIGN C AUG-CC-PVDZ-RI 
 ASSIGN H AUG-CC-PVDZ-RI 
 ASSIGN ZN DEF2-QZVPP-RI 

energy('ccsd(t)')
 

Aşağıdaki örnekte yapıdaki her atom için ayrı ayrı ana ve yardımcı baz setleri atanmış olan bir plugin_dfocc inputu verilmiştir.

# plugin_dfocc

sys.path.insert(0, os.environ['PSI_PLUGIN_PATH'])
import plugin_dfocc

memory 5 gb

molecule H2O {
  0 1
  O    0.0000000000   -0.0678049466   -0.0000000000
  H    0.7508329999    0.5380568534    0.0000000000
  H   -0.7508329999    0.5380568534    0.0000000000
  symmetry c1
}

set {
  reference uhf
  scf_type df
  cc_type df
  qc_module occ
  e_convergence 1e-8
  d_convergence 1e-6
  freeze_core true
}

set basis {
  assign C aug-cc-pvtz
  assign O aug-cc-pvtz
  assign N aug-cc-pvtz 
  assign S aug-cc-pvtz 
  assign H aug-cc-pvtz
  assign I def2-tzvp
}

set df_basis_scf {
  assign C aug-cc-pvtz-jkfit
  assign O aug-cc-pvtz-jkfit
  assign N aug-cc-pvtz-jkfit
  assign S aug-cc-pvtz-jkfit 
  assign H aug-cc-pvtz-jkfit
  assign I def2-tzvp-jkfit
}

set df_basis_cc {
  assign C aug-cc-pvtz-ri
  assign O aug-cc-pvtz-ri
  assign N aug-cc-pvtz-ri
  assign S aug-cc-pvtz-ri
  assign H aug-cc-pvtz-ri
  assign I def2-tzvp-ri
}

set plugin_dfocc {
  e_convergence 1e-7
  nat_orbs true
  wfn_type df-ccsd(t)
}

energy('plugin_dfocc')
 



Çözücü Ortamında Çalışmak için İnput : Çözücü (solvent) ortamında hesaplama yapmak için Psi4-PCM modulü kullanılımı: Sistemde kullanım için yazılım adı olarak psi4pcm kullanılarak aşağıdaki input çalıştırılır. Detaylı bilgi için tıklayınız.

memory 5 gb

molecule G1 {
1 1
N        67.0900040000        103.1700060000         86.6999970000
H        66.5800020000        102.5299990000         86.0999980000
H        68.0499950000        102.8499980000         86.7800060000
H        66.6500020000        103.1499940000         87.6100010000
H        67.0761236735        104.1206203265         86.3391827551
noreorient
nocom
symmetry c1
}

set {
basis cc-pvtz
df_basis_scf cc-pvtz-jkfit
df_basis_cc cc-pvtz-ri
guess gwh
reference rhf
scf_type df
qc_module occ
mp2_type df
mp_type df
pcm true
pcm_scf_type total
pcm_cc_type pte
}
pcm =
{
  Units = Angstrom
  Medium
  {
    SolverType = IEFPCM
    Solvent = Water
  }
  Cavity
  {
    RadiiSet = UFF
    Type = GePol
    Scaling = False
    Area = 1.0
    Mode = Implicit
  }
}
energy('mp2')



Harmonik Titreşim Frekansı Hesabının Paralel Çalıştırılması: Psi4 programında freq satırına eklenen mode='sow' opsiyonu ile frekans işi her bir displacement bir inputta olacak şekilde bölünür. Yapıdaki atom sayısına bağlı olarak çok sayıda frekans inputu ".in" uzantılı olarak oluşur. Bu uzantıların herbiri ilgili linux komutları ile ".inp" uzantılı hale getirilir (rename, prename, vb.). Tüm frekans inputları çalıştırıldıktan sonra, outputların olduğu dizinde freq-master.inp inputu çalıştırılarak harmonik titreşim frekansları elde edilir (freq-master.out dosyasında).

memory 5 gb

molecule h2o {
0 1
o
h 1 0.958
h 1 0.958 2 104.4776
}

set {
  basis cc-pvdz
  df_basis_scf cc-pvdz-jkfit
  df_basis_cc cc-pvdz-ri
  scf_type df
  qc_module occ
}
freq('mp2', mode='sow')