[CP2K-user] help with density matrix of dbcsr_type_no_symmetry and hfx_energy calculation

pavan.... at gmail.com pavan.... at gmail.com
Mon Feb 25 23:45:31 UTC 2019


Hello CP2K Developers,

I am working on calculating electronic coupling element using a 
transformation of MO sets obtained for two different states A and B (in 
GPAW formalism). For this purpose I need to pass a modified density, which 
is non-symmetric, to make one more energy calculation. I am passing the 
force_env to a separate module from a mixed_energy calculation, where I am 
doing the following calls with the modified density:

1. CALL qs_rho_get(rho, rho_ao=rho_ao, rho_ao_kp=rho_ao_kp)
2. rho_ao_kp(1:nspins, 1:1) => density_modified(1:nspins)            ! 
density_modified is a dbcsr_type_no_symmetry matrix
3. rho_ao => density_modified
4. CALL qs_rho_set(rho, rho_ao=rho_ao, rho_ao_kp=rho_ao_kp)
5. CALL qs_rho_update_rho(rho, qs_env=qs_env)
6. CALL qs_ks_did_change(ks_env, rho_changed=.TRUE., 
potential_changed=.TRUE.)
7. CALL qs_ks_update_qs_env(qs_env, just_energy=.TRUE., 
calculate_forces=.FALSE.)

I could get the first 6 steps right when I am doing a serial version. First 
question is whether my approach is correct in order to do another energy 
calculation with the new modified density?  I am trying to follow the same 
process as an scf loop update here, and using the qs_env for state B since 
only the density changes and rest all parameters remain same.

I had a problem with the core matrix trace calculations, which I solved by 
desymmetrizing *matrixkp_h* and *matrixkp_t *before passing to 
*calculate_ptrace()*, and that worked well. Now I am having a trouble with 
hfx calculation, in particular, in *hfx_energy_potential.F -> 
integrate_four_center() -> get_full_density() *subroutine. In 
*get_full_density()* subroutine, *number_of_p_entries* doesn't seem to 
match the new non-symmetric density matrix which results in the *sendbuffer 
(**hfx_communication.F: line 145) *going out of bounds. The conditional 
statement with *dbcsr_iterator_blocks_left(iter)* is still true and is 
causing an out of bounds error. Can you please suggest a fix for this?  

Another naive question: Other than this are there any parts of build 
kohn-sham matrix routine that are resistant to a non-symmetric density 
matrix?

On a separate note, there is a harmless bug in the *write_matrix_gen()* 
subroutine where the string formats are interchanged for the omit_header 
cases at output (lines 544 and 587) which gives an unformatted transfer 
error during run-time.  


Thank you very much for your time, and please let me know if the questions 
are ambiguous, I will try to provide more information.

Best Regards,
Pavan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20190225/10795736/attachment.htm>


More information about the CP2K-user mailing list