CamCASP/PFIT

From CUC3
Jump to navigation Jump to search

CamCASP => PFIT

PFIT : Purpose

  • Refining local polarizability models against point-to-point polarizabilities calculated with the FDDS (using CamCASP).
    • Local polarizabilty models only.
  • Assessing polarizability models against the point-to-point polarizabilities.
    • Local and non-local models.
  • Calculate molecular and distributed <math>C_6</math> coefficients.
    • Local and non-local models.
    • Now not so relevant (though may still be useful) as the CASIMIR program does this and more.

Comments

It looks like PFIT cannot handle two molecules at once. In that case, why does PROCESS have provision for two molecules when creating the PFIT command files?

  • Actually while PFIT does not seem to recognise multiple molecules, it can yet be used to calculate the dispersion coefficient (<math>C_6</math> only) between any quartet of sites. This, in effect, allows dispersion coefficients between sites from any number of molecules to be calculated.
  • However, if sites from multiple molecules are present (via the SITES command), the resulting assessment of the polarizabilities using the point-to-point polarizabilities is nonsense as is the total <math>C_6</math> coefficient (which will be calculated assuming each site interacts with every other).
  • CAUTION: If sites from multiple molecules are present, they must all have different names. This is true even if the sites belong to the same kind of molecule. For example, for H2 with H2, the four H atoms should have distinct labels (H1A,H2A, H1B, H2B). If not, even the dispersion coefficients between quartets of sites will be wrong.

Assessing Models

Non-Local Models

The PROCESS command file to produce the PFIT command file that follows:

TITLE  PROCESS file for H2
! Usage: process < H2_daTZ.prss


Set Global-data
   CamCASP /home/am592/CamCASP/5.5-dev/
   Units  BOHR  DEGREE
   Overwrite
   Echo Off
End

Molecule H2
  Units BOHR
  H1          1.00    0.00000000    0.00000000    0.00000000   Type H
  H2          1.00    0.00000000    0.00000000    1.44873600   Type H
End

Read nonlocal pols for H2
   ! Use ascii file OUT/H2_daTZ_0.0005_1000_f11_NL4.pol
   Use ascii file H2_daTZ_NL4_000.pol
   Maximum rank  4
   Limit rank to 1
   Limit rank to 1 for sites +++
       H1 H2                                                                    
   Frequencies STATIC
   ! Use this command to split the P-2-P pol file into 11 parts:
   ! P2P-Pols <point-2-point pol file> SPLIT
End

Write
   File-prefix H2_daTZ
   PFIT file for H2 with cutoff 0.000001 and penalties
End

Finish

The penalties option is needed in the PFIT command line to get PROCESS to use only one molecule. This needs to be changed. The file shown next is an edited copy of the output. When using non-local polarizabilities PROCESS will create the file for two molecules (in this case, the first one is repeated). The second molecule has been edited out in the file below. PROCESS needs to be fixed to do this correctly.

 
 Allocate
    points          2000
    batches 1    
    rank               1
    sites              4
    parameters           32
 End
 
 Data H2_daTZ_000.p2p      ! Point-to-point pols for this frequency only
 
 #include H2_daTZ.sites    ! Sites of this molecule
 #include H2_daTZ.axes     ! Axis file
 
 Polarizabilities
     H1  H1    00   00 =   H1_H1_00_00_A
     H1  H1    00   10 =   H1_H1_00_10_A
     H1  H1    10   10 =   H1_H1_10_10_A
     H1  H1   11c  11c = H1_H1_11c_11c_A
     H1  H1   11s  11s = H1_H1_11s_11s_A
 
     H1  H2    00   00 =   H1_H2_00_00_A
     H1  H2    00   10 =   H1_H2_00_10_A
     H1  H2    10   00 =   H1_H2_10_00_A
     H1  H2    10   10 =   H1_H2_10_10_A
     H1  H2   11c  11c = H1_H2_11c_11c_A
     H1  H2   11s  11s = H1_H2_11s_11s_A
 
 
     H2  H2    00   00 =   H2_H2_00_00_A
     H2  H2    00   10 =   H2_H2_00_10_A
     H2  H2    10   10 =   H2_H2_10_10_A
     H2  H2   11c  11c = H2_H2_11c_11c_A
     H2  H2   11s  11s = H2_H2_11s_11s_A
 
 End

 Frequencies            0  omega0 0.5
 
 Fix
       H1_H1_00_00_A +++
             0.00045175
       H1_H1_00_10_A +++
             0.00049875
       H1_H1_10_10_A +++
             2.02890222
     H1_H1_11c_11c_A +++
             1.55715064
     H1_H1_11s_11s_A +++
             1.55715064
       H1_H2_00_00_A +++
            -0.00045175
       H1_H2_00_10_A +++
             0.00050214
       H1_H2_10_00_A +++
            -0.00049877
       H1_H2_10_10_A +++
             1.42282188
     H1_H2_11c_11c_A +++
             0.95223742
     H1_H2_11s_11s_A +++
             0.95223742
       H2_H2_00_00_A +++
             0.00045175
       H2_H2_00_10_A +++
            -0.00050211
       H2_H2_10_10_A +++
             2.02889987
     H2_H2_11c_11c_A +++
             1.55715064
     H2_H2_11s_11s_A +++
             1.55715064
 End
  Start
 
 Print parameters total
 Print Total Origin 0.0 0.0 0.0
 
 
 Finish

