CamCASP/PFIT
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