110 CHARACTER(LEN=default_string_length) :: ext, filename
111 COMPLEX(KIND=dp) :: gtemp
112 INTEGER :: bo_atom(2), ia, iat, iatom, idir, iexp, &
113 ig, ikind, ir, iso, ispin, ix, iy, iz, &
114 natom, nexp_ppl, nkind, nspins, &
116 INTEGER,
DIMENSION(2, 3) :: bo
117 INTEGER,
DIMENSION(:),
POINTER :: atom_list
118 LOGICAL :: gapw, gapw_xc, gth_gspace, ionode, &
119 make_soft, mpi_io, paw_atom
120 REAL(kind=
dp) :: alpha, alpha_core, arg, charge, ehartree, exc, exc1, exp_rap, &
121 gapw_max_alpha, hard_radius, hard_value, soft_value, sqrt_alpha, sqrt_rap
122 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: vh1_rad_h, vh1_rad_s
123 REAL(kind=
dp),
DIMENSION(3) :: rap, ratom, roffset, rpoint
124 REAL(kind=
dp),
DIMENSION(:),
POINTER :: cexp_ppl, rho_rad_z
125 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rho_rad_0
144 v_coulomb_gtemp, v_hartree_gspace, &
145 v_hartree_gtemp, v_xc_gtemp
151 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, rho2_r, rho_r, v_rspace_new, &
154 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
156 TYPE(
qs_rho_p_type),
DIMENSION(:, :),
POINTER :: nablavks_set
160 TYPE(
rho_atom_coeff),
DIMENSION(:),
POINTER :: rho_rad_h, rho_rad_s
161 TYPE(
rho_atom_coeff),
DIMENSION(:, :),
POINTER :: nablavks_vec_rad_h, nablavks_vec_rad_s
164 TYPE(
rhoz_type),
DIMENSION(:),
POINTER :: rhoz_set
175 NULLIFY (auxbas_pw_pool)
177 NULLIFY (dft_control)
181 NULLIFY (nablavks_set)
182 NULLIFY (nablavks_atom_set)
183 NULLIFY (nablavks_vec_rad_h)
184 NULLIFY (nablavks_vec_rad_s)
186 NULLIFY (particle_set)
188 NULLIFY (poisson_env)
195 NULLIFY (rho0_atom_set)
196 NULLIFY (rho_atom_set)
199 NULLIFY (v_rspace_new)
200 NULLIFY (v_tau_rspace)
204 NULLIFY (rho_r, rho_ao, rho1_r, rho2_r)
205 NULLIFY (oce, qs_kind_set, sab)
209 ionode = logger%para_env%is_source()
212 extension=
".linresLog")
219 "EPR%PRINT%G_TENSOR")
229 CALL get_epr_env(epr_env, nablavks_set=nablavks_set, &
230 nablavks_atom_set=nablavks_atom_set)
233 DO ispin = 1,
SIZE(nablavks_set, 2)
234 DO idir = 1,
SIZE(nablavks_set, 1)
235 CALL qs_rho_get(nablavks_set(idir, ispin)%rho, rho_r=rho_r)
240 CALL qs_rho_get(nablavks_set(1, 1)%rho, rho_r=rho_r)
242 CALL qs_rho_get(nablavks_set(2, 1)%rho, rho_r=rho_r)
244 CALL qs_rho_get(nablavks_set(3, 1)%rho, rho_r=rho_r)
247 roffset = -real(
modulo(pwx%pw_grid%npts, 2),
dp)*pwx%pw_grid%dr/2.0_dp
254 atomic_kind_set=atomic_kind_set, &
255 qs_kind_set=qs_kind_set, &
258 dft_control=dft_control, &
260 particle_set=particle_set, &
264 rho_atom_set=rho_atom_set, &
265 rho0_atom_set=rho0_atom_set, &
269 oce=oce, sab_orb=sab)
271 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
272 poisson_env=poisson_env)
276 gapw = dft_control%qs_control%gapw
277 gapw_xc = dft_control%qs_control%gapw_xc
278 nkind =
SIZE(atomic_kind_set)
279 nspins = dft_control%nspins
285 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
286 CALL auxbas_pw_pool%create_pw(v_hartree_gtemp)
287 CALL auxbas_pw_pool%create_pw(v_hartree_rtemp)
288 CALL auxbas_pw_pool%create_pw(rho_tot_gspace)
301 skip_nuclear_density=.NOT. gapw)
319 rho_rad_z => rhoz_set(ikind)%r_coef
321 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=natom)
323 grid_atom=grid_atom, &
324 harmonics=harmonics, &
325 hard_radius=hard_radius, &
328 alpha_core_charge=alpha_core)
332 ALLOCATE (vh1_rad_h(grid_atom%nr, harmonics%max_iso_not0))
333 ALLOCATE (vh1_rad_s(grid_atom%nr, harmonics%max_iso_not0))
356 bo_atom =
get_limit(natom, para_env%num_pe, para_env%mepos)
358 DO iat = bo_atom(1), bo_atom(2)
360 iatom = atom_list(iat)
361 ratom = particle_set(iatom)%r
363 nablavks_vec_rad_h => nablavks_atom_set(iatom)%nablavks_vec_rad_h
364 nablavks_vec_rad_s => nablavks_atom_set(iatom)%nablavks_vec_rad_s
368 nablavks_vec_rad_h(idir, ispin)%r_coef(:, :) = 0.0_dp
369 nablavks_vec_rad_s(idir, ispin)%r_coef(:, :) = 0.0_dp
373 rho_atom => rho_atom_set(iatom)
374 NULLIFY (rho_rad_h, rho_rad_s, rho_rad_0)
375 CALL get_rho_atom(rho_atom=rho_atom, rho_rad_h=rho_rad_h, &
377 rho_rad_0 => rho0_atom_set(iatom)%rho0_rad_h%r_coef
381 CALL calculate_vh_1center(vh1_rad_h, vh1_rad_s, rho_rad_h, rho_rad_s, rho_rad_0, rho_rad_z, grid_atom)
383 DO ir = 2, grid_atom%nr
385 IF (grid_atom%rad(ir) >= hard_radius) cycle
387 DO ia = 1, grid_atom%ng_sphere
393 DO iso = 1, harmonics%max_iso_not0
394 hard_value = hard_value + &
395 vh1_rad_h(ir, iso)*harmonics%dslm_dxyz(idir, ia, iso) + &
396 harmonics%slm(ia, iso)* &
397 (vh1_rad_h(ir - 1, iso) - vh1_rad_h(ir, iso))/ &
398 (grid_atom%rad(ir - 1) - grid_atom%rad(ir))* &
399 (harmonics%a(idir, ia))
401 nablavks_vec_rad_h(idir, 1)%r_coef(ir, ia) = hard_value
408 DO iso = 1, harmonics%max_iso_not0
409 soft_value = soft_value + &
410 vh1_rad_s(ir, iso)*harmonics%dslm_dxyz(idir, ia, iso) + &
411 harmonics%slm(ia, iso)* &
412 (vh1_rad_s(ir - 1, iso) - vh1_rad_s(ir, iso))/ &
413 (grid_atom%rad(ir - 1) - grid_atom%rad(ir))* &
414 (harmonics%a(idir, ia))
416 nablavks_vec_rad_s(idir, 1)%r_coef(ir, ia) = soft_value
424 nablavks_vec_rad_h(idir, 2)%r_coef(:, :) = nablavks_vec_rad_h(idir, 1)%r_coef(:, :)
425 nablavks_vec_rad_s(idir, 2)%r_coef(:, :) = nablavks_vec_rad_s(idir, 1)%r_coef(:, :)
430 DEALLOCATE (vh1_rad_h)
431 DEALLOCATE (vh1_rad_s)
439 CALL pw_copy(v_hartree_gspace, v_hartree_gtemp)
440 CALL pw_derive(v_hartree_gtemp, (/1, 0, 0/))
442 CALL pw_copy(v_hartree_rtemp, pwx)
444 CALL pw_copy(v_hartree_gspace, v_hartree_gtemp)
445 CALL pw_derive(v_hartree_gtemp, (/0, 1, 0/))
447 CALL pw_copy(v_hartree_rtemp, pwy)
449 CALL pw_copy(v_hartree_gspace, v_hartree_gtemp)
450 CALL pw_derive(v_hartree_gtemp, (/0, 0, 1/))
452 CALL pw_copy(v_hartree_rtemp, pwz)
454 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
455 CALL auxbas_pw_pool%give_back_pw(v_hartree_gtemp)
456 CALL auxbas_pw_pool%give_back_pw(v_hartree_rtemp)
457 CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
469 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=natom)
471 grid_atom=grid_atom, &
472 harmonics=harmonics, &
473 hard_radius=hard_radius, &
474 gth_potential=gth_potential, &
475 sgp_potential=sgp_potential, &
476 all_potential=all_potential, &
477 cneo_potential=cneo_potential, &
480 IF (
ASSOCIATED(gth_potential))
THEN
490 sqrt_alpha = sqrt(alpha)
492 IF (gapw .AND. paw_atom .AND. alpha > gapw_max_alpha)
THEN
504 CALL auxbas_pw_pool%create_pw(v_coulomb_gspace)
505 CALL auxbas_pw_pool%create_pw(v_coulomb_gtemp)
506 CALL auxbas_pw_pool%create_pw(v_coulomb_rtemp)
512 iatom = atom_list(iat)
513 ratom = particle_set(iatom)%r
515 DO ig = v_coulomb_gspace%pw_grid%first_gne0, v_coulomb_gspace%pw_grid%ngpts_cut_local
521 IF (.NOT. make_soft)
THEN
523 SELECT CASE (nexp_ppl)
526 (
twopi)**(1.5_dp)/(cell%deth*(2.0_dp*alpha)**(1.5_dp))* &
527 exp(-v_coulomb_gspace%pw_grid%gsq(ig)/(4.0_dp*alpha))*( &
533 (
twopi)**(1.5_dp)/(cell%deth*(2.0_dp*alpha)**(1.5_dp))* &
534 exp(-v_coulomb_gspace%pw_grid%gsq(ig)/(4.0_dp*alpha))*( &
538 + cexp_ppl(2)/(2.0_dp*alpha)* &
539 (3.0_dp - v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha)) &
543 (
twopi)**(1.5_dp)/(cell%deth*(2.0_dp*alpha)**(1.5_dp))* &
544 exp(-v_coulomb_gspace%pw_grid%gsq(ig)/(4.0_dp*alpha))*( &
548 + cexp_ppl(2)/(2.0_dp*alpha)* &
549 (3.0_dp - v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha)) &
551 + cexp_ppl(3)/(2.0_dp*alpha)**2* &
552 (15.0_dp - 10.0_dp*v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha) &
553 + (v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha))**2) &
557 (
twopi)**(1.5_dp)/(cell%deth*(2.0_dp*alpha)**(1.5_dp))* &
558 exp(-v_coulomb_gspace%pw_grid%gsq(ig)/(4.0_dp*alpha))*( &
562 + cexp_ppl(2)/(2.0_dp*alpha)* &
563 (3.0_dp - v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha)) &
565 + cexp_ppl(3)/(2.0_dp*alpha)**2* &
566 (15.0_dp - 10.0_dp*v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha) &
567 + (v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha))**2) &
569 + cexp_ppl(4)/(2.0_dp*alpha)**3* &
570 (105.0_dp - 105.0_dp*v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha) &
571 + 21.0_dp*(v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha))**2 &
572 - (v_coulomb_gspace%pw_grid%gsq(ig)/(2.0_dp*alpha))**3) &
578 arg = dot_product(v_coulomb_gspace%pw_grid%g(:, ig), ratom)
580 gtemp = gtemp*cmplx(cos(arg), -sin(arg), kind=
dp)
581 v_coulomb_gspace%array(ig) = v_coulomb_gspace%array(ig) + gtemp
583 IF (v_coulomb_gspace%pw_grid%have_g0) v_coulomb_gspace%array(1) = 0.0_dp
587 CALL pw_copy(v_coulomb_gspace, v_coulomb_gtemp)
588 CALL pw_derive(v_coulomb_gtemp, (/1, 0, 0/))
590 CALL pw_axpy(v_coulomb_rtemp, pwx)
592 CALL pw_copy(v_coulomb_gspace, v_coulomb_gtemp)
593 CALL pw_derive(v_coulomb_gtemp, (/0, 1, 0/))
595 CALL pw_axpy(v_coulomb_rtemp, pwy)
597 CALL pw_copy(v_coulomb_gspace, v_coulomb_gtemp)
598 CALL pw_derive(v_coulomb_gtemp, (/0, 0, 1/))
600 CALL pw_axpy(v_coulomb_rtemp, pwz)
602 CALL auxbas_pw_pool%give_back_pw(v_coulomb_gspace)
603 CALL auxbas_pw_pool%give_back_pw(v_coulomb_gtemp)
604 CALL auxbas_pw_pool%give_back_pw(v_coulomb_rtemp)
616 bo = pwx%pw_grid%bounds_local
620 iatom = atom_list(iat)
621 ratom = particle_set(iatom)%r
623 DO ix = bo(1, 1), bo(2, 1)
624 DO iy = bo(1, 2), bo(2, 2)
625 DO iz = bo(1, 3), bo(2, 3)
626 rpoint = (/real(ix,
dp)*pwx%pw_grid%dr(1), &
627 REAL(iy,
dp)*pwx%pw_grid%dr(2), &
628 REAL(iz,
dp)*pwx%pw_grid%dr(3)/)
629 rpoint = rpoint + roffset
631 rap(1) =
modulo(rap(1), cell%hmat(1, 1)) - cell%hmat(1, 1)/2._dp
632 rap(2) =
modulo(rap(2), cell%hmat(2, 2)) - cell%hmat(2, 2)/2._dp
633 rap(3) =
modulo(rap(3), cell%hmat(3, 3)) - cell%hmat(3, 3)/2._dp
634 sqrt_rap = sqrt(dot_product(rap, rap))
635 exp_rap = exp(-alpha*sqrt_rap**2)
636 sqrt_rap = max(sqrt_rap, 1.e-10_dp)
639 pwx%array(ix, iy, iz) = pwx%array(ix, iy, iz) + charge*( &
640 -2.0_dp*sqrt_alpha*exp(-sqrt_rap**2*sqrt_alpha**2)*rap(1) &
642 + erf(sqrt_rap*sqrt_alpha)*rap(1) &
647 pwy%array(ix, iy, iz) = pwy%array(ix, iy, iz) + charge*( &
648 -2.0_dp*sqrt_alpha*exp(-sqrt_rap**2*sqrt_alpha**2)*rap(2) &
650 + erf(sqrt_rap*sqrt_alpha)*rap(2) &
655 pwz%array(ix, iy, iz) = pwz%array(ix, iy, iz) + charge*( &
656 -2.0_dp*sqrt_alpha*exp(-sqrt_rap**2*sqrt_alpha**2)*rap(3) &
658 + erf(sqrt_rap*sqrt_alpha)*rap(3) &
665 DO iexp = 1, nexp_ppl
666 pwx%array(ix, iy, iz) = pwx%array(ix, iy, iz) + ( &
667 -2.0_dp*alpha*rap(1)*exp_rap* &
668 cexp_ppl(iexp)*(sqrt_rap**2)**(iexp - 1))
670 pwx%array(ix, iy, iz) = pwx%array(ix, iy, iz) + ( &
671 2.0_dp*exp_rap*cexp_ppl(iexp)* &
672 (sqrt_rap**2)**(iexp - 2)*real(iexp - 1,
dp)*rap(1))
678 DO iexp = 1, nexp_ppl
679 pwy%array(ix, iy, iz) = pwy%array(ix, iy, iz) + ( &
680 -2.0_dp*alpha*rap(2)*exp_rap* &
681 cexp_ppl(iexp)*(sqrt_rap**2)**(iexp - 1))
683 pwy%array(ix, iy, iz) = pwy%array(ix, iy, iz) + ( &
684 2.0_dp*exp_rap*cexp_ppl(iexp)* &
685 (sqrt_rap**2)**(iexp - 2)*real(iexp - 1,
dp)*rap(2))
691 DO iexp = 1, nexp_ppl
692 pwz%array(ix, iy, iz) = pwz%array(ix, iy, iz) + ( &
693 -2.0_dp*alpha*rap(3)*exp_rap* &
694 cexp_ppl(iexp)*(sqrt_rap**2)**(iexp - 1))
696 pwz%array(ix, iy, iz) = pwz%array(ix, iy, iz) + ( &
697 2.0_dp*exp_rap*cexp_ppl(iexp)* &
698 (sqrt_rap**2)**(iexp - 2)*real(iexp - 1,
dp)*rap(3))
712 IF (gapw .AND. paw_atom)
THEN
714 bo_atom =
get_limit(natom, para_env%num_pe, para_env%mepos)
716 DO iat = bo_atom(1), bo_atom(2)
718 iatom = atom_list(iat)
720 nablavks_vec_rad_h => nablavks_atom_set(iatom)%nablavks_vec_rad_h
721 nablavks_vec_rad_s => nablavks_atom_set(iatom)%nablavks_vec_rad_s
723 DO ir = 1, grid_atom%nr
725 IF (grid_atom%rad(ir) >= hard_radius) cycle
727 exp_rap = exp(-alpha*grid_atom%rad(ir)**2)
729 DO ia = 1, grid_atom%ng_sphere
733 hard_value = charge*( &
734 -2.0_dp*sqrt_alpha*exp(-grid_atom%rad(ir)**2*sqrt_alpha**2) &
735 *grid_atom%rad(ir)*harmonics%a(idir, ia) &
736 /(
rootpi*grid_atom%rad(ir)**2) &
737 + erf(grid_atom%rad(ir)*sqrt_alpha) &
738 *grid_atom%rad(ir)*harmonics%a(idir, ia) &
739 /grid_atom%rad(ir)**3)
740 soft_value = hard_value
741 DO iexp = 1, nexp_ppl
742 hard_value = hard_value + ( &
743 -2.0_dp*alpha*grid_atom%rad(ir)*harmonics%a(idir, ia) &
744 *exp_rap*cexp_ppl(iexp)*(grid_atom%rad(ir)**2)**(iexp - 1))
746 hard_value = hard_value + ( &
747 2.0_dp*exp_rap*cexp_ppl(iexp) &
748 *(grid_atom%rad(ir)**2)**(iexp - 2)*real(iexp - 1,
dp) &
749 *grid_atom%rad(ir)*harmonics%a(idir, ia))
752 nablavks_vec_rad_h(idir, 1)%r_coef(ir, ia) = &
753 nablavks_vec_rad_h(idir, 1)%r_coef(ir, ia) + hard_value
755 nablavks_vec_rad_s(idir, 1)%r_coef(ir, ia) = &
756 nablavks_vec_rad_s(idir, 1)%r_coef(ir, ia) + soft_value
758 nablavks_vec_rad_s(idir, 1)%r_coef(ir, ia) = &
759 nablavks_vec_rad_s(idir, 1)%r_coef(ir, ia) + hard_value
768 nablavks_vec_rad_h(idir, ispin)%r_coef(:, :) = nablavks_vec_rad_h(idir, 1)%r_coef(:, :)
769 nablavks_vec_rad_s(idir, ispin)%r_coef(:, :) = nablavks_vec_rad_s(idir, 1)%r_coef(:, :)
777 ELSE IF (
ASSOCIATED(sgp_potential))
THEN
779 cpabort(
"EPR with SGP potentials is not implemented")
781 ELSE IF (
ASSOCIATED(cneo_potential))
THEN
783 cpabort(
"EPR with CNEO potentials is not implemented")
785 ELSE IF (
ASSOCIATED(all_potential))
THEN
788 alpha_core_charge=alpha, &
791 sqrt_alpha = sqrt(alpha)
797 bo_atom =
get_limit(natom, para_env%num_pe, para_env%mepos)
799 DO iat = bo_atom(1), bo_atom(2)
801 iatom = atom_list(iat)
803 nablavks_vec_rad_h => nablavks_atom_set(iatom)%nablavks_vec_rad_h
805 DO ir = 1, grid_atom%nr
807 IF (grid_atom%rad(ir) >= hard_radius) cycle
809 DO ia = 1, grid_atom%ng_sphere
813 hard_value = charge*( &
814 2.0_dp*sqrt_alpha*exp(-grid_atom%rad(ir)**2*sqrt_alpha**2) &
815 *grid_atom%rad(ir)*harmonics%a(idir, ia) &
816 /(
rootpi*grid_atom%rad(ir)**2) &
817 + erfc(grid_atom%rad(ir)*sqrt_alpha) &
818 *grid_atom%rad(ir)*harmonics%a(idir, ia) &
819 /grid_atom%rad(ir)**3)
820 nablavks_vec_rad_h(idir, 1)%r_coef(ir, ia) = &
821 nablavks_vec_rad_h(idir, 1)%r_coef(ir, ia) + hard_value
829 nablavks_vec_rad_h(idir, ispin)%r_coef(:, :) = nablavks_vec_rad_h(idir, 1)%r_coef(:, :)
842 CALL qs_rho_get(nablavks_set(idir, 1)%rho, rho_r=rho1_r)
843 CALL qs_rho_get(nablavks_set(idir, 2)%rho, rho_r=rho2_r)
844 CALL pw_copy(rho1_r(1), rho2_r(1))
851 CALL auxbas_pw_pool%create_pw(v_xc_gtemp)
852 CALL auxbas_pw_pool%create_pw(v_xc_rtemp)
858 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_xc, xc_section=xc_section, &
859 vxc_rho=v_rspace_new, vxc_tau=v_tau_rspace, exc=exc, just_energy=.false.)
861 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho, xc_section=xc_section, &
862 vxc_rho=v_rspace_new, vxc_tau=v_tau_rspace, exc=exc, just_energy=.false.)
865 IF (
ASSOCIATED(v_rspace_new))
THEN
872 CALL qs_rho_get(nablavks_set(1, ispin)%rho, rho_r=rho_r)
873 CALL pw_axpy(v_xc_rtemp, rho_r(1))
878 CALL qs_rho_get(nablavks_set(2, ispin)%rho, rho_r=rho_r)
879 CALL pw_axpy(v_xc_rtemp, rho_r(1))
884 CALL qs_rho_get(nablavks_set(3, ispin)%rho, rho_r=rho_r)
885 CALL pw_axpy(v_xc_rtemp, rho_r(1))
887 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
891 DEALLOCATE (v_rspace_new)
894 IF (
ASSOCIATED(v_tau_rspace))
THEN
901 CALL qs_rho_get(nablavks_set(1, ispin)%rho, rho_r=rho_r)
902 CALL pw_axpy(v_xc_rtemp, rho_r(1))
907 CALL qs_rho_get(nablavks_set(2, ispin)%rho, rho_r=rho_r)
908 CALL pw_axpy(v_xc_rtemp, rho_r(1))
913 CALL qs_rho_get(nablavks_set(3, ispin)%rho, rho_r=rho_r)
914 CALL pw_axpy(v_xc_rtemp, rho_r(1))
916 CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
920 DEALLOCATE (v_tau_rspace)
923 CALL auxbas_pw_pool%give_back_pw(v_xc_gtemp)
924 CALL auxbas_pw_pool%give_back_pw(v_xc_rtemp)
926 IF (gapw .OR. gapw_xc)
THEN
928 gradient_atom_set=nablavks_atom_set)
936 "EPR%PRINT%NABLAVKS_CUBES"),
cp_p_file))
THEN
937 CALL auxbas_pw_pool%create_pw(wf_r)
940 CALL qs_rho_get(nablavks_set(idir, 1)%rho, rho_r=rho_r)
942 filename =
"nablavks"
944 WRITE (ext,
'(a2,I1,a5)')
"_d", idir,
".cube"
946 extension=trim(ext), middle_name=trim(filename), &
947 log_filename=.false., file_position=
"REWIND", &
950 particles=particles, &
952 "EPR%PRINT%NABLAVKS_CUBES%STRIDE"), &
955 "EPR%PRINT%NABLAVKS_CUBES", mpi_io=mpi_io)
957 CALL auxbas_pw_pool%give_back_pw(wf_r)
961 "PRINT%PROGRAM_RUN_INFO")
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.