The output looks like:

$ ~/CamCASP/5.5-dev/bin/pfit < NL.data 
Batch  1:  2000 points

Sites
H1            0.000000    0.000000    0.000000
*** Warning: type H was not defined

H2            0.000000    0.000000    1.448736
1 passes

Polarizability parameters
                  Sites       Components  Coefficient
  1  H1_H1_00_00_A
                H1      H1      00   00      1.000
  2  H1_H1_00_10_A
                H1      H1      00   10      1.000
  3  H1_H1_10_10_A
                H1      H1      10   10      1.000
  4  H1_H1_11c_11c_A
                H1      H1      11c  11c     1.000
  5  H1_H1_11s_11s_A
                H1      H1      11s  11s     1.000
  6  H1_H2_00_00_A
...
...
 15  H2_H2_11c_11c_A
                H2      H2      11c  11c     1.000
 16  H2_H2_11s_11s_A
                H2      H2      11s  11s     1.000
Fix H1_H1_00_00_A =      0.00045
Fix H1_H1_00_10_A =      0.00050
Fix H1_H1_10_10_A =      2.02890
Fix H1_H1_11c_11c_A =      1.55715
Fix H1_H1_11s_11s_A =      1.55715
Fix H1_H2_00_00_A =     -0.00045
Fix H1_H2_00_10_A =      0.00050
Fix H1_H2_10_00_A =     -0.00050
Fix H1_H2_10_10_A =      1.42282
Fix H1_H2_11c_11c_A =      0.95224
Fix H1_H2_11s_11s_A =      0.95224
Fix H2_H2_00_00_A =      0.00045
Fix H2_H2_00_10_A =     -0.00050
Fix H2_H2_10_10_A =      2.02890
Fix H2_H2_11c_11c_A =      1.55715
Fix H2_H2_11s_11s_A =      1.55715


Static polarizabilities

Response values:
Maximum          0.0129773408
Minimum         -0.0092483859
Range            0.0222257267
Min. magnitude   0.0000000005
Residuals               per cent of range
Maximum      0.00091849       4.133
Minimum     -0.00169831      -7.641
R.m.s.       0.00007701       0.346

Parameter values
H1_H1_00_00_A            0.00045175
H1_H1_00_10_A            0.00049875
H1_H1_10_10_A            2.02890222
H1_H1_11c_11c_A          1.55715064
H1_H1_11s_11s_A          1.55715064
H1_H2_00_00_A           -0.00045175
H1_H2_00_10_A            0.00050214
H1_H2_10_00_A           -0.00049877
H1_H2_10_10_A            1.42282188
H1_H2_11c_11c_A          0.95223742
H1_H2_11s_11s_A          0.95223742
H2_H2_00_00_A            0.00045175
H2_H2_00_10_A           -0.00050211
H2_H2_10_10_A            2.02889987
H2_H2_11c_11c_A          1.55715064
H2_H2_11s_11s_A          1.55715064

Total static molecular polarizability
     00        z         x         y
   0.00000   0.00000   0.00000   0.00000
   0.00000   6.90149   0.00000   0.00000
   0.00000   0.00000   5.01878   0.00000
   0.00000   0.00000   0.00000   5.01878
Mean polarizability       =   5.64635
Polarizability anisotropy =   1.88272

Total static molecular polarizability
     00        z         x         y
   0.00000   0.00000   0.00000   0.00000
   0.00000   6.90149   0.00000   0.00000
   0.00000   0.00000   5.01878   0.00000
   0.00000   0.00000   0.00000   5.01878
Mean polarizability       =   5.64635
Polarizability anisotropy =   1.88272

<math>C_6</math> coefficients

Non-Local Models

PROCESS file to create the PFIT command file:

