@@ -768,10 +768,13 @@ void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_
768768 castmem_d2s_h2d_op ()(this ->s_nhtol , this ->nhtol .c , this ->nhtol .nr * this ->nhtol .nc );
769769 castmem_d2s_h2d_op ()(this ->s_nhtolm , this ->nhtolm .c , this ->nhtolm .nr * this ->nhtolm .nc );
770770 castmem_d2s_h2d_op ()(this ->s_tab , this ->tab .ptr , this ->tab .getSize ());
771- castmem_d2s_h2d_op ()(this ->s_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
772- castmem_z2c_h2d_op ()(this ->c_qq_so , this ->qq_so .ptr , this ->qq_so .getSize ());
771+ if (this ->nhm > 0 )
772+ {
773+ castmem_d2s_h2d_op ()(this ->s_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
774+ castmem_z2c_h2d_op ()(this ->c_qq_so , this ->qq_so .ptr , this ->qq_so .getSize ());
775+ }
773776 }
774- if (PARAM .globalv .has_double_data )
777+ if (PARAM .globalv .has_double_data && this -> nhm > 0 )
775778 {
776779 syncmem_z2z_h2d_op ()(this ->z_qq_so , this ->qq_so .ptr , this ->qq_so .getSize ());
777780 }
@@ -782,7 +785,10 @@ void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_
782785 syncmem_d2d_h2d_op ()(this ->d_nhtol , this ->nhtol .c , this ->nhtol .nr * this ->nhtol .nc );
783786 syncmem_d2d_h2d_op ()(this ->d_nhtolm , this ->nhtolm .c , this ->nhtolm .nr * this ->nhtolm .nc );
784787 syncmem_d2d_h2d_op ()(this ->d_tab , this ->tab .ptr , this ->tab .getSize ());
785- syncmem_d2d_h2d_op ()(this ->d_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
788+ if (this ->nhm > 0 )
789+ {
790+ syncmem_d2d_h2d_op ()(this ->d_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
791+ }
786792 }
787793 else
788794 {
@@ -792,8 +798,11 @@ void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_
792798 castmem_d2s_h2h_op ()(this ->s_nhtol , this ->nhtol .c , this ->nhtol .nr * this ->nhtol .nc );
793799 castmem_d2s_h2h_op ()(this ->s_nhtolm , this ->nhtolm .c , this ->nhtolm .nr * this ->nhtolm .nc );
794800 castmem_d2s_h2h_op ()(this ->s_tab , this ->tab .ptr , this ->tab .getSize ());
795- castmem_d2s_h2h_op ()(this ->s_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
796- castmem_z2c_h2h_op ()(this ->c_qq_so , this ->qq_so .ptr , this ->qq_so .getSize ());
801+ if (this ->nhm > 0 )
802+ {
803+ castmem_d2s_h2h_op ()(this ->s_qq_nt , this ->qq_nt .ptr , this ->qq_nt .getSize ());
804+ castmem_z2c_h2h_op ()(this ->c_qq_so , this ->qq_so .ptr , this ->qq_so .getSize ());
805+ }
797806 }
798807 // There's no need to synchronize double precision pointers while in a CPU environment.
799808 }
0 commit comments