printing hessian with greater precision

From NWChem

Viewed 2580 times, With a total of 6 Posts
Jump to: navigation, search

Clicked A Few Times
Threads 3
Posts 6
Dear GMX Users:

Does anyone know where in the dft code the energy gradients are printed?
(immediately after "DFT ENERGY GRADIENTS" is printed)
I am trying to increase the number of digits in the print-out.

Yours,
Jim Rustad

  • Bert Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Forum Vet
Threads 4
Posts 597
Jim,

This depends if you are running analytical or numerical gradients. Assuming analytical gradients, src/gradients/grad_force.F (look for ENERGY GRAD) is where this is printed out.

Bert

Quote:Jrrustad Jul 20th 8:16 pm
Dear GMX Users:

Does anyone know where in the dft code the energy gradients are printed?
(immediately after "DFT ENERGY GRADIENTS" is printed)
I am trying to increase the number of digits in the print-out.

Yours,
Jim Rustad

Clicked A Few Times
Threads 3
Posts 6
Thanks Bert-
Actually these are numerical hessian calculations.

I have a 25-atom aquo ion vibrating in a fixed crystal (i.e. actlist is 1:25 in task dft optimize). The system has C2V symmetry (162 atoms total; 46 unique centers ). The aquo ion uses a large basis set, the surrounding crystal uses a smaller one.

The problem is that the "actlist" and "gen_hess" directives don't seem to allow restriction of the hessian evaluation to only the free core atoms in the system.

My plan is to just evaluate the whole hessian, and then extract the first 3x25 rows and columns for a frequency calculation (using a simple code that I wrote to do this).

Ideally, though, I would also like to avoid having to wait for all 46 unique atoms to be displaced.

It seems to me that once the symmetry-unique atoms in the aquo ion have been displaced, that it should, in principle, be possible to kill the job, pluck out the first 3x25 rows and columns of the hessian, and do the frequency calculation.

The problems are:
(1) I don't know how to extract the hessian out of the rtdb. It will not have been printed because the job would be killed prematurely.
(2) I don't know when the symmetry operations have been applied to the hessian; in other words, after the unique atoms in the core have all been displaced, are all of the first 3x25 columns and rows of the hessian intact, so that I could just read them directly out of the rtdb ? Or does the code not apply the symmetry until the end, after all unique atoms have been displaced?

I would think also that this task might come up often in QM-MM calculations- maybe there tools in these codes that might apply?

Thanks for all you help,

Jim R.

  • Bert Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Forum Vet
Threads 4
Posts 597
On (1): You should always be able to do a restart (i.e. not loose the rtdb) and do a "task rtdbprint" to get the hessian data out of the RTDB.

On (2): Most likely it is done at the end, though one would have to dig through the code to see how this is done.

We will have to test and see if gen_hess actually works, as this was never fully tested or documented (and predates most of us currently working on NWChem).

Bert


Quote:Jrrustad Jul 24th 11:32 am
Thanks Bert-
Actually these are numerical hessian calculations.

I have a 25-atom aquo ion vibrating in a fixed crystal (i.e. actlist is 1:25 in task dft optimize). The system has C2V symmetry (162 atoms total; 46 unique centers ). The aquo ion uses a large basis set, the surrounding crystal uses a smaller one.

The problem is that the "actlist" and "gen_hess" directives don't seem to allow restriction of the hessian evaluation to only the free core atoms in the system.

My plan is to just evaluate the whole hessian, and then extract the first 3x25 rows and columns for a frequency calculation (using a simple code that I wrote to do this).

Ideally, though, I would also like to avoid having to wait for all 46 unique atoms to be displaced.

It seems to me that once the symmetry-unique atoms in the aquo ion have been displaced, that it should, in principle, be possible to kill the job, pluck out the first 3x25 rows and columns of the hessian, and do the frequency calculation.

The problems are:
(1) I don't know how to extract the hessian out of the rtdb. It will not have been printed because the job would be killed prematurely.
(2) I don't know when the symmetry operations have been applied to the hessian; in other words, after the unique atoms in the core have all been displaced, are all of the first 3x25 columns and rows of the hessian intact, so that I could just read them directly out of the rtdb ? Or does the code not apply the symmetry until the end, after all unique atoms have been displaced?

I would think also that this task might come up often in QM-MM calculations- maybe there tools in these codes that might apply?

Thanks for all you help,

Jim R.

  • Huub Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Forum Regular
Threads 1
Posts 185
To calculate frequencies for active atoms only set

    set gen_hess:actlist <list of atoms>

I have tried this for an H2CO-H2O complex calculating the frequencies for just the water molecule and this seems to work fine. The only thing that seems dubious are the results for the projected frequencies. In cases they are very different from the frequencies obtained for the whole molecule.