TITLE  PROCESS file for H2
! Usage: process < H2_daTZ.prss


Set Global-data
   CamCASP /home/am592/CamCASP/5.5-dev/
   Units  BOHR  DEGREE
   Overwrite
   Echo Off
End

Molecule H2
  Units BOHR
  H1          1.00    0.00000000    0.00000000    0.00000000   Type H
  H2          1.00    0.00000000    0.00000000    1.44873600   Type H
End

Read nonlocal pols for H2
   Use ascii file OUT/H2_daTZ_0.0005_1000_f11_NL4.pol
   Maximum rank  4
   Limit rank to 1
   Limit rank to 1 for sites +++
       H1 H2                                                                    
   Frequencies STATIC + 10
   ! Use this command to split the P-2-P pol file into 11 parts:
   ! P2P-Pols <point-2-point pol file> SPLIT
End

Write
   File-prefix H2_daTZ
   PFIT file for H2 with cutoff 0.000001  Penalties
End

Finish

Once again, Penalties is needed to get PFIT to work. Needs to be fixed. It seems to me that PFIT can calculate dispersion coefficients for symmetric systems only as only one molecule can be specified. Here's the PFIT command file with the second H2 molecule edited out (same problem as before: PFIT will pass two molecules):

 
 Allocate
    points          2000
    batches 1    
    rank               1
    sites              4
    parameters           32
 End
 
 #include H2_daTZ.sites
 #include H2_daTZ.axes
 
 Polarizabilities
     H1  H1    00   00 =   H1_H1_00_00_A
     H1  H1    00   10 =   H1_H1_00_10_A
     H1  H1    10   10 =   H1_H1_10_10_A
     H1  H1   11c  11c = H1_H1_11c_11c_A
     H1  H1   11s  11s = H1_H1_11s_11s_A
 
     H1  H2    00   00 =   H1_H2_00_00_A
     H1  H2    00   10 =   H1_H2_00_10_A
     H1  H2    10   00 =   H1_H2_10_00_A
     H1  H2    10   10 =   H1_H2_10_10_A
     H1  H2   11c  11c = H1_H2_11c_11c_A
     H1  H2   11s  11s = H1_H2_11s_11s_A
 
 
     H2  H2    00   00 =   H2_H2_00_00_A
     H2  H2    00   10 =   H2_H2_00_10_A
     H2  H2    10   10 =   H2_H2_10_10_A
     H2  H2   11c  11c = H2_H2_11c_11c_A
     H2  H2   11s  11s = H2_H2_11s_11s_A
 
 
 End
 
 Frequencies           10  omega0 0.5
 Fix
       H1_H1_00_00_A +++
             0.00045175      0.00045171      0.00045051      0.00044326 +++
             0.00041777      0.00035339      0.00024190      0.00012237 +++
             0.00004416      0.00001055      0.00000050
       H1_H1_00_10_A +++
             0.00049875      0.00049855      0.00049298      0.00046039 +++
             0.00035858      0.00016845     -0.00002867     -0.00011454 +++
            -0.00005626     -0.00000123      0.00000037
       H1_H1_10_10_A +++
             2.02890222      2.02854957      2.01839857      1.95823114 +++
             1.76018408      1.33662374      0.77797354      0.33314837 +++
             0.10305075      0.01938401      0.00074765
       ...
       ...
     H2_H2_11s_11s_A +++
             1.55715064      1.55691630      1.55016662      1.50999581 +++
             1.37575736      1.07786837      0.66029172      0.30079402 +++
             0.09641797      0.01797880      0.00068924
 End
 
 Start
 
 Print parameters total
 Integrate total
 
 Integrate
         H1        H1        H1        H1      
         H1        H1        H1        H2      
         H1        H1        H2        H2      
         H1        H2        H1        H1      
         H1        H2        H1        H2      
         H1        H2        H2        H2      
         H2        H2        H1        H1      
         H2        H2        H1        H2      
         H2        H2        H2        H2      
 End
 
 Finish

And the output is


Sites
H1            0.000000    0.000000    0.000000
*** Warning: type H was not defined

H2            0.000000    0.000000    1.448736
1 passes

Polarizability parameters
                  Sites       Components  Coefficient
  1  H1_H1_00_00_A
                H1      H1      00   00      1.000
  2  H1_H1_00_10_A
                H1      H1      00   10      1.000
  ...
  ...
 16  H2_H2_11s_11s_A
                H2      H2      11s  11s     1.000
Fix H1_H1_00_00_A =      0.00045
Fix H1_H1_00_10_A =      0.00050
Fix H1_H1_10_10_A =      2.02890
Fix H1_H1_11c_11c_A =      1.55715
Fix H1_H1_11s_11s_A =      1.55715
Fix H1_H2_00_00_A =     -0.00045
Fix H1_H2_00_10_A =      0.00050
Fix H1_H2_10_00_A =     -0.00050
Fix H1_H2_10_10_A =      1.42282
Fix H1_H2_11c_11c_A =      0.95224
Fix H1_H2_11s_11s_A =      0.95224
Fix H2_H2_00_00_A =      0.00045
Fix H2_H2_00_10_A =     -0.00050
Fix H2_H2_10_10_A =      2.02890
Fix H2_H2_11c_11c_A =      1.55715
Fix H2_H2_11s_11s_A =      1.55715

10 frequencies
    Frequency     omega**2    weight
    0.006610i   -0.000044    0.066671
    0.036175i   -0.001309    0.149451
    0.095447i   -0.009110    0.219086
    0.197644i   -0.039063    0.269267
    0.370417i   -0.137209    0.295524
    0.674915i   -0.455510    0.295524
    1.264899i   -1.599970    0.269267
    2.619245i   -6.860443    0.219086
    6.910886i  -47.760345    0.149451
   37.823762i-1430.636998    0.066671


Static polarizabilities

Response values:
Maximum          0.0000000000
Minimum          0.0000000000
Range            0.0000000000
Min. magnitude   1.0000000000
Residuals               per cent of range
Maximum      0.00000000         NaN
Minimum      0.00000000         NaN
R.m.s.              NaN         NaN


Polarizabilities at frequency     0.006610i

Response values:
...
...
Polarizabilities at frequency    37.823762i

Response values:
Maximum          0.0000000000
Minimum          0.0000000000
Range            0.0000000000
Min. magnitude   1.0000000000
Residuals               per cent of range
Maximum      0.00000000         NaN
Minimum      0.00000000         NaN
R.m.s.              NaN         NaN

Parameter values
H1_H1_00_00_A            0.00045175
     0.00045171     0.00045051     0.00044326     0.00041777     0.00035339
     0.00024190     0.00012237     0.00004416     0.00001055     0.00000050
H1_H1_00_10_A            0.00049875
     0.00049855     0.00049298     0.00046039     0.00035858     0.00016845
    -0.00002867    -0.00011454    -0.00005626    -0.00000123     0.00000037
...
...
H2_H2_11s_11s_A          1.55715064
     1.55691630     1.55016662     1.50999581     1.37575736     1.07786837
     0.66029172     0.30079402     0.09641797     0.01797880     0.00068924

Total static molecular polarizability
     00        z         x         y
   0.00000   0.00000   0.00000   0.00000
   0.00000   6.90149   0.00000   0.00000
   0.00000   0.00000   5.01878   0.00000
   0.00000   0.00000   0.00000   5.01878
Mean polarizability       =   5.64635
Polarizability anisotropy =   1.88272

Isotropic C6 coefficient from molecular polarizability
C6(000;00) =        12.766536

Sites: a H1, b H1, c H1, d H1

Casimir-Polder integrals
(1/2pi)\int alpha^{a,b}_{t(1,1)}(iv) alpha^{c,d}_{u(1,1)}(iv) dv
00  00            0.617700
00  20           -0.065902
20  00           -0.065902
20  20            0.007409
Dispersion coefficients
    00  00  0     1.235400
    20  00  2     0.093200
    00  20  2     0.093200
    20  20  0     0.001482
    20  20  2     0.002117
    20  20  4     0.022862

Sites: a H1, b H1, c H1, d H2

Casimir-Polder integrals
...
...

Sites: a H2, b H2, c H2, d H2

Casimir-Polder integrals
(1/2pi)\int alpha^{a,b}_{t(1,1)}(iv) alpha^{c,d}_{u(1,1)}(iv) dv
00  00            0.617700
00  20           -0.065902
20  00           -0.065902
20  20            0.007409
Dispersion coefficients
    00  00  0     1.235399
    20  00  2     0.093199
    00  20  2     0.093199
    20  20  0     0.001482
    20  20  2     0.002117
    20  20  4     0.022862

Notice all the NANs? How can these be suppressed? Seems like PFIT wants to compare the polarizabilities to the point-to-point polarizabilities which are not required and have not been specified.

The NANs can be avoided by giving PFIT the point-to-point polarizability file. The PFIT manual says that polarizabilities are assessed (using the p2p pols) even if the FIX command is used. So use the following line near the start of the PFIT file:

   Data OUT/H2_daTZ_lim2.0_4.0_p2000_f11.p2p