Input:

 echo
start h2co_h2o_dat
geometry
h 0.00000000 -0.92494809 -2.76629063
h 0.00000000 0.92494809 -2.76629063
c 0.00000000 0.00000000 -2.18887270
o 0.00000000 0.00000000 -1.00283061
h 0.00000000 -0.74265427 1.42611142
h 0.00000000 0.74265427 1.42611142
o 0.00000000 0.00000000 2.01432013
end
basis
* library 6-31g*
end
set gen_hess:actlist 5:7
task scf freq numerical

The unprojected frequencies obtained were:

         All atoms     Water only
1 -144.223 -142.345
2 -18.688
3 -14.172
4 -10.643
5 3.832
6 17.860
7 34.616
8 49.839
9 77.986 99.454
10 113.074 88.753
11 146.008
12 384.063 380.659
13 1340.106
14 1383.798
15 1678.948
16 1839.585 1840.264
17 2022.956
18 3173.133
19 3253.921
20 4088.318 4088.315
21 4188.738 4188.737

I think there should be at least 2 more sensible frequencies for the water only case but I cannot identify those from the frequencies and intensities. The projected frequencies are in places very different.

Huub

  • Bert Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Forum Vet
Threads 4
Posts 597
Just found some additional information. One should use the combination of

 set gen_hess:actlist <list of atoms>
set hessian:compress .true.

The latter zeros out the Hessian components associated with the frozen atoms, i.e. makes the Hessian diagonal for those components in the matrix.

Bert



Quote:Huub Jul 26th 9:00 pm
To calculate frequencies for active atoms only set

    set gen_hess:actlist <list of atoms>

I have tried this for an H2CO-H2O complex calculating the frequencies for just the water molecule and this seems to work fine. The only thing that seems dubious are the results for the projected frequencies. In cases they are very different from the frequencies obtained for the whole molecule.

Input:

 echo
start h2co_h2o_dat
geometry
h 0.00000000 -0.92494809 -2.76629063
h 0.00000000 0.92494809 -2.76629063
c 0.00000000 0.00000000 -2.18887270
o 0.00000000 0.00000000 -1.00283061
h 0.00000000 -0.74265427 1.42611142
h 0.00000000 0.74265427 1.42611142
o 0.00000000 0.00000000 2.01432013
end
basis
* library 6-31g*
end
set gen_hess:actlist 5:7
task scf freq numerical

The unprojected frequencies obtained were:

         All atoms     Water only
1 -144.223 -142.345
2 -18.688
3 -14.172
4 -10.643
5 3.832
6 17.860
7 34.616
8 49.839
9 77.986 99.454
10 113.074 88.753
11 146.008
12 384.063 380.659
13 1340.106
14 1383.798
15 1678.948
16 1839.585 1840.264
17 2022.956
18 3173.133
19 3253.921
20 4088.318 4088.315
21 4188.738 4188.737

I think there should be at least 2 more sensible frequencies for the water only case but I cannot identify those from the frequencies and intensities. The projected frequencies are in places very different.

Huub

Clicked A Few Times
Threads 2
Posts 9
Calculating frequencies for active atoms only
Hello,

I am trying to reproduce the above example for calculating frequencies for a set of active atoms while leaving the remaining atoms frozen. I encounter an error (provided below) when attempting to apply:

set hessian:compress .true.

as suggested above. I do not encounter this error when only applying:

set gen_hess:actlist 5:7

to define the set of active atoms. Can anyone help me identify the source of this error, or provide advice for properly freezing atoms during a frequency calculation?

Thanks in advance!
Tom

Input:

echo

start h2co_h2o_dat

geometry

   h                       0.00000000    -0.92494809    -2.76629063

   h                       0.00000000     0.92494809    -2.76629063

   c                       0.00000000     0.00000000    -2.18887270

   o                       0.00000000     0.00000000    -1.00283061

   h                       0.00000000    -0.74265427     1.42611142

   h                       0.00000000     0.74265427     1.42611142

   o                       0.00000000     0.00000000     2.01432013

end

basis

  * library 6-31g*

end


set gen_hess:actlist 5:7
set hessian:compress .true.

task scf freq numerical


Error:



vib_vib: unexpected EOF when reading file: "hess_file"                 911
------------------------------------------------------------------------
------------------------------------------------------------------------
current input line :
33: task scf freq numerical
------------------------------------------------------------------------
------------------------------------------------------------------------
An error occured while trying to read or write to disk space
------------------------------------------------------------------------


Forum >> NWChem's corner >> General Topics



Who's here now Members 0 Guests 1 Bots/Crawler 0


AWC's: 2.5.10 MediaWiki - Stand Alone Forum Extension
Forum theme style by: AWC