PW: Bind functions to objects, remove reference counting from pw_poisson_type (#3106)

This commit is contained in:
Frederick Stein 2023-11-12 16:23:59 +01:00 committed by GitHub
parent 1df1199c14
commit bfa4778286
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
127 changed files with 2354 additions and 2724 deletions

View file

@ -41,9 +41,7 @@ MODULE cp_ddapc
pw_scale,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -139,13 +137,13 @@ CONTAINS
dft_control%qs_control%ddapc_explicit_potential = explicit_potential
dft_control%qs_control%ddapc_restraint_is_spin = ddapc_restraint_is_spin
IF (explicit_potential) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, v_spin_ddapc_rest_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_spin_ddapc_rest_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_zero(v_spin_ddapc_rest_g)
NULLIFY (v_spin_ddapc_rest_r)
ALLOCATE (v_spin_ddapc_rest_r)
CALL pw_pool_create_pw(auxbas_pw_pool, v_spin_ddapc_rest_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_spin_ddapc_rest_r, &
use_data=REALDATA3D, in_space=REALSPACE)
END IF
IF (calculate_forces) CALL reset_ch_pulay(qs_env)
@ -204,7 +202,7 @@ CONTAINS
END IF
IF (explicit_potential) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_spin_ddapc_rest_g)
CALL auxbas_pw_pool%give_back_pw(v_spin_ddapc_rest_g)
END IF
CALL timestop(handle)

View file

@ -33,8 +33,7 @@ MODULE cp_ddapc_types
USE pw_grid_types, ONLY: pw_grid_type
USE pw_grids, ONLY: pw_grid_release
USE pw_poisson_types, ONLY: pw_poisson_multipole
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_release,&
USE pw_pool_types, ONLY: pw_pool_release,&
pw_pool_type
USE pw_types, ONLY: pw_type
#include "./base/base_uses.f90"
@ -407,11 +406,11 @@ CONTAINS
IF (ASSOCIATED(cp_ddapc_ewald)) THEN
IF (ASSOCIATED(cp_ddapc_ewald%coeff_qm)) THEN
CALL pw_pool_give_back_pw(cp_ddapc_ewald%pw_pool_qm, cp_ddapc_ewald%coeff_qm)
CALL cp_ddapc_ewald%pw_pool_qm%give_back_pw(cp_ddapc_ewald%coeff_qm)
DEALLOCATE (cp_ddapc_ewald%coeff_qm)
END IF
IF (ASSOCIATED(cp_ddapc_ewald%coeff_mm)) THEN
CALL pw_pool_give_back_pw(cp_ddapc_ewald%pw_pool_mm, cp_ddapc_ewald%coeff_mm)
CALL cp_ddapc_ewald%pw_pool_mm%give_back_pw(cp_ddapc_ewald%coeff_mm)
DEALLOCATE (cp_ddapc_ewald%coeff_mm)
END IF
IF (ASSOCIATED(cp_ddapc_ewald%pw_pool_qm)) THEN

View file

@ -46,9 +46,7 @@ MODULE cp_ddapc_util
USE pw_methods, ONLY: pw_axpy,&
pw_copy,&
pw_transfer
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
RECIPROCALSPACE,&
pw_type
@ -136,8 +134,8 @@ CONTAINS
WRITE (iw, '(/,A)') " Initializing the DDAPC Environment"
END IF
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pool)
CALL pw_pool_create_pw(auxbas_pool, rho_tot_g, in_space=RECIPROCALSPACE, &
use_data=COMPLEXDATA1D)
CALL auxbas_pool%create_pw(rho_tot_g, in_space=RECIPROCALSPACE, &
use_data=COMPLEXDATA1D)
Vol = rho_tot_g%pw_grid%vol
!
! Get Input Parameters
@ -179,7 +177,7 @@ CONTAINS
CALL cp_print_key_finished_output(iw2, logger, density_fit_section, &
"PROGRAM_RUN_INFO/CONDITION_NUMBER")
DEALLOCATE (radii)
CALL pw_pool_give_back_pw(auxbas_pool, rho_tot_g)
CALL auxbas_pool%give_back_pw(rho_tot_g)
END IF
CALL timestop(handle)
END SUBROUTINE cp_ddapc_init
@ -277,8 +275,8 @@ CONTAINS
END IF
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pool)
CALL pw_pool_create_pw(auxbas_pool, rho_tot_g, in_space=RECIPROCALSPACE, &
use_data=COMPLEXDATA1D)
CALL auxbas_pool%create_pw(rho_tot_g, in_space=RECIPROCALSPACE, &
use_data=COMPLEXDATA1D)
IF (PRESENT(ext_rho_tot_g)) THEN
! If provided use the input density in g-space
CALL pw_transfer(ext_rho_tot_g, rho_tot_g)
@ -516,7 +514,7 @@ CONTAINS
CALL cp_print_key_finished_output(iw, logger, density_fit_section, &
"PROGRAM_RUN_INFO")
END IF
CALL pw_pool_give_back_pw(auxbas_pool, rho_tot_g)
CALL auxbas_pool%give_back_pw(rho_tot_g)
CALL timestop(handle)
END SUBROUTINE get_ddapc

View file

@ -41,9 +41,7 @@ MODULE dm_ls_scf_qs
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -668,15 +666,13 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(wf_r)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(wf_g)
CALL calculate_rho_elec(matrix_p=matrix_p_qs, &
rho=wf_r, &
@ -688,8 +684,8 @@ CONTAINS
particles=particles, stride=stride)
!free memory
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
CALL dbcsr_release(matrix_p_qs)
CALL timestop(handle)

View file

@ -21,8 +21,7 @@ MODULE ec_env_types
USE input_section_types, ONLY: section_vals_release,&
section_vals_type
USE kinds, ONLY: dp
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
USE qs_dispersion_types, ONLY: qs_dispersion_release,&
qs_dispersion_type
USE qs_force_types, ONLY: deallocate_qs_force,&
@ -174,23 +173,23 @@ CONTAINS
END IF
! potential
IF (ASSOCIATED(ec_env%vh_rspace%pw_grid)) THEN
CALL pw_release(ec_env%vh_rspace)
CALL ec_env%vh_rspace%release()
END IF
IF (ASSOCIATED(ec_env%vxc_rspace)) THEN
DO iab = 1, SIZE(ec_env%vxc_rspace)
CALL pw_release(ec_env%vxc_rspace(iab))
CALL ec_env%vxc_rspace(iab)%release()
END DO
DEALLOCATE (ec_env%vxc_rspace)
END IF
IF (ASSOCIATED(ec_env%vtau_rspace)) THEN
DO iab = 1, SIZE(ec_env%vtau_rspace)
CALL pw_release(ec_env%vtau_rspace(iab))
CALL ec_env%vtau_rspace(iab)%release()
END DO
DEALLOCATE (ec_env%vtau_rspace)
END IF
IF (ASSOCIATED(ec_env%vadmm_rspace)) THEN
DO iab = 1, SIZE(ec_env%vadmm_rspace)
CALL pw_release(ec_env%vadmm_rspace(iab))
CALL ec_env%vadmm_rspace(iab)%release()
END DO
DEALLOCATE (ec_env%vadmm_rspace)
END IF

View file

@ -50,9 +50,7 @@ MODULE ec_orth_solver
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -1182,18 +1180,15 @@ CONTAINS
poisson_env=poisson_env)
! Calculate the NSC Hartree potential
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! XC-Kernel
NULLIFY (v_xc, v_xc_tau, xc_section)
@ -1322,16 +1317,16 @@ CONTAINS
CALL commutator(matrix_G, matrix_p, matrix_Ax, eps_filter, .FALSE., 1.0_dp, 1.0_dp)
! release pw grids
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
END DO
DEALLOCATE (v_xc)
IF (ASSOCIATED(v_xc_tau)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
END DO
DEALLOCATE (v_xc_tau)
END IF

View file

@ -58,9 +58,7 @@ MODULE ed_analysis
pw_env_type
USE pw_methods, ONLY: pw_axpy,&
pw_scale
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -693,18 +691,18 @@ CONTAINS
needs = xc_functionals_get_needs(xc_fun_section, (nspins == 2), .TRUE.)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, xc_den, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(xc_den, &
use_data=REALDATA3D, in_space=REALSPACE)
ALLOCATE (vxc(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, vxc(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vxc(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
IF (needs%tau .OR. needs%tau_spin) THEN
ALLOCATE (vtau(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, vtau(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vtau(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
@ -777,13 +775,13 @@ CONTAINS
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, xc_den)
CALL auxbas_pw_pool%give_back_pw(xc_den)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc(ispin))
END DO
IF (needs%tau .OR. needs%tau_spin) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vtau(ispin))
CALL auxbas_pw_pool%give_back_pw(vtau(ispin))
END DO
END IF

View file

@ -59,9 +59,7 @@ MODULE rt_propagation_output
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -724,8 +722,8 @@ CONTAINS
END IF
current_env%gauge = -1
current_env%gauge_init = .FALSE.
CALL pw_pool_create_pw(auxbas_pw_pool, rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
NULLIFY (stride)
ALLOCATE (stride(3))
@ -762,8 +760,8 @@ CONTAINS
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, rs)
CALL pw_pool_give_back_pw(auxbas_pw_pool, gs)
CALL auxbas_pw_pool%give_back_pw(rs)
CALL auxbas_pw_pool%give_back_pw(gs)
CALL dbcsr_deallocate_matrix(zero)
CALL dbcsr_deallocate_matrix(tmp)

View file

@ -61,9 +61,7 @@ MODULE rt_propagation_utils
pw_env_type
USE pw_methods, ONLY: pw_multiply,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -793,15 +791,15 @@ CONTAINS
! Setup the grids needed to compute a wavefunction given a vector
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, density_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(density_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL get_rtp(rtp=rtp, mos_new=mos_new)
DO ispin = 1, nspins
@ -874,9 +872,9 @@ CONTAINS
END DO
! Deallocate grids needed to compute wavefunctions
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, density_r)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
CALL auxbas_pw_pool%give_back_pw(density_r)
CALL timestop(handle)

View file

@ -124,15 +124,12 @@ MODULE energy_corrections
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_create,&
pw_type
USE qs_atomic_block, ONLY: calculate_atomic_block_dm
USE qs_collocate_density, ONLY: calculate_rho_elec
@ -428,8 +425,8 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
ALLOCATE (ec_env%rhoz_r(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, ec_env%rhoz_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(ec_env%rhoz_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
CALL response_force(qs_env, &
@ -452,8 +449,8 @@ CONTAINS
! Deallocate Harris density and response density on grid
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, ec_env%rhoout_r(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, ec_env%rhoz_r(ispin))
CALL auxbas_pw_pool%give_back_pw(ec_env%rhoout_r(ispin))
CALL auxbas_pw_pool%give_back_pw(ec_env%rhoz_r(ispin))
END DO
DEALLOCATE (ec_env%rhoout_r, ec_env%rhoz_r)
@ -688,12 +685,12 @@ CONTAINS
poisson_env=poisson_env)
! Calculate the Hartree potential
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
! Get the total input density in g-space [ions + electrons]
CALL calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho)
@ -731,8 +728,8 @@ CONTAINS
CALL qs_rho_get(rho, rho_r=rho_r)
ALLOCATE (ec_env%rhoout_r(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, ec_env%rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(ec_env%rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(rho_r(ispin), ec_env%rhoout_r(ispin))
END DO
@ -767,8 +764,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(v_rspace)) THEN
ALLOCATE (v_rspace(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_rspace(ispin))
END DO
END IF
@ -792,8 +789,8 @@ CONTAINS
pw_grid => v_hartree_rspace%pw_grid
ALLOCATE (v_rspace_in(nspins))
DO ispin = 1, nspins
CALL pw_create(v_rspace_in(ispin), pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL v_rspace_in(ispin)%create(pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
! v_rspace_in = v_H[n_in] + v_xc[n_in] calculated in ks_ref_potential
@ -968,8 +965,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(v_tau_rspace)) THEN
ALLOCATE (v_tau_rspace(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, v_tau_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_tau_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_tau_rspace(ispin))
END DO
END IF
@ -1030,19 +1027,19 @@ CONTAINS
! return pw grids
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_in(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_in(ispin))
IF (ASSOCIATED(v_tau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END IF
END DO
DEALLOCATE (v_rspace, v_rspace_in)
IF (ASSOCIATED(v_tau_rspace)) DEALLOCATE (v_tau_rspace)
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
! Stress tensor - volume terms need to be stored,
! for a sign correction in QS at the end of qs_force
@ -1389,8 +1386,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(v_rspace)) THEN
ALLOCATE (v_rspace(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_rspace(ispin))
END DO
END IF
@ -1436,9 +1433,9 @@ CONTAINS
! return pw grids
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
IF (ASSOCIATED(v_tau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END IF
END DO
DEALLOCATE (v_rspace)
@ -1769,12 +1766,12 @@ CONTAINS
poisson_env=poisson_env)
! Calculate the Hartree potential
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rhodn_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rhodn_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(ec_env%vh_rspace, v_hartree_rspace)
@ -1785,15 +1782,15 @@ CONTAINS
NULLIFY (rhoout_r, rhoout_g)
ALLOCATE (rhoout_r(nspins), rhoout_g(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoout_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoout_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, dv_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, vtot_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dv_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vtot_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(rhodn_tot_gspace)
DO ispin = 1, nspins
@ -1807,8 +1804,8 @@ CONTAINS
! Save Harris on real space grid for use in properties
ALLOCATE (ec_env%rhoout_r(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, ec_env%rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(ec_env%rhoout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(rhoout_r(ispin), ec_env%rhoout_r(ispin))
END DO
@ -1818,11 +1815,11 @@ CONTAINS
TYPE(pw_type) :: tauout_g
ALLOCATE (tauout_r(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tauout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tauout_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, tauout_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tauout_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
DO ispin = 1, nspins
CALL calculate_rho_elec(ks_env=ks_env, matrix_p=ec_env%matrix_p(ispin, 1)%matrix, &
@ -1833,15 +1830,15 @@ CONTAINS
task_list_external=ec_env%task_list)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, tauout_g)
CALL auxbas_pw_pool%give_back_pw(tauout_g)
END BLOCK
END IF
IF (use_virial) THEN
! Calculate the Hartree potential
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! Get the total input density in g-space [ions + electrons]
CALL calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho)
@ -1892,13 +1889,13 @@ CONTAINS
IF (ASSOCIATED(v_rspace)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
END DO
DEALLOCATE (v_rspace)
END IF
IF (ASSOCIATED(v_tau_rspace)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END DO
DEALLOCATE (v_tau_rspace)
END IF
@ -1926,7 +1923,7 @@ CONTAINS
h_stress=h_stress, &
aux_density=rho_tot_gspace) ! n_in
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
virial%pv_ehartree = virial%pv_ehartree + h_stress/REAL(para_env%num_pe, dp)
virial%pv_virial = virial%pv_virial + h_stress/REAL(para_env%num_pe, dp)
@ -2102,8 +2099,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(v_rspace)) THEN
ALLOCATE (v_rspace(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_rspace(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_rspace(ispin))
END DO
END IF
@ -2219,11 +2216,11 @@ CONTAINS
CALL dbcsr_deallocate_matrix_set(scrm)
! return pw grids
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
IF (ASSOCIATED(v_tau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END IF
END DO
IF (ASSOCIATED(v_tau_rspace)) DEALLOCATE (v_tau_rspace)
@ -2256,28 +2253,28 @@ CONTAINS
DEALLOCATE (v_rspace)
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, dv_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vtot_rspace)
CALL auxbas_pw_pool%give_back_pw(dv_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(vtot_rspace)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoout_r(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoout_g(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(ispin))
CALL auxbas_pw_pool%give_back_pw(rhoout_r(ispin))
CALL auxbas_pw_pool%give_back_pw(rhoout_g(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
END DO
DEALLOCATE (rhoout_r, rhoout_g, v_xc)
IF (ASSOCIATED(tauout_r)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, tauout_r(ispin))
CALL auxbas_pw_pool%give_back_pw(tauout_r(ispin))
END DO
DEALLOCATE (tauout_r)
END IF
IF (ASSOCIATED(v_xc_tau)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
END DO
DEALLOCATE (v_xc_tau)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhodn_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(rhodn_tot_gspace)
! Stress tensor - volume terms need to be stored,
! for a sign correction in QS at the end of qs_force
@ -3163,10 +3160,9 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (dft_control%nspins > 1) THEN
@ -3203,7 +3199,7 @@ CONTAINS
CALL entry_voronoi_or_bqb(should_print_voro, should_print_bqb, print_key_voro, print_key_bqb, &
unit_nr_voro, qs_env, rho_elec_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_elec_rspace)
IF (unit_nr_voro > 0) THEN
CALL cp_print_key_finished_output(unit_nr_voro, logger, ec_section, "PRINT%VORONOI")

View file

@ -60,9 +60,7 @@ MODULE et_coupling_proj
USE physcon, ONLY: evolt
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -1348,10 +1346,10 @@ CONTAINS
! Grids for wavefunction
CALL get_qs_env(qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! Calculate the grid values
CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, &
@ -1365,8 +1363,8 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, 'MO_CUBES')
! Clean memory
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END SUBROUTINE save_mo_cube

View file

@ -40,9 +40,7 @@ MODULE ewald_methods_tb
pw_poisson_solve
USE pw_poisson_types, ONLY: greens_fn_type,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -169,7 +167,7 @@ CONTAINS
NULLIFY (rhob_r)
ALLOCATE (rhob_r)
CALL pw_pool_create_pw(pw_pool, rhob_r, use_data=REALDATA3D, &
CALL pw_pool%create_pw(rhob_r, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL transfer_rs2pw(rden, rhob_r)
@ -177,7 +175,7 @@ CONTAINS
! transform density to G space and add charge function
NULLIFY (rhob_g)
ALLOCATE (rhob_g)
CALL pw_pool_create_pw(pw_pool, rhob_g, use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(rhob_g, use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_transfer(rhob_r, rhob_g)
! update charge function
@ -187,12 +185,12 @@ CONTAINS
! allocate intermediate arrays
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dphi_g(i), &
CALL pw_pool%create_pw(dphi_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
NULLIFY (phi_g)
ALLOCATE (phi_g)
CALL pw_pool_create_pw(pw_pool, phi_g, &
CALL pw_pool%create_pw(phi_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
IF (use_virial) THEN
CALL pw_poisson_solve(poisson_env, rhob_g, vgc, phi_g, dphi_g, h_stress=h_stress)
@ -228,7 +226,7 @@ CONTAINS
NULLIFY (phib_g)
ALLOCATE (phib_g)
CALL pw_pool_create_pw(pw_pool, phib_g, &
CALL pw_pool%create_pw(phib_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
ffa = (0.5_dp/alpha)**2
ffb = 1.0_dp/fourpi
@ -262,20 +260,20 @@ CONTAINS
END DO
END DO
CALL pw_pool_give_back_pw(pw_pool, phib_g)
CALL pw_pool%give_back_pw(phib_g)
DEALLOCATE (phib_g)
END IF
END IF
END IF
CALL pw_pool_give_back_pw(pw_pool, rhob_g)
CALL pw_pool%give_back_pw(rhob_g)
DEALLOCATE (rhob_g)
CALL rs_grid_zero(rpot)
CALL pw_multiply_with(phi_g, green%p3m_charge)
CALL pw_transfer(phi_g, rhob_r)
CALL pw_pool_give_back_pw(pw_pool, phi_g)
CALL pw_pool%give_back_pw(phi_g)
DEALLOCATE (phi_g)
CALL transfer_pw2rs(rpot, rhob_r)
@ -305,15 +303,15 @@ CONTAINS
CALL rs_grid_set_box(grid_spme, rs=drpot(i))
CALL pw_multiply_with(dphi_g(i), green%p3m_charge)
CALL pw_transfer(dphi_g(i), rhob_r)
CALL pw_pool_give_back_pw(pw_pool, dphi_g(i))
CALL pw_pool%give_back_pw(dphi_g(i))
CALL transfer_pw2rs(drpot(i), rhob_r)
END DO
ELSE
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, dphi_g(i))
CALL pw_pool%give_back_pw(dphi_g(i))
END DO
END IF
CALL pw_pool_give_back_pw(pw_pool, rhob_r)
CALL pw_pool%give_back_pw(rhob_r)
DEALLOCATE (rhob_r)
!----------------- FORCE CALCULATION ----------------
@ -513,7 +511,7 @@ CONTAINS
NULLIFY (rhob_r)
ALLOCATE (rhob_r)
CALL pw_pool_create_pw(pw_pool, rhob_r, use_data=REALDATA3D, &
CALL pw_pool%create_pw(rhob_r, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL transfer_rs2pw(rden, rhob_r)
@ -521,7 +519,7 @@ CONTAINS
! transform density to G space and add charge function
NULLIFY (rhob_g)
ALLOCATE (rhob_g)
CALL pw_pool_create_pw(pw_pool, rhob_g, use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(rhob_g, use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_transfer(rhob_r, rhob_g)
! update charge function
@ -531,25 +529,25 @@ CONTAINS
! allocate intermediate arrays
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dphi_g(i), &
CALL pw_pool%create_pw(dphi_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
NULLIFY (phi_g)
ALLOCATE (phi_g)
CALL pw_pool_create_pw(pw_pool, phi_g, &
CALL pw_pool%create_pw(phi_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_poisson_solve(poisson_env, rhob_g, vgc, phi_g, dphi_g)
CALL rs_grid_create(rpot, rs_desc)
CALL rs_grid_set_box(grid_spme, rs=rpot)
CALL pw_pool_give_back_pw(pw_pool, rhob_g)
CALL pw_pool%give_back_pw(rhob_g)
DEALLOCATE (rhob_g)
CALL rs_grid_zero(rpot)
CALL pw_multiply_with(phi_g, green%p3m_charge)
CALL pw_transfer(phi_g, rhob_r)
CALL pw_pool_give_back_pw(pw_pool, phi_g)
CALL pw_pool%give_back_pw(phi_g)
DEALLOCATE (phi_g)
CALL transfer_pw2rs(rpot, rhob_r)
@ -562,10 +560,10 @@ CONTAINS
CALL rs_grid_set_box(grid_spme, rs=drpot(i))
CALL pw_multiply_with(dphi_g(i), green%p3m_charge)
CALL pw_transfer(dphi_g(i), rhob_r)
CALL pw_pool_give_back_pw(pw_pool, dphi_g(i))
CALL pw_pool%give_back_pw(dphi_g(i))
CALL transfer_pw2rs(drpot(i), rhob_r)
END DO
CALL pw_pool_give_back_pw(pw_pool, rhob_r)
CALL pw_pool%give_back_pw(rhob_r)
DEALLOCATE (rhob_r)
!----------------- FORCE CALCULATION ----------------

View file

@ -28,15 +28,12 @@ MODULE ewald_pw_methods
USE pw_grid_types, ONLY: pw_grid_type
USE pw_grids, ONLY: pw_grid_change
USE pw_poisson_methods, ONLY: pw_poisson_set
! CJM, pw_poisson_rebuild
USE pw_poisson_read_input, ONLY: pw_poisson_read_parameters
USE pw_poisson_types, ONLY: do_ewald_ewald,&
do_ewald_none,&
do_ewald_pme,&
do_ewald_spme,&
pw_poisson_create,&
pw_poisson_parameter_type,&
pw_poisson_release,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
@ -95,7 +92,11 @@ CONTAINS
dg=dg, poisson_env=poisson_env)
CALL pw_grid_change(cell_hmat, pw_big_pool%pw_grid)
CALL ewald_pw_rho0_setup(ewald_env, pw_big_pool%pw_grid, dg)
CALL pw_poisson_release(poisson_env)
IF (ASSOCIATED(poisson_env)) THEN
CALL poisson_env%release()
DEALLOCATE (poisson_env)
NULLIFY (poisson_env)
END IF
CALL ewald_pw_set(ewald_pw, pw_big_pool=pw_big_pool, &
poisson_env=poisson_env)
CASE (do_ewald_pme)
@ -103,7 +104,8 @@ CONTAINS
pw_small_pool=pw_small_pool, dg=dg, &
poisson_env=poisson_env)
IF (.NOT. ASSOCIATED(poisson_env)) THEN
CALL pw_poisson_create(poisson_env)
ALLOCATE (poisson_env)
CALL poisson_env%create()
CALL ewald_pw_set(ewald_pw, poisson_env=poisson_env)
END IF
CALL pw_grid_change(cell_hmat, pw_big_pool%pw_grid)
@ -116,7 +118,8 @@ CONTAINS
CALL ewald_pw_get(ewald_pw, pw_big_pool=pw_big_pool, &
poisson_env=poisson_env)
IF (.NOT. ASSOCIATED(poisson_env)) THEN
CALL pw_poisson_create(poisson_env)
ALLOCATE (poisson_env)
CALL poisson_env%create()
END IF
CALL pw_grid_change(cell_hmat, pw_big_pool%pw_grid)
CALL ewald_pw_set(ewald_pw, pw_big_pool=pw_big_pool, &

View file

@ -36,13 +36,15 @@ MODULE ewald_pw_types
pw_grid_setup
USE pw_poisson_methods, ONLY: pw_poisson_set
USE pw_poisson_read_input, ONLY: pw_poisson_read_parameters
USE pw_poisson_types, ONLY: &
do_ewald_ewald, do_ewald_none, do_ewald_pme, do_ewald_spme, pw_poisson_create, &
pw_poisson_parameter_type, pw_poisson_release, pw_poisson_retain, pw_poisson_type
USE pw_poisson_types, ONLY: do_ewald_ewald,&
do_ewald_none,&
do_ewald_pme,&
do_ewald_spme,&
pw_poisson_parameter_type,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_p_type,&
pw_pool_release,&
pw_pool_retain,&
pw_pool_type
USE realspace_grid_types, ONLY: &
realspace_grid_desc_type, realspace_grid_input_type, realspace_grid_type, rs_grid_create, &
@ -103,7 +105,10 @@ CONTAINS
CALL pw_pool_release(ewald_pw%pw_small_pool)
CALL pw_pool_release(ewald_pw%pw_big_pool)
CALL rs_grid_release_descriptor(ewald_pw%rs_desc)
CALL pw_poisson_release(ewald_pw%poisson_env)
IF (ASSOCIATED(ewald_pw%poisson_env)) THEN
CALL ewald_pw%poisson_env%release()
DEALLOCATE (ewald_pw%poisson_env)
END IF
CALL dg_release(ewald_pw%dg)
DEALLOCATE (ewald_pw%dg)
@ -188,7 +193,8 @@ CONTAINS
logger => cp_get_default_logger()
output_unit = cp_print_key_unit_nr(logger, print_section, "", extension=".Log")
IF (.NOT. ASSOCIATED(ewald_pw%poisson_env)) THEN
CALL pw_poisson_create(ewald_pw%poisson_env)
ALLOCATE (ewald_pw%poisson_env)
CALL ewald_pw%poisson_env%create()
END IF
CALL pw_grid_create(pw_small_grid, mp_comm_self)
CALL pw_grid_create(pw_big_grid, para_env)
@ -251,7 +257,8 @@ CONTAINS
logger => cp_get_default_logger()
output_unit = cp_print_key_unit_nr(logger, print_section, "", extension=".Log")
IF (.NOT. ASSOCIATED(ewald_pw%poisson_env)) THEN
CALL pw_poisson_create(ewald_pw%poisson_env)
ALLOCATE (ewald_pw%poisson_env)
CALL ewald_pw%poisson_env%create()
END IF
CALL pw_grid_create(pw_big_grid, para_env)
npts_s = gmax
@ -350,12 +357,12 @@ CONTAINS
TYPE(pw_poisson_type), OPTIONAL, POINTER :: poisson_env
IF (PRESENT(pw_big_pool)) THEN
CALL pw_pool_retain(pw_big_pool)
CALL pw_big_pool%retain()
CALL pw_pool_release(ewald_pw%pw_big_pool)
ewald_pw%pw_big_pool => pw_big_pool
END IF
IF (PRESENT(pw_small_pool)) THEN
CALL pw_pool_retain(pw_small_pool)
CALL pw_small_pool%retain()
CALL pw_pool_release(ewald_pw%pw_small_pool)
ewald_pw%pw_small_pool => pw_small_pool
END IF
@ -369,9 +376,12 @@ CONTAINS
ewald_pw%dg => dg
END IF
IF (PRESENT(poisson_env)) THEN
IF (ASSOCIATED(poisson_env)) &
CALL pw_poisson_retain(poisson_env)
CALL pw_poisson_release(ewald_pw%poisson_env)
IF (ASSOCIATED(ewald_pw%poisson_env)) THEN
IF (.NOT. ASSOCIATED(ewald_pw%poisson_env, poisson_env)) THEN
CALL ewald_pw%poisson_env%release()
DEALLOCATE (ewald_pw%poisson_env)
END IF
END IF
ewald_pw%poisson_env => poisson_env
END IF

View file

@ -31,8 +31,6 @@ MODULE ewald_spline_util
pw_grid_setup
USE pw_methods, ONLY: pw_zero
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_spline_utils, ONLY: &
Eval_Interp_Spl3_pbc, Eval_d_Interp_Spl3_pbc, find_coeffs, pw_spline_do_precond, &
@ -88,7 +86,7 @@ CONTAINS
INTEGER :: bo(2, 3), iounit
TYPE(cell_type), POINTER :: cell
TYPE(cp_logger_type), POINTER :: logger
TYPE(pw_type), POINTER :: pw
TYPE(pw_type) :: pw
!
! Setting Up Fit Procedure
@ -97,7 +95,7 @@ CONTAINS
CPASSERT(.NOT. ASSOCIATED(pw_grid))
CPASSERT(.NOT. ASSOCIATED(pw_pool))
CPASSERT(.NOT. ASSOCIATED(coeff))
NULLIFY (cell, pw)
NULLIFY (cell)
CALL cell_create(cell, hmat=hmat, periodic=(/1, 1, 1/))
CALL pw_grid_create(pw_grid, para_env, local=.TRUE.)
@ -112,14 +110,13 @@ CONTAINS
"")
! pw_pool initialized
CALL pw_pool_create(pw_pool, pw_grid=pw_grid)
ALLOCATE (pw, coeff)
CALL pw_pool_create_pw(pw_pool, pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, coeff, use_data=REALDATA3D, in_space=REALSPACE)
ALLOCATE (coeff)
CALL pw_pool%create_pw(pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(coeff, use_data=REALDATA3D, in_space=REALSPACE)
! Evaluate function on grid
CALL eval_pw_TabLR(pw, pw_pool, coeff, Lg, gx, gy, gz, hmat_mm=hmat, &
param_section=param_section, tag=tag)
CALL pw_pool_give_back_pw(pw_pool, pw)
DEALLOCATE (pw)
CALL pw_pool%give_back_pw(pw)
CALL cell_release(cell)
END SUBROUTINE Setup_Ewald_Spline
@ -143,7 +140,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE eval_pw_TabLR(grid, pw_pool, TabLR, Lg, gx, gy, gz, hmat_mm, &
param_section, tag)
TYPE(pw_type), POINTER :: grid
TYPE(pw_type), INTENT(INOUT) :: grid
TYPE(pw_pool_type), POINTER :: pw_pool
TYPE(pw_type), POINTER :: TabLR
REAL(KIND=dp), DIMENSION(:), POINTER :: Lg, gx, gy, gz

View file

@ -20,8 +20,7 @@ MODULE exstates_types
USE input_section_types, ONLY: section_vals_type,&
section_vals_val_get
USE kinds, ONLY: dp
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
USE qs_local_rho_types, ONLY: local_rho_set_release,&
local_rho_type
#include "./base/base_uses.f90"
@ -142,25 +141,25 @@ CONTAINS
IF (ASSOCIATED(ex_env)) THEN
IF (ASSOCIATED(ex_env%vh_rspace%pw_grid)) THEN
CALL pw_release(ex_env%vh_rspace)
CALL ex_env%vh_rspace%release()
END IF
IF (ASSOCIATED(ex_env%vxc_rspace)) THEN
DO iab = 1, SIZE(ex_env%vxc_rspace)
CALL pw_release(ex_env%vxc_rspace(iab))
CALL ex_env%vxc_rspace(iab)%release()
END DO
DEALLOCATE (ex_env%vxc_rspace)
NULLIFY (ex_env%vxc_rspace)
END IF
IF (ASSOCIATED(ex_env%vtau_rspace)) THEN
DO iab = 1, SIZE(ex_env%vtau_rspace)
CALL pw_release(ex_env%vtau_rspace(iab))
CALL ex_env%vtau_rspace(iab)%release()
END DO
DEALLOCATE (ex_env%vtau_rspace)
NULLIFY (ex_env%vtau_rspace)
END IF
IF (ASSOCIATED(ex_env%vadmm_rspace)) THEN
DO iab = 1, SIZE(ex_env%vadmm_rspace)
CALL pw_release(ex_env%vadmm_rspace(iab))
CALL ex_env%vadmm_rspace(iab)%release()
END DO
DEALLOCATE (ex_env%vadmm_rspace)
NULLIFY (ex_env%vadmm_rspace)

View file

@ -131,12 +131,9 @@ MODULE force_env_methods
pw_copy,&
pw_integral_ab,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_release,&
pw_type
USE pwdft_environment, ONLY: pwdft_calc_energy_force
USE pwdft_environment_types, ONLY: pwdft_environment_type
@ -1490,14 +1487,14 @@ CONTAINS
CALL get_qs_env(qs_env=force_env%sub_force_env(iforce_eval)%force_env%qs_env, &
embed_pot=embed_pot, spin_embed_pot=spin_embed_pot, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_give_back_pw(auxbas_pw_pool, embed_pot)
CALL auxbas_pw_pool%give_back_pw(embed_pot)
IF (ASSOCIATED(embed_pot)) THEN
CALL pw_release(embed_pot)
CALL embed_pot%release()
DEALLOCATE (embed_pot)
END IF
IF (ASSOCIATED(spin_embed_pot)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, spin_embed_pot)
CALL pw_release(spin_embed_pot)
CALL auxbas_pw_pool%give_back_pw(spin_embed_pot)
CALL spin_embed_pot%release()
DEALLOCATE (spin_embed_pot)
END IF
END IF
@ -1665,14 +1662,14 @@ CONTAINS
! Prepare the pw object to store density differences
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, diff_rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(diff_rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(diff_rho_r)
IF (opt_embed%open_shell_embed) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, diff_rho_spin, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(diff_rho_spin, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(diff_rho_spin)
END IF
@ -1841,10 +1838,10 @@ CONTAINS
END IF
! Release embedding potential for subsystem
CALL pw_release(embed_pot_subsys)
CALL embed_pot_subsys%release()
DEALLOCATE (embed_pot_subsys)
IF (opt_embed%open_shell_embed) THEN
CALL pw_release(spin_embed_pot_subsys)
CALL spin_embed_pot_subsys%release()
DEALLOCATE (spin_embed_pot_subsys)
END IF
@ -1914,9 +1911,9 @@ CONTAINS
END IF
! Give away plane waves pools
CALL pw_release(diff_rho_r)
CALL diff_rho_r%release()
IF (opt_embed%open_shell_embed) THEN
CALL pw_release(diff_rho_spin)
CALL diff_rho_spin%release()
END IF
CALL cp_print_key_finished_output(output_unit, logger, force_env%force_env_section, &
@ -1954,10 +1951,10 @@ CONTAINS
CALL release_opt_embed(opt_embed)
! Deallocate embedding potential
CALL pw_release(embed_pot)
CALL embed_pot%release()
DEALLOCATE (embed_pot)
IF (opt_embed%open_shell_embed) THEN
CALL pw_release(spin_embed_pot)
CALL spin_embed_pot%release()
DEALLOCATE (spin_embed_pot)
END IF

View file

@ -58,8 +58,7 @@ MODULE hfx_exx
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_scale
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
USE qs_energy_types, ONLY: qs_energy_type
USE qs_environment_types, ONLY: get_qs_env,&
@ -474,11 +473,11 @@ CONTAINS
! Clean
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vh_rspace)
CALL auxbas_pw_pool%give_back_pw(vh_rspace)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rspace(ispin))
IF (ASSOCIATED(vtau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, vtau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vtau_rspace(ispin))
END IF
END DO
DEALLOCATE (vxc_rspace)
@ -487,7 +486,7 @@ CONTAINS
IF (dft_control%do_admm) THEN
DO ispin = 1, nspins
IF (ASSOCIATED(vadmm_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, vadmm_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vadmm_rspace(ispin))
END IF
END DO
IF (ASSOCIATED(vadmm_rspace)) DEALLOCATE (vadmm_rspace)
@ -680,13 +679,13 @@ CONTAINS
IF (ASSOCIATED(v_rspace_aux_fit)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_aux_fit(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_aux_fit(ispin))
END DO
DEALLOCATE (v_rspace_aux_fit)
END IF
IF (ASSOCIATED(v_dummy)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_dummy(ispin))
CALL auxbas_pw_pool%give_back_pw(v_dummy(ispin))
END DO
DEALLOCATE (v_dummy)
END IF
@ -712,13 +711,13 @@ CONTAINS
IF (ASSOCIATED(v_rspace)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
END DO
DEALLOCATE (v_rspace)
END IF
IF (ASSOCIATED(v_dummy)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_dummy(ispin))
CALL auxbas_pw_pool%give_back_pw(v_dummy(ispin))
END DO
DEALLOCATE (v_dummy)
END IF

View file

@ -45,15 +45,11 @@ MODULE hfx_pw_methods
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_create,&
pw_release,&
pw_type
USE qs_collocate_density, ONLY: calculate_wavefunction
USE qs_environment_types, ONLY: get_qs_env,&
@ -137,22 +133,22 @@ CONTAINS
CALL cp_fm_get_info(mo_coeff, ncol_global=norb)
blocksize = MAX(1, MIN(blocksize, norb))
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
ALLOCATE (rho_i(blocksize))
ALLOCATE (rho_j(blocksize))
CALL pw_pool_create_pw(auxbas_pw_pool, greenfn, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(greenfn, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
ip_section => section_vals_get_subs_vals(hfx_section, "INTERACTION_POTENTIAL")
CALL section_vals_get(ip_section, explicit=explicit)
potential_type = do_potential_coulomb
@ -188,12 +184,12 @@ CONTAINS
END IF
DO iorb_block = 1, blocksize
CALL pw_create(rho_i(iorb_block), rho_r%pw_grid, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_create(rho_j(iorb_block), rho_r%pw_grid, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL rho_i(iorb_block)%create(rho_r%pw_grid, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL rho_j(iorb_block)%create(rho_r%pw_grid, &
use_data=REALDATA3D, &
in_space=REALSPACE)
END DO
exchange_energy = 0.0_dp
@ -259,14 +255,14 @@ CONTAINS
END DO
DO iorb_block = 1, blocksize
CALL pw_release(rho_i(iorb_block))
CALL pw_release(rho_j(iorb_block))
CALL rho_i(iorb_block)%release()
CALL rho_j(iorb_block)%release()
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, pot_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, greenfn)
CALL auxbas_pw_pool%give_back_pw(rho_r)
CALL auxbas_pw_pool%give_back_pw(rho_g)
CALL auxbas_pw_pool%give_back_pw(pot_g)
CALL auxbas_pw_pool%give_back_pw(greenfn)
iw = cp_print_key_unit_nr(logger, hfx_section, "HF_INFO", &
extension=".scfLog")

View file

@ -45,12 +45,9 @@ MODULE hirshfeld_methods
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_integrate_function
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_release,&
pw_type
USE qs_environment_types, ONLY: get_qs_env,&
qs_environment_type
@ -295,7 +292,7 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho=rho)
CALL qs_rho_get(rho, rho_r=rho_r, rho_r_valid=rho_r_valid)
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rhonorm, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhonorm, use_data=REALDATA3D, in_space=REALSPACE)
! loop over spins
DO is = 1, SIZE(rho_r)
IF (rho_r_valid) THEN
@ -307,7 +304,7 @@ CONTAINS
CALL hirshfeld_integration(qs_env, hirshfeld_env, rhonorm, charges(:, is))
charges(:, is) = charges(:, is)*hirshfeld_env%charges(:)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhonorm)
CALL auxbas_pw_pool%give_back_pw(rhonorm)
END SUBROUTINE comp_hirshfeld_charges
! **************************************************************************************************
@ -383,7 +380,7 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho=rho)
CALL qs_rho_get(rho, rho_r=rho_r, rho_r_valid=rho_r_valid)
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rhonorm, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhonorm, use_data=REALDATA3D, in_space=REALSPACE)
!
DO iloop = 1, maxloop
@ -422,7 +419,7 @@ CONTAINS
END DO
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhonorm)
CALL auxbas_pw_pool%give_back_pw(rhonorm)
END SUBROUTINE comp_hirshfeld_i_charges
@ -520,11 +517,11 @@ CONTAINS
NULLIFY (fnorm)
CALL get_hirshfeld_info(hirshfeld_env, fnorm=fnorm)
IF (ASSOCIATED(fnorm)) THEN
CALL pw_release(fnorm)
CALL fnorm%release()
DEALLOCATE (fnorm)
END IF
ALLOCATE (fnorm)
CALL pw_pool_create_pw(auxbas_pw_pool, fnorm, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(fnorm, use_data=REALDATA3D, in_space=REALSPACE)
CALL set_hirshfeld_info(hirshfeld_env, fnorm=fnorm)
CALL transfer_rs2pw(rs_rho, fnorm)

View file

@ -17,8 +17,7 @@ MODULE hirshfeld_types
USE input_constants, ONLY: radius_default,&
shape_function_gaussian
USE kinds, ONLY: dp
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
#include "./base/base_uses.f90"
IMPLICIT NONE
@ -112,7 +111,7 @@ CONTAINS
END IF
IF (ASSOCIATED(hirshfeld_env%fnorm)) THEN
CALL pw_release(hirshfeld_env%fnorm)
CALL hirshfeld_env%fnorm%release()
DEALLOCATE (hirshfeld_env%fnorm)
END IF

View file

@ -84,9 +84,7 @@ MODULE iao_analysis
USE particle_types, ONLY: particle_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -990,8 +988,8 @@ CONTAINS
END DO
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
nspins = SIZE(iao_coef)
nstart = MIN(1, n_rep)
@ -1028,8 +1026,8 @@ CONTAINS
END DO
END DO
DEALLOCATE (blk_sizes, first_bas)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END SUBROUTINE print_iao_cubes
@ -1072,8 +1070,8 @@ CONTAINS
CALL qs_subsys_get(subsys, particles=particles)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
nspins = SIZE(ibo_coef)
nstart = MIN(1, n_rep)
@ -1108,8 +1106,8 @@ CONTAINS
END DO
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END SUBROUTINE print_ibo_cubes

View file

@ -40,8 +40,7 @@ MODULE kg_correction
pw_env_type
USE pw_methods, ONLY: pw_integral_ab,&
pw_scale
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
USE qs_environment_types, ONLY: get_qs_env,&
qs_environment_type
@ -263,7 +262,7 @@ CONTAINS
CALL integrate_v_rspace(v_rspace=vxc_rho(ispin), &
pmat=density_matrix(ispin), hmat=ks_matrix(ispin), &
qs_env=qs_env, calculate_forces=calc_force)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
END DO
DEALLOCATE (vxc_rho)
ekin_mol = -ekin_imol
@ -337,7 +336,7 @@ CONTAINS
calculate_forces=calc_force, &
task_list_external=kg_env%subset(isub)%task_list)
! clean up vxc_rho
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
IF (ASSOCIATED(vxc_tau)) THEN
CALL pw_scale(vxc_tau(ispin), -alpha*vxc_tau(ispin)%pw_grid%dvol)
CALL integrate_v_rspace(v_rspace=vxc_tau(ispin), &
@ -348,7 +347,7 @@ CONTAINS
calculate_forces=calc_force, &
task_list_external=kg_env%subset(isub)%task_list)
! clean up vxc_rho
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_tau(ispin))
END IF
END DO
DEALLOCATE (vxc_rho)
@ -477,7 +476,7 @@ CONTAINS
CALL pw_scale(vxc_rho(ispin), vxc_rho(ispin)%pw_grid%dvol)
lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force, "LRI_AUX")
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
END DO
DEALLOCATE (vxc_rho)
ekin_mol = -ekin_imol
@ -507,7 +506,7 @@ CONTAINS
lri_v_int, calc_force, &
"LRI_AUX", atomlist=atomlist)
! clean up vxc_rho
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
END DO
DEALLOCATE (vxc_rho)
@ -720,7 +719,7 @@ CONTAINS
lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
END IF
CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force, "LRI_AUX")
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
END DO
DEALLOCATE (vxc_rho)
@ -789,7 +788,7 @@ CONTAINS
lri_v_int, calc_force, &
"LRI_AUX", atomlist=atomlist)
! clean up vxc_rho
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
END DO
DEALLOCATE (vxc_rho)

View file

@ -93,8 +93,6 @@ MODULE library_tests
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_create,&
pw_release,&
pw_type
USE realspace_grid_types, ONLY: &
realspace_grid_desc_type, realspace_grid_input_type, realspace_grid_type, rs_grid_create, &
@ -744,7 +742,7 @@ CONTAINS
CALL pw_grid_setup(box%hmat, grid, grid_span=FULLSPACE, npts=np, fft_usage=.TRUE., iounit=iw)
no = grid%npts
CALL pw_create(ca, grid, REALDATA3D, REALSPACE)
CALL ca%create(grid, REALDATA3D, REALSPACE)
CALL pw_zero(ca)
! .. rs input setting type
@ -791,7 +789,7 @@ CONTAINS
!cleanup
CALL rs_grid_release(rs_grid)
CALL rs_grid_release_descriptor(rs_desc)
CALL pw_release(ca)
CALL ca%release()
CALL pw_grid_release(grid)
CALL cell_release(box)
CALL finalize_fft(para_env, wisdom_file=globenv%fftw_wisdom_file_name)
@ -940,9 +938,9 @@ CONTAINS
! note that the number of grid points might be different from what the user requested (fft-able needed)
no = grid%npts
CALL pw_create(ca, grid, COMPLEXDATA1D, RECIPROCALSPACE)
CALL pw_create(cb, grid, COMPLEXDATA3D, REALSPACE)
CALL pw_create(cc, grid, COMPLEXDATA1D, RECIPROCALSPACE)
CALL ca%create(grid, COMPLEXDATA1D, RECIPROCALSPACE)
CALL cb%create(grid, COMPLEXDATA3D, REALSPACE)
CALL cc%create(grid, COMPLEXDATA1D, RECIPROCALSPACE)
! initialize data
CALL pw_zero(ca)
@ -998,9 +996,9 @@ CONTAINS
END IF
! done with these grids
CALL pw_release(ca)
CALL pw_release(cb)
CALL pw_release(cc)
CALL ca%release()
CALL cb%release()
CALL cc%release()
CALL pw_grid_release(grid)
END DO

View file

@ -30,9 +30,7 @@ MODULE localization_tb
USE particle_types, ONLY: particle_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -180,12 +178,12 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
NULLIFY (marked_states, qs_loc_env_homo)
ALLOCATE (qs_loc_env_homo)
@ -212,8 +210,8 @@ CONTAINS
IF (qs_loc_env_homo%do_localize) THEN
CALL loc_dipole(qs_env%input, dft_control, qs_loc_env_homo, logger, qs_env)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL qs_loc_env_release(qs_loc_env_homo)
DEALLOCATE (qs_loc_env_homo)
IF (ASSOCIATED(marked_states)) THEN

View file

@ -64,9 +64,7 @@ MODULE minbas_wfn_analysis
USE particle_types, ONLY: particle_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -522,8 +520,8 @@ CONTAINS
END DO
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! loop over list of atoms
CALL section_vals_val_get(minbas_section, "ATOM_LIST", n_rep_val=n_rep)
@ -563,8 +561,8 @@ CONTAINS
END DO
END IF
DEALLOCATE (blk_sizes, first_bas)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END SUBROUTINE post_minbas_cubes

View file

@ -95,9 +95,7 @@ MODULE mixed_cdft_methods
USE pw_methods, ONLY: pw_copy,&
pw_scale,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE
USE qs_cdft_types, ONLY: cdft_control_type
@ -653,8 +651,8 @@ CONTAINS
! In principle, we could reduce the memory footprint of becke_pot by only transferring the nonzero portion
! of the potential, but this would require a custom integrate_v_rspace
ALLOCATE (cdft_control_target%group(1)%weight)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control_target%group(1)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control_target%group(1)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(cdft_control_target%group(1)%weight)
! Assemble the recved slices
DO j = 1, SIZE(mixed_cdft%source_list)
@ -947,21 +945,20 @@ CONTAINS
! Weight function
DO igroup = 1, SIZE(cdft_control_target%group)
ALLOCATE (cdft_control_target%group(igroup)%weight)
CALL pw_pool_create_pw(auxbas_pw_pool_target, &
cdft_control_target%group(igroup)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool_target%create_pw(cdft_control_target%group(igroup)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
! We have ensured that the grids are consistent => no danger in using explicit copy
CALL pw_copy(cdft_control_source%group(igroup)%weight, cdft_control_target%group(igroup)%weight)
CALL pw_pool_give_back_pw(auxbas_pw_pool_source, cdft_control_source%group(igroup)%weight)
CALL auxbas_pw_pool_source%give_back_pw(cdft_control_source%group(igroup)%weight)
DEALLOCATE (cdft_control_source%group(igroup)%weight)
END DO
! Cavity
IF (cdft_control_source%type == outer_scf_becke_constraint) THEN
IF (cdft_control_source%becke_control%cavity_confine) THEN
CALL pw_pool_create_pw(auxbas_pw_pool_target, cdft_control_target%becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool_target%create_pw(cdft_control_target%becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(cdft_control_source%becke_control%cavity, cdft_control_target%becke_control%cavity)
CALL pw_pool_give_back_pw(auxbas_pw_pool_source, cdft_control_source%becke_control%cavity)
CALL auxbas_pw_pool_source%give_back_pw(cdft_control_source%becke_control%cavity)
END IF
END IF
! Gradients
@ -987,11 +984,10 @@ CONTAINS
IF (.NOT. ASSOCIATED(cdft_control_target%charge)) &
ALLOCATE (cdft_control_target%charge(cdft_control_target%natoms))
DO iatom = 1, cdft_control_target%natoms
CALL pw_pool_create_pw(auxbas_pw_pool_target, &
cdft_control_target%charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool_target%create_pw(cdft_control_target%charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(cdft_control_source%charge(iatom), cdft_control_target%charge(iatom))
CALL pw_pool_give_back_pw(auxbas_pw_pool_source, cdft_control_source%charge(iatom))
CALL auxbas_pw_pool_source%give_back_pw(cdft_control_source%charge(iatom))
END DO
END IF
! Set some flags so the weight is not rebuilt during SCF
@ -2585,8 +2581,8 @@ CONTAINS
DEALLOCATE (cores)
END DO
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_cavity, cdft_control%becke_control%cavity)
CALL hfun_zero(cdft_control%becke_control%cavity%cr3d, &
cdft_control%becke_control%eps_cavity, &
@ -2672,7 +2668,7 @@ CONTAINS
bo(1, 2) + offset_dlb:bo(2, 2), &
bo_conf(1, 3):bo_conf(2, 3))
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%becke_control%cavity)
CALL auxbas_pw_pool%give_back_pw(cdft_control%becke_control%cavity)
END IF
IF (mixed_cdft%is_special) THEN
DO i = 1, SIZE(mixed_cdft%dest_list)

View file

@ -85,9 +85,7 @@ MODULE mp2_cphf
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -1506,8 +1504,8 @@ CONTAINS
CALL get_qs_env(qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, vhxc_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vhxc_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
IF (use_virial) h_stress = virial%pv_virial
IF (debug_forces) THEN
deb(1:3) = force(1)%rho_elec(1:3, 1)
@ -1575,13 +1573,13 @@ CONTAINS
END DO
END IF
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc_rspace(ispin))
IF (ASSOCIATED(vtau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, vtau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vtau_rspace(ispin))
END IF
END DO
DEALLOCATE (vxc_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vhxc_rspace)
CALL auxbas_pw_pool%give_back_pw(vhxc_rspace)
IF (ASSOCIATED(vtau_rspace)) DEALLOCATE (vtau_rspace)
DO ispin = 1, nspins
@ -1594,15 +1592,15 @@ CONTAINS
poisson_env=poisson_env)
! get some of the grids ready
CALL pw_pool_create_pw(auxbas_pw_pool, pot_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pot_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(rho_tot_g)
@ -1614,9 +1612,9 @@ CONTAINS
IF (use_virial) THEN
ALLOCATE (dvg(3))
DO idir = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, dvg(idir), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(dvg(idir), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
END IF
@ -1638,14 +1636,14 @@ CONTAINS
IF (iounit > 0) WRITE (iounit, "(T3,A,T33,F16.8)") "DEBUG VIRIAL:: core ", e_dummy
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, vh_rspace)
CALL auxbas_pw_pool%give_back_pw(vh_rspace)
IF (use_virial) THEN
! update virial if necessary with the volume term
! first create pw auxiliary stuff
CALL pw_pool_create_pw(auxbas_pw_pool, temp_pw_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(temp_pw_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
! make a copy of the MP2 density in G space
CALL pw_copy(rho_tot_g, temp_pw_g)
@ -1676,9 +1674,9 @@ CONTAINS
IF (debug_forces .AND. iounit > 0) WRITE (iounit, "(T3,A,T33,F16.8)") "DEBUG VIRIAL:: Hartree ", third_tr(h_stress)
! free stuff
CALL pw_pool_give_back_pw(auxbas_pw_pool, temp_pw_g)
CALL auxbas_pw_pool%give_back_pw(temp_pw_g)
DO idir = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvg(idir))
CALL auxbas_pw_pool%give_back_pw(dvg(idir))
END DO
DEALLOCATE (dvg)
@ -1877,7 +1875,7 @@ CONTAINS
calculate_forces=.TRUE., basis_type="AUX_FIT", &
task_list_external=task_list_aux_fit, pmat=rho_ao_aux(ispin))
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, vadmm_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(vadmm_rspace(ispin))
END DO
IF (use_virial) virial%pv_ehartree = virial%pv_ehartree + (virial%pv_virial - h_stress)
DEALLOCATE (vadmm_rspace)
@ -1965,9 +1963,9 @@ CONTAINS
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, pot_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, pot_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_g)
CALL auxbas_pw_pool%give_back_pw(pot_r)
CALL auxbas_pw_pool%give_back_pw(pot_g)
CALL auxbas_pw_pool%give_back_pw(rho_tot_g)
! Release linres stuff
CALL p_env_release(p_env)

View file

@ -44,9 +44,7 @@ MODULE mp2_eri_gpw
pw_scale, pw_transfer, pw_truncated, pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -1028,18 +1026,18 @@ CONTAINS
pw_env_external=pw_env_sub, sab_orb_external=sab_orb_sub)
! get some of the grids ready
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, psi_L, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pot_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(psi_L, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! run the FFT once, to set up buffers and to take into account the memory
CALL pw_zero(rho_r)
@ -1084,10 +1082,10 @@ CONTAINS
CALL timeset(routineN, handle)
! and now free the whole lot
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, pot_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, psi_L)
CALL auxbas_pw_pool%give_back_pw(rho_r)
CALL auxbas_pw_pool%give_back_pw(rho_g)
CALL auxbas_pw_pool%give_back_pw(pot_g)
CALL auxbas_pw_pool%give_back_pw(psi_L)
CALL deallocate_task_list(task_list_sub)
CALL pw_env_release(pw_env_sub, para_env=para_env_sub)

View file

@ -46,11 +46,9 @@ MODULE mp2_gpw_method
pw_transfer,&
pw_zero
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_release,&
pw_type
USE qs_collocate_density, ONLY: calculate_wavefunction
USE qs_environment_types, ONLY: qs_environment_type
@ -362,9 +360,9 @@ CONTAINS
ALLOCATE (psi_i(my_I_occupied_start:my_I_occupied_end))
DO i = my_I_occupied_start, my_I_occupied_end
CALL pw_pool_create_pw(auxbas_pw_pool, psi_i(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(psi_i(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL calculate_wavefunction(mo_coeff, i, psi_i(i), rho_g, atomic_kind_set, &
qs_kind_set, cell, dft_control, particle_set, &
pw_env_sub, external_vector=my_Cocc(:, i - my_I_occupied_start + 1))
@ -545,7 +543,7 @@ CONTAINS
END DO
DO i = my_I_occupied_start, my_I_occupied_end
CALL pw_release(psi_i(i))
CALL psi_i(i)%release()
END DO
DEALLOCATE (psi_i)

View file

@ -57,9 +57,7 @@ MODULE mp2_ri_grad
USE particle_types, ONLY: particle_type
USE pw_env_types, ONLY: pw_env_type
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
RECIPROCALSPACE,&
pw_type
@ -343,13 +341,13 @@ CONTAINS
! for calculate the MP2-volume contribution to the virial
! (hartree potential derivatives)
IF (use_virial) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g_copy, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g_copy, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, dvg(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(dvg(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
END IF
@ -407,9 +405,9 @@ CONTAINS
DEALLOCATE (atom_of_kind)
IF (use_virial) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g_copy)
CALL auxbas_pw_pool%give_back_pw(rho_g_copy)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvg(i))
CALL auxbas_pw_pool%give_back_pw(dvg(i))
END DO
END IF

View file

@ -53,9 +53,7 @@ MODULE negf_env_types
USE particle_types, ONLY: particle_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -797,13 +795,13 @@ CONTAINS
CALL dbcsr_copy(matrix_b=hmat%matrix, matrix_a=matrix_s_kp(1, 1)%matrix)
CALL dbcsr_set(hmat%matrix, 0.0_dp)
CALL pw_pool_create_pw(pw_pool, v_hartree, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(v_hartree, use_data=REALDATA3D, in_space=REALSPACE)
CALL negf_env_init_v_hartree(v_hartree, negf_env%contacts, negf_control%contacts)
CALL integrate_v_rspace(v_rspace=v_hartree, hmat=hmat, qs_env=qs_env, &
calculate_forces=.FALSE., compute_tau=.FALSE., gapw=.FALSE.)
CALL pw_pool_give_back_pw(pw_pool, v_hartree)
CALL pw_pool%give_back_pw(v_hartree)
CALL negf_copy_sym_dbcsr_to_fm_submat(matrix=hmat%matrix, &
fm=negf_env%v_hartree_s, &

View file

@ -67,14 +67,11 @@ MODULE optimize_embedding_potential
pw_transfer, pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qs_collocate_density, ONLY: calculate_rho_resp_all,&
calculate_wavefunction
@ -235,18 +232,18 @@ CONTAINS
! Create embedding potential and set to zero
NULLIFY (embed_pot)
ALLOCATE (embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool, embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(embed_pot)
! Spin embedding potential if asked
IF (open_shell_embed) THEN
NULLIFY (spin_embed_pot)
ALLOCATE (spin_embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool, spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(spin_embed_pot)
END IF
@ -254,9 +251,9 @@ CONTAINS
IF (Coulomb_guess) THEN
NULLIFY (pot_diff)
ALLOCATE (pot_diff)
CALL pw_pool_create_pw(auxbas_pw_pool, pot_diff, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pot_diff, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(pot_diff)
END IF
@ -265,9 +262,9 @@ CONTAINS
! Now the constant potential is the Coulomb one
NULLIFY (const_pot)
ALLOCATE (const_pot)
CALL pw_pool_create_pw(auxbas_pw_pool, const_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(const_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(const_pot)
END IF
@ -400,9 +397,9 @@ CONTAINS
size_prev_dens = SUM(opt_embed%all_nspins(1:(SIZE(opt_embed%all_nspins) - 1)))
ALLOCATE (opt_embed%prev_subsys_dens(size_prev_dens))
DO i_dens = 1, size_prev_dens
CALL pw_pool_create_pw(auxbas_pw_pool, opt_embed%prev_subsys_dens(i_dens), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(opt_embed%prev_subsys_dens(i_dens), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(opt_embed%prev_subsys_dens(i_dens))
END DO
ALLOCATE (opt_embed%max_subsys_dens_diff(size_prev_dens))
@ -422,16 +419,16 @@ CONTAINS
IF (opt_embed%fab) THEN
NULLIFY (opt_embed%prev_embed_pot)
ALLOCATE (opt_embed%prev_embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool, opt_embed%prev_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(opt_embed%prev_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(opt_embed%prev_embed_pot)
IF (opt_embed%open_shell_embed) THEN
NULLIFY (opt_embed%prev_spin_embed_pot)
ALLOCATE (opt_embed%prev_spin_embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool, opt_embed%prev_spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(opt_embed%prev_spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(opt_embed%prev_spin_embed_pot)
END IF
END IF
@ -654,15 +651,15 @@ CONTAINS
!CALL get_qs_env(qs_env=qs_env, &
! embed_pot=embed_pot)
ALLOCATE (embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool_subsys, embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool_subsys%create_pw(embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (open_shell_embed) THEN
! Create spin embedding potential
ALLOCATE (spin_embed_pot)
CALL pw_pool_create_pw(auxbas_pw_pool_subsys, spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool_subsys%create_pw(spin_embed_pot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
END IF
! Read the cubes
CALL read_embed_pot_cube(embed_pot, spin_embed_pot, qs_section, open_shell_embed)
@ -908,7 +905,7 @@ CONTAINS
IF (ASSOCIATED(opt_embed%prev_subsys_dens)) THEN
DO i_dens = 1, SIZE(opt_embed%prev_subsys_dens)
CALL pw_release(opt_embed%prev_subsys_dens(i_dens))
CALL opt_embed%prev_subsys_dens(i_dens)%release()
END DO
DEALLOCATE (opt_embed%prev_subsys_dens)
END IF
@ -917,26 +914,26 @@ CONTAINS
DEALLOCATE (opt_embed%all_nspins)
IF (ASSOCIATED(opt_embed%const_pot)) THEN
CALL pw_release(opt_embed%const_pot)
CALL opt_embed%const_pot%release()
DEALLOCATE (opt_embed%const_pot)
END IF
IF (ASSOCIATED(opt_embed%pot_diff)) THEN
CALL pw_release(opt_embed%pot_diff)
CALL opt_embed%pot_diff%release()
DEALLOCATE (opt_embed%pot_diff)
END IF
IF (ASSOCIATED(opt_embed%prev_embed_pot)) THEN
CALL pw_release(opt_embed%prev_embed_pot)
CALL opt_embed%prev_embed_pot%release()
DEALLOCATE (opt_embed%prev_embed_pot)
END IF
IF (ASSOCIATED(opt_embed%prev_spin_embed_pot)) THEN
CALL pw_release(opt_embed%prev_spin_embed_pot)
CALL opt_embed%prev_spin_embed_pot%release()
DEALLOCATE (opt_embed%prev_spin_embed_pot)
END IF
IF (ASSOCIATED(opt_embed%v_w)) THEN
DO i_spin = 1, SIZE(opt_embed%v_w)
CALL pw_release(opt_embed%v_w(i_spin))
CALL opt_embed%v_w(i_spin)%release()
END DO
DEALLOCATE (opt_embed%v_w)
END IF
@ -996,19 +993,17 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_resp_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_resp_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_resp_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_resp_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_resp, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_resp, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Calculate charge density
CALL pw_zero(rho_resp)
@ -1030,9 +1025,9 @@ CONTAINS
CALL pw_copy(v_resp_rspace, v_rspace)
! Release plane waves
CALL pw_release(v_resp_gspace)
CALL pw_release(v_resp_rspace)
CALL pw_release(rho_resp)
CALL v_resp_gspace%release()
CALL v_resp_rspace%release()
CALL rho_resp%release()
! Deallocate map_index array
DEALLOCATE (map_index)
@ -1074,9 +1069,9 @@ CONTAINS
! Create embedding potential and set to zero
NULLIFY (embed_pot_subsys)
ALLOCATE (embed_pot_subsys)
CALL pw_pool_create_pw(auxbas_pw_pool_subsys, embed_pot_subsys, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool_subsys%create_pw(embed_pot_subsys, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Hard copy the grid
CALL pw_copy(embed_pot, embed_pot_subsys)
@ -1084,9 +1079,9 @@ CONTAINS
IF (open_shell_embed) THEN
NULLIFY (spin_embed_pot_subsys)
ALLOCATE (spin_embed_pot_subsys)
CALL pw_pool_create_pw(auxbas_pw_pool_subsys, spin_embed_pot_subsys, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool_subsys%create_pw(spin_embed_pot_subsys, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Hard copy the grid
IF (change_spin_sign) THEN
CALL pw_axpy(spin_embed_pot, spin_embed_pot_subsys, -1.0_dp, 0.0_dp, allow_noncompatible_grids=.TRUE.)
@ -1414,21 +1409,21 @@ CONTAINS
! Get some of the grids ready
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, potential_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(potential_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, dr2_pot, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(dr2_pot, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, grid_reg, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(grid_reg, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, grid_reg_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(grid_reg_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(grid_reg_g)
! Transfer potential to the reciprocal space
@ -1449,17 +1444,17 @@ CONTAINS
! Second, the contribution to the functional
!
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, dpot(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, dpot_g(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(dpot(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dpot_g(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, square_norm_dpot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(square_norm_dpot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
DO i = 1, 3
n(:) = 0
@ -1491,14 +1486,14 @@ CONTAINS
reg_term = 2*lambda*pw_integrate_function(fun=square_norm_dpot)
! Release
CALL pw_pool_give_back_pw(auxbas_pw_pool, potential_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, dr2_pot)
CALL pw_pool_give_back_pw(auxbas_pw_pool, grid_reg)
CALL pw_pool_give_back_pw(auxbas_pw_pool, grid_reg_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, square_norm_dpot)
CALL auxbas_pw_pool%give_back_pw(potential_g)
CALL auxbas_pw_pool%give_back_pw(dr2_pot)
CALL auxbas_pw_pool%give_back_pw(grid_reg)
CALL auxbas_pw_pool%give_back_pw(grid_reg_g)
CALL auxbas_pw_pool%give_back_pw(square_norm_dpot)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, dpot(i))
CALL pw_pool_give_back_pw(auxbas_pw_pool, dpot_g(i))
CALL auxbas_pw_pool%give_back_pw(dpot(i))
CALL auxbas_pw_pool%give_back_pw(dpot_g(i))
END DO
END SUBROUTINE grid_regularize
@ -1796,13 +1791,13 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
! get some of the grids ready
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, psi_L, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(psi_L, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Create wf_vector and auxiliary wave functions
ALLOCATE (wf_vector(dimen_aux))
@ -1914,8 +1909,8 @@ CONTAINS
! Deallocate memory and release objects
DEALLOCATE (wf_vector)
CALL pw_pool_give_back_pw(auxbas_pw_pool, psi_L)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL auxbas_pw_pool%give_back_pw(psi_L)
CALL auxbas_pw_pool%give_back_pw(rho_g)
IF (open_shell_embed) THEN
CALL cp_fm_release(embed_pot_coef_spin)
@ -2549,9 +2544,9 @@ CONTAINS
NULLIFY (new_embed_pot)
ALLOCATE (new_embed_pot(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, new_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(new_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(new_embed_pot(i_spin))
END DO
@ -2585,13 +2580,13 @@ CONTAINS
NULLIFY (temp_embed_pot)
ALLOCATE (temp_embed_pot(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_n_1(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_n_1(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_n_1(i_spin))
CALL pw_pool_create_pw(auxbas_pw_pool, temp_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(temp_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(temp_embed_pot(i_spin))
END DO
CALL pw_copy(diff_rho_r, rho_n_1(1))
@ -2668,15 +2663,15 @@ CONTAINS
CALL pw_scale(spin_embed_pot, a=0.5_dp)
DO i_spin = 1, nspins
CALL pw_release(rho_n_1(i_spin))
CALL pw_release(temp_embed_pot(i_spin))
CALL rho_n_1(i_spin)%release()
CALL temp_embed_pot(i_spin)%release()
END DO
DEALLOCATE (rho_n_1)
DEALLOCATE (temp_embed_pot)
END IF
DO i_spin = 1, nspins
CALL pw_release(new_embed_pot(i_spin))
CALL new_embed_pot(i_spin)%release()
END DO
DEALLOCATE (new_embed_pot)
@ -2742,9 +2737,9 @@ CONTAINS
NULLIFY (v_w_ref)
ALLOCATE (v_w_ref(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, v_w_ref(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_w_ref(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
END DO
CALL Von_Weizsacker(rho_r_ref, v_w_ref, qs_env, vw_cutoff, vw_smooth_cutoff_range)
! For the first step previous are set to current
@ -2766,19 +2761,19 @@ CONTAINS
NULLIFY (curr_rho)
ALLOCATE (curr_rho(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, new_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(new_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(new_embed_pot(i_spin))
CALL pw_pool_create_pw(auxbas_pw_pool, v_w(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_w(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(v_w(i_spin))
CALL pw_pool_create_pw(auxbas_pw_pool, curr_rho(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(curr_rho(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(curr_rho(i_spin))
END DO
@ -2822,9 +2817,9 @@ CONTAINS
! Reconstruct corrent spin components of the potential
ALLOCATE (temp_embed_pot(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, temp_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(temp_embed_pot(i_spin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(temp_embed_pot(i_spin))
END DO
CALL pw_copy(embed_pot, temp_embed_pot(1))
@ -2863,16 +2858,16 @@ CONTAINS
CALL pw_scale(spin_embed_pot, a=0.5_dp)
DO i_spin = 1, nspins
CALL pw_release(temp_embed_pot(i_spin))
CALL temp_embed_pot(i_spin)%release()
END DO
DEALLOCATE (temp_embed_pot)
END IF
DO i_spin = 1, nspins
CALL pw_release(curr_rho(i_spin))
CALL pw_release(new_embed_pot(i_spin))
CALL pw_release(v_w(i_spin))
CALL curr_rho(i_spin)%release()
CALL new_embed_pot(i_spin)%release()
CALL v_w(i_spin)%release()
END DO
DEALLOCATE (new_embed_pot)
@ -2930,9 +2925,9 @@ CONTAINS
NULLIFY (rho_g)
ALLOCATE (rho_g(nspins))
DO i_spin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(i_spin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(i_spin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_transfer(rho_r(i_spin), rho_g(i_spin))
END DO
@ -3030,7 +3025,7 @@ CONTAINS
CALL xc_rho_set_release(rho_set, pw_pool=auxbas_pw_pool)
DO i_spin = 1, nspins
CALL pw_release(rho_g(i_spin))
CALL rho_g(i_spin)%release()
END DO
DEALLOCATE (rho_g)
@ -3333,17 +3328,17 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
! Create embedding potential and set to zero
CALL pw_pool_create_pw(auxbas_pw_pool, pot_alpha, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pot_alpha, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(pot_alpha)
CALL pw_copy(embed_pot, pot_alpha)
IF (open_shell_embed) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, pot_beta, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pot_beta, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(embed_pot, pot_beta)
! Add spin potential to the alpha, and subtract from the beta part
CALL pw_axpy(embed_pot_spin, pot_alpha, 1.0_dp)
@ -3370,9 +3365,9 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%QS%OPT_EMBED%WRITE_SIMPLE_GRID")
! Release structures
CALL pw_release(pot_alpha)
CALL pot_alpha%release()
IF (open_shell_embed) THEN
CALL pw_release(pot_beta)
CALL pot_beta%release()
END IF
END IF

View file

@ -43,9 +43,7 @@ MODULE pme
pw_transfer
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -167,10 +165,10 @@ CONTAINS
allocate_centre=.TRUE.)
END IF
CALL pw_pool_create_pw(pw_small_pool, rhos1, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_small_pool, rhos2, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_small_pool%create_pw(rhos1, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_small_pool%create_pw(rhos2, &
use_data=REALDATA3D, in_space=REALSPACE)
ALLOCATE (rden)
CALL rs_grid_create(rden, rs_desc)
@ -244,20 +242,20 @@ CONTAINS
END DO
END IF
CALL pw_pool_create_pw(pw_big_pool, rhob_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_big_pool%create_pw(rhob_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rden, rhob_r)
!-------------- ELECTROSTATIC CALCULATION -----------
! allocate intermediate arrays
DO i = 1, 3
CALL pw_pool_create_pw(pw_big_pool, dphi_g(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_big_pool%create_pw(dphi_g(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
CALL pw_pool_create_pw(pw_big_pool, phi_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_big_pool%create_pw(phi_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_poisson_solve(poisson_env, rhob_r, vg_coulomb, phi_r, dphi_g, h_stress)
@ -298,12 +296,12 @@ CONTAINS
END IF
END DO
IF (atprop%stress) THEN
CALL pw_pool_create_pw(pw_big_pool, phi_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pw_big_pool, rhob_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_big_pool%create_pw(phi_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_big_pool%create_pw(rhob_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
ffa = (0.5_dp/dg_rho0%zet(1))**2
ffb = 1.0_dp/fourpi
DO i = 1, 3
@ -340,14 +338,14 @@ CONTAINS
END DO
END DO
END DO
CALL pw_pool_give_back_pw(pw_big_pool, phi_g)
CALL pw_pool_give_back_pw(pw_big_pool, rhob_g)
CALL pw_big_pool%give_back_pw(phi_g)
CALL pw_big_pool%give_back_pw(rhob_g)
END IF
CALL rs_grid_release(rpot)
DEALLOCATE (rpot)
END IF
CALL pw_pool_give_back_pw(pw_big_pool, phi_r)
CALL pw_big_pool%give_back_pw(phi_r)
!---------- END OF ELECTROSTATIC CALCULATION --------
@ -371,11 +369,11 @@ CONTAINS
CALL rs_grid_create(drpot(i), rs_desc)
CALL rs_grid_set_box(grid_b, rs=drpot(i))
CALL pw_transfer(dphi_g(i), rhob_r)
CALL pw_pool_give_back_pw(pw_big_pool, dphi_g(i))
CALL pw_big_pool%give_back_pw(dphi_g(i))
CALL transfer_pw2rs(drpot(i), rhob_r)
END DO
CALL pw_pool_give_back_pw(pw_big_pool, rhob_r)
CALL pw_big_pool%give_back_pw(rhob_r)
!----------------- FORCE CALCULATION ----------------
@ -475,8 +473,8 @@ CONTAINS
CALL rs_grid_release(drpot(i))
END DO
CALL pw_pool_give_back_pw(pw_small_pool, rhos1)
CALL pw_pool_give_back_pw(pw_small_pool, rhos2)
CALL pw_small_pool%give_back_pw(rhos1)
CALL pw_small_pool%give_back_pw(rhos2)
CALL structure_factor_deallocate(exp_igr)
CALL timestop(handle)

View file

@ -80,9 +80,7 @@ MODULE post_scf_bandstructure_utils
post_scf_bandstructure_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -2136,8 +2134,8 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, LDOS_3d, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(LDOS_3d, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
i_x_start = LBOUND(LDOS_3d%cr3d, 1)
i_x_end = UBOUND(LDOS_3d%cr3d, 1)
@ -2243,8 +2241,8 @@ CONTAINS
! set back nimages
dft_control%nimages = nimages
CALL pw_pool_give_back_pw(auxbas_pw_pool, LDOS_3d)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL auxbas_pw_pool%give_back_pw(LDOS_3d)
CALL auxbas_pw_pool%give_back_pw(rho_g)
CALL cp_cfm_release(cfm_work)
CALL cp_cfm_release(cfm_weighted_dm_ikp)

View file

@ -20,8 +20,6 @@ MODULE dg_rho0_types
do_ewald_spme
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_create,&
pw_release,&
pw_type
#include "../base/base_uses.f90"
@ -145,7 +143,7 @@ CONTAINS
DEALLOCATE (dg_rho0%zet)
END IF
IF (ASSOCIATED(dg_rho0%density)) THEN
CALL pw_release(dg_rho0%density)
CALL dg_rho0%density%release()
DEALLOCATE (dg_rho0%density)
END IF
NULLIFY (dg_rho0%gcc)
@ -165,16 +163,16 @@ CONTAINS
TYPE(pw_grid_type), POINTER :: pw_grid
IF (ASSOCIATED(dg_rho0%density)) THEN
CALL pw_release(dg_rho0%density)
CALL dg_rho0%density%release()
ELSE
ALLOCATE (dg_rho0%density)
END IF
SELECT CASE (dg_rho0%type)
CASE (do_ewald_ewald)
CALL pw_create(dg_rho0%density, pw_grid, REALDATA3D, REALSPACE)
CALL dg_rho0%density%create(pw_grid, REALDATA3D, REALSPACE)
CALL dg_rho0_pme_gauss(dg_rho0%density, dg_rho0%zet(1))
CASE (do_ewald_pme)
CALL pw_create(dg_rho0%density, pw_grid, REALDATA3D, REALSPACE)
CALL dg_rho0%density%create(pw_grid, REALDATA3D, REALSPACE)
CALL dg_rho0_pme_gauss(dg_rho0%density, dg_rho0%zet(1))
CASE (do_ewald_spme)
CPABORT('SPME type not implemented')

View file

@ -31,8 +31,6 @@ MODULE dgs
pw_multiply_with,&
pw_zero
USE pw_types, ONLY: COMPLEXDATA3D,&
pw_create,&
pw_release,&
pw_type
USE realspace_grid_types, ONLY: realspace_grid_type
USE structure_factors, ONLY: structure_factor_evaluate
@ -869,7 +867,7 @@ CONTAINS
ALLOCATE (zs(nd(1)*nd(2)))
zs = 0.0_dp
CALL pw_create(cd, rho0%pw_grid, COMPLEXDATA3D, rho0%in_space)
CALL cd%create(rho0%pw_grid, COMPLEXDATA3D, rho0%in_space)
CALL pw_zero(cd)
za = CMPLX(0.0_dp, 0.0_dp, KIND=dp)
@ -880,7 +878,7 @@ CONTAINS
CALL pw_copy(cd, rhos1)
DEALLOCATE (zs)
CALL pw_release(cd)
CALL cd%release()
END SUBROUTINE dg_get_patch_1
@ -915,7 +913,7 @@ CONTAINS
ALLOCATE (zs(nd(1)*nd(2)))
zs = 0.0_dp
CALL pw_create(cd, rhos1%pw_grid, COMPLEXDATA3D, rho0%in_space)
CALL cd%create(rhos1%pw_grid, COMPLEXDATA3D, rho0%in_space)
CALL pw_zero(cd)
za = CMPLX(0.0_dp, 0.0_dp, KIND=dp)
@ -929,7 +927,7 @@ CONTAINS
CALL copy_cri(cd%cc3d, rhos1%cr3d, rhos2%cr3d)
DEALLOCATE (zs)
CALL pw_release(cd)
CALL cd%release()
END SUBROUTINE dg_get_patch_2

View file

@ -27,8 +27,6 @@ MODULE dielectric_methods
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_release,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
@ -82,14 +80,14 @@ CONTAINS
NULLIFY (dielectric%eps)
NULLIFY (dielectric%deps_drho)
ALLOCATE (dielectric%eps, dielectric%deps_drho)
CALL pw_pool_create_pw(pw_pool, dielectric%eps, &
CALL pw_pool%create_pw(dielectric%eps, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, dielectric%deps_drho, &
CALL pw_pool%create_pw(dielectric%deps_drho, &
use_data=REALDATA3D, in_space=REALSPACE)
dielectric%eps%cr3d = 1.0_dp
CALL pw_zero(dielectric%deps_drho)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dielectric%dln_eps(i), &
CALL pw_pool%create_pw(dielectric%dln_eps(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(dielectric%dln_eps(i))
END DO
@ -149,14 +147,14 @@ CONTAINS
"the dielectric constant function.")
END IF
CALL pw_pool_create_pw(pw_pool, rho_elec_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(rho_elec_rs, use_data=REALDATA3D, in_space=REALSPACE)
! for evaluating epsilon make sure rho is in the real space
CALL pw_transfer(rho, rho_elec_rs)
IF (PRESENT(rho_core)) THEN
! make sure rho_core is in the real space
CALL pw_pool_create_pw(pw_pool, rho_core_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(rho_core_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho_core, rho_core_rs)
IF (dielectric%params%dielec_core_correction) THEN
! use (rho_elec - rho_core) to compute dielectric to avoid obtaining spurious
@ -165,7 +163,7 @@ CONTAINS
ELSE
CALL pw_axpy(rho_core_rs, rho_elec_rs, -1.0_dp)
END IF
CALL pw_pool_give_back_pw(pw_pool, rho_core_rs)
CALL pw_pool%give_back_pw(rho_core_rs)
ELSE
CPABORT("For dielectric constant larger than 1, rho_core has to be present.")
END IF
@ -190,17 +188,17 @@ CONTAINS
((dielec_functiontype .EQ. spatially_dependent) .AND. times_called .EQ. 0)) THEN
SELECT CASE (derivative_method)
CASE (derivative_cd3, derivative_cd5, derivative_cd7, derivative_fft)
CALL pw_pool_create_pw(pw_pool, ln_eps, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(ln_eps, use_data=REALDATA3D, in_space=REALSPACE)
ln_eps%cr3d = LOG(dielectric%eps%cr3d)
CASE (derivative_fft_use_deps)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(deps(i))
END DO
CASE (derivative_fft_use_drho)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, drho(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(drho(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(deps(i))
CALL pw_zero(drho(i))
END DO
@ -247,20 +245,20 @@ CONTAINS
SELECT CASE (derivative_method)
CASE (derivative_cd3, derivative_cd5, derivative_cd7, derivative_fft)
CALL pw_pool_give_back_pw(pw_pool, ln_eps)
CALL pw_pool%give_back_pw(ln_eps)
CASE (derivative_fft_use_deps)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, deps(i))
CALL pw_pool%give_back_pw(deps(i))
END DO
CASE (derivative_fft_use_drho)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, drho(i))
CALL pw_pool_give_back_pw(pw_pool, deps(i))
CALL pw_pool%give_back_pw(drho(i))
CALL pw_pool%give_back_pw(deps(i))
END DO
END SELECT
END IF
CALL pw_pool_give_back_pw(pw_pool, rho_elec_rs)
CALL pw_pool%give_back_pw(rho_elec_rs)
dielectric%params%times_called = dielectric%params%times_called + 1
@ -335,19 +333,19 @@ CONTAINS
CALL pw_pool_create(pw_pool_xpndd, pw_grid=dct_pw_grid)
! make sure rho is in the real space
CALL pw_pool_create_pw(pw_pool_orig, rho_elec_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_orig%create_pw(rho_elec_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho, rho_elec_rs)
! expand rho_elec
CALL pw_pool_create_pw(pw_pool_xpndd, rho_elec_rs_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(rho_elec_rs_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_expand(neumann_directions, recv_msgs_bnds, dests_expand, srcs_expand, flipg_stat, bounds_shftd, &
rho_elec_rs, rho_elec_rs_xpndd)
IF (PRESENT(rho_core)) THEN
! make sure rho_core is in the real space
CALL pw_pool_create_pw(pw_pool_orig, rho_core_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_orig%create_pw(rho_core_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho_core, rho_core_rs)
! expand rho_core
CALL pw_pool_create_pw(pw_pool_xpndd, rho_core_rs_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(rho_core_rs_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_expand(neumann_directions, recv_msgs_bnds, dests_expand, srcs_expand, flipg_stat, bounds_shftd, &
rho_core_rs, rho_core_rs_xpndd)
@ -357,8 +355,8 @@ CONTAINS
ELSE
CALL pw_axpy(rho_core_rs_xpndd, rho_elec_rs_xpndd, -1.0_dp)
END IF
CALL pw_pool_give_back_pw(pw_pool_orig, rho_core_rs)
CALL pw_pool_give_back_pw(pw_pool_xpndd, rho_core_rs_xpndd)
CALL pw_pool_orig%give_back_pw(rho_core_rs)
CALL pw_pool_xpndd%give_back_pw(rho_core_rs_xpndd)
ELSE
CPABORT("For dielectric constant larger than 1, rho_core has to be present.")
END IF
@ -383,17 +381,17 @@ CONTAINS
((dielec_functiontype .EQ. spatially_dependent) .AND. times_called .EQ. 0)) THEN
SELECT CASE (derivative_method)
CASE (derivative_cd3, derivative_cd5, derivative_cd7, derivative_fft)
CALL pw_pool_create_pw(pw_pool_xpndd, ln_eps, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(ln_eps, use_data=REALDATA3D, in_space=REALSPACE)
ln_eps%cr3d = LOG(dielectric%eps%cr3d)
CASE (derivative_fft_use_deps)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool_xpndd, deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(deps(i))
END DO
CASE (derivative_fft_use_drho)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool_xpndd, deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, drho(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(deps(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(drho(i), use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(deps(i))
CALL pw_zero(drho(i))
END DO
@ -440,21 +438,21 @@ CONTAINS
SELECT CASE (derivative_method)
CASE (derivative_cd3, derivative_cd5, derivative_cd7, derivative_fft)
CALL pw_pool_give_back_pw(pw_pool_xpndd, ln_eps)
CALL pw_pool_xpndd%give_back_pw(ln_eps)
CASE (derivative_fft_use_deps)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool_xpndd, deps(i))
CALL pw_pool_xpndd%give_back_pw(deps(i))
END DO
CASE (derivative_fft_use_drho)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool_xpndd, drho(i))
CALL pw_pool_give_back_pw(pw_pool_xpndd, deps(i))
CALL pw_pool_xpndd%give_back_pw(drho(i))
CALL pw_pool_xpndd%give_back_pw(deps(i))
END DO
END SELECT
END IF
CALL pw_pool_give_back_pw(pw_pool_orig, rho_elec_rs)
CALL pw_pool_give_back_pw(pw_pool_xpndd, rho_elec_rs_xpndd)
CALL pw_pool_orig%give_back_pw(rho_elec_rs)
CALL pw_pool_xpndd%give_back_pw(rho_elec_rs_xpndd)
CALL pw_pool_release(pw_pool_xpndd)
dielectric%params%times_called = dielectric%params%times_called + 1
@ -590,7 +588,7 @@ CONTAINS
"the simulation cell.")
END IF
CALL pw_pool_create_pw(pw_pool, eps_tmp, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(eps_tmp, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(eps, eps_tmp)
bounds_local = pw_grid%bounds_local
@ -611,7 +609,7 @@ CONTAINS
END DO
CALL pw_mollifier(pw_pool, zeta, x_glbl, y_glbl, z_glbl, eps_tmp, eps)
CALL pw_pool_give_back_pw(pw_pool, eps_tmp)
CALL pw_pool%give_back_pw(eps_tmp)
CALL timestop(handle)
@ -686,7 +684,7 @@ CONTAINS
"the simulation cell.")
END IF
CALL pw_pool_create_pw(pw_pool, eps_tmp, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(eps_tmp, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(eps, eps_tmp)
bounds_local = pw_grid%bounds_local
@ -707,7 +705,7 @@ CONTAINS
END DO
CALL pw_mollifier(pw_pool, zeta, x_glbl, y_glbl, z_glbl, eps_tmp, eps)
CALL pw_pool_give_back_pw(pw_pool, eps_tmp)
CALL pw_pool%give_back_pw(eps_tmp)
CALL timestop(handle)
@ -812,9 +810,9 @@ CONTAINS
CPABORT("The dielectric constant has to be greater than or equal to 1.")
END IF
CALL pw_pool_create_pw(pw_pool, eps_sptldep, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, swch_func, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, dswch_func_drho, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(eps_sptldep, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(swch_func, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(dswch_func_drho, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(eps_sptldep)
CALL pw_zero(swch_func)
CALL pw_zero(dswch_func_drho)
@ -826,9 +824,9 @@ CONTAINS
eps%cr3d = ((swch_func%cr3d - 1.0_dp)*(eps_sptldep%cr3d - 1.0_dp)) + 1.0_dp
deps_drho%cr3d = dswch_func_drho%cr3d*(eps_sptldep%cr3d - 1.0_dp)
CALL pw_pool_give_back_pw(pw_pool, dswch_func_drho)
CALL pw_pool_give_back_pw(pw_pool, swch_func)
CALL pw_pool_give_back_pw(pw_pool, eps_sptldep)
CALL pw_pool%give_back_pw(dswch_func_drho)
CALL pw_pool%give_back_pw(swch_func)
CALL pw_pool%give_back_pw(eps_sptldep)
CALL timestop(handle)
@ -855,7 +853,7 @@ CONTAINS
CALL timeset(routineN, handle)
DO i = 1, 2
CALL pw_pool_create_pw(pw_pool, work_gs(i), &
CALL pw_pool%create_pw(work_gs(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
@ -869,7 +867,7 @@ CONTAINS
END DO
DO i = 1, 2
CALL pw_pool_give_back_pw(pw_pool, work_gs(i))
CALL pw_pool%give_back_pw(work_gs(i))
END DO
CALL timestop(handle)

View file

@ -14,10 +14,8 @@
MODULE dielectric_types
USE kinds, ONLY: dp
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
#include "../base/base_uses.f90"
IMPLICIT NONE
@ -95,18 +93,18 @@ CONTAINS
can_give_back = PRESENT(pw_pool)
IF (can_give_back) can_give_back = ASSOCIATED(pw_pool)
IF (can_give_back) THEN
CALL pw_pool_give_back_pw(pw_pool, dielectric%eps)
CALL pw_pool_give_back_pw(pw_pool, dielectric%deps_drho)
CALL pw_pool%give_back_pw(dielectric%eps)
CALL pw_pool%give_back_pw(dielectric%deps_drho)
DEALLOCATE (dielectric%eps, dielectric%deps_drho)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, dielectric%dln_eps(i))
CALL pw_pool%give_back_pw(dielectric%dln_eps(i))
END DO
ELSE
CALL pw_release(dielectric%eps)
CALL pw_release(dielectric%deps_drho)
CALL dielectric%eps%release()
CALL dielectric%deps_drho%release()
DEALLOCATE (dielectric%eps, dielectric%deps_drho)
DO i = 1, 3
CALL pw_release(dielectric%dln_eps(i))
CALL dielectric%dln_eps(i)%release()
END DO
END IF
CALL dielectric_parameters_dealloc(dielectric%params)

View file

@ -35,9 +35,7 @@ MODULE dirichlet_bc_methods
USE pw_methods, ONLY: pw_axpy,&
pw_zero
USE pw_poisson_types, ONLY: pw_poisson_parameter_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -321,7 +319,7 @@ CONTAINS
tile_maxvals = 0.0_dp
DO k = 1, n_tiles
ALLOCATE (dirichlet_bc%tiles(k)%tile%tile_pw)
CALL pw_pool_create_pw(pw_pool, dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(dirichlet_bc%tiles(k)%tile%tile_pw)
IF ((unit_nr .GT. 0) .AND. verbose) THEN
@ -354,12 +352,12 @@ CONTAINS
NULLIFY (cylinder_pw)
ALLOCATE (cylinder_pw)
CALL pw_pool_create_pw(pw_pool, cylinder_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(cylinder_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(cylinder_pw)
DO k = 1, n_tiles
ALLOCATE (dirichlet_bc%tiles(k)%tile%tile_pw)
CALL pw_pool_create_pw(pw_pool, dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(dirichlet_bc%tiles(k)%tile%tile_pw)
IF ((unit_nr .GT. 0) .AND. verbose) THEN
@ -387,7 +385,7 @@ CONTAINS
"one can increase DELTA_ALPHA (see the reference manual).")
END IF
CALL pw_pool_give_back_pw(pw_pool, cylinder_pw)
CALL pw_pool%give_back_pw(cylinder_pw)
DEALLOCATE (cylinder_pw)
IF ((unit_nr .GT. 0) .AND. verbose) WRITE (unit_nr, '(T3,A)') REPEAT('=', 78)
@ -405,7 +403,7 @@ CONTAINS
DO k = 1, n_tiles
ALLOCATE (dirichlet_bc%tiles(k)%tile%tile_pw)
CALL pw_pool_create_pw(pw_pool, dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(dirichlet_bc%tiles(k)%tile%tile_pw, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(dirichlet_bc%tiles(k)%tile%tile_pw)
IF ((unit_nr .GT. 0) .AND. verbose) THEN

View file

@ -15,10 +15,8 @@
MODULE dirichlet_bc_types
USE kinds, ONLY: dp
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
#include "../base/base_uses.f90"
IMPLICIT NONE
@ -207,14 +205,14 @@ CONTAINS
n_tiles = dbc%n_tiles
IF (PRESENT(pw_pool)) THEN
DO k = 1, n_tiles
CALL pw_pool_give_back_pw(pw_pool, dbc%tiles(k)%tile%tile_pw)
CALL pw_pool%give_back_pw(dbc%tiles(k)%tile%tile_pw)
DEALLOCATE (dbc%tiles(k)%tile%tile_pw)
DEALLOCATE (dbc%tiles(k)%tile)
END DO
DEALLOCATE (dbc%tiles)
ELSE
DO k = 1, n_tiles
CALL pw_release(dbc%tiles(k)%tile%tile_pw)
CALL dbc%tiles(k)%tile%tile_pw%release()
DEALLOCATE (dbc%tiles(k)%tile%tile_pw)
DEALLOCATE (dbc%tiles(k)%tile)
END DO

View file

@ -18,8 +18,6 @@ MODULE mt_util
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_release,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
@ -81,7 +79,7 @@ CONTAINS
END IF
NULLIFY (screen_function)
ALLOCATE (screen_function)
CALL pw_pool_create_pw(pw_pool, screen_function, use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(screen_function, use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(screen_function)
SELECT CASE (method)
@ -89,21 +87,21 @@ CONTAINS
NULLIFY (Vloc, Vlocg)
ALLOCATE (Vloc, Vlocg)
IF (ASSOCIATED(pw_pool_aux)) THEN
CALL pw_pool_create_pw(pw_pool_aux, Vloc, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_aux, Vlocg, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_aux%create_pw(Vloc, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_aux%create_pw(Vlocg, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
ELSE
CALL pw_pool_create_pw(pw_pool, Vloc, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, Vlocg, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(Vloc, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(Vlocg, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END IF
CALL mt0din(Vloc, alpha)
CALL pw_transfer(Vloc, Vlocg)
CALL pw_axpy(Vlocg, screen_function)
IF (ASSOCIATED(pw_pool_aux)) THEN
CALL pw_pool_give_back_pw(pw_pool_aux, Vloc)
CALL pw_pool_give_back_pw(pw_pool_aux, Vlocg)
CALL pw_pool_aux%give_back_pw(Vloc)
CALL pw_pool_aux%give_back_pw(Vlocg)
ELSE
CALL pw_pool_give_back_pw(pw_pool, Vloc)
CALL pw_pool_give_back_pw(pw_pool, Vlocg)
CALL pw_pool%give_back_pw(Vloc)
CALL pw_pool%give_back_pw(Vlocg)
END IF
DEALLOCATE (Vloc, Vlocg)
!

View file

@ -48,8 +48,6 @@ MODULE ps_implicit_methods
pw_poisson_parameter_type,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_release,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
@ -131,7 +129,7 @@ CONTAINS
! v_eps
NULLIFY (ps_implicit_env%v_eps)
ALLOCATE (ps_implicit_env%v_eps)
CALL pw_pool_create_pw(pw_pool, ps_implicit_env%v_eps, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(ps_implicit_env%v_eps, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(ps_implicit_env%v_eps)
! constraint charge
@ -139,12 +137,12 @@ CONTAINS
SELECT CASE (boundary_condition)
CASE (MIXED_PERIODIC_BC)
ALLOCATE (ps_implicit_env%cstr_charge)
CALL pw_pool_create_pw(pw_pool, ps_implicit_env%cstr_charge, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(ps_implicit_env%cstr_charge, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(ps_implicit_env%cstr_charge)
CASE (MIXED_BC)
CALL pw_pool_create(pw_pool_xpndd, pw_grid=dct_pw_grid)
ALLOCATE (ps_implicit_env%cstr_charge)
CALL pw_pool_create_pw(pw_pool_xpndd, ps_implicit_env%cstr_charge, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(ps_implicit_env%cstr_charge, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(ps_implicit_env%cstr_charge)
CALL pw_pool_release(pw_pool_xpndd)
END SELECT
@ -190,7 +188,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE implicit_poisson_solver_periodic(poisson_env, density, v_new, ehartree)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(IN) :: poisson_env
TYPE(pw_type), INTENT(IN) :: density
TYPE(pw_type), INTENT(INOUT) :: v_new
REAL(dp), INTENT(OUT), OPTIONAL :: ehartree
@ -225,12 +223,12 @@ CONTAINS
! check if this is the first scf iteration
IF (times_called .EQ. 0) CALL ps_implicit_initial_guess_create(ps_implicit_env, pw_pool)
CALL pw_pool_create_pw(pw_pool, g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
IF (use_zero_initial_guess) THEN
CALL pw_zero(v_old)
@ -298,12 +296,12 @@ CONTAINS
! compute the extra contribution to the Hamiltonian due to the presence of dielectric
CALL ps_implicit_compute_veps(pw_pool, dielectric, v_new, ps_implicit_env%v_eps)
CALL pw_pool_give_back_pw(pw_pool, g)
CALL pw_pool_give_back_pw(pw_pool, v_old)
CALL pw_pool_give_back_pw(pw_pool, res_old)
CALL pw_pool_give_back_pw(pw_pool, res_new)
CALL pw_pool_give_back_pw(pw_pool, QAinvxres)
CALL pw_pool_give_back_pw(pw_pool, PxQAinvxres)
CALL pw_pool%give_back_pw(g)
CALL pw_pool%give_back_pw(v_old)
CALL pw_pool%give_back_pw(res_old)
CALL pw_pool%give_back_pw(res_new)
CALL pw_pool%give_back_pw(QAinvxres)
CALL pw_pool%give_back_pw(PxQAinvxres)
CALL timestop(handle)
@ -323,7 +321,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE implicit_poisson_solver_neumann(poisson_env, density, v_new, ehartree)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(IN) :: poisson_env
TYPE(pw_type), INTENT(IN) :: density
TYPE(pw_type), INTENT(INOUT) :: v_new
REAL(dp), INTENT(OUT), OPTIONAL :: ehartree
@ -375,15 +373,15 @@ CONTAINS
! check if this is the first scf iteration
IF (times_called .EQ. 0) CALL ps_implicit_initial_guess_create(ps_implicit_env, pw_pool_xpndd)
CALL pw_pool_create_pw(pw_pool_xpndd, g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, density_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_new_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_eps_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(density_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_new_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_eps_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
IF (use_zero_initial_guess) THEN
CALL pw_zero(v_old)
@ -464,15 +462,15 @@ CONTAINS
CALL pw_shrink(neumann_directions, dct_env%dests_shrink, dct_env%srcs_shrink, &
dct_env%bounds_local_shftd, v_eps_xpndd, ps_implicit_env%v_eps)
CALL pw_pool_give_back_pw(pw_pool_xpndd, g)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_old)
CALL pw_pool_give_back_pw(pw_pool_xpndd, res_old)
CALL pw_pool_give_back_pw(pw_pool_xpndd, res_new)
CALL pw_pool_give_back_pw(pw_pool_xpndd, QAinvxres)
CALL pw_pool_give_back_pw(pw_pool_xpndd, PxQAinvxres)
CALL pw_pool_give_back_pw(pw_pool_xpndd, density_xpndd)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_new_xpndd)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_eps_xpndd)
CALL pw_pool_xpndd%give_back_pw(g)
CALL pw_pool_xpndd%give_back_pw(v_old)
CALL pw_pool_xpndd%give_back_pw(res_old)
CALL pw_pool_xpndd%give_back_pw(res_new)
CALL pw_pool_xpndd%give_back_pw(QAinvxres)
CALL pw_pool_xpndd%give_back_pw(PxQAinvxres)
CALL pw_pool_xpndd%give_back_pw(density_xpndd)
CALL pw_pool_xpndd%give_back_pw(v_new_xpndd)
CALL pw_pool_xpndd%give_back_pw(v_eps_xpndd)
CALL pw_pool_release(pw_pool_xpndd)
CALL timestop(handle)
@ -491,7 +489,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE implicit_poisson_solver_mixed_periodic(poisson_env, density, v_new, electric_enthalpy)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(IN) :: poisson_env
TYPE(pw_type), INTENT(IN) :: density
TYPE(pw_type), INTENT(INOUT) :: v_new
REAL(dp), INTENT(OUT), OPTIONAL :: electric_enthalpy
@ -516,7 +514,6 @@ CONTAINS
TYPE(greens_fn_type), POINTER :: green
TYPE(ps_implicit_type), POINTER :: ps_implicit_env
TYPE(pw_grid_type), POINTER :: pw_grid
TYPE(pw_poisson_parameter_type), POINTER :: poisson_params
TYPE(pw_pool_type), POINTER :: pw_pool
TYPE(pw_type) :: Axvbar, g, PxQAinvxres, QAinvxres, &
res_new, res_old, v_old
@ -525,7 +522,6 @@ CONTAINS
pw_pool => poisson_env%pw_pools(poisson_env%pw_level)%pool
pw_grid => pw_pool%pw_grid
poisson_params => poisson_env%parameters
dielectric => poisson_env%implicit_env%dielectric
green => poisson_env%green_fft
ps_implicit_env => poisson_env%implicit_env
@ -534,10 +530,10 @@ CONTAINS
ngpts = pw_grid%ngpts
npts_local = pw_grid%npts_local
bounds_local = pw_grid%bounds_local
tol = poisson_params%ps_implicit_params%tol
omega = poisson_params%ps_implicit_params%omega
max_iter = poisson_params%ps_implicit_params%max_iter
use_zero_initial_guess = poisson_params%ps_implicit_params%zero_initial_guess
tol = poisson_env%parameters%ps_implicit_params%tol
omega = poisson_env%parameters%ps_implicit_params%omega
max_iter = poisson_env%parameters%ps_implicit_params%max_iter
use_zero_initial_guess = poisson_env%parameters%ps_implicit_params%zero_initial_guess
times_called = ps_implicit_env%times_called
n_contacts = SIZE(ps_implicit_env%contacts)
@ -585,13 +581,13 @@ CONTAINS
ALLOCATE (v_new1D(data_size))
ALLOCATE (Bxv_new(n_tiles_tot))
CALL pw_pool_create_pw(pw_pool, g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, Axvbar, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(Axvbar, use_data=REALDATA3D, in_space=REALSPACE)
IF (use_zero_initial_guess) THEN
CALL pw_zero(v_old)
@ -678,7 +674,7 @@ CONTAINS
END IF
! verbose output
IF (poisson_params%dbc_params%verbose_output) THEN
IF (poisson_env%parameters%dbc_params%verbose_output) THEN
v_new1D(ps_implicit_env%idx_1dto3d) = RESHAPE(v_new%cr3d, (/data_size/))
CALL DGEMV('N', n_tiles_tot, data_size, 1.0_dp, B, n_tiles_tot, v_new1D, 1, 0.0_dp, Bxv_new, 1)
CALL pw_grid%para%group%sum(Bxv_new)
@ -725,13 +721,13 @@ CONTAINS
! compute the extra contribution to the Hamiltonian due to the presence of dielectric
CALL ps_implicit_compute_veps(pw_pool, dielectric, v_new, ps_implicit_env%v_eps)
CALL pw_pool_give_back_pw(pw_pool, g)
CALL pw_pool_give_back_pw(pw_pool, v_old)
CALL pw_pool_give_back_pw(pw_pool, res_old)
CALL pw_pool_give_back_pw(pw_pool, res_new)
CALL pw_pool_give_back_pw(pw_pool, QAinvxres)
CALL pw_pool_give_back_pw(pw_pool, PxQAinvxres)
CALL pw_pool_give_back_pw(pw_pool, Axvbar)
CALL pw_pool%give_back_pw(g)
CALL pw_pool%give_back_pw(v_old)
CALL pw_pool%give_back_pw(res_old)
CALL pw_pool%give_back_pw(res_new)
CALL pw_pool%give_back_pw(QAinvxres)
CALL pw_pool%give_back_pw(PxQAinvxres)
CALL pw_pool%give_back_pw(Axvbar)
CALL timestop(handle)
@ -750,7 +746,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE implicit_poisson_solver_mixed(poisson_env, density, v_new, electric_enthalpy)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(IN) :: poisson_env
TYPE(pw_type), INTENT(IN) :: density
TYPE(pw_type), INTENT(INOUT) :: v_new
REAL(dp), INTENT(OUT), OPTIONAL :: electric_enthalpy
@ -776,7 +772,6 @@ CONTAINS
TYPE(greens_fn_type), POINTER :: green
TYPE(ps_implicit_type), POINTER :: ps_implicit_env
TYPE(pw_grid_type), POINTER :: dct_pw_grid, pw_grid
TYPE(pw_poisson_parameter_type), POINTER :: poisson_params
TYPE(pw_pool_type), POINTER :: pw_pool, pw_pool_xpndd
TYPE(pw_type) :: Axvbar, density_xpndd, g, PxQAinvxres, &
QAinvxres, res_new, res_old, &
@ -786,7 +781,6 @@ CONTAINS
pw_pool => poisson_env%pw_pools(poisson_env%pw_level)%pool
pw_grid => pw_pool%pw_grid
poisson_params => poisson_env%parameters
dielectric => poisson_env%implicit_env%dielectric
green => poisson_env%green_fft
ps_implicit_env => poisson_env%implicit_env
@ -797,11 +791,11 @@ CONTAINS
ngpts = dct_pw_grid%ngpts
npts_local = dct_pw_grid%npts_local
bounds_local = dct_pw_grid%bounds_local
tol = poisson_params%ps_implicit_params%tol
omega = poisson_params%ps_implicit_params%omega
max_iter = poisson_params%ps_implicit_params%max_iter
use_zero_initial_guess = poisson_params%ps_implicit_params%zero_initial_guess
neumann_directions = poisson_params%ps_implicit_params%neumann_directions
tol = poisson_env%parameters%ps_implicit_params%tol
omega = poisson_env%parameters%ps_implicit_params%omega
max_iter = poisson_env%parameters%ps_implicit_params%max_iter
use_zero_initial_guess = poisson_env%parameters%ps_implicit_params%zero_initial_guess
neumann_directions = poisson_env%parameters%ps_implicit_params%neumann_directions
times_called = ps_implicit_env%times_called
SELECT CASE (neumann_directions)
@ -860,16 +854,16 @@ CONTAINS
ALLOCATE (v_new1D(data_size))
ALLOCATE (Bxv_new(n_tiles_tot))
CALL pw_pool_create_pw(pw_pool_xpndd, g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, Axvbar, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, density_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_new_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool_xpndd, v_eps_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(g, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(res_old, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(res_new, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(QAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(PxQAinvxres, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(Axvbar, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(density_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_new_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(v_eps_xpndd, use_data=REALDATA3D, in_space=REALSPACE)
IF (use_zero_initial_guess) THEN
CALL pw_zero(v_old)
@ -964,7 +958,7 @@ CONTAINS
END IF
! verbose output
IF (poisson_params%dbc_params%verbose_output) THEN
IF (poisson_env%parameters%dbc_params%verbose_output) THEN
v_new1D(ps_implicit_env%idx_1dto3d) = RESHAPE(v_new_xpndd%cr3d, (/data_size/))
CALL DGEMV('N', n_tiles_tot, data_size, 1.0_dp, B, n_tiles_tot, v_new1D, 1, 0.0_dp, Bxv_new, 1)
CALL pw_grid%para%group%sum(Bxv_new)
@ -1016,16 +1010,16 @@ CONTAINS
CALL pw_shrink(neumann_directions, dct_env%dests_shrink, dct_env%srcs_shrink, &
dct_env%bounds_local_shftd, v_eps_xpndd, ps_implicit_env%v_eps)
CALL pw_pool_give_back_pw(pw_pool_xpndd, g)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_old)
CALL pw_pool_give_back_pw(pw_pool_xpndd, res_old)
CALL pw_pool_give_back_pw(pw_pool_xpndd, res_new)
CALL pw_pool_give_back_pw(pw_pool_xpndd, QAinvxres)
CALL pw_pool_give_back_pw(pw_pool_xpndd, PxQAinvxres)
CALL pw_pool_give_back_pw(pw_pool_xpndd, Axvbar)
CALL pw_pool_give_back_pw(pw_pool_xpndd, density_xpndd)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_new_xpndd)
CALL pw_pool_give_back_pw(pw_pool_xpndd, v_eps_xpndd)
CALL pw_pool_xpndd%give_back_pw(g)
CALL pw_pool_xpndd%give_back_pw(v_old)
CALL pw_pool_xpndd%give_back_pw(res_old)
CALL pw_pool_xpndd%give_back_pw(res_new)
CALL pw_pool_xpndd%give_back_pw(QAinvxres)
CALL pw_pool_xpndd%give_back_pw(PxQAinvxres)
CALL pw_pool_xpndd%give_back_pw(Axvbar)
CALL pw_pool_xpndd%give_back_pw(density_xpndd)
CALL pw_pool_xpndd%give_back_pw(v_new_xpndd)
CALL pw_pool_xpndd%give_back_pw(v_eps_xpndd)
CALL pw_pool_release(pw_pool_xpndd)
CALL timestop(handle)
@ -1054,7 +1048,7 @@ CONTAINS
n_tiles_tot = SIZE(ps_implicit_env%v_D)
NULLIFY (ps_implicit_env%initial_guess)
ALLOCATE (ps_implicit_env%initial_guess)
CALL pw_pool_create_pw(pw_pool, ps_implicit_env%initial_guess, &
CALL pw_pool%create_pw(ps_implicit_env%initial_guess, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(ps_implicit_env%initial_guess)
ALLOCATE (ps_implicit_env%initial_lambda(n_tiles_tot))
@ -1199,7 +1193,7 @@ CONTAINS
indx2 = indx1 + n_tiles - 1
DO i = 1, n_tiles
CALL pw_pool_create_pw(pw_pool_xpndd, pw_in, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(pw_in, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_expand(neumann_directions, &
dct_env%recv_msgs_bnds, dct_env%dests_expand, dct_env%srcs_expand, &
dct_env%flipg_stat, dct_env%bounds_shftd, &
@ -1209,7 +1203,7 @@ CONTAINS
CALL pw_scale(pw_in, 1.0_dp/(vol_scfac*tile_volume)) ! normalize tile_pw
ps_implicit_env%Bt(ps_implicit_env%idx_1dto3d, indx1 + i - 1) = RESHAPE(pw_in%cr3d, (/data_size/))
CALL pw_pool_create_pw(pw_pool_xpndd, pw_out, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_xpndd%create_pw(pw_out, use_data=REALDATA3D, in_space=REALSPACE)
CALL apply_inv_laplace_operator_dct(pw_pool_xpndd, green, pw_in, pw_out)
QAinvxBt(ps_implicit_env%idx_1dto3d, indx1 + i - 1) = RESHAPE(pw_out%cr3d, (/data_size/))
! the electrostatic potential has opposite sign by internal convention
@ -1218,8 +1212,8 @@ CONTAINS
ps_implicit_env%frequency(indx1 + i - 1) = ps_implicit_env%contacts(j)%dirichlet_bc%frequency
ps_implicit_env%phase(indx1 + i - 1) = ps_implicit_env%contacts(j)%dirichlet_bc%phase
CALL pw_pool_give_back_pw(pw_pool_xpndd, pw_in)
CALL pw_pool_give_back_pw(pw_pool_xpndd, pw_out)
CALL pw_pool_xpndd%give_back_pw(pw_in)
CALL pw_pool_xpndd%give_back_pw(pw_out)
END DO
indx1 = indx2 + 1
END DO
@ -1331,14 +1325,14 @@ CONTAINS
n_tiles = ps_implicit_env%contacts(j)%dirichlet_bc%n_tiles
indx2 = indx1 + n_tiles - 1
DO i = 1, n_tiles
CALL pw_pool_create_pw(pw_pool_orig, pw_in, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_orig%create_pw(pw_in, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(ps_implicit_env%contacts(j)%dirichlet_bc%tiles(i)%tile%tile_pw, pw_in)
tile_volume = ps_implicit_env%contacts(j)%dirichlet_bc%tiles(i)%tile%volume
CALL pw_scale(pw_in, 1.0_dp/tile_volume) ! normalize tile_pw
ps_implicit_env%Bt(ps_implicit_env%idx_1dto3d, indx1 + i - 1) = RESHAPE(pw_in%cr3d, (/data_size/))
CALL pw_pool_create_pw(pw_pool_orig, pw_out, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_orig%create_pw(pw_out, use_data=REALDATA3D, in_space=REALSPACE)
CALL apply_inv_laplace_operator_fft(pw_pool_orig, green, pw_in, pw_out)
QAinvxBt(ps_implicit_env%idx_1dto3d, indx1 + i - 1) = RESHAPE(pw_out%cr3d, (/data_size/))
! the electrostatic potential has opposite sign by internal convention
@ -1347,8 +1341,8 @@ CONTAINS
ps_implicit_env%frequency(indx1 + i - 1) = ps_implicit_env%contacts(j)%dirichlet_bc%frequency
ps_implicit_env%phase(indx1 + i - 1) = ps_implicit_env%contacts(j)%dirichlet_bc%phase
CALL pw_pool_give_back_pw(pw_pool_orig, pw_in)
CALL pw_pool_give_back_pw(pw_pool_orig, pw_out)
CALL pw_pool_orig%give_back_pw(pw_in)
CALL pw_pool_orig%give_back_pw(pw_out)
END DO
indx1 = indx2 + 1
END DO
@ -1444,7 +1438,7 @@ CONTAINS
CALL timeset(routineN, handle)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dv(i), &
CALL pw_pool%create_pw(dv(i), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
@ -1456,7 +1450,7 @@ CONTAINS
END ASSOCIATE
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, dv(i))
CALL pw_pool%give_back_pw(dv(i))
END DO
CALL timestop(handle)
@ -1495,7 +1489,7 @@ CONTAINS
pw_grid => pw_pool%pw_grid
ng = SIZE(pw_grid%gsq)
CALL pw_pool_create_pw(pw_pool, pw_in_gs, &
CALL pw_pool%create_pw(pw_in_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(pw_in, pw_in_gs)
@ -1504,7 +1498,7 @@ CONTAINS
END DO
CALL pw_transfer(pw_in_gs, pw_out)
CALL pw_pool_give_back_pw(pw_pool, pw_in_gs)
CALL pw_pool%give_back_pw(pw_in_gs)
CALL timestop(handle)
@ -1544,7 +1538,7 @@ CONTAINS
pw_grid => pw_pool%pw_grid
ng = SIZE(pw_grid%gsq)
CALL pw_pool_create_pw(pw_pool, pw_in_gs, &
CALL pw_pool%create_pw(pw_in_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(pw_in, pw_in_gs)
@ -1553,7 +1547,7 @@ CONTAINS
END DO
CALL pw_transfer(pw_in_gs, pw_out)
CALL pw_pool_give_back_pw(pw_pool, pw_in_gs)
CALL pw_pool%give_back_pw(pw_in_gs)
CALL timestop(handle)
@ -1593,7 +1587,7 @@ CONTAINS
ng = SIZE(pw_in%pw_grid%gsq)
have_g0 = green%influence_fn%pw_grid%have_g0
CALL pw_pool_create_pw(pw_pool, pw_in_gs, &
CALL pw_pool%create_pw(pw_in_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(pw_in, pw_in_gs)
@ -1608,7 +1602,7 @@ CONTAINS
CALL pw_transfer(pw_in_gs, pw_out)
CALL pw_pool_give_back_pw(pw_pool, pw_in_gs)
CALL pw_pool%give_back_pw(pw_in_gs)
CALL timestop(handle)
@ -1649,7 +1643,7 @@ CONTAINS
ng = SIZE(pw_in%pw_grid%gsq)
have_g0 = green%dct_influence_fn%pw_grid%have_g0
CALL pw_pool_create_pw(pw_pool, pw_in_gs, &
CALL pw_pool%create_pw(pw_in_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(pw_in, pw_in_gs)
@ -1664,7 +1658,7 @@ CONTAINS
CALL pw_transfer(pw_in_gs, pw_out)
CALL pw_pool_give_back_pw(pw_pool, pw_in_gs)
CALL pw_pool%give_back_pw(pw_in_gs)
CALL timestop(handle)
@ -1696,14 +1690,14 @@ CONTAINS
CALL timeset(routineN, handle)
CALL pw_pool_create_pw(pw_pool, Pxv, &
CALL pw_pool%create_pw(Pxv, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL apply_P_operator(pw_pool, dielectric, v, Pxv)
CALL apply_laplace_operator_fft(pw_pool, green, v, density)
CALL pw_axpy(Pxv, density)
CALL pw_pool_give_back_pw(pw_pool, Pxv)
CALL pw_pool%give_back_pw(Pxv)
CALL timestop(handle)
@ -1737,14 +1731,14 @@ CONTAINS
CALL timeset(routineN, handle)
CALL pw_pool_create_pw(pw_pool, Pxv, &
CALL pw_pool%create_pw(Pxv, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL apply_P_operator(pw_pool, dielectric, v, Pxv)
CALL apply_laplace_operator_dct(pw_pool, green, v, density)
CALL pw_axpy(Pxv, density)
CALL pw_pool_give_back_pw(pw_pool, Pxv)
CALL pw_pool%give_back_pw(Pxv)
CALL timestop(handle)
@ -1782,10 +1776,10 @@ CONTAINS
eightpi = 2*fourpi
CALL pw_pool_create_pw(pw_pool, dv2, &
CALL pw_pool%create_pw(dv2, &
use_data=REALDATA3D, in_space=REALSPACE)
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dv(i), &
CALL pw_pool%create_pw(dv(i), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
@ -1796,9 +1790,9 @@ CONTAINS
v_eps%cr3d = -(1.0_dp/eightpi)*(dv2%cr3d*dielectric%deps_drho%cr3d)
CALL pw_pool_give_back_pw(pw_pool, dv2)
CALL pw_pool%give_back_pw(dv2)
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, dv(i))
CALL pw_pool%give_back_pw(dv(i))
END DO
CALL timestop(handle)

View file

@ -21,10 +21,8 @@ MODULE ps_implicit_types
USE dirichlet_bc_types, ONLY: dbc_release,&
dirichlet_bc_p_type
USE kinds, ONLY: dp
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
#include "../base/base_uses.f90"
IMPLICIT NONE
@ -101,16 +99,16 @@ CONTAINS
do_dbc_cube = ps_implicit_env%do_dbc_cube
IF (can_give_back) THEN
CALL pw_pool_give_back_pw(pw_pool, ps_implicit_env%initial_guess)
CALL pw_pool_give_back_pw(pw_pool, ps_implicit_env%v_eps)
CALL pw_pool_give_back_pw(pw_pool, ps_implicit_env%cstr_charge)
CALL pw_pool%give_back_pw(ps_implicit_env%initial_guess)
CALL pw_pool%give_back_pw(ps_implicit_env%v_eps)
CALL pw_pool%give_back_pw(ps_implicit_env%cstr_charge)
DEALLOCATE (ps_implicit_env%initial_guess, ps_implicit_env%v_eps, ps_implicit_env%cstr_charge)
CALL dbc_release(ps_implicit_env%contacts, do_dbc_cube, pw_pool=pw_pool)
ELSE
CALL pw_release(ps_implicit_env%initial_guess)
CALL pw_release(ps_implicit_env%v_eps)
CALL ps_implicit_env%initial_guess%release()
CALL ps_implicit_env%v_eps%release()
IF (ASSOCIATED(ps_implicit_env%cstr_charge)) THEN
CALL pw_release(ps_implicit_env%cstr_charge)
CALL ps_implicit_env%cstr_charge%release()
DEALLOCATE (ps_implicit_env%cstr_charge)
END IF
DEALLOCATE (ps_implicit_env%initial_guess, ps_implicit_env%v_eps)

View file

@ -50,9 +50,7 @@ MODULE pw_poisson_methods
greens_fn_type, pw_green_create, pw_green_release, pw_poisson_analytic, &
pw_poisson_implicit, pw_poisson_mt, pw_poisson_multipole, pw_poisson_none, &
pw_poisson_parameter_type, pw_poisson_periodic, pw_poisson_type, pw_poisson_wavelet
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type,&
pw_pools_copy,&
pw_pools_dealloc
@ -86,13 +84,10 @@ CONTAINS
!> none
! **************************************************************************************************
SUBROUTINE pw_poisson_cleanup(poisson_env)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(INOUT) :: poisson_env
TYPE(pw_pool_type), POINTER :: pw_pool
CPASSERT(ASSOCIATED(poisson_env))
CPASSERT(poisson_env%ref_count > 0)
NULLIFY (pw_pool)
IF (ASSOCIATED(poisson_env%pw_pools)) THEN
pw_pool => poisson_env%pw_pools(poisson_env%pw_level)%pool
@ -111,14 +106,12 @@ CONTAINS
!> \author fawzi
! **************************************************************************************************
SUBROUTINE pw_poisson_check(poisson_env)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(INOUT) :: poisson_env
LOGICAL :: rebuild
TYPE(greens_fn_type), POINTER :: green
TYPE(ps_wavelet_type), POINTER :: wavelet
CPASSERT(ASSOCIATED(poisson_env))
CPASSERT(poisson_env%ref_count > 0)
CPASSERT(ASSOCIATED(poisson_env%pw_pools))
CPASSERT(poisson_env%pw_level >= LBOUND(poisson_env%pw_pools, 1))
CPASSERT(poisson_env%pw_level <= UBOUND(poisson_env%pw_pools, 1))
@ -174,7 +167,7 @@ CONTAINS
!> rebuilds if poisson_env%rebuild is true
! **************************************************************************************************
SUBROUTINE pw_poisson_rebuild(poisson_env, density)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(INOUT) :: poisson_env
TYPE(pw_type), INTENT(IN), OPTIONAL :: density
CHARACTER(len=*), PARAMETER :: routineN = 'pw_poisson_rebuild'
@ -183,8 +176,6 @@ CONTAINS
CALL timeset(routineN, handle)
CPASSERT(ASSOCIATED(poisson_env))
CPASSERT(poisson_env%ref_count > 0)
CPASSERT(ASSOCIATED(poisson_env%pw_pools))
IF (poisson_env%rebuild) THEN
@ -243,7 +234,7 @@ CONTAINS
SUBROUTINE pw_poisson_solve(poisson_env, density, ehartree, vhartree, &
dvhartree, h_stress, rho_core, greenfn, aux_density)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(INOUT) :: poisson_env
TYPE(pw_type), INTENT(IN) :: density
REAL(kind=dp), INTENT(out), OPTIONAL :: ehartree
TYPE(pw_type), INTENT(INOUT), OPTIONAL :: vhartree
@ -259,19 +250,15 @@ CONTAINS
LOGICAL :: has_dielectric
REAL(KIND=dp) :: ffa
TYPE(pw_grid_type), POINTER :: pw_grid
TYPE(pw_poisson_parameter_type), POINTER :: poisson_params
TYPE(pw_pool_type), POINTER :: pw_pool
TYPE(pw_type) :: dvg(3), dvg_aux(3), influence_fn, rhog, &
rhog_aux, rhor, tmpg, vhartree_rs
CALL timeset(routineN, handle)
CPASSERT(ASSOCIATED(poisson_env))
CPASSERT(poisson_env%ref_count > 0)
CALL pw_poisson_rebuild(poisson_env, density)
poisson_params => poisson_env%parameters
has_dielectric = poisson_params%has_dielectric
has_dielectric = poisson_env%parameters%has_dielectric
! point pw
pw_pool => poisson_env%pw_pools(poisson_env%pw_level)%pool
@ -281,9 +268,9 @@ CONTAINS
CPABORT("vhartree has a different grid than the poisson solver")
END IF
! density in G space
CALL pw_pool_create_pw(pw_pool, rhog, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(rhog, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
IF (PRESENT(aux_density)) THEN
CALL pw_pool_create_pw(pw_pool, rhog_aux, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(rhog_aux, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END IF
SELECT CASE (poisson_env%used_grid)
@ -297,7 +284,7 @@ CONTAINS
CALL pw_transfer(aux_density, rhog_aux)
END IF
IF (PRESENT(ehartree) .AND. (.NOT. PRESENT(vhartree))) THEN
CALL pw_pool_create_pw(pw_pool, tmpg, use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(tmpg, use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rhog, tmpg)
END IF
@ -321,13 +308,13 @@ CONTAINS
END IF
ELSE IF (PRESENT(ehartree)) THEN
ehartree = 0.5_dp*pw_integral_ab(rhog, tmpg)
CALL pw_pool_give_back_pw(pw_pool, tmpg)
CALL pw_pool%give_back_pw(tmpg)
END IF
CASE (PS_IMPLICIT)
IF (has_dielectric .AND. PRESENT(rho_core)) THEN
SELECT CASE (poisson_params%ps_implicit_params%boundary_condition)
SELECT CASE (poisson_env%parameters%ps_implicit_params%boundary_condition)
CASE (PERIODIC_BC, MIXED_PERIODIC_BC)
CALL dielectric_compute(poisson_env%implicit_env%dielectric, &
poisson_env%diel_rs_grid, &
@ -338,7 +325,7 @@ CONTAINS
poisson_env%diel_rs_grid, &
poisson_env%pw_pools(poisson_env%pw_level)%pool, &
poisson_env%dct_pw_grid, &
poisson_params%ps_implicit_params%neumann_directions, &
poisson_env%parameters%ps_implicit_params%neumann_directions, &
poisson_env%implicit_env%dct_env%recv_msgs_bnds, &
poisson_env%implicit_env%dct_env%dests_expand, &
poisson_env%implicit_env%dct_env%srcs_expand, &
@ -348,11 +335,11 @@ CONTAINS
END SELECT
END IF
CALL pw_pool_create_pw(pw_pool, rhor, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, vhartree_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(rhor, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(vhartree_rs, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(density, rhor)
SELECT CASE (poisson_params%ps_implicit_params%boundary_condition)
SELECT CASE (poisson_env%parameters%ps_implicit_params%boundary_condition)
CASE (PERIODIC_BC)
CALL implicit_poisson_solver_periodic(poisson_env, rhor, vhartree_rs, &
ehartree=ehartree)
@ -373,8 +360,8 @@ CONTAINS
CPABORT("No stress tensor is implemented for the implicit Poisson solver.")
END IF
CALL pw_pool_give_back_pw(pw_pool, rhor)
CALL pw_pool_give_back_pw(pw_pool, vhartree_rs)
CALL pw_pool%give_back_pw(rhor)
CALL pw_pool%give_back_pw(vhartree_rs)
CASE DEFAULT
CALL cp_abort(__LOCATION__, &
@ -384,7 +371,7 @@ CONTAINS
CASE (use_rs_grid)
CALL pw_pool_create_pw(pw_pool, rhor, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(rhor, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(density, rhor)
CALL cp2k_distribution_to_z_slices(rhor, poisson_env%wavelet, rhor%pw_grid)
CALL ps_wavelet_solve(poisson_env%wavelet, rhor%pw_grid)
@ -400,21 +387,21 @@ CONTAINS
IF (PRESENT(h_stress) .OR. PRESENT(dvhartree)) THEN
CALL pw_transfer(rhor, rhog)
END IF
CALL pw_pool_give_back_pw(pw_pool, rhor)
CALL pw_pool%give_back_pw(rhor)
END SELECT
! do we need to calculate the derivative of the potential?
IF (PRESENT(h_stress) .OR. PRESENT(dvhartree)) THEN
DO i = 1, 3
CALL pw_pool_create_pw(pw_pool, dvg(i), use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(dvg(i), use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
n = 0
n(i) = 1
CALL pw_copy(rhog, dvg(i))
CALL pw_derive(dvg(i), n)
IF (PRESENT(aux_density)) THEN
CALL pw_pool_create_pw(pw_pool, dvg_aux(i), use_data=COMPLEXDATA1D, &
CALL pw_pool%create_pw(dvg_aux(i), use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rhog_aux, dvg_aux(i))
CALL pw_derive(dvg_aux(i), n)
@ -507,16 +494,16 @@ CONTAINS
END IF
DO i = 1, 3
CALL pw_pool_give_back_pw(pw_pool, dvg(i))
CALL pw_pool%give_back_pw(dvg(i))
IF (PRESENT(aux_density)) THEN
CALL pw_pool_give_back_pw(pw_pool, dvg_aux(i))
CALL pw_pool%give_back_pw(dvg_aux(i))
END IF
END DO
END IF
CALL pw_pool_give_back_pw(pw_pool, rhog)
CALL pw_pool%give_back_pw(rhog)
IF (PRESENT(aux_density)) THEN
CALL pw_pool_give_back_pw(pw_pool, rhog_aux)
CALL pw_pool%give_back_pw(rhog_aux)
END IF
CALL timestop(handle)
@ -546,7 +533,7 @@ CONTAINS
SUBROUTINE pw_poisson_set(poisson_env, cell_hmat, parameters, pw_pools, use_level, &
mt_super_ref_pw_grid, dct_pw_grid, force_rebuild)
TYPE(pw_poisson_type), POINTER :: poisson_env
TYPE(pw_poisson_type), INTENT(INOUT) :: poisson_env
REAL(KIND=dp), DIMENSION(3, 3), INTENT(IN), &
OPTIONAL :: cell_hmat
TYPE(pw_poisson_parameter_type), INTENT(IN), &

View file

@ -42,8 +42,6 @@ MODULE pw_poisson_types
USE pw_grid_types, ONLY: pw_grid_type
USE pw_grids, ONLY: pw_grid_release
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
pw_pool_release,&
pw_pool_type,&
@ -51,7 +49,6 @@ MODULE pw_poisson_types
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA1D,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE realspace_grid_types, ONLY: realspace_grid_type,&
rs_grid_release
@ -64,8 +61,6 @@ MODULE pw_poisson_types
CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'pw_poisson_types'
PUBLIC :: pw_poisson_type
PUBLIC :: pw_poisson_create, pw_poisson_retain, &
pw_poisson_release
PUBLIC :: greens_fn_type, pw_green_create, &
pw_green_release
PUBLIC :: pw_poisson_parameter_type
@ -127,7 +122,6 @@ MODULE pw_poisson_types
!> \author fawzi
! **************************************************************************************************
TYPE pw_poisson_type
INTEGER :: ref_count = 0
INTEGER :: pw_level = 0
INTEGER :: method = pw_poisson_none
INTEGER :: used_grid = 0
@ -141,6 +135,9 @@ MODULE pw_poisson_types
TYPE(ps_implicit_type), POINTER :: implicit_env => NULL()
TYPE(pw_grid_type), POINTER :: dct_pw_grid => NULL()
TYPE(realspace_grid_type), POINTER :: diel_rs_grid => NULL()
CONTAINS
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: create => pw_poisson_create
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: release => pw_poisson_release
END TYPE pw_poisson_type
! **************************************************************************************************
@ -273,7 +270,7 @@ CONTAINS
! allocate influence function,...
SELECT CASE (green%method)
CASE (PERIODIC3D, ANALYTIC2D, ANALYTIC1D, ANALYTIC0D, MT2D, MT1D, MT0D, MULTIPOLE0D, PS_IMPLICIT)
CALL pw_pool_create_pw(pw_pool, green%influence_fn, &
CALL pw_pool%create_pw(green%influence_fn, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
IF (poisson_params%ewald_type == do_ewald_spme) THEN
@ -285,7 +282,7 @@ CONTAINS
CALL spme_coeff_calculate(n, green%p3m_coeff)
NULLIFY (green%p3m_charge)
ALLOCATE (green%p3m_charge)
CALL pw_pool_create_pw(pw_pool, green%p3m_charge, use_data=REALDATA1D, &
CALL pw_pool%create_pw(green%p3m_charge, use_data=REALDATA1D, &
in_space=RECIPROCALSPACE)
CALL influence_factor(green)
CALL calc_p3m_charge(green)
@ -305,8 +302,8 @@ CONTAINS
CALL pw_pool_create(pw_pool_xpndd, pw_grid=dct_pw_grid)
NULLIFY (green%dct_influence_fn)
ALLOCATE (green%dct_influence_fn)
CALL pw_pool_create_pw(pw_pool_xpndd, green%dct_influence_fn, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_xpndd%create_pw(green%dct_influence_fn, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_release(pw_pool_xpndd)
END IF
END SELECT
@ -431,31 +428,31 @@ CONTAINS
can_give_back = PRESENT(pw_pool)
IF (can_give_back) can_give_back = ASSOCIATED(pw_pool)
IF (can_give_back) THEN
CALL pw_pool_give_back_pw(pw_pool, gftype%influence_fn)
CALL pw_pool%give_back_pw(gftype%influence_fn)
IF (ASSOCIATED(gftype%dct_influence_fn)) THEN
CALL pw_pool_give_back_pw(pw_pool, gftype%dct_influence_fn)
CALL pw_pool%give_back_pw(gftype%dct_influence_fn)
DEALLOCATE (gftype%dct_influence_fn)
END IF
IF (ASSOCIATED(gftype%screen_fn)) THEN
CALL pw_pool_give_back_pw(pw_pool, gftype%screen_fn)
CALL pw_pool%give_back_pw(gftype%screen_fn)
DEALLOCATE (gftype%screen_fn)
END IF
IF (ASSOCIATED(gftype%p3m_charge)) THEN
CALL pw_pool_give_back_pw(pw_pool, gftype%p3m_charge)
CALL pw_pool%give_back_pw(gftype%p3m_charge)
DEALLOCATE (gftype%p3m_charge)
END IF
ELSE
CALL pw_release(gftype%influence_fn)
CALL gftype%influence_fn%release()
IF (ASSOCIATED(gftype%dct_influence_fn)) THEN
CALL pw_release(gftype%dct_influence_fn)
CALL gftype%dct_influence_fn%release()
DEALLOCATE (gftype%dct_influence_fn)
END IF
IF (ASSOCIATED(gftype%screen_fn)) THEN
CALL pw_release(gftype%screen_fn)
CALL gftype%screen_fn%release()
DEALLOCATE (gftype%screen_fn)
END IF
IF (ASSOCIATED(gftype%p3m_charge)) THEN
CALL pw_release(gftype%p3m_charge)
CALL gftype%p3m_charge%release()
DEALLOCATE (gftype%p3m_charge)
END IF
END IF
@ -568,27 +565,13 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE pw_poisson_create(poisson_env)
TYPE(pw_poisson_type), POINTER :: poisson_env
CLASS(pw_poisson_type), INTENT(INOUT) :: poisson_env
CPASSERT(.NOT. ASSOCIATED(poisson_env))
ALLOCATE (poisson_env)
poisson_env%ref_count = 1
! Cleanup a potential previous poisson_env
CALL poisson_env%release()
END SUBROUTINE pw_poisson_create
! **************************************************************************************************
!> \brief retains the pw_poisson_env
!> \param poisson_env ...
!> \author fawzi
! **************************************************************************************************
SUBROUTINE pw_poisson_retain(poisson_env)
TYPE(pw_poisson_type), POINTER :: poisson_env
CPASSERT(ASSOCIATED(poisson_env))
CPASSERT(poisson_env%ref_count > 0)
poisson_env%ref_count = poisson_env%ref_count + 1
END SUBROUTINE pw_poisson_retain
! **************************************************************************************************
!> \brief releases the poisson solver
!> \param poisson_env ...
@ -598,34 +581,25 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE pw_poisson_release(poisson_env)
TYPE(pw_poisson_type), POINTER :: poisson_env
CLASS(pw_poisson_type), INTENT(INOUT) :: poisson_env
IF (ASSOCIATED(poisson_env)) THEN
CPASSERT(poisson_env%ref_count > 0)
poisson_env%ref_count = poisson_env%ref_count - 1
IF (poisson_env%ref_count == 0) THEN
IF (ASSOCIATED(poisson_env%pw_pools)) THEN
CALL pw_pools_dealloc(poisson_env%pw_pools)
END IF
IF (ASSOCIATED(poisson_env%green_fft)) THEN
CALL pw_green_release(poisson_env%green_fft)
DEALLOCATE (poisson_env%green_fft)
END IF
CALL pw_grid_release(poisson_env%mt_super_ref_pw_grid)
CALL ps_wavelet_release(poisson_env%wavelet)
CALL ps_implicit_release(poisson_env%implicit_env, &
poisson_env%parameters%ps_implicit_params)
CALL pw_grid_release(poisson_env%dct_pw_grid)
IF (ASSOCIATED(poisson_env%diel_rs_grid)) THEN
CALL rs_grid_release(poisson_env%diel_rs_grid)
DEALLOCATE (poisson_env%diel_rs_grid)
END IF
DEALLOCATE (poisson_env)
END IF
IF (ASSOCIATED(poisson_env%pw_pools)) THEN
CALL pw_pools_dealloc(poisson_env%pw_pools)
END IF
IF (ASSOCIATED(poisson_env%green_fft)) THEN
CALL pw_green_release(poisson_env%green_fft)
DEALLOCATE (poisson_env%green_fft)
END IF
CALL pw_grid_release(poisson_env%mt_super_ref_pw_grid)
CALL ps_wavelet_release(poisson_env%wavelet)
CALL ps_implicit_release(poisson_env%implicit_env, &
poisson_env%parameters%ps_implicit_params)
CALL pw_grid_release(poisson_env%dct_pw_grid)
IF (ASSOCIATED(poisson_env%diel_rs_grid)) THEN
CALL rs_grid_release(poisson_env%diel_rs_grid)
DEALLOCATE (poisson_env%diel_rs_grid)
END IF
NULLIFY (poisson_env)
END SUBROUTINE pw_poisson_release

View file

@ -27,8 +27,6 @@ MODULE pw_pool_types
cp_sll_3d_r_insert_el, cp_sll_3d_r_next, cp_sll_3d_r_rm_first_el, cp_sll_3d_r_type, &
cp_sll_pw_dealloc, cp_sll_pw_get_first_el, cp_sll_pw_get_length, cp_sll_pw_insert_el, &
cp_sll_pw_next, cp_sll_pw_rm_first_el, cp_sll_pw_type
USE cp_log_handling, ONLY: cp_get_default_logger,&
cp_logger_type
USE kinds, ONLY: dp
USE pw_grid_types, ONLY: pw_grid_type
USE pw_grids, ONLY: pw_grid_compare,&
@ -38,8 +36,8 @@ MODULE pw_pool_types
COMPLEXDATA3D,&
REALDATA1D,&
REALDATA3D,&
pw_create,&
pw_release,&
REALSPACE,&
RECIPROCALSPACE,&
pw_type
#include "../base/base_uses.f90"
@ -50,9 +48,7 @@ MODULE pw_pool_types
INTEGER, PARAMETER :: default_max_cache = 75, max_max_cache = 150
PUBLIC :: pw_pool_type, pw_pool_p_type
PUBLIC :: pw_pool_create, pw_pool_retain, pw_pool_release, &
pw_pool_create_pw, pw_pool_give_back_pw, &
pw_pool_create_cr3d, pw_pool_give_back_cr3d
PUBLIC :: pw_pool_create, pw_pool_release
PUBLIC :: pw_pools_copy, pw_pools_dealloc, &
pw_pools_create_pws, pw_pools_give_back_pws
@ -76,6 +72,12 @@ MODULE pw_pool_types
TYPE(cp_sll_pw_type), POINTER :: real1d_pw => NULL(), real3d_pw => NULL(), &
complex1d_pw => NULL(), complex3d_pw => NULL()
TYPE(cp_sll_3d_r_type), POINTER :: real3d_array => NULL()
CONTAINS
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: retain => pw_pool_retain
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: create_pw => pw_pool_create_pw
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: give_back_pw => pw_pool_give_back_pw
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: create_cr3d => pw_pool_create_cr3d
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: give_back_cr3d => pw_pool_give_back_cr3d
END TYPE pw_pool_type
! **************************************************************************************************
@ -105,10 +107,6 @@ CONTAINS
TYPE(pw_grid_type), POINTER :: pw_grid
INTEGER, OPTIONAL :: max_cache
TYPE(cp_logger_type), POINTER :: logger
logger => cp_get_default_logger()
ALLOCATE (pool)
pool%pw_grid => pw_grid
CALL pw_grid_retain(pw_grid)
@ -128,13 +126,8 @@ CONTAINS
!> \author Fawzi Mohamed
! **************************************************************************************************
SUBROUTINE pw_pool_retain(pool)
TYPE(pw_pool_type), POINTER :: pool
CLASS(pw_pool_type), INTENT(INOUT) :: pool
TYPE(cp_logger_type), POINTER :: logger
logger => cp_get_default_logger()
CPASSERT(ASSOCIATED(pool))
CPASSERT(pool%ref_count > 0)
pool%ref_count = pool%ref_count + 1
@ -152,18 +145,15 @@ CONTAINS
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: array_att
TYPE(cp_logger_type), POINTER :: logger
TYPE(cp_sll_3d_r_type), POINTER :: array_iterator
TYPE(cp_sll_pw_type), POINTER :: iterator
TYPE(pw_type), POINTER :: pw_el
NULLIFY (iterator, array_iterator, pw_el, array_att)
logger => cp_get_default_logger()
iterator => pool%real1d_pw
DO
IF (.NOT. cp_sll_pw_next(iterator, el_att=pw_el)) EXIT
CALL pw_release(pw_el)
CALL pw_el%release()
DEALLOCATE (pw_el)
END DO
CALL cp_sll_pw_dealloc(pool%real1d_pw)
@ -171,7 +161,7 @@ CONTAINS
iterator => pool%real3d_pw
DO
IF (.NOT. cp_sll_pw_next(iterator, el_att=pw_el)) EXIT
CALL pw_release(pw_el)
CALL pw_el%release()
DEALLOCATE (pw_el)
END DO
CALL cp_sll_pw_dealloc(pool%real3d_pw)
@ -179,7 +169,7 @@ CONTAINS
iterator => pool%complex1d_pw
DO
IF (.NOT. cp_sll_pw_next(iterator, el_att=pw_el)) EXIT
CALL pw_release(pw_el)
CALL pw_el%release()
DEALLOCATE (pw_el)
END DO
CALL cp_sll_pw_dealloc(pool%complex1d_pw)
@ -187,7 +177,7 @@ CONTAINS
iterator => pool%complex3d_pw
DO
IF (.NOT. cp_sll_pw_next(iterator, el_att=pw_el)) EXIT
CALL pw_release(pw_el)
CALL pw_el%release()
DEALLOCATE (pw_el)
END DO
CALL cp_sll_pw_dealloc(pool%complex3d_pw)
@ -212,10 +202,6 @@ CONTAINS
SUBROUTINE pw_pool_release(pool)
TYPE(pw_pool_type), POINTER :: pool
TYPE(cp_logger_type), POINTER :: logger
logger => cp_get_default_logger()
IF (ASSOCIATED(pool)) THEN
CPASSERT(pool%ref_count > 0)
pool%ref_count = pool%ref_count - 1
@ -263,7 +249,7 @@ CONTAINS
!> \author Fawzi Mohamed
! **************************************************************************************************
SUBROUTINE pw_pool_create_pw(pool, pw, use_data, in_space)
TYPE(pw_pool_type), INTENT(IN) :: pool
CLASS(pw_pool_type), INTENT(IN) :: pool
TYPE(pw_type), INTENT(OUT) :: pw
INTEGER, INTENT(in) :: use_data, in_space
@ -272,12 +258,10 @@ CONTAINS
INTEGER :: handle
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d_ptr
TYPE(cp_logger_type), POINTER :: logger
TYPE(pw_type), POINTER :: el
CALL timeset(routineN, handle)
NULLIFY (cr3d_ptr)
logger => cp_get_default_logger()
SELECT CASE (use_data)
CASE (REALDATA1D)
@ -300,11 +284,13 @@ CONTAINS
END SELECT
IF (.NOT. ASSOCIATED(el)) THEN
CALL pw_create(pw, pool%pw_grid, use_data=use_data, &
CALL pw%create(pool%pw_grid, use_data=use_data, &
in_space=in_space, cr3d_ptr=cr3d_ptr)
ELSE
pw = el
DEALLOCATE (el)
IF (in_space /= REALSPACE .AND. in_space /= RECIPROCALSPACE) &
CPABORT("A PW grid either lives in real space or in reciprocal space!")
pw%in_space = in_space
END IF
@ -321,21 +307,18 @@ CONTAINS
!> \author Fawzi Mohamed
! **************************************************************************************************
SUBROUTINE pw_pool_give_back_pw(pool, pw)
TYPE(pw_pool_type), INTENT(IN) :: pool
CLASS(pw_pool_type), INTENT(IN) :: pool
TYPE(pw_type), INTENT(INOUT) :: pw
CHARACTER(len=*), PARAMETER :: routineN = 'pw_pool_give_back_pw'
INTEGER :: handle
TYPE(cp_logger_type), POINTER :: logger
TYPE(pw_type), POINTER :: el
logger => cp_get_default_logger()
CALL timeset(routineN, handle)
IF (ASSOCIATED(pw%pw_grid)) THEN
IF (.NOT. pw_grid_compare(pw%pw_grid, pool%pw_grid)) THEN
CALL pw_release(pw)
CALL pw%release()
ELSE
NULLIFY (el)
ALLOCATE (el)
@ -348,7 +331,7 @@ CONTAINS
ELSE
IF (max_max_cache >= 0) &
CPWARN("hit max_cache")
CALL pw_release(el)
CALL el%release()
DEALLOCATE (el)
END IF
CASE (REALDATA3D)
@ -358,11 +341,11 @@ CONTAINS
ELSE
IF (max_max_cache >= 0) &
CPWARN("hit max_cache")
CALL pw_release(el)
CALL el%release()
DEALLOCATE (el)
END IF
ELSE
CALL pw_release(el)
CALL el%release()
DEALLOCATE (el)
END IF
CASE (COMPLEXDATA1D)
@ -371,7 +354,7 @@ CONTAINS
ELSE
IF (max_max_cache >= 0) &
CPWARN("hit max_cache")
CALL pw_release(el)
CALL el%release()
DEALLOCATE (el)
END IF
CASE (COMPLEXDATA3D)
@ -380,7 +363,7 @@ CONTAINS
ELSE
IF (max_max_cache >= 0) &
CPWARN("hit max_cache")
CALL pw_release(el)
CALL el%release()
DEALLOCATE (el)
END IF
CASE default
@ -410,15 +393,12 @@ CONTAINS
!> \author fawzi
! **************************************************************************************************
SUBROUTINE pw_pool_create_cr3d(pw_pool, cr3d)
TYPE(pw_pool_type), INTENT(IN) :: pw_pool
CLASS(pw_pool_type), INTENT(IN) :: pw_pool
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: cr3d
TYPE(cp_logger_type), POINTER :: logger
TYPE(pw_type), POINTER :: pw
NULLIFY (pw)
logger => cp_get_default_logger()
IF (ASSOCIATED(pw_pool%real3d_array)) THEN
cr3d => cp_sll_3d_r_get_first_el(pw_pool%real3d_array)
CALL cp_sll_3d_r_rm_first_el(pw_pool%real3d_array)
@ -427,7 +407,7 @@ CONTAINS
IF (ASSOCIATED(pw)) THEN
cr3d => pw%cr3d
NULLIFY (pw%cr3d)
CALL pw_release(pw)
CALL pw%release()
DEALLOCATE (pw)
END IF
END IF
@ -443,31 +423,22 @@ CONTAINS
!> REALDATA3D, allocating it if none is present in the pool
!> \param pw_pool the pool that caches the cr3d
!> \param cr3d the pointer that will contain the array
!> \param accept_non_compatible if true deallocates the non compatible
!> arrays passed in, if false (the default) stops with an error
!> \par History
!> 11.2003 created [fawzi]
!> \author fawzi
! **************************************************************************************************
SUBROUTINE pw_pool_give_back_cr3d(pw_pool, cr3d, accept_non_compatible)
TYPE(pw_pool_type), INTENT(IN) :: pw_pool
SUBROUTINE pw_pool_give_back_cr3d(pw_pool, cr3d)
CLASS(pw_pool_type), INTENT(IN) :: pw_pool
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d
LOGICAL, INTENT(in), OPTIONAL :: accept_non_compatible
LOGICAL :: compatible, my_accept_non_compatible
TYPE(cp_logger_type), POINTER :: logger
my_accept_non_compatible = .FALSE.
logger => cp_get_default_logger()
IF (PRESENT(accept_non_compatible)) my_accept_non_compatible = accept_non_compatible
LOGICAL :: compatible
IF (ASSOCIATED(cr3d)) THEN
compatible = ALL(MERGE(pw_pool%pw_grid%bounds_local(1, :) == LBOUND(cr3d) .AND. &
pw_pool%pw_grid%bounds_local(2, :) == UBOUND(cr3d), &
pw_pool%pw_grid%bounds_local(2, :) < pw_pool%pw_grid%bounds_local(1, :), &
UBOUND(cr3d) >= LBOUND(cr3d)))
CPASSERT(compatible .OR. my_accept_non_compatible)
IF (compatible) THEN
IF (cp_sll_3d_r_get_length(pw_pool%real3d_array) < pw_pool%max_cache) THEN
CALL cp_sll_3d_r_insert_el(pw_pool%real3d_array, el=cr3d)
@ -479,8 +450,6 @@ CONTAINS
ELSE
DEALLOCATE (cr3d)
END IF
ELSE
CPASSERT(my_accept_non_compatible)
END IF
NULLIFY (cr3d)
END SUBROUTINE pw_pool_give_back_cr3d
@ -507,8 +476,8 @@ CONTAINS
ALLOCATE (pws(SIZE(pools)))
DO i = 1, SIZE(pools)
CALL pw_pool_create_pw(pools(i)%pool, pws(i), use_data, &
in_space=in_space)
CALL pools(i)%pool%create_pw(pws(i), use_data, &
in_space=in_space)
END DO
END SUBROUTINE pw_pools_create_pws
@ -529,7 +498,7 @@ CONTAINS
CPASSERT(SIZE(pws) == SIZE(pools))
DO i = 1, SIZE(pools)
CALL pw_pool_give_back_pw(pools(i)%pool, pws(i))
CALL pools(i)%pool%give_back_pw(pws(i))
END DO
DEALLOCATE (pws)
END SUBROUTINE pw_pools_give_back_pws
@ -551,7 +520,7 @@ CONTAINS
ALLOCATE (target_pools(SIZE(source_pools)))
DO i = 1, SIZE(source_pools)
target_pools(i)%pool => source_pools(i)%pool
CALL pw_pool_retain(source_pools(i)%pool)
CALL source_pools(i)%pool%retain()
END DO
END SUBROUTINE pw_pools_copy

View file

@ -29,10 +29,7 @@ MODULE pw_spline_utils
pw_copy,&
pw_integral_ab,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_release,&
pw_pool_retain,&
USE pw_pool_types, ONLY: pw_pool_release,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -2499,7 +2496,7 @@ CONTAINS
preconditioner%pool => pool
preconditioner%pbc = pbc
preconditioner%transpose = transpose
CALL pw_pool_retain(pool)
CALL pool%retain()
CALL pw_spline_precond_set_kind(preconditioner, precond_kind)
END SUBROUTINE pw_spline_precond_create
@ -2693,10 +2690,10 @@ CONTAINS
res = .FALSE.
logger => cp_get_default_logger()
CALL pw_pool_create_pw(pool, r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pool, z, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pool, p, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pool, Ap, use_data=REALDATA3D, in_space=REALSPACE)
CALL pool%create_pw(r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pool%create_pw(z, use_data=REALDATA3D, in_space=REALSPACE)
CALL pool%create_pw(p, use_data=REALDATA3D, in_space=REALSPACE)
CALL pool%create_pw(Ap, use_data=REALDATA3D, in_space=REALSPACE)
!CALL cp_add_iter_level(logger%iter_info,level_name="SPLINE_FIND_COEFFS")
ext_do: DO iiter = 1, max_iter, 10
@ -2750,10 +2747,10 @@ CONTAINS
END DO ext_do
!CALL cp_rm_iter_level(logger%iter_info,level_name="SPLINE_FIND_COEFFS")
CALL pw_pool_give_back_pw(pool, r)
CALL pw_pool_give_back_pw(pool, z)
CALL pw_pool_give_back_pw(pool, p)
CALL pw_pool_give_back_pw(pool, Ap)
CALL pool%give_back_pw(r)
CALL pool%give_back_pw(z)
CALL pool%give_back_pw(p)
CALL pool%give_back_pw(Ap)
END FUNCTION find_coeffs

View file

@ -38,7 +38,6 @@ MODULE pw_types
PRIVATE
PUBLIC :: pw_type, pw_p_type
PUBLIC :: pw_release, pw_create
! Flags for the structure member 'in_use'
! NODATA only for internal use, we enforce a certain data type
@ -62,6 +61,9 @@ MODULE pw_types
INTEGER :: in_space = NOSPACE ! Real/Reciprocal space
TYPE(pw_grid_type), POINTER :: pw_grid => NULL()
CONTAINS
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: create => pw_create
PROCEDURE, PUBLIC, NON_OVERRIDABLE :: release => pw_release
END TYPE pw_type
! **************************************************************************************************
@ -84,7 +86,7 @@ CONTAINS
!> see doc/ReferenceCounting.html
! **************************************************************************************************
SUBROUTINE pw_release(pw)
TYPE(pw_type), INTENT(INOUT) :: pw
CLASS(pw_type), INTENT(INOUT) :: pw
SELECT CASE (pw%in_use)
CASE (REALDATA1D)
@ -118,7 +120,7 @@ CONTAINS
!> \author fawzi
! **************************************************************************************************
SUBROUTINE pw_create(pw, pw_grid, use_data, in_space, cr3d_ptr)
TYPE(pw_type), INTENT(OUT) :: pw
CLASS(pw_type), INTENT(INOUT) :: pw
TYPE(pw_grid_type), INTENT(IN), POINTER :: pw_grid
INTEGER, INTENT(in) :: use_data, in_space
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), &
@ -151,6 +153,9 @@ CONTAINS
END IF
END IF
! Ensure a clean grid to prevent memory leaks
CALL pw%release()
pw%in_use = use_data
pw%pw_grid => pw_grid
CALL pw_grid_retain(pw%pw_grid)

View file

@ -19,9 +19,7 @@ MODULE rs_methods
pw_scale,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -397,10 +395,10 @@ CONTAINS
lb2 = bounds_local(1, 2); ub2 = bounds_local(2, 2)
lb3 = bounds_local(1, 3); ub3 = bounds_local(2, 3)
CALL pw_pool_create_pw(pw_pool, G, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, G_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pw_pool, pw_in_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pw_pool, pw_out_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(G, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(G_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(pw_in_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(pw_out_gs, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_zero(G)
xmin = x_glbl(bounds(1, 1)); xmax = x_glbl(bounds(2, 1))
@ -453,10 +451,10 @@ CONTAINS
END DO
END DO
CALL pw_pool_give_back_pw(pw_pool, G)
CALL pw_pool_give_back_pw(pw_pool, G_gs)
CALL pw_pool_give_back_pw(pw_pool, pw_in_gs)
CALL pw_pool_give_back_pw(pw_pool, pw_out_gs)
CALL pw_pool%give_back_pw(G)
CALL pw_pool%give_back_pw(G_gs)
CALL pw_pool%give_back_pw(pw_in_gs)
CALL pw_pool%give_back_pw(pw_out_gs)
CALL timestop(handle)
END SUBROUTINE pw_mollifier

View file

@ -18,9 +18,7 @@ MODULE cp_spline_utils
USE pw_methods, ONLY: do_standard_sum,&
pw_axpy,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_spline_utils, ONLY: &
add_coarse2fine, add_fine2coarse, find_coeffs, pw_spline_do_precond, &
pw_spline_precond_create, pw_spline_precond_release, pw_spline_precond_set_kind, &
@ -93,8 +91,8 @@ CONTAINS
pbc = (interp_kind == spline3_pbc_interp)
CPASSERT(pbc .OR. interp_kind == spline3_nopbc_interp)
bo = pw_coarse_out%pw_grid%bounds_local
CALL pw_pool_create_pw(coarse_pool, values, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL coarse_pool%create_pw(values, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(values)
CALL add_fine2coarse(fine_values_pw=pw_fine_in, &
@ -103,8 +101,8 @@ CONTAINS
w_border1=spl3_1d_transf_border1/2._dp, pbc=pbc, &
safe_computation=safe_computation)
CALL pw_pool_create_pw(coarse_pool, coeffs, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL coarse_pool%create_pw(coeffs, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_spline_precond_create(precond, precond_kind=aint_precond, &
pool=coarse_pool, pbc=pbc, transpose=.TRUE.)
CALL pw_spline_do_precond(precond, values, coeffs)
@ -123,8 +121,8 @@ CONTAINS
CALL pw_zero(pw_coarse_out)
CALL pw_axpy(coeffs, pw_coarse_out)
CALL pw_pool_give_back_pw(coarse_pool, values)
CALL pw_pool_give_back_pw(coarse_pool, coeffs)
CALL coarse_pool%give_back_pw(values)
CALL coarse_pool%give_back_pw(coeffs)
CALL timestop(handle)
END SUBROUTINE pw_restrict_s3
@ -158,8 +156,8 @@ CONTAINS
ifile = ifile + 1
CALL timeset(routineN, handle)
CALL pw_pool_create_pw(coarse_pool, coeffs, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL coarse_pool%create_pw(coeffs, use_data=REALDATA3D, &
in_space=REALSPACE)
bo = pw_coarse_in%pw_grid%bounds_local
CALL section_vals_val_get(param_section, "safe_computation", &
l_val=safe_computation)
@ -203,7 +201,7 @@ CONTAINS
w_border1=spl3_1d_transf_border1, &
pbc=pbc, safe_computation=safe_computation)
CALL pw_pool_give_back_pw(coarse_pool, coeffs)
CALL coarse_pool%give_back_pw(coeffs)
CALL timestop(handle)

View file

@ -19,8 +19,7 @@ MODULE pw_env_types
USE input_section_types, ONLY: section_vals_type
USE kinds, ONLY: dp
USE message_passing, ONLY: mp_para_env_type
USE pw_poisson_types, ONLY: pw_poisson_release,&
pw_poisson_type
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_release,&
pw_pool_type,&
@ -183,7 +182,10 @@ CONTAINS
CPASSERT(pw_env%ref_count > 0)
pw_env%ref_count = pw_env%ref_count - 1
IF (pw_env%ref_count < 1) THEN
CALL pw_poisson_release(pw_env%poisson_env)
IF (ASSOCIATED(pw_env%poisson_env)) THEN
CALL pw_env%poisson_env%release()
DEALLOCATE (pw_env%poisson_env)
END IF
CALL pw_pools_dealloc(pw_env%pw_pools)
IF (ASSOCIATED(pw_env%gridlevel_info)) THEN
CALL destroy_gaussian_gridlevel(pw_env%gridlevel_info, para_env)

View file

@ -79,14 +79,17 @@ MODULE pw_env_methods
pw_grid_setup
USE pw_poisson_methods, ONLY: pw_poisson_set
USE pw_poisson_read_input, ONLY: pw_poisson_read_parameters
USE pw_poisson_types, ONLY: &
pw_poisson_analytic, pw_poisson_create, pw_poisson_implicit, pw_poisson_mt, &
pw_poisson_multipole, pw_poisson_none, pw_poisson_parameter_type, pw_poisson_periodic, &
pw_poisson_wavelet
USE pw_poisson_types, ONLY: pw_poisson_analytic,&
pw_poisson_implicit,&
pw_poisson_mt,&
pw_poisson_multipole,&
pw_poisson_none,&
pw_poisson_parameter_type,&
pw_poisson_periodic,&
pw_poisson_wavelet
USE pw_pool_types, ONLY: pw_pool_create,&
pw_pool_p_type,&
pw_pool_release,&
pw_pool_retain,&
pw_pools_dealloc
USE qs_dispersion_types, ONLY: qs_dispersion_type
USE qs_environment_types, ONLY: get_qs_env,&
@ -454,7 +457,7 @@ CONTAINS
CALL pw_grid_release(xc_super_ref_grid)
ELSE
pw_env%xc_pw_pool => pw_pools(pw_env%auxbas_grid)%pool
CALL pw_pool_retain(pw_env%xc_pw_pool)
CALL pw_env%xc_pw_pool%retain()
END IF
! init vdw_pool
@ -481,14 +484,15 @@ CONTAINS
CALL pw_grid_release(vdw_grid)
ELSE
pw_env%vdw_pw_pool => pw_pools(pw_env%auxbas_grid)%pool
CALL pw_pool_retain(pw_env%vdw_pw_pool)
CALL pw_env%vdw_pw_pool%retain()
END IF
IF (do_io) CALL cp_print_key_finished_output(iounit, logger, print_section, '')
! complete init of the poisson_env
IF (.NOT. ASSOCIATED(pw_env%poisson_env)) THEN
CALL pw_poisson_create(pw_env%poisson_env)
ALLOCATE (pw_env%poisson_env)
CALL pw_env%poisson_env%create()
END IF
poisson_section => section_vals_get_subs_vals(input, "DFT%POISSON")

View file

@ -45,9 +45,7 @@ MODULE qmmm_gpw_forces
pw_integral_ab,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type,&
pw_pools_create_pws,&
pw_pools_give_back_pws
@ -208,9 +206,9 @@ CONTAINS
auxbas_pw_pool=auxbas_pool)
NULLIFY (rho_tot_r)
ALLOCATE (rho_tot_r)
CALL pw_pool_create_pw(auxbas_pool, rho_tot_r, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL auxbas_pool%create_pw(rho_tot_r, &
in_space=REALSPACE, &
use_data=REALDATA3D)
! IF GAPW the core charge is replaced by the compensation charge
IF (gapw) THEN
IF (dft_control%qs_control%gapw_control%nopaw_as_gpw) THEN
@ -218,12 +216,12 @@ CONTAINS
energy%qmmm_nu = pw_integral_ab(rho_tot_r, ks_qmmm_env_loc%v_qmmm_rspace)
NULLIFY (rho_tot_r2)
ALLOCATE (rho_tot_r2)
CALL pw_pool_create_pw(auxbas_pool, rho_tot_r2, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL auxbas_pool%create_pw(rho_tot_r2, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL pw_transfer(rho0_s_gs, rho_tot_r2)
CALL pw_axpy(rho_tot_r2, rho_tot_r)
CALL pw_pool_give_back_pw(auxbas_pool, rho_tot_r2)
CALL auxbas_pool%give_back_pw(rho_tot_r2)
DEALLOCATE (rho_tot_r2)
ELSE
CALL pw_transfer(rho0_s_gs, rho_tot_r)
@ -317,7 +315,7 @@ CONTAINS
! Give back rho_tot_t to auxbas_pool only for GPW/GAPW
IF ((.NOT. dft_control%qs_control%semi_empirical) .AND. &
(.NOT. dft_control%qs_control%dftb) .AND. (.NOT. dft_control%qs_control%xtb)) THEN
CALL pw_pool_give_back_pw(auxbas_pool, rho_tot_r)
CALL auxbas_pool%give_back_pw(rho_tot_r)
DEALLOCATE (rho_tot_r)
END IF
IF (iw > 0) THEN
@ -1367,8 +1365,8 @@ CONTAINS
logger => cp_get_default_logger()
iw = cp_print_key_unit_nr(logger, print_section, "PROGRAM_RUN_INFO", extension=".qmmmLog")
CALL pw_env_get(pw_env=pw_env, pw_pools=pw_pools)
CALL pw_pool_create_pw(pw_pools(1)%pool, v_qmmm_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pools(1)%pool%create_pw(v_qmmm_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
ALLOCATE (Num_Forces(3, num_mm_atoms))
ks_qmmm_env_loc => qs_env%ks_qmmm_env
IF (iw > 0) WRITE (iw, '(/A)') "DEBUG SECTION:"
@ -1446,7 +1444,7 @@ CONTAINS
END SELECT
CALL cp_print_key_finished_output(iw, logger, print_section, "PROGRAM_RUN_INFO")
CALL pw_pool_give_back_pw(pw_pools(1)%pool, v_qmmm_rspace)
CALL pw_pools(1)%pool%give_back_pw(v_qmmm_rspace)
DEALLOCATE (Num_Forces)
CALL timestop(handle)
100 FORMAT(I5, 2F15.9, " ( ", F7.2, " ) ", 2F15.9, " ( ", F7.2, " ) ", 2F15.9, " ( ", F7.2, " ) ")

View file

@ -50,13 +50,11 @@ MODULE qmmm_image_charge
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qmmm_types_low, ONLY: qmmm_env_qm_type
USE qs_collocate_density, ONLY: calculate_rho_metal,&
@ -289,12 +287,12 @@ CONTAINS
iter_steps = iter_steps + 1
! SQRT(rsnew) < 1.0E-08
IF (rsnew < 1.0E-16) THEN
CALL pw_release(auxpot_Ad_rspace)
CALL auxpot_Ad_rspace%release()
EXIT
END IF
d = z + rsnew/rsold*d
rsold = rsnew
CALL pw_release(auxpot_Ad_rspace)
CALL auxpot_Ad_rspace%release()
END DO
! print iteration info
@ -314,7 +312,7 @@ CONTAINS
qs_env%calc_image_preconditioner = .TRUE.
END IF
CALL pw_release(v_metal_rspace_guess)
CALL v_metal_rspace_guess%release()
DEALLOCATE (pot_const)
DEALLOCATE (vmetal_const)
DEALLOCATE (r)
@ -723,18 +721,15 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_gb, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
vb_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
vb_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_gb, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(vb_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(vb_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! calculate vb only once for one reference atom
iatom_ref = 1 !
@ -758,9 +753,9 @@ CONTAINS
image_matrix(iatom + 1:natom, iatom) = int_res(iatom + 1:natom)
END DO
CALL pw_release(vb_gspace)
CALL pw_release(vb_rspace)
CALL pw_release(rho_gb)
CALL vb_gspace%release()
CALL vb_rspace%release()
CALL rho_gb%release()
DEALLOCATE (int_res)
@ -895,20 +890,17 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_metal, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_metal, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_metal_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_metal_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_metal_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_metal_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_metal)
CALL calculate_rho_metal(rho_metal, coeff, total_rho_metal=total_rho_metal, &
@ -930,8 +922,8 @@ CONTAINS
CALL pw_zero(v_metal_rspace)
CALL pw_transfer(v_metal_gspace, v_metal_rspace)
CALL pw_scale(v_metal_rspace, v_metal_rspace%pw_grid%dvol)
CALL pw_release(v_metal_gspace)
CALL pw_release(rho_metal)
CALL v_metal_gspace%release()
CALL rho_metal%release()
CALL timestop(handle)

View file

@ -28,8 +28,7 @@ MODULE qmmm_types_low
particle_type
USE pw_grid_types, ONLY: pw_grid_type
USE pw_grids, ONLY: pw_grid_release
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_release,&
pw_pool_type,&
pw_pools_dealloc
@ -540,7 +539,7 @@ CONTAINS
DEALLOCATE (Per_Potentials(I)%Pot%mm_atom_index)
END IF
IF (ASSOCIATED(Per_Potentials(I)%Pot%TabLR)) THEN
CALL pw_pool_give_back_pw(Per_Potentials(I)%Pot%pw_pool, Per_Potentials(I)%Pot%TabLR)
CALL Per_Potentials(I)%Pot%pw_pool%give_back_pw(Per_Potentials(I)%Pot%TabLR)
DEALLOCATE (Per_Potentials(I)%Pot%TabLR)
END IF
IF (ASSOCIATED(Per_Potentials(I)%Pot%pw_pool)) THEN

View file

@ -39,8 +39,7 @@ MODULE qs_2nd_kernel_ao
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_scale
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
USE qs_environment_types, ONLY: get_qs_env,&
qs_environment_type
@ -358,7 +357,7 @@ CONTAINS
DEALLOCATE (work_hmat%matrix)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
END DO
DEALLOCATE (v_xc)

View file

@ -94,14 +94,12 @@ MODULE qs_active_space_methods
pw_poisson_analytic, &
pw_poisson_periodic, &
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw, &
pw_pool_give_back_pw, &
pw_pool_type
USE pw_pool_types, ONLY: &
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D, &
REALDATA3D, &
REALSPACE, &
RECIPROCALSPACE, &
pw_release, &
pw_type
USE qcschema, ONLY: qcschema_env_create, &
qcschema_env_release, &
@ -1407,8 +1405,8 @@ CONTAINS
! Copy the active space of the MOs into DBCSR matrices
END IF
CALL pw_pool_create_pw(auxbas_pw_pool, wfn_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wfn_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL get_qs_env(qs_env, qs_kind_set=qs_kind_set, cell=cell, &
particle_set=particle_set, atomic_kind_set=atomic_kind_set)
@ -1430,9 +1428,9 @@ CONTAINS
CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, nmo=nmo)
DO i1 = 1, SIZE(orbitals, 1)
iwfn = orbitals(i1, ispin)
CALL pw_pool_create_pw(auxbas_pw_pool, wfn_a(iwfn, ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wfn_a(iwfn, ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL calculate_wavefunction(mo_coeff, iwfn, wfn_a(iwfn, ispin), rho_g, atomic_kind_set, &
qs_kind_set, cell, dft_control, particle_set, pw_env_sub)
IF (print2 .AND. iw > 0) THEN
@ -1443,26 +1441,26 @@ CONTAINS
ELSE
! Even if we do not store all WFNs, we still need containers for the functions to store
ALLOCATE (wfn1, wfn2)
CALL pw_pool_create_pw(auxbas_pw_pool, wfn1, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wfn2, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wfn1, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wfn2, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (eri_env%method /= eri_method_gpw_ht) THEN
ALLOCATE (wfn3, wfn4)
CALL pw_pool_create_pw(auxbas_pw_pool, wfn3, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wfn4, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wfn3, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wfn4, &
use_data=REALDATA3D, &
in_space=REALSPACE)
END IF
END IF
! get some of the grids ready
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, pot_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pot_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! run the FFT once, to set up buffers and to take into account the memory
CALL pw_zero(rho_r)
@ -1649,24 +1647,24 @@ CONTAINS
DO ispin = 1, nspins
DO i1 = 1, SIZE(orbitals, 1)
iwfn = orbitals(i1, ispin)
CALL pw_release(wfn_a(iwfn, ispin))
CALL wfn_a(iwfn, ispin)%release()
END DO
END DO
DEALLOCATE (wfn_a)
ELSE
CALL pw_release(wfn1)
CALL pw_release(wfn2)
CALL wfn1%release()
CALL wfn2%release()
DEALLOCATE (wfn1, wfn2)
IF (eri_env%method /= eri_method_gpw_ht) THEN
CALL pw_release(wfn3)
CALL pw_release(wfn4)
CALL wfn3%release()
CALL wfn4%release()
DEALLOCATE (wfn3, wfn4)
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, wfn_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, pot_g)
CALL auxbas_pw_pool%give_back_pw(wfn_r)
CALL auxbas_pw_pool%give_back_pw(rho_g)
CALL auxbas_pw_pool%give_back_pw(rho_r)
CALL auxbas_pw_pool%give_back_pw(pot_g)
CALL mp_para_env_release(para_env_sub)
IF (eri_env%method == eri_method_gpw_ht) THEN
@ -1908,8 +1906,8 @@ CONTAINS
CALL qs_subsys_get(subsys, particles=particles)
!
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
!
dft_section => section_vals_get_subs_vals(scf_input, "DFT")
!
@ -1971,8 +1969,8 @@ CONTAINS
END DO
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END SUBROUTINE print_orbital_cubes

View file

@ -47,9 +47,7 @@ MODULE qs_cdft_methods
pw_integrate_function,&
pw_set,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -756,19 +754,19 @@ CONTAINS
! Setup pw
CALL pw_zero(cdft_control%group(igroup)%weight)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_total_constraint, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%group(igroup)%hw_rho_total_constraint, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_set(cdft_control%group(igroup)%hw_rho_total_constraint, 1.0_dp)
IF (igroup == 1) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_total, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%group(igroup)%hw_rho_total, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_set(cdft_control%group(igroup)%hw_rho_total, 1.0_dp)
IF (hirshfeld_control%print_density) THEN
DO iatom = 1, cdft_control%natoms
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_atomic(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%group(igroup)%hw_rho_atomic(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_set(cdft_control%group(igroup)%hw_rho_atomic(iatom), 1.0_dp)
END DO
END IF
@ -787,8 +785,8 @@ CONTAINS
END DO
DO iatom = 1, cdft_control%natoms
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_atomic_charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%group(igroup)%hw_rho_atomic_charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_set(cdft_control%group(igroup)%hw_rho_atomic_charge(iatom), 1.0_dp)
END DO
END IF
@ -923,16 +921,16 @@ CONTAINS
DO igroup = 1, SIZE(cdft_control%group)
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_total_constraint)
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(igroup)%hw_rho_total_constraint)
IF (.NOT. cdft_control%in_memory .AND. igroup == 1) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(1)%hw_rho_total)
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(1)%hw_rho_total)
END IF
IF (hirshfeld_control%print_density .AND. igroup == 1) THEN
DO i = 1, cdft_control%natoms
CALL rs_grid_release(rs_single(i))
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_atomic(i))
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(igroup)%hw_rho_atomic(i))
END DO
DEALLOCATE (rs_single)
DEALLOCATE (cdft_control%group(igroup)%hw_rho_atomic)
@ -941,7 +939,7 @@ CONTAINS
IF (cdft_control%atomic_charges .AND. igroup == 1) THEN
DO i = 1, cdft_control%natoms
CALL rs_grid_release(rs_single_charge(i))
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(igroup)%hw_rho_atomic_charge(i))
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(igroup)%hw_rho_atomic_charge(i))
END DO
DEALLOCATE (rs_single_charge)
DEALLOCATE (compute_charge)
@ -975,8 +973,8 @@ CONTAINS
ALLOCATE (rs_single_dr(num_species))
DO i = 1, num_species
CALL pw_pool_create_pw(auxbas_pw_pool, pw_single_dr(i), use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw_single_dr(i), use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(pw_single_dr(i))
END DO
@ -1063,7 +1061,7 @@ CONTAINS
DO iatom = 1, num_species
atom_a = atom_list(iatom)
cdft_control%group(igroup)%gradients_x(atom_a, :, :, :) = pw_single_dr(iatom)%cr3d(:, :, :)
CALL pw_pool_give_back_pw(auxbas_pw_pool, pw_single_dr(iatom))
CALL auxbas_pw_pool%give_back_pw(pw_single_dr(iatom))
END DO
DEALLOCATE (rs_single_dr)
@ -1127,7 +1125,7 @@ CONTAINS
END DO
IF (igroup == 1) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(1)%hw_rho_total)
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(1)%hw_rho_total)
END IF
END DO
END IF
@ -1668,33 +1666,33 @@ CONTAINS
CALL get_qs_env(qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
! Total density (rho_alpha + rho_beta)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%fragments(1, 1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%fragments(1, 1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL cp_cube_to_pw(cdft_control%fragments(1, 1), &
cdft_control%fragment_a_fname, 1.0_dp)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%fragments(1, 2), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%fragments(1, 2), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL cp_cube_to_pw(cdft_control%fragments(1, 2), &
cdft_control%fragment_b_fname, 1.0_dp)
! Spin difference density (rho_alpha - rho_beta) if needed
IF (needs_spin_density) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%fragments(2, 1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%fragments(2, 1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL cp_cube_to_pw(cdft_control%fragments(2, 1), &
cdft_control%fragment_a_spin_fname, multiplier(1))
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%fragments(2, 2), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%fragments(2, 2), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL cp_cube_to_pw(cdft_control%fragments(2, 2), &
cdft_control%fragment_b_spin_fname, multiplier(2))
END IF
! Sum up fragments
DO i = 1, nfrag_spins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_frag(i), use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_frag(i), use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(cdft_control%fragments(i, 1), rho_frag(i))
CALL pw_axpy(cdft_control%fragments(i, 2), rho_frag(i), 1.0_dp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%fragments(i, 1))
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%fragments(i, 2))
CALL auxbas_pw_pool%give_back_pw(cdft_control%fragments(i, 1))
CALL auxbas_pw_pool%give_back_pw(cdft_control%fragments(i, 2))
END DO
DEALLOCATE (cdft_control%fragments)
! Check that the number of electrons is consistent
@ -1735,7 +1733,7 @@ CONTAINS
CALL para_env%sum(cdft_control%charges_fragment)
END IF
DO i = 1, nfrag_spins
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_frag(i))
CALL auxbas_pw_pool%give_back_pw(rho_frag(i))
END DO
DEALLOCATE (rho_frag)
cdft_control%fragments_integrated = .TRUE.

View file

@ -55,8 +55,7 @@ MODULE qs_cdft_utils
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE
USE qs_cdft_types, ONLY: becke_constraint_type,&
@ -391,8 +390,8 @@ CONTAINS
DEALLOCATE (cores)
END DO
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(becke_control%cavity, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_cavity, becke_control%cavity)
! Grid points where the Gaussian density falls below eps_cavity are ignored
! We can calculate the smallest/largest values along z-direction outside

View file

@ -80,9 +80,7 @@ MODULE qs_collocate_density
pw_integrate_function,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type,&
pw_pools_create_pws,&
pw_pools_give_back_pws
@ -892,8 +890,8 @@ CONTAINS
END IF
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
@ -901,7 +899,7 @@ CONTAINS
CALL pw_transfer(rhoc_r, rho_core)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)
@ -1027,14 +1025,14 @@ CONTAINS
END IF
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
CALL pw_transfer(rhoc_r, drho_core)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)
@ -1116,14 +1114,14 @@ CONTAINS
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
CALL pw_transfer(rhoc_r, rho_gb)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)
@ -1221,8 +1219,8 @@ CONTAINS
DEALLOCATE (pab, cores)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
@ -1231,7 +1229,7 @@ CONTAINS
total_rho_metal = pw_integrate_function(rhoc_r, isign=-1)
CALL pw_transfer(rhoc_r, rho_metal)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)
@ -1315,14 +1313,14 @@ CONTAINS
DEALLOCATE (pab)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
CALL pw_transfer(rhoc_r, rho_gb)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)
@ -1420,13 +1418,13 @@ CONTAINS
DEALLOCATE (pab, cores)
CALL pw_pool_create_pw(auxbas_pw_pool, rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rhoc_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_rho, rhoc_r)
CALL pw_transfer(rhoc_r, rho_resp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhoc_r)
CALL auxbas_pw_pool%give_back_pw(rhoc_r)
CALL timestop(handle)

View file

@ -47,9 +47,7 @@ MODULE qs_dcdr_ao
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -241,17 +239,17 @@ CONTAINS
! Done with deriv_set and rho_set
ALLOCATE (v_rspace_new(dcdr_env%nspins))
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Calculate the Hartree potential on the total density
CALL pw_pool_create_pw(auxbas_pw_pool, rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL qs_rho_get(perturbed_density, rho_g=rho1_g, rho_r=rho1_r, tau_r=tau1_r)
CALL pw_copy(rho1_g(1), rho1_tot_gspace)
@ -264,7 +262,7 @@ CONTAINS
v_hartree_gspace)
CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho1_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
! Calculate the second derivative of the exchange-correlation potential
CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, &
@ -298,10 +296,10 @@ CONTAINS
calculate_forces=.FALSE.)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
DO ispin = 1, dcdr_env%nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
END DO
DEALLOCATE (v_rspace_new)
@ -313,7 +311,7 @@ CONTAINS
compute_tau=.TRUE., &
calculate_forces=.FALSE.)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(1))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(1))
DEALLOCATE (v_xc_tau)
END IF
@ -366,17 +364,15 @@ CONTAINS
pw_pools=pw_pools)
! Create the Hartree potential grids in real and reciprocal space.
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Create the grid for the derivative of the core potential
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
DO beta = 1, 3
CALL pw_zero(v_hartree_gspace)
@ -398,9 +394,9 @@ CONTAINS
calculate_forces=.FALSE.)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(drho_g)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL timestop(handle)
END SUBROUTINE d_core_charge_density_dR
@ -538,23 +534,23 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools, poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
DO ispin = 1, dcdr_env%nspins
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g_total, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r_total, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g_total, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r_total, &
use_data=REALDATA3D, in_space=REALSPACE)
DO idir = 1, 3
CALL pw_zero(v_hartree_gspace)
@ -608,19 +604,19 @@ CONTAINS
calculate_forces=.FALSE.)
! v_xc gets allocated again in xc_calc_2nd_deriv
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
END DO ! ispin
DEALLOCATE (v_xc)
END DO ! idir
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_g_total)
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_r_total)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(drho_g_total)
CALL auxbas_pw_pool%give_back_pw(drho_r_total)
DO ispin = 1, dcdr_env%nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_g(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_r(ispin))
CALL auxbas_pw_pool%give_back_pw(drho_g(ispin))
CALL auxbas_pw_pool%give_back_pw(drho_r(ispin))
END DO
DEALLOCATE (drho_g)
@ -691,7 +687,7 @@ CONTAINS
qs_env=qs_env, &
lambda=dcdr_env%lambda)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hxc_r(ispin))
CALL auxbas_pw_pool%give_back_pw(v_hxc_r(ispin))
END DO
DEALLOCATE (v_hxc_r)

View file

@ -36,9 +36,7 @@ MODULE qs_dispersion_nonloc
USE pw_methods, ONLY: pw_axpy,&
pw_derive,&
pw_transfer
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -217,14 +215,14 @@ CONTAINS
const = 1.0_dp/(3.0_dp*SQRT(pi)*b_value**1.5_dp)/(pi**0.75_dp)
! temporary arrays for FFT
CALL pw_pool_create_pw(pw_pool, tmp_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pw_pool, tmp_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(tmp_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(tmp_r, use_data=REALDATA3D, in_space=REALSPACE)
! get density derivatives
ALLOCATE (drho_r(3, nspin))
DO ispin = 1, nspin
DO idir = 1, 3
CALL pw_pool_create_pw(pw_pool, drho_r(idir, ispin), &
CALL pw_pool%create_pw(drho_r(idir, ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho_g(ispin), tmp_g)
CALL pw_derive(tmp_g, nd(:, idir))
@ -394,7 +392,7 @@ CONTAINS
END DO
END DO
!$OMP END PARALLEL DO
CALL pw_pool_create_pw(pw_pool, thetas_g(i), use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%create_pw(thetas_g(i), use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(tmp_r, thetas_g(i))
END DO
grid => thetas_g(1)%pw_grid
@ -475,7 +473,7 @@ CONTAINS
potential(:) = (0.5_dp*potential(:) + beta)*dispersion_env%scale_rvv10
hpot(:) = 0.5_dp*dispersion_env%scale_rvv10*hpot(:)
END SELECT
CALL pw_pool_create_pw(pw_pool, vxc_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool%create_pw(vxc_r, use_data=REALDATA3D, in_space=REALSPACE)
DO i = 1, 3
lo(i) = LBOUND(vxc_r%cr3d, i)
hi(i) = UBOUND(vxc_r%cr3d, i)
@ -530,31 +528,31 @@ CONTAINS
CALL pw_axpy(tmp_r, vxc_r, -1._dp)
END DO
CALL pw_transfer(vxc_r, tmp_g)
CALL pw_pool_give_back_pw(pw_pool, vxc_r)
CALL pw_pool_create_pw(xc_pw_pool, vxc_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(xc_pw_pool, vxc_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool%give_back_pw(vxc_r)
CALL xc_pw_pool%create_pw(vxc_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL xc_pw_pool%create_pw(vxc_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(tmp_g, vxc_g)
CALL pw_transfer(vxc_g, vxc_r)
DO ispin = 1, nspin
CALL pw_axpy(vxc_r, vxc_rho(ispin), 1._dp)
END DO
CALL pw_pool_give_back_pw(xc_pw_pool, vxc_r)
CALL pw_pool_give_back_pw(xc_pw_pool, vxc_g)
CALL xc_pw_pool%give_back_pw(vxc_r)
CALL xc_pw_pool%give_back_pw(vxc_g)
DEALLOCATE (q0, dq0_drho, dq0_dgradrho)
END IF
DEALLOCATE (thetas)
DO i = 1, dispersion_env%nqs
CALL pw_pool_give_back_pw(pw_pool, thetas_g(i))
CALL pw_pool%give_back_pw(thetas_g(i))
END DO
DO ispin = 1, nspin
DO idir = 1, 3
CALL pw_pool_give_back_pw(pw_pool, drho_r(idir, ispin))
CALL pw_pool%give_back_pw(drho_r(idir, ispin))
END DO
END DO
CALL pw_pool_give_back_pw(pw_pool, tmp_r)
CALL pw_pool_give_back_pw(pw_pool, tmp_g)
CALL pw_pool%give_back_pw(tmp_r)
CALL pw_pool%give_back_pw(tmp_g)
DEALLOCATE (rho, drho, drho_r, thetas_g)

View file

@ -46,9 +46,7 @@ MODULE qs_electric_field_gradient
pw_transfer
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_spline_utils, ONLY: &
Eval_Interp_Spl3_pbc, Eval_d_Interp_Spl3_pbc, find_coeffs, pw_spline_do_precond, &
pw_spline_precond_create, pw_spline_precond_release, pw_spline_precond_set_kind, &
@ -159,11 +157,11 @@ CONTAINS
ELSEIF (ecut == -1._dp .AND. sigma == -1._dp) THEN
smoothing = .TRUE.
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, dvr2rs, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dvr2rs, &
use_data=REALDATA3D, in_space=REALSPACE)
ecut = 2._dp*dvr2rs%pw_grid%cutoff*0.875_dp
sigma = 2._dp*dvr2rs%pw_grid%cutoff*0.125_dp
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvr2rs)
CALL auxbas_pw_pool%give_back_pw(dvr2rs)
ELSE
smoothing = .TRUE.
END IF
@ -213,15 +211,15 @@ CONTAINS
IF (gapw) CALL prepare_gapw_den(qs_env, do_rho0=.TRUE.)
!calculate electrostatic potential
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho)
CALL pw_poisson_solve(poisson_env, rho_tot_gspace, ehartree, &
v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
! smoothing of potential
IF (smoothing) CALL pw_smoothing(v_hartree_gspace, ecut, sigma)
@ -229,15 +227,15 @@ CONTAINS
DO i = 1, 3
DO j = 1, i
ij = (i*(i - 1))/2 + j
CALL pw_pool_create_pw(auxbas_pw_pool, dvr2(ij), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(dvr2(ij), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_dr2(v_hartree_gspace, dvr2(ij), i, j)
END DO
END DO
IF (.NOT. efg_interpolation) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, structure_factor, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(structure_factor, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
ELSE
interp_section => section_vals_get_subs_vals(dft_section, &
@ -249,11 +247,11 @@ CONTAINS
CALL section_vals_val_get(interp_section, "eps_r", r_val=eps_r)
CALL section_vals_val_get(interp_section, "eps_x", r_val=eps_x)
CALL pw_pool_create_pw(auxbas_pw_pool, dvr2rs, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dvr2rs, &
use_data=REALDATA3D, in_space=REALSPACE)
DO i = 1, 6
CALL pw_pool_create_pw(auxbas_pw_pool, dvspl(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dvspl(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(dvr2(i), dvr2rs)
! calculate spline coefficients
CALL pw_spline_precond_create(precond, precond_kind=aint_precond, &
@ -265,9 +263,9 @@ CONTAINS
eps_r=eps_r, eps_x=eps_x, max_iter=max_iter)
CPASSERT(success)
CALL pw_spline_precond_release(precond)
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvr2(i))
CALL auxbas_pw_pool%give_back_pw(dvr2(i))
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvr2rs)
CALL auxbas_pw_pool%give_back_pw(dvr2rs)
END IF
nkind = SIZE(qs_kind_set)
@ -376,15 +374,15 @@ CONTAINS
END IF
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
IF (.NOT. efg_interpolation) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, structure_factor)
CALL auxbas_pw_pool%give_back_pw(structure_factor)
DO i = 1, 6
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvr2(i))
CALL auxbas_pw_pool%give_back_pw(dvr2(i))
END DO
ELSE
DO i = 1, 6
CALL pw_pool_give_back_pw(auxbas_pw_pool, dvspl(i))
CALL auxbas_pw_pool%give_back_pw(dvspl(i))
END DO
END IF

View file

@ -20,9 +20,7 @@ MODULE qs_elf_methods
USE pw_methods, ONLY: pw_derive,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -111,17 +109,17 @@ CONTAINS
! We will not have further use for it, so we will need only one
IF (.NOT. tau_r_valid) THEN
ALLOCATE (tau_r)
CALL pw_pool_create_pw(auxbas_pw_pool, tau_r, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tau_r, &
use_data=REALDATA3D, in_space=REALSPACE)
END IF
IF (.NOT. tau_r_valid .OR. .NOT. drho_r_valid) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, tmp_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tmp_g, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END IF
IF (.NOT. drho_r_valid) THEN
DO idir = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r(idir), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r(idir), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
@ -186,15 +184,15 @@ CONTAINS
IF (.NOT. drho_r_valid) THEN
DO idir = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_r(idir))
CALL auxbas_pw_pool%give_back_pw(drho_r(idir))
END DO
END IF
IF (.NOT. tau_r_valid) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, tau_r)
CALL auxbas_pw_pool%give_back_pw(tau_r)
DEALLOCATE (tau_r)
END IF
IF (.NOT. tau_r_valid .OR. .NOT. drho_r_valid) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, tmp_g)
CALL auxbas_pw_pool%give_back_pw(tmp_g)
END IF
CALL timestop(handle)

View file

@ -38,9 +38,7 @@ MODULE qs_energy_utils
pw_env_type
USE pw_methods, ONLY: pw_axpy,&
pw_scale
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -317,18 +315,18 @@ CONTAINS
END IF
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, xc_den, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(xc_den, &
use_data=REALDATA3D, in_space=REALSPACE)
ALLOCATE (vxc(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, vxc(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vxc(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
IF (needs%tau .OR. needs%tau_spin) THEN
ALLOCATE (vtau(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, vtau(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vtau(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
@ -393,13 +391,13 @@ CONTAINS
END DO
DEALLOCATE (xcmat)
CALL pw_pool_give_back_pw(auxbas_pw_pool, xc_den)
CALL auxbas_pw_pool%give_back_pw(xc_den)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc(ispin))
END DO
IF (needs%tau .OR. needs%tau_spin) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, vtau(ispin))
CALL auxbas_pw_pool%give_back_pw(vtau(ispin))
END DO
END IF

View file

@ -47,9 +47,7 @@ MODULE qs_energy_window
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_integrate_function
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -160,8 +158,8 @@ CONTAINS
CALL cp_fm_create(S_minus_half_fm, ao_ao_fmstruct)
CALL cp_fm_create(eigenvectors, ao_ao_fmstruct)
CALL cp_fm_create(eigenvectors_nonorth, ao_ao_fmstruct)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g, use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
!calculate S_minus_half
CALL matrix_sqrt_Newton_Schulz(S_half, S_minus_half, matrix_s(1)%matrix, filter_eps, &
@ -317,8 +315,8 @@ CONTAINS
CALL cp_fm_release(P_window_fm)
CALL cp_fm_release(eigenvectors_nonorth)
CALL cp_fm_release(S_minus_half_fm)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g)
CALL auxbas_pw_pool%give_back_pw(rho_r)
CALL auxbas_pw_pool%give_back_pw(rho_g)
DEALLOCATE (eigenvalues)
DEALLOCATE (STRIDE)

View file

@ -36,13 +36,11 @@ MODULE qs_environment_methods
USE pw_env_types, ONLY: pw_env_get,&
pw_env_release,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qs_charges_types, ONLY: qs_charges_create,&
qs_charges_type
@ -241,14 +239,14 @@ CONTAINS
CPASSERT(ASSOCIATED(new_pw_env))
IF (dft_control%qs_control%gapw) THEN
IF (ASSOCIATED(rho_core)) THEN
CALL pw_release(rho_core)
CALL rho_core%release()
DEALLOCATE (rho_core)
END IF
IF (dft_control%qs_control%gapw_control%nopaw_as_gpw) THEN
ALLOCATE (rho_core)
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_core, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_core, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL set_ks_env(ks_env, rho_core=rho_core)
END IF
CALL get_qs_env(qs_env=qs_env, rho0_mpole=rho0_mpole)
@ -274,13 +272,13 @@ CONTAINS
END IF
ELSE
IF (ASSOCIATED(rho_core)) THEN
CALL pw_release(rho_core)
CALL rho_core%release()
DEALLOCATE (rho_core)
END IF
ALLOCATE (rho_core)
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_core, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_core, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL set_ks_env(ks_env, rho_core=rho_core)
END IF
@ -289,12 +287,12 @@ CONTAINS
NULLIFY (vppl)
CALL get_qs_env(qs_env, pw_env=new_pw_env, vppl=vppl)
IF (ASSOCIATED(vppl)) THEN
CALL pw_release(vppl)
CALL vppl%release()
ELSE
ALLOCATE (vppl)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, vppl, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vppl, use_data=REALDATA3D, in_space=REALSPACE)
CALL set_ks_env(ks_env, vppl=vppl)
END IF
@ -306,23 +304,23 @@ CONTAINS
NULLIFY (rho_nlcc)
CALL get_qs_env(qs_env, pw_env=new_pw_env, rho_nlcc=rho_nlcc)
IF (ASSOCIATED(rho_nlcc)) THEN
CALL pw_release(rho_nlcc)
CALL rho_nlcc%release()
ELSE
ALLOCATE (rho_nlcc)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_nlcc, REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_nlcc, REALDATA3D, REALSPACE)
CALL set_ks_env(ks_env, rho_nlcc=rho_nlcc)
! the g-space version
NULLIFY (rho_nlcc_g)
CALL get_qs_env(qs_env, pw_env=new_pw_env, rho_nlcc_g=rho_nlcc_g)
IF (ASSOCIATED(rho_nlcc_g)) THEN
CALL pw_release(rho_nlcc_g)
CALL rho_nlcc_g%release()
ELSE
ALLOCATE (rho_nlcc_g)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_nlcc_g, COMPLEXDATA1D, RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_nlcc_g, COMPLEXDATA1D, RECIPROCALSPACE)
CALL set_ks_env(ks_env, rho_nlcc_g=rho_nlcc_g)
END IF
@ -331,12 +329,12 @@ CONTAINS
NULLIFY (vee)
CALL get_qs_env(qs_env, pw_env=new_pw_env, vee=vee)
IF (ASSOCIATED(vee)) THEN
CALL pw_release(vee)
CALL vee%release()
DEALLOCATE (vee)
END IF
ALLOCATE (vee)
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, vee, REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(vee, REALDATA3D, REALSPACE)
CALL set_ks_env(ks_env, vee=vee)
dft_control%eval_external_potential = .TRUE.
END IF
@ -346,12 +344,12 @@ CONTAINS
NULLIFY (external_vxc)
CALL get_qs_env(qs_env, pw_env=new_pw_env, external_vxc=external_vxc)
IF (ASSOCIATED(external_vxc)) THEN
CALL pw_release(external_vxc)
CALL external_vxc%release()
ELSE
ALLOCATE (external_vxc)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, external_vxc, REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(external_vxc, REALDATA3D, REALSPACE)
CALL set_qs_env(qs_env, external_vxc=external_vxc)
dft_control%read_external_vxc = .TRUE.
END IF
@ -361,37 +359,37 @@ CONTAINS
NULLIFY (embed_pot)
CALL get_qs_env(qs_env, pw_env=new_pw_env, embed_pot=embed_pot)
IF (ASSOCIATED(embed_pot)) THEN
CALL pw_release(embed_pot)
CALL embed_pot%release()
ELSE
ALLOCATE (embed_pot)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, embed_pot, REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(embed_pot, REALDATA3D, REALSPACE)
CALL set_qs_env(qs_env, embed_pot=embed_pot)
NULLIFY (spin_embed_pot)
CALL get_qs_env(qs_env, pw_env=new_pw_env, spin_embed_pot=spin_embed_pot)
IF (ASSOCIATED(spin_embed_pot)) THEN
CALL pw_release(spin_embed_pot)
CALL spin_embed_pot%release()
DEALLOCATE (spin_embed_pot)
ELSE
ALLOCATE (spin_embed_pot)
END IF
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, spin_embed_pot, REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(spin_embed_pot, REALDATA3D, REALSPACE)
CALL set_qs_env(qs_env, spin_embed_pot=spin_embed_pot)
END IF
CALL get_ks_env(ks_env, v_hartree_rspace=v_hartree_rspace)
IF (ASSOCIATED(v_hartree_rspace)) THEN
CALL pw_release(v_hartree_rspace)
CALL v_hartree_rspace%release()
DEALLOCATE (v_hartree_rspace)
END IF
CALL get_qs_env(qs_env, pw_env=new_pw_env)
CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool)
ALLOCATE (v_hartree_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
REALDATA3D, REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
REALDATA3D, REALSPACE)
CALL set_ks_env(ks_env, v_hartree_rspace=v_hartree_rspace)
END IF

View file

@ -83,8 +83,7 @@ MODULE qs_environment_types
USE post_scf_bandstructure_types, ONLY: bs_env_release,&
post_scf_bandstructure_type
USE pw_env_types, ONLY: pw_env_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
USE qmmm_types_low, ONLY: qmmm_env_qm_type
USE qs_active_space_types, ONLY: active_space_type,&
release_active_space_type
@ -1463,11 +1462,11 @@ CONTAINS
DEALLOCATE (qs_env%rho_external)
END IF
IF (ASSOCIATED(qs_env%external_vxc)) THEN
CALL pw_release(qs_env%external_vxc)
CALL qs_env%external_vxc%release()
DEALLOCATE (qs_env%external_vxc)
END IF
IF (ASSOCIATED(qs_env%mask)) THEN
CALL pw_release(qs_env%mask)
CALL qs_env%mask%release()
DEALLOCATE (qs_env%mask)
END IF
IF (ASSOCIATED(qs_env%active_space)) THEN
@ -1475,10 +1474,10 @@ CONTAINS
END IF
! Embedding potentials if provided as input
IF (qs_env%given_embed_pot) THEN
CALL pw_release(qs_env%embed_pot)
CALL qs_env%embed_pot%release()
DEALLOCATE (qs_env%embed_pot)
IF (ASSOCIATED(qs_env%spin_embed_pot)) THEN
CALL pw_release(qs_env%spin_embed_pot)
CALL qs_env%spin_embed_pot%release()
DEALLOCATE (qs_env%spin_embed_pot)
END IF
END IF
@ -1685,11 +1684,11 @@ CONTAINS
DEALLOCATE (qs_env%rho_external)
END IF
IF (ASSOCIATED(qs_env%external_vxc)) THEN
CALL pw_release(qs_env%external_vxc)
CALL qs_env%external_vxc%release()
DEALLOCATE (qs_env%external_vxc)
END IF
IF (ASSOCIATED(qs_env%mask)) THEN
CALL pw_release(qs_env%mask)
CALL qs_env%mask%release()
DEALLOCATE (qs_env%mask)
END IF
IF (ASSOCIATED(qs_env%active_space)) THEN
@ -1697,10 +1696,10 @@ CONTAINS
END IF
! Embedding potentials if provided as input
IF (qs_env%given_embed_pot) THEN
CALL pw_release(qs_env%embed_pot)
CALL qs_env%embed_pot%release()
DEALLOCATE (qs_env%embed_pot)
IF (ASSOCIATED(qs_env%spin_embed_pot)) THEN
CALL pw_release(qs_env%spin_embed_pot)
CALL qs_env%spin_embed_pot%release()
DEALLOCATE (qs_env%spin_embed_pot)
END IF
END IF

View file

@ -42,9 +42,7 @@ MODULE qs_epr_hyp
USE pw_methods, ONLY: pw_axpy,&
pw_dr2_gg,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
RECIPROCALSPACE,&
pw_type
@ -284,10 +282,9 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rhototspin_elec_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rhototspin_elec_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(rhototspin_elec_gspace)
pw_grid => rhototspin_elec_gspace%pw_grid
@ -298,10 +295,9 @@ CONTAINS
CALL pw_axpy(rho_g(1), rhototspin_elec_gspace)
CALL pw_axpy(rho_g(2), rhototspin_elec_gspace, alpha=-1._dp)
! grid to assemble anisotropic hyperfine terms
CALL pw_pool_create_pw(auxbas_pw_pool, &
hypaniso_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(hypaniso_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
DO idir1 = 1, 3
DO idir2 = idir1, 3 ! tensor symmetry
@ -323,8 +319,8 @@ CONTAINS
END DO ! idir2
END DO ! idir1
CALL pw_pool_give_back_pw(auxbas_pw_pool, rhototspin_elec_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, hypaniso_gspace)
CALL auxbas_pw_pool%give_back_pw(rhototspin_elec_gspace)
CALL auxbas_pw_pool%give_back_pw(hypaniso_gspace)
! Multiply hyperfine matrices with constant*gyromagnetic ratio's
! to have it in units of Mhz.

View file

@ -35,9 +35,7 @@ MODULE qs_fxc
USE pw_methods, ONLY: pw_axpy,&
pw_scale,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -222,8 +220,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(fxc_rho)) THEN
ALLOCATE (fxc_rho(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, fxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(fxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL pw_zero(fxc_rho(ispin))
END DO
END IF
@ -231,15 +229,15 @@ CONTAINS
CALL pw_axpy(vxc00(ispin), fxc_rho(ispin), ak(istep))
END DO
DO ispin = 1, SIZE(vxc00)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc00(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc00(ispin))
END DO
DEALLOCATE (vxc00)
IF (ASSOCIATED(v_tau_rspace)) THEN
IF (.NOT. ASSOCIATED(fxc_tau)) THEN
ALLOCATE (fxc_tau(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, fxc_tau(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(fxc_tau(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL pw_zero(fxc_tau(ispin))
END DO
END IF
@ -247,7 +245,7 @@ CONTAINS
CALL pw_axpy(v_tau_rspace(ispin), fxc_tau(ispin), ak(istep))
END DO
DO ispin = 1, SIZE(v_tau_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END DO
DEALLOCATE (v_tau_rspace)
END IF
@ -366,16 +364,16 @@ CONTAINS
IF (.NOT. ASSOCIATED(fxc_rho)) THEN
ALLOCATE (fxc_rho(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, fxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(fxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL pw_zero(fxc_rho(ispin))
END DO
END IF
IF (.NOT. ASSOCIATED(gxc_rho)) THEN
ALLOCATE (gxc_rho(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, gxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(gxc_rho(ispin), &
in_space=REALSPACE, use_data=REALDATA3D)
CALL pw_zero(gxc_rho(ispin))
END DO
END IF
@ -389,7 +387,7 @@ CONTAINS
END IF
END DO
DO ispin = 1, SIZE(vxc00)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc00(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc00(ispin))
END DO
DEALLOCATE (vxc00)
@ -428,25 +426,25 @@ CONTAINS
IF (ASSOCIATED(fxc_rho)) THEN
DO ispin = 1, SIZE(fxc_rho)
CALL pw_pool_give_back_pw(auxbas_pw_pool, fxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(fxc_rho(ispin))
END DO
DEALLOCATE (fxc_rho)
END IF
IF (ASSOCIATED(fxc_tau)) THEN
DO ispin = 1, SIZE(fxc_tau)
CALL pw_pool_give_back_pw(auxbas_pw_pool, fxc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(fxc_tau(ispin))
END DO
DEALLOCATE (fxc_tau)
END IF
IF (ASSOCIATED(gxc_rho)) THEN
DO ispin = 1, SIZE(gxc_rho)
CALL pw_pool_give_back_pw(auxbas_pw_pool, gxc_rho(ispin))
CALL auxbas_pw_pool%give_back_pw(gxc_rho(ispin))
END DO
DEALLOCATE (gxc_rho)
END IF
IF (ASSOCIATED(gxc_tau)) THEN
DO ispin = 1, SIZE(gxc_tau)
CALL pw_pool_give_back_pw(auxbas_pw_pool, gxc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(gxc_tau(ispin))
END DO
DEALLOCATE (gxc_tau)
END IF

View file

@ -20,9 +20,7 @@ MODULE qs_gspace_mixing
pw_scale,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
RECIPROCALSPACE,&
pw_type
@ -107,10 +105,9 @@ CONTAINS
IF (nspin == 2) THEN
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tmp, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tmp, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(rho_tmp)
CALL pw_copy(rho_g(1), rho_tmp)
CALL pw_axpy(rho_g(2), rho_g(1), 1.0_dp)
@ -144,7 +141,7 @@ CONTAINS
CALL pw_scale(rho_g(1), 0.5_dp)
CALL pw_axpy(rho_g(1), rho_g(2), -1.0_dp)
CALL pw_scale(rho_g(2), -1.0_dp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tmp)
CALL auxbas_pw_pool%give_back_pw(rho_tmp)
END IF
CALL timestop(handle)
RETURN
@ -177,7 +174,7 @@ CONTAINS
CALL pw_scale(rho_g(1), 0.5_dp)
CALL pw_axpy(rho_g(1), rho_g(2), -1.0_dp)
CALL pw_scale(rho_g(2), -1.0_dp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tmp)
CALL auxbas_pw_pool%give_back_pw(rho_tmp)
END IF
DO ispin = 1, nspin

View file

@ -57,15 +57,11 @@ MODULE qs_kpp1_env_methods
pw_transfer
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_create,&
pw_release,&
pw_type
USE qs_energy_types, ONLY: allocate_qs_energy,&
deallocate_qs_energy,&
@ -278,17 +274,17 @@ CONTAINS
CPASSERT(ASSOCIATED(pw_env))
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (gapw .OR. gapw_xc) &
CALL prepare_gapw_den(qs_env, p_env%local_rho_set, do_rho0=(.NOT. gapw_xc))
! *** calculate the hartree potential on the total density ***
CALL pw_pool_create_pw(auxbas_pw_pool, rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rho1_g(1), rho1_tot_gspace)
DO ispin = 2, nspins
@ -310,19 +306,19 @@ CONTAINS
IF (.NOT. (nspins == 1 .AND. do_excitations .AND. do_triplet)) THEN
BLOCK
TYPE(pw_type) :: v_hartree_gspace
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_poisson_solve(poisson_env, rho1_tot_gspace, &
energy_hartree, &
v_hartree_gspace)
CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
END BLOCK
CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho1_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
! *** calculate the xc potential ***
IF (gapw_xc) THEN
@ -337,16 +333,16 @@ CONTAINS
lsd = .TRUE.
ALLOCATE (rho1_r_pw(2))
DO ispin = 1, 2
CALL pw_create(rho1_r_pw(ispin), rho1_r(1)%pw_grid, &
rho1_r(1)%in_use, rho1_r(1)%in_space)
CALL rho1_r_pw(ispin)%create(rho1_r(1)%pw_grid, &
rho1_r(1)%in_use, rho1_r(1)%in_space)
CALL pw_transfer(rho1_r(1), rho1_r_pw(ispin))
END DO
IF (ASSOCIATED(tau1_r)) THEN
ALLOCATE (tau1_r_pw(2))
DO ispin = 1, 2
CALL pw_create(tau1_r_pw(ispin), tau1_r(1)%pw_grid, &
tau1_r(1)%in_use, tau1_r(1)%in_space)
CALL tau1_r_pw(ispin)%create(tau1_r(1)%pw_grid, &
tau1_r(1)%in_use, tau1_r(1)%in_space)
CALL pw_transfer(tau1_r(1), tau1_r_pw(ispin))
END DO
END IF
@ -370,7 +366,7 @@ CONTAINS
END DO
v_rspace_new => v_xc
IF (SIZE(v_xc) /= nspins) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(2))
CALL auxbas_pw_pool%give_back_pw(v_xc(2))
END IF
NULLIFY (v_xc)
IF (ASSOCIATED(v_xc_tau)) THEN
@ -378,7 +374,7 @@ CONTAINS
CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
END DO
IF (SIZE(v_xc_tau) /= nspins) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(2))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(2))
END IF
END IF
@ -392,12 +388,12 @@ CONTAINS
IF (nspins == 1 .AND. do_excitations .AND. &
(lsd_singlets .OR. do_triplet)) THEN
DO ispin = 1, SIZE(rho1_r_pw)
CALL pw_release(rho1_r_pw(ispin))
CALL rho1_r_pw(ispin)%release()
END DO
DEALLOCATE (rho1_r_pw)
IF (ASSOCIATED(tau1_r_pw)) THEN
DO ispin = 1, SIZE(tau1_r_pw)
CALL pw_release(tau1_r_pw(ispin))
CALL tau1_r_pw(ispin)%release()
END DO
DEALLOCATE (tau1_r_pw)
END IF
@ -547,14 +543,14 @@ CONTAINS
rho_atom_external=p_env%local_rho_set%rho_atom_set)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
DO ispin = 1, SIZE(v_rspace_new)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
END DO
DEALLOCATE (v_rspace_new)
IF (ASSOCIATED(v_xc_tau)) THEN
DO ispin = 1, SIZE(v_xc_tau)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
END DO
DEALLOCATE (v_xc_tau)
END IF
@ -712,15 +708,15 @@ CONTAINS
(lsd_singlets .OR. do_triplet))) THEN
ALLOCATE (my_rho_r(2))
DO ispin = 1, 2
CALL pw_pool_create_pw(auxbas_pw_pool, my_rho_r(ispin), &
use_data=rho_r(1)%in_use, in_space=rho_r(1)%in_space)
CALL auxbas_pw_pool%create_pw(my_rho_r(ispin), &
use_data=rho_r(1)%in_use, in_space=rho_r(1)%in_space)
CALL pw_axpy(rho_r(1), my_rho_r(ispin), 0.5_dp, 0.0_dp)
END DO
IF (dft_control%use_kinetic_energy_density) THEN
ALLOCATE (my_tau_r(2))
DO ispin = 1, 2
CALL pw_pool_create_pw(auxbas_pw_pool, my_tau_r(ispin), &
use_data=tau_r(1)%in_use, in_space=tau_r(1)%in_space)
CALL auxbas_pw_pool%create_pw(my_tau_r(ispin), &
use_data=tau_r(1)%in_use, in_space=tau_r(1)%in_space)
CALL pw_axpy(tau_r(1), my_tau_r(ispin), 0.5_dp, 0.0_dp)
END DO
END IF
@ -745,12 +741,12 @@ CONTAINS
IF (nspins == 1 .AND. (do_excitations .AND. &
(lsd_singlets .OR. do_triplet))) THEN
DO ispin = 1, SIZE(my_rho_r)
CALL pw_release(my_rho_r(ispin))
CALL my_rho_r(ispin)%release()
END DO
DEALLOCATE (my_rho_r)
IF (ASSOCIATED(my_tau_r)) THEN
DO ispin = 1, SIZE(my_tau_r)
CALL pw_release(my_tau_r(ispin))
CALL my_tau_r(ispin)%release()
END DO
DEALLOCATE (my_tau_r)
END IF

View file

@ -22,8 +22,7 @@ MODULE qs_ks_apply_restraints
USE message_passing, ONLY: mp_para_env_type
USE mulliken, ONLY: mulliken_restraint
USE pw_methods, ONLY: pw_scale
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE
USE qs_cdft_methods, ONLY: becke_constraint,&
@ -83,8 +82,8 @@ CONTAINS
! First SCF iteraration => allocate storage
DO igroup = 1, SIZE(cdft_control%group)
ALLOCATE (cdft_control%group(igroup)%weight)
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%group(igroup)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%group(igroup)%weight, &
use_data=REALDATA3D, in_space=REALSPACE)
! Sanity check
IF (cdft_control%group(igroup)%constraint_type /= cdft_charge_constraint &
.AND. dft_control%nspins == 1) &
@ -95,8 +94,8 @@ CONTAINS
IF (.NOT. ASSOCIATED(cdft_control%charge)) &
ALLOCATE (cdft_control%charge(cdft_control%natoms))
DO iatom = 1, cdft_control%natoms
CALL pw_pool_create_pw(auxbas_pw_pool, cdft_control%charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(cdft_control%charge(iatom), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
! Another sanity check

View file

@ -83,14 +83,11 @@ MODULE qs_ks_methods
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_implicit,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qmmm_image_charge, ONLY: add_image_pot_to_hartree_pot,&
calculate_image_pot,&
@ -347,14 +344,12 @@ CONTAINS
END IF
! Calculate the Hartree potential
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
scf_section => section_vals_get_subs_vals(input, "DFT%SCF")
IF (BTEST(cp_print_key_should_output(logger%iter_info, scf_section, &
@ -381,10 +376,9 @@ CONTAINS
! Self-consistent continuum solvation (SCCS) model
NULLIFY (v_sccs_rspace)
ALLOCATE (v_sccs_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_sccs_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_sccs_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (poisson_env%parameters%solver .EQ. pw_poisson_implicit) THEN
CPABORT("The implicit Poisson solver cannot be used together with SCCS.")
@ -427,7 +421,7 @@ CONTAINS
CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
IF (dft_control%correct_surf_dip) THEN
IF (dft_control%surf_dip_correct_switch) THEN
@ -491,7 +485,7 @@ CONTAINS
qmmm_env=qs_env%qmmm_env_qm, qs_env=qs_env)
END IF
END IF
CALL pw_release(qs_env%ks_qmmm_env%v_metal_rspace)
CALL qs_env%ks_qmmm_env%v_metal_rspace%release()
DEALLOCATE (qs_env%ks_qmmm_env%v_metal_rspace)
END IF
IF (.NOT. just_energy) THEN
@ -499,7 +493,7 @@ CONTAINS
v_qmmm=qs_env%ks_qmmm_env%v_qmmm_rspace, scale=1.0_dp)
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
! calculate the density matrix for the fitted mo_coeffs
IF (dft_control%do_admm) THEN
@ -654,11 +648,11 @@ CONTAINS
(poisson_env%parameters%dielectric_params%dielec_core_correction)) THEN
BLOCK
TYPE(pw_type) :: v_minus_veps
CALL pw_pool_create_pw(auxbas_pw_pool, v_minus_veps, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_minus_veps, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(v_hartree_rspace, v_minus_veps)
CALL pw_axpy(poisson_env%implicit_env%v_eps, v_minus_veps, -v_hartree_rspace%pw_grid%dvol)
CALL integrate_v_core_rspace(v_minus_veps, qs_env)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_minus_veps)
CALL auxbas_pw_pool%give_back_pw(v_minus_veps)
END BLOCK
ELSE
CALL integrate_v_core_rspace(v_hartree_rspace, qs_env)
@ -739,32 +733,32 @@ CONTAINS
END IF ! .NOT. just energy
IF (dft_control%qs_control%ddapc_explicit_potential) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_spin_ddapc_rest_r)
CALL auxbas_pw_pool%give_back_pw(v_spin_ddapc_rest_r)
DEALLOCATE (v_spin_ddapc_rest_r)
END IF
IF (calculate_forces .AND. dft_control%qs_control%cdft) THEN
IF (.NOT. cdft_control%transfer_pot) THEN
DO iatom = 1, SIZE(cdft_control%group)
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(iatom)%weight)
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(iatom)%weight)
DEALLOCATE (cdft_control%group(iatom)%weight)
END DO
IF (cdft_control%atomic_charges) THEN
DO iatom = 1, cdft_control%natoms
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%charge(iatom))
CALL auxbas_pw_pool%give_back_pw(cdft_control%charge(iatom))
END DO
DEALLOCATE (cdft_control%charge)
END IF
IF (cdft_control%type == outer_scf_becke_constraint .AND. &
cdft_control%becke_control%cavity_confine) THEN
IF (.NOT. ASSOCIATED(cdft_control%becke_control%cavity_mat)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%becke_control%cavity)
CALL auxbas_pw_pool%give_back_pw(cdft_control%becke_control%cavity)
ELSE
DEALLOCATE (cdft_control%becke_control%cavity_mat)
END IF
ELSE IF (cdft_control%type == outer_scf_hirshfeld_constraint) THEN
IF (ASSOCIATED(cdft_control%hirshfeld_control%hirshfeld_env%fnorm)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%hirshfeld_control%hirshfeld_env%fnorm)
CALL auxbas_pw_pool%give_back_pw(cdft_control%hirshfeld_control%hirshfeld_env%fnorm)
END IF
END IF
IF (ASSOCIATED(cdft_control%charges_fragment)) DEALLOCATE (cdft_control%charges_fragment)
@ -775,7 +769,7 @@ CONTAINS
END IF
IF (dft_control%do_sccs) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_sccs_rspace)
CALL auxbas_pw_pool%give_back_pw(v_sccs_rspace)
DEALLOCATE (v_sccs_rspace)
END IF

View file

@ -25,8 +25,7 @@ MODULE qs_ks_qmmm_methods
pw_env_retain
USE pw_methods, ONLY: pw_axpy,&
pw_integral_ab
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
@ -110,8 +109,8 @@ CONTAINS
ks_qmmm_env%pc_ener = 0.0_dp
ks_qmmm_env%n_evals = 0
CALL pw_pool_create_pw(auxbas_pw_pool, ks_qmmm_env%v_qmmm_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(ks_qmmm_env%v_qmmm_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
IF ((qmmm_env%qmmm_coupl_type == do_qmmm_gauss) .OR. (qmmm_env%qmmm_coupl_type == do_qmmm_swave)) THEN
CALL init_d3_poly_module() ! a fairly arbitrary but sufficient spot to do this

View file

@ -19,8 +19,7 @@ MODULE qs_ks_qmmm_types
USE pw_env_types, ONLY: pw_env_get,&
pw_env_release,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
#include "./base/base_uses.f90"
@ -72,7 +71,7 @@ CONTAINS
TYPE(pw_pool_type), POINTER :: pool
CALL pw_env_get(ks_qmmm_env%pw_env, auxbas_pw_pool=pool)
CALL pw_pool_give_back_pw(pool, ks_qmmm_env%v_qmmm_rspace)
CALL pool%give_back_pw(ks_qmmm_env%v_qmmm_rspace)
CALL pw_env_release(ks_qmmm_env%pw_env)
IF (ASSOCIATED(ks_qmmm_env%cube_info)) THEN
DO i = 1, SIZE(ks_qmmm_env%cube_info)

View file

@ -35,15 +35,11 @@ MODULE qs_ks_reference
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_create,&
pw_release,&
pw_type
USE qs_core_energies, ONLY: calculate_ecore_overlap,&
calculate_ecore_self
@ -147,12 +143,12 @@ CONTAINS
poisson_env=poisson_env)
! Calculate the Hartree potential
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! Get the total density in g-space [ions + electrons]
CALL calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho)
@ -162,8 +158,8 @@ CONTAINS
CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
!
CALL calculate_ecore_self(qs_env, E_self_core=eself)
CALL calculate_ecore_overlap(qs_env, para_env, PRESENT(h_stress), E_overlap_core=eovrl)
@ -204,11 +200,11 @@ CONTAINS
! allocate potentials
IF (ASSOCIATED(vh_rspace%pw_grid)) THEN
CALL pw_release(vh_rspace)
CALL vh_rspace%release()
END IF
IF (ASSOCIATED(vxc_rspace)) THEN
DO iab = 1, SIZE(vxc_rspace)
CALL pw_release(vxc_rspace(iab))
CALL vxc_rspace(iab)%release()
END DO
ELSE
ALLOCATE (vxc_rspace(nspins))
@ -216,7 +212,7 @@ CONTAINS
IF (ASSOCIATED(v_tau_rspace)) THEN
IF (ASSOCIATED(vtau_rspace)) THEN
DO iab = 1, SIZE(vtau_rspace)
CALL pw_release(vtau_rspace(iab))
CALL vtau_rspace(iab)%release()
END DO
ELSE
ALLOCATE (vtau_rspace(nspins))
@ -227,7 +223,7 @@ CONTAINS
IF (ASSOCIATED(v_admm_rspace)) THEN
IF (ASSOCIATED(vadmm_rspace)) THEN
DO iab = 1, SIZE(vadmm_rspace)
CALL pw_release(vadmm_rspace(iab))
CALL vadmm_rspace(iab)%release()
END DO
ELSE
ALLOCATE (vadmm_rspace(nspins))
@ -237,17 +233,17 @@ CONTAINS
END IF
pw_grid => v_hartree_rspace%pw_grid
CALL pw_create(vh_rspace, pw_grid, use_data=REALDATA3D, in_space=REALSPACE)
CALL vh_rspace%create(pw_grid, use_data=REALDATA3D, in_space=REALSPACE)
DO ispin = 1, nspins
CALL pw_create(vxc_rspace(ispin), pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL vxc_rspace(ispin)%create(pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
IF (ASSOCIATED(vtau_rspace)) THEN
CALL pw_create(vtau_rspace(ispin), pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL vtau_rspace(ispin)%create(pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
END IF
IF (ASSOCIATED(vadmm_rspace)) THEN
CALL pw_create(vadmm_rspace(ispin), pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL vadmm_rspace(ispin)%create(pw_grid, &
use_data=REALDATA3D, in_space=REALSPACE)
END IF
END DO
!
@ -274,12 +270,12 @@ CONTAINS
END IF
! return pw grids
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
IF (ASSOCIATED(v_rspace)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace(ispin))
IF (ASSOCIATED(v_tau_rspace)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END IF
END DO
DEALLOCATE (v_rspace)
@ -287,7 +283,7 @@ CONTAINS
IF (ASSOCIATED(v_tau_rspace)) DEALLOCATE (v_tau_rspace)
IF (ASSOCIATED(v_admm_rspace)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_admm_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_admm_rspace(ispin))
END DO
DEALLOCATE (v_admm_rspace)
END IF

View file

@ -46,8 +46,7 @@ MODULE qs_ks_types
USE pw_env_types, ONLY: pw_env_release,&
pw_env_retain,&
pw_env_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
USE qs_energy_types, ONLY: qs_energy_type
USE qs_force_types, ONLY: qs_force_type
USE qs_kind_types, ONLY: qs_kind_type
@ -716,7 +715,7 @@ CONTAINS
TYPE(qs_ks_env_type), INTENT(INOUT) :: ks_env
IF (ASSOCIATED(ks_env%v_hartree_rspace)) THEN
CALL pw_release(ks_env%v_hartree_rspace)
CALL ks_env%v_hartree_rspace%release()
DEALLOCATE (ks_env%v_hartree_rspace)
END IF
@ -750,23 +749,23 @@ CONTAINS
CALL deallocate_task_list(ks_env%task_list_soft)
IF (ASSOCIATED(ks_env%rho_nlcc_g)) THEN
CALL pw_release(ks_env%rho_nlcc_g)
CALL ks_env%rho_nlcc_g%release()
DEALLOCATE (ks_env%rho_nlcc_g)
END IF
IF (ASSOCIATED(ks_env%rho_nlcc)) THEN
CALL pw_release(ks_env%rho_nlcc)
CALL ks_env%rho_nlcc%release()
DEALLOCATE (ks_env%rho_nlcc)
END IF
IF (ASSOCIATED(ks_env%rho_core)) THEN
CALL pw_release(ks_env%rho_core)
CALL ks_env%rho_core%release()
DEALLOCATE (ks_env%rho_core)
END IF
IF (ASSOCIATED(ks_env%vppl)) THEN
CALL pw_release(ks_env%vppl)
CALL ks_env%vppl%release()
DEALLOCATE (ks_env%vppl)
END IF
IF (ASSOCIATED(ks_env%vee)) THEN
CALL pw_release(ks_env%vee)
CALL ks_env%vee%release()
DEALLOCATE (ks_env%vee)
END IF
IF (ASSOCIATED(ks_env%dbcsr_dist)) THEN
@ -818,7 +817,7 @@ CONTAINS
TYPE(qs_ks_env_type), INTENT(INOUT) :: ks_env
IF (ASSOCIATED(ks_env%v_hartree_rspace)) THEN
CALL pw_release(ks_env%v_hartree_rspace)
CALL ks_env%v_hartree_rspace%release()
DEALLOCATE (ks_env%v_hartree_rspace)
END IF
@ -848,23 +847,23 @@ CONTAINS
CALL deallocate_task_list(ks_env%task_list_soft)
IF (ASSOCIATED(ks_env%rho_nlcc_g)) THEN
CALL pw_release(ks_env%rho_nlcc_g)
CALL ks_env%rho_nlcc_g%release()
DEALLOCATE (ks_env%rho_nlcc_g)
END IF
IF (ASSOCIATED(ks_env%rho_nlcc)) THEN
CALL pw_release(ks_env%rho_nlcc)
CALL ks_env%rho_nlcc%release()
DEALLOCATE (ks_env%rho_nlcc)
END IF
IF (ASSOCIATED(ks_env%rho_core)) THEN
CALL pw_release(ks_env%rho_core)
CALL ks_env%rho_core%release()
DEALLOCATE (ks_env%rho_core)
END IF
IF (ASSOCIATED(ks_env%vppl)) THEN
CALL pw_release(ks_env%vppl)
CALL ks_env%vppl%release()
DEALLOCATE (ks_env%vppl)
END IF
IF (ASSOCIATED(ks_env%vee)) THEN
CALL pw_release(ks_env%vee)
CALL ks_env%vee%release()
DEALLOCATE (ks_env%vee)
END IF

View file

@ -93,9 +93,7 @@ MODULE qs_ks_utils
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_implicit,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -316,16 +314,16 @@ CONTAINS
ALLOCATE (rho_r(Nspin))
ALLOCATE (rho_g(Nspin))
DO ispin = 1, Nspin
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(ispin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(ispin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, work_v_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(work_v_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! get mo matrices needed to construct the density matrices
! we will base all on the alpha spin matrix, obviously possible in ROKS
@ -389,7 +387,7 @@ CONTAINS
CALL pw_axpy(vxc(ispin), work_v_rspace, energy_scaling(iterm)*vxc(ispin)%pw_grid%dvol, 0.0_dp)
CALL integrate_v_rspace(v_rspace=work_v_rspace, pmat=matrix_p(ispin), hmat=matrix_h(ispin), &
qs_env=qs_env, calculate_forces=calculate_forces)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vxc(ispin))
CALL auxbas_pw_pool%give_back_pw(vxc(ispin))
END DO
DEALLOCATE (vxc)
@ -436,8 +434,8 @@ CONTAINS
! release allocated memory
DO ispin = 1, Nspin
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_r(ispin))
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_g(ispin))
CALL auxbas_pw_pool%give_back_pw(rho_r(ispin))
CALL auxbas_pw_pool%give_back_pw(rho_g(ispin))
END DO
DEALLOCATE (rho_r, rho_g)
CALL dbcsr_deallocate_matrix_set(matrix_p)
@ -446,7 +444,7 @@ CONTAINS
CALL dbcsr_deallocate_matrix_set(matrix_hfx)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_v_rspace)
CALL auxbas_pw_pool%give_back_pw(work_v_rspace)
CALL dbcsr_release_p(fm_deriv)
CALL dbcsr_release_p(fm_scaled)
@ -618,24 +616,24 @@ CONTAINS
END SELECT
! data needed for each of the orbs
CALL pw_pool_create_pw(auxbas_pw_pool, orb_rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, tmp_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, orb_rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, tmp_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, work_v_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, work_v_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(orb_rho_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tmp_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(orb_rho_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tmp_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(work_v_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(work_v_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
ALLOCATE (orb_density_matrix)
CALL dbcsr_copy(orb_density_matrix, rho_ao(1)%matrix, &
@ -730,20 +728,20 @@ CONTAINS
tmp_dbcsr(sic_orbital_list(3, iorb))%matrix, 1.0_dp, 1.0_dp)
!
! need to deallocate vxc
CALL pw_pool_give_back_pw(xc_pw_pool, vxc(1))
CALL pw_pool_give_back_pw(xc_pw_pool, vxc(2))
CALL xc_pw_pool%give_back_pw(vxc(1))
CALL xc_pw_pool%give_back_pw(vxc(2))
DEALLOCATE (vxc)
END IF
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, orb_rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, tmp_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, orb_rho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, tmp_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_v_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_v_rspace)
CALL auxbas_pw_pool%give_back_pw(orb_rho_r)
CALL auxbas_pw_pool%give_back_pw(tmp_r)
CALL auxbas_pw_pool%give_back_pw(orb_rho_g)
CALL auxbas_pw_pool%give_back_pw(tmp_g)
CALL auxbas_pw_pool%give_back_pw(work_v_gspace)
CALL auxbas_pw_pool%give_back_pw(work_v_rspace)
CALL dbcsr_deallocate_matrix(orb_density_matrix)
CALL dbcsr_deallocate_matrix(orb_h)
@ -803,12 +801,12 @@ CONTAINS
! OK, right now we like two spins to do sic, could be relaxed for AD
CPASSERT(dft_control%nspins == 2)
CALL pw_pool_create_pw(auxbas_pw_pool, work_rho, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, work_v, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(work_rho, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(work_v, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL qs_rho_get(rho, rho_g=rho_g)
@ -879,16 +877,16 @@ CONTAINS
IF (.NOT. just_energy) THEN
ALLOCATE (v_sic_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, v_sic_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_sic_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(work_v, v_sic_rspace)
! also take into account the scaling (in addition to the volume element)
CALL pw_scale(v_sic_rspace, &
dft_control%sic_scaling_a*v_sic_rspace%pw_grid%dvol)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_rho)
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_v)
CALL auxbas_pw_pool%give_back_pw(work_rho)
CALL auxbas_pw_pool%give_back_pw(work_v)
END SUBROUTINE calc_v_sic_rspace
@ -1439,7 +1437,7 @@ CONTAINS
! DFT embedding
IF (dft_control%apply_embed_pot) THEN
CALL pw_axpy(v_rspace_embed(ispin), v_rspace_new(ispin), v_rspace_embed(ispin)%pw_grid%dvol)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_embed(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_embed(ispin))
END IF
IF (lrigpw) THEN
lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
@ -1482,13 +1480,13 @@ CONTAINS
calculate_forces=calculate_forces, &
gapw=gapw)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
END DO ! ispin
SELECT CASE (dft_control%sic_method_id)
CASE (sic_none)
CASE (sic_mauri_us, sic_mauri_spz, sic_ad)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_sic_rspace)
CALL auxbas_pw_pool%give_back_pw(v_sic_rspace)
DEALLOCATE (v_sic_rspace)
END SELECT
DEALLOCATE (v_rspace_new)
@ -1510,7 +1508,7 @@ CONTAINS
! DFT embedding
IF (dft_control%apply_embed_pot) THEN
CALL pw_axpy(v_rspace_embed(ispin), v_rspace, v_rspace_embed(ispin)%pw_grid%dvol)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_embed(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_embed(ispin))
END IF
IF (lrigpw) THEN
lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
@ -1596,7 +1594,7 @@ CONTAINS
qs_env=qs_env, &
calculate_forces=calculate_forces, compute_tau=.TRUE., &
gapw=gapw)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END DO
DEALLOCATE (v_tau_rspace)
END IF
@ -1657,14 +1655,14 @@ CONTAINS
matrix_ks_aux_fit(ispin, img)%matrix, 1.0_dp, -1.0_dp)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new_aux_fit(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new_aux_fit(ispin))
END DO
DEALLOCATE (v_rspace_new_aux_fit)
END IF
! Clean up v_tau_rspace_aux_fit, which is actually not needed
IF (ASSOCIATED(v_tau_rspace_aux_fit)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace_aux_fit(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace_aux_fit(ispin))
END DO
DEALLOCATE (v_tau_rspace_aux_fit)
END IF
@ -1734,10 +1732,10 @@ CONTAINS
CALL qs_rho_get(rho, rho_r=rho_r, rho_g=rho_g)
nspins = 1
ALLOCATE (v_rspace_new(nspins))
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=v_rspace_new(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=v_xc_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_rspace_new(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_xc_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_rspace_new(1))
do_zmp_read = dft_control%apply_external_vxc
@ -1749,14 +1747,12 @@ CONTAINS
BLOCK
REAL(KIND=dp) :: factor
TYPE(pw_type) :: rho_eff_gspace, v_xc_gspace
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_eff_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=v_xc_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_eff_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_xc_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(rho_eff_gspace)
CALL pw_zero(v_xc_gspace)
CALL pw_zero(v_xc_rspace)
@ -1788,14 +1784,12 @@ CONTAINS
!Note that this is not the xc energy but \int(\rho*v_xc)
!Vxc---> v_rspace_new
!Exc---> energy%exc
CALL pw_pool_give_back_pw(auxbas_pw_pool, &
rho_eff_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, &
v_xc_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_eff_gspace)
CALL auxbas_pw_pool%give_back_pw(v_xc_gspace)
END BLOCK
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_rspace)
CALL auxbas_pw_pool%give_back_pw(v_xc_rspace)
CALL timestop(handle)
@ -1843,8 +1837,8 @@ CONTAINS
embed_corr = 0.0_dp
DO ispin = 1, dft_control%nspins
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=v_rspace_embed(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=v_rspace_embed(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_rspace_embed(ispin))
CALL pw_copy(qs_env%embed_pot, v_rspace_embed(ispin))
@ -1865,7 +1859,7 @@ CONTAINS
! If only energy requiested we delete the potential
IF (just_energy) THEN
DO ispin = 1, dft_control%nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_embed(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_embed(ispin))
END DO
DEALLOCATE (v_rspace_embed)
END IF

View file

@ -83,9 +83,7 @@ MODULE qs_linres_current
pw_integrate_function,&
pw_scale,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: REALDATA3D,&
REALSPACE,&
pw_type
@ -480,8 +478,8 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_rs_desc=auxbas_rs_desc, &
auxbas_pw_pool=auxbas_pw_pool)
!
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, use_data=REALDATA3D, &
in_space=REALSPACE)
!
DO idir = 1, 3
CALL pw_zero(wf_r)
@ -513,7 +511,7 @@ CONTAINS
& "PRINT%CURRENT_CUBES", mpi_io=mpi_io)
END DO
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_r)
END IF ! current cube
!
! Integrated current response checksum

View file

@ -75,8 +75,7 @@ MODULE qs_linres_current_utils
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_methods, ONLY: pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -1264,11 +1263,11 @@ CONTAINS
NULLIFY (rho_r, rho_g)
ALLOCATE (rho_r(nspins), rho_g(nspins))
DO ispin = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r(ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(rho_r(ispin))
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_zero(rho_g(ispin))
END DO
NULLIFY (current_env%jrho1_set(idir)%rho)

View file

@ -49,9 +49,7 @@ MODULE qs_linres_epr_nablavks
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -282,14 +280,14 @@ CONTAINS
! Add Hartree potential
! -------------------------------------
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
IF (gapw) THEN
! need to rebuild the coeff !
@ -455,10 +453,10 @@ CONTAINS
CALL pw_transfer(v_hartree_gtemp, v_hartree_rtemp)
CALL pw_copy(v_hartree_rtemp, pwz)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gtemp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rtemp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gtemp)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rtemp)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
! -------------------------------------
! Add Coulomb potential
@ -504,12 +502,12 @@ CONTAINS
IF (gth_gspace) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, v_coulomb_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_coulomb_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_coulomb_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_coulomb_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_coulomb_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_coulomb_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(v_coulomb_gspace)
@ -605,9 +603,9 @@ CONTAINS
CALL pw_transfer(v_coulomb_gtemp, v_coulomb_rtemp)
CALL pw_axpy(v_coulomb_rtemp, pwz)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_coulomb_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_coulomb_gtemp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_coulomb_rtemp)
CALL auxbas_pw_pool%give_back_pw(v_coulomb_gspace)
CALL auxbas_pw_pool%give_back_pw(v_coulomb_gtemp)
CALL auxbas_pw_pool%give_back_pw(v_coulomb_rtemp)
ELSE
! Attic of the atomic parallellisation
@ -850,10 +848,10 @@ CONTAINS
! Add V_xc potential
! -------------------------------------
CALL pw_pool_create_pw(auxbas_pw_pool, v_xc_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_xc_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_xc_gtemp, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_xc_rtemp, &
use_data=REALDATA3D, in_space=REALSPACE)
xc_section => section_vals_get_subs_vals(input, "PROPERTIES%LINRES%EPR%PRINT%G_TENSOR%XC")
! a possible vdW section in xc_section will be ignored
@ -888,7 +886,7 @@ CONTAINS
CALL qs_rho_get(nablavks_set(3, ispin)%rho, rho_r=rho_r)
CALL pw_axpy(v_xc_rtemp, rho_r(1))
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
END DO
@ -917,15 +915,15 @@ CONTAINS
CALL qs_rho_get(nablavks_set(3, ispin)%rho, rho_r=rho_r)
CALL pw_axpy(v_xc_rtemp, rho_r(1))
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_tau_rspace(ispin))
CALL auxbas_pw_pool%give_back_pw(v_tau_rspace(ispin))
END DO
DEALLOCATE (v_tau_rspace)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_gtemp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_rtemp)
CALL auxbas_pw_pool%give_back_pw(v_xc_gtemp)
CALL auxbas_pw_pool%give_back_pw(v_xc_rtemp)
IF (gapw .OR. gapw_xc) THEN
CALL calculate_vxc_atom(qs_env=qs_env, energy_only=.FALSE., exc1=exc1, &
@ -938,9 +936,9 @@ CONTAINS
IF (BTEST(cp_print_key_should_output(logger%iter_info, lr_section, &
"EPR%PRINT%NABLAVKS_CUBES"), cp_p_file)) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
DO idir = 1, 3
CALL pw_zero(wf_r)
CALL qs_rho_get(nablavks_set(idir, 1)%rho, rho_r=rho_r)
@ -960,7 +958,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, lr_section, &
"EPR%PRINT%NABLAVKS_CUBES", mpi_io=mpi_io)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_r)
END IF
CALL cp_print_key_finished_output(output_unit, logger, lr_section, &

View file

@ -37,9 +37,7 @@ MODULE qs_linres_epr_ownutils
pw_scale,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_spline_utils, ONLY: Eval_Interp_Spl3_pbc,&
find_coeffs,&
@ -384,9 +382,8 @@ CONTAINS
DO ispin = 1, nspins
DO idir1 = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, &
vks_pw_spline(idir1, ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(vks_pw_spline(idir1, ispin), &
use_data=REALDATA3D, in_space=REALSPACE)
! calculate spline coefficients
CALL pw_spline_precond_create(precond, precond_kind=aint_precond, &
pool=auxbas_pw_pool, pbc=.TRUE., transpose=.FALSE.)
@ -519,7 +516,7 @@ CONTAINS
DO ispin = 1, nspins
DO idir1 = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, vks_pw_spline(idir1, ispin))
CALL auxbas_pw_pool%give_back_pw(vks_pw_spline(idir1, ispin))
END DO
END DO
DEALLOCATE (vks_pw_spline)
@ -654,9 +651,8 @@ CONTAINS
CALL section_vals_val_get(interp_section, "eps_x", r_val=eps_x)
DO idir1 = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, &
bind_pw_spline(idir1, iB), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(bind_pw_spline(idir1, iB), &
use_data=REALDATA3D, in_space=REALSPACE)
! calculate spline coefficients
CALL pw_spline_precond_create(precond, precond_kind=aint_precond, &
pool=auxbas_pw_pool, pbc=.TRUE., transpose=.FALSE.)
@ -746,7 +742,7 @@ CONTAINS
g_soo(iB, :) = g_soo(iB, :) + temp_soo_gapw(iB, :)
DO idir1 = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, bind_pw_spline(idir1, iB))
CALL auxbas_pw_pool%give_back_pw(bind_pw_spline(idir1, iB))
END DO
DEALLOCATE (bind_pw_spline)
@ -815,18 +811,18 @@ CONTAINS
ALLOCATE (shift_pw_gspace(3, nspins))
DO ispin = 1, nspins
DO idir = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, shift_pw_gspace(idir, ispin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(shift_pw_gspace(idir, ispin), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(shift_pw_gspace(idir, ispin))
END DO
END DO
CALL pw_pool_create_pw(auxbas_pw_pool, shift_pw_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(shift_pw_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(shift_pw_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, pw_gspace_work, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw_gspace_work, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(pw_gspace_work)
!
CALL set_vecp(iB, iiB, iiiB)
@ -867,14 +863,14 @@ CONTAINS
END IF
!
! Dellocate grids for the calculation of jrho and the shift
CALL pw_pool_give_back_pw(auxbas_pw_pool, pw_gspace_work)
CALL auxbas_pw_pool%give_back_pw(pw_gspace_work)
DO ispin = 1, dft_control%nspins
DO idir = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, shift_pw_gspace(idir, ispin))
CALL auxbas_pw_pool%give_back_pw(shift_pw_gspace(idir, ispin))
END DO
END DO
DEALLOCATE (shift_pw_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, shift_pw_rspace)
CALL auxbas_pw_pool%give_back_pw(shift_pw_rspace)
!
! Finalize
CALL timestop(handle)

View file

@ -37,8 +37,7 @@ MODULE qs_linres_epr_utils
e_gfactor
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -186,10 +185,10 @@ CONTAINS
ALLOCATE (epr_env%bind_set(idir, i_B)%rho)
CALL qs_rho_create(epr_env%bind_set(idir, i_B)%rho)
ALLOCATE (rho_r(1), rho_g(1))
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(1), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(1), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL qs_rho_set(epr_env%bind_set(idir, i_B)%rho, rho_r=rho_r, rho_g=rho_g)
END DO
END DO
@ -202,10 +201,10 @@ CONTAINS
ALLOCATE (epr_env%nablavks_set(idir, ispin)%rho)
CALL qs_rho_create(epr_env%nablavks_set(idir, ispin)%rho)
ALLOCATE (rho_r(1), rho_g(1))
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(1), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r(1), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(1), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL qs_rho_set(epr_env%nablavks_set(idir, ispin)%rho, &
rho_r=rho_r, rho_g=rho_g)
END DO

View file

@ -66,9 +66,7 @@ MODULE qs_linres_kernel
pw_transfer
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -277,20 +275,20 @@ CONTAINS
CPASSERT(ASSOCIATED(pw_env))
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (gapw .OR. gapw_xc) &
CALL prepare_gapw_den(qs_env, p_env%local_rho_set, do_rho0=(.NOT. gapw_xc))
! *** calculate the hartree potential on the total density ***
CALL pw_pool_create_pw(auxbas_pw_pool, rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho1_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL qs_rho_get(rho1, rho_g=rho1_g)
CALL pw_copy(rho1_g(1), rho1_tot_gspace)
@ -307,7 +305,7 @@ CONTAINS
CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho1_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
! *** calculate the xc potential ***
NULLIFY (rho1a)
@ -534,15 +532,15 @@ CONTAINS
END IF
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_rspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_rspace_new(ispin))
CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
END DO
DEALLOCATE (v_rspace_new)
IF (ASSOCIATED(v_xc_tau)) THEN
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc_tau(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
END DO
DEALLOCATE (v_xc_tau)
END IF
@ -952,7 +950,7 @@ CONTAINS
END IF
DO ispin = 1, nspins
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_xc(ispin))
CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
END DO
DEALLOCATE (v_xc)
CALL dbcsr_deallocate_matrix(xcmat%matrix)

View file

@ -19,9 +19,7 @@ MODULE qs_linres_nmr_epr_common_utils
USE mathconstants, ONLY: gaussi
USE pw_grid_types, ONLY: pw_grid_type
USE pw_methods, ONLY: pw_transfer
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
RECIPROCALSPACE,&
pw_type
@ -74,7 +72,7 @@ CONTAINS
CALL timeset(routineN, handle)
CALL pw_pool_create_pw(pw_pool, influence_fn, &
CALL pw_pool%create_pw(influence_fn, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
grid => influence_fn%pw_grid
@ -90,7 +88,7 @@ CONTAINS
funcG_times_rho%cc(1:ng) = funcG_times_rho%cc(1:ng)*influence_fn%cc(1:ng)
IF (grid%have_g0) funcG_times_rho%cc(1) = my_chi
CALL pw_pool_give_back_pw(pw_pool, influence_fn)
CALL pw_pool%give_back_pw(influence_fn)
CALL timestop(handle)

View file

@ -41,9 +41,7 @@ MODULE qs_linres_nmr_shift
USE pw_methods, ONLY: pw_axpy,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_spline_utils, ONLY: Eval_Interp_Spl3_pbc,&
find_coeffs,&
@ -159,8 +157,8 @@ CONTAINS
ALLOCATE (shift_pw_gspace(3, nspins))
DO ispin = 1, nspins
DO idir = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, shift_pw_gspace(idir, ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(shift_pw_gspace(idir, ispin), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_zero(shift_pw_gspace(idir, ispin))
END DO
END DO
@ -168,8 +166,8 @@ CONTAINS
!
CALL set_vecp(iB, iiB, iiiB)
!
CALL pw_pool_create_pw(auxbas_pw_pool, pw_gspace_work, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw_gspace_work, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_zero(pw_gspace_work)
DO ispin = 1, nspins
!
@ -193,12 +191,12 @@ CONTAINS
END DO ! idir
END DO ! ispin
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, pw_gspace_work)
CALL auxbas_pw_pool%give_back_pw(pw_gspace_work)
!
! compute shildings
IF (interpolate_shift) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, shift_pw_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(shift_pw_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
DO ispin = 1, nspins
DO idir = 1, 3
! Here first G->R and then interpolation to get the shifts.
@ -209,7 +207,7 @@ CONTAINS
iB, idir, nmr_section)
END DO
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, shift_pw_rspace)
CALL auxbas_pw_pool%give_back_pw(shift_pw_rspace)
ELSE
DO ispin = 1, nspins
DO idir = 1, 3
@ -232,7 +230,7 @@ CONTAINS
! Dellocate grids for the calculation of jrho and the shift
DO ispin = 1, nspins
DO idir = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, shift_pw_gspace(idir, ispin))
CALL auxbas_pw_pool%give_back_pw(shift_pw_gspace(idir, ispin))
END DO
END DO
DEALLOCATE (shift_pw_gspace)
@ -542,8 +540,8 @@ CONTAINS
! calculate spline coefficients
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, shiftspl, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(shiftspl, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_spline_precond_create(precond, precond_kind=aint_precond, &
pool=auxbas_pw_pool, pbc=.TRUE., transpose=.FALSE.)
@ -585,7 +583,7 @@ CONTAINS
END DO
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, shiftspl)
CALL auxbas_pw_pool%give_back_pw(shiftspl)
!
CALL timestop(handle)

View file

@ -85,9 +85,7 @@ MODULE qs_loc_methods
USE physcon, ONLY: angstrom
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -823,12 +821,12 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
my_state0 = 0
IF (PRESENT(state0)) my_state0 = state0
@ -890,8 +888,8 @@ CONTAINS
CALL cp_print_key_finished_output(unit_out_c, logger, print_key, "", mpi_io=mpi_io)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
CALL timestop(handle)
END SUBROUTINE qs_print_cubes

View file

@ -38,9 +38,7 @@ MODULE qs_local_properties
pw_multiply,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
@ -127,9 +125,9 @@ CONTAINS
! get working arrays
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, band_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, hartree_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, xc_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(band_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(hartree_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(xc_density, use_data=REALDATA3D, in_space=REALSPACE)
! w matrix
CALL get_qs_env(qs_env, matrix_w_kp=matrix_w)
@ -151,14 +149,12 @@ CONTAINS
! band structure energy density
CALL qs_energies_compute_w(qs_env, .TRUE.)
CALL get_qs_env(qs_env, ks_env=ks_env, matrix_w_kp=matrix_w)
CALL pw_pool_create_pw(auxbas_pw_pool, &
edens_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
edens_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(edens_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(edens_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(band_density)
DO ispin = 1, nspins
rho_ao => matrix_w(ispin, :)
@ -168,19 +164,17 @@ CONTAINS
ks_env=ks_env, soft_valid=(gapw .OR. gapw_xc))
CALL pw_axpy(edens_r, band_density)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, edens_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, edens_g)
CALL auxbas_pw_pool%give_back_pw(edens_r)
CALL auxbas_pw_pool%give_back_pw(edens_g)
! Hartree energy density correction = -0.5 * V_H(r) * [rho(r) - rho_core(r)]
ALLOCATE (rho_tot_gspace, rho_tot_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
NULLIFY (rho_core)
CALL get_qs_env(qs_env, &
v_hartree_rspace=v_hartree_rspace, &
@ -198,8 +192,8 @@ CONTAINS
CALL pw_zero(hartree_density)
ovol = 0.5_dp/hartree_density%pw_grid%dvol
CALL pw_multiply(hartree_density, v_hartree_rspace, rho_tot_rspace, alpha=ovol)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_rspace)
DEALLOCATE (rho_tot_gspace, rho_tot_rspace)
IF (dft_control%do_admm) THEN
@ -243,9 +237,9 @@ CONTAINS
END IF
! return temp arrays
CALL pw_pool_give_back_pw(auxbas_pw_pool, band_density)
CALL pw_pool_give_back_pw(auxbas_pw_pool, hartree_density)
CALL pw_pool_give_back_pw(auxbas_pw_pool, xc_density)
CALL auxbas_pw_pool%give_back_pw(band_density)
CALL auxbas_pw_pool%give_back_pw(hartree_density)
CALL auxbas_pw_pool%give_back_pw(xc_density)
CALL timestop(handle)
@ -324,7 +318,7 @@ CONTAINS
! get working arrays
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, xc_density, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(xc_density, use_data=REALDATA3D, in_space=REALSPACE)
! init local stress tensor
IF (do_stress) THEN
@ -349,20 +343,20 @@ CONTAINS
! Electrical field terms
CALL get_qs_env(qs_env, v_hartree_rspace=v_hartree_rspace)
CALL pw_pool_create_pw(auxbas_pw_pool, v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(v_hartree_rspace, v_hartree_gspace)
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, efield(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(efield(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_copy(v_hartree_gspace, efield(i))
END DO
CALL pw_derive(efield(1), (/1, 0, 0/))
CALL pw_derive(efield(2), (/0, 1, 0/))
CALL pw_derive(efield(3), (/0, 0, 1/))
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, efield(i))
CALL auxbas_pw_pool%give_back_pw(efield(i))
END DO
pv_loc = 0.0_dp

View file

@ -59,9 +59,7 @@ MODULE qs_pdos
USE preconditioner_types, ONLY: preconditioner_type
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -361,12 +359,12 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
ALLOCATE (read_r(4, n_r_ldos))
DO ildos = 1, n_r_ldos
WRITE (r_ldos_index(ildos), '(I0)') ildos
@ -900,8 +898,8 @@ CONTAINS
DEALLOCATE (read_r)
DEALLOCATE (r_ldos_p)
DEALLOCATE (r_ldos_index)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END IF
IF (do_virt) THEN
DEALLOCATE (evals_virt)

View file

@ -71,14 +71,11 @@ MODULE qs_resp
pw_zero
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qs_collocate_density, ONLY: calculate_rho_resp_all,&
calculate_rho_resp_single
@ -946,18 +943,15 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_ga, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
va_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
va_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_ga, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(va_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(va_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
!get fitting points and store them in resp_env%fitpoints
CALL get_fitting_points(qs_env, resp_env, rep_sys, particles=particles, &
@ -983,9 +977,9 @@ CONTAINS
END DO
END DO
CALL pw_release(va_gspace)
CALL pw_release(va_rspace)
CALL pw_release(rho_ga)
CALL va_gspace%release()
CALL va_rspace%release()
CALL rho_ga%release()
DO i = 1, natom
DO j = 1, natom
@ -1722,18 +1716,15 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_resp, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_resp_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_resp_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_resp, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_resp_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_resp_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_resp)
CALL calculate_rho_resp_all(rho_resp, resp_env%rhs, natom, &
@ -1751,15 +1742,15 @@ CONTAINS
IF (resp_env%use_repeat_method) THEN
v_resp_rspace%cr3d(:, :, :) = v_resp_rspace%cr3d(:, :, :) - resp_env%offset*dvol
END IF
CALL pw_release(v_resp_gspace)
CALL pw_release(rho_resp)
CALL v_resp_gspace%release()
CALL rho_resp%release()
!***now print the v_resp_rspace%pw to a cube file if requested
IF (BTEST(cp_print_key_should_output(logger%iter_info, resp_section, &
"PRINT%V_RESP_CUBE"), cp_p_file)) THEN
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
append_cube = section_get_lval(resp_section, "PRINT%V_RESP_CUBE%APPEND")
my_pos_cube = "REWIND"
IF (append_cube) THEN
@ -1780,7 +1771,7 @@ CONTAINS
mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, resp_section, &
"PRINT%V_RESP_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
!*** RMS and RRMS
@ -1807,7 +1798,7 @@ CONTAINS
"(RRMS) error of RESP fit:", rrms
END IF
CALL pw_release(v_resp_rspace)
CALL v_resp_rspace%release()
CALL timestop(handle)

View file

@ -34,15 +34,12 @@ MODULE qs_rho0_ggrid
pw_scale,&
pw_transfer,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qs_environment_types, ONLY: get_qs_env,&
qs_environment_type
@ -158,9 +155,9 @@ CONTAINS
CPASSERT(ASSOCIATED(pw_pool))
IF (igrid /= auxbas_grid) THEN
CALL pw_pool_create_pw(pw_pool, coeff_rspace, use_data=REALDATA3D, &
CALL pw_pool%create_pw(coeff_rspace, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(pw_pool, coeff_gspace, &
CALL pw_pool%create_pw(coeff_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END IF
@ -238,11 +235,11 @@ CONTAINS
tot_rs_int = pw_integrate_function(coeff_rspace, isign=-1)
CALL pw_pool_give_back_pw(pw_pool, coeff_rspace)
CALL pw_pool_give_back_pw(pw_pool, coeff_gspace)
CALL pw_pool%give_back_pw(coeff_rspace)
CALL pw_pool%give_back_pw(coeff_gspace)
ELSE
CALL pw_pool_create_pw(pw_pool, rho0_r_tmp, &
CALL pw_pool%create_pw(rho0_r_tmp, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL transfer_rs2pw(rs_grid, rho0_r_tmp)
@ -250,7 +247,7 @@ CONTAINS
tot_rs_int = pw_integrate_function(rho0_r_tmp, isign=-1)
CALL pw_transfer(rho0_r_tmp, rho0_s_rs)
CALL pw_pool_give_back_pw(pw_pool, rho0_r_tmp)
CALL pw_pool%give_back_pw(rho0_r_tmp)
CALL pw_zero(rho0_s_gs)
CALL pw_transfer(rho0_s_rs, rho0_s_gs)
@ -287,21 +284,21 @@ CONTAINS
! rho0 density in real space
IF (ASSOCIATED(rho0_mpole%rho0_s_rs)) THEN
CALL pw_release(rho0_mpole%rho0_s_rs)
CALL rho0_mpole%rho0_s_rs%release()
ELSE
ALLOCATE (rho0_mpole%rho0_s_rs)
END IF
CALL pw_pool_create_pw(auxbas_pw_pool, rho0_mpole%rho0_s_rs, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho0_mpole%rho0_s_rs, &
use_data=REALDATA3D, in_space=REALSPACE)
! rho0 density in reciprocal space
IF (ASSOCIATED(rho0_mpole%rho0_s_gs)) THEN
CALL pw_release(rho0_mpole%rho0_s_gs)
CALL rho0_mpole%rho0_s_gs%release()
ELSE
ALLOCATE (rho0_mpole%rho0_s_gs)
END IF
CALL pw_pool_create_pw(auxbas_pw_pool, rho0_mpole%rho0_s_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho0_mpole%rho0_s_gs, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
! Find the grid level suitable for rho0_soft
rho0_mpole%igrid_zet0_s = gaussian_gridlevel(pw_env%gridlevel_info, 2.0_dp*rho0_mpole%zet0_h)
@ -439,27 +436,27 @@ CONTAINS
rs_desc => rs_descs(igrid)%rs_desc
pw_pool => pw_pools(igrid)%pool
CALL pw_pool_create_pw(pw_pool, coeff_gspace, &
CALL pw_pool%create_pw(coeff_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(pw_pool, coeff_rspace, use_data=REALDATA3D, &
CALL pw_pool%create_pw(coeff_rspace, use_data=REALDATA3D, &
in_space=REALSPACE)
IF (igrid /= auxbas_grid) THEN
pw_aux => pw_pools(auxbas_grid)%pool
CALL pw_pool_create_pw(pw_aux, coeff_gaux, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_aux%create_pw(coeff_gaux, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_transfer(v_rspace, coeff_gaux)
CALL pw_copy(coeff_gaux, coeff_gspace)
CALL pw_transfer(coeff_gspace, coeff_rspace)
CALL pw_pool_give_back_pw(pw_aux, coeff_gaux)
CALL pw_pool_create_pw(pw_aux, coeff_raux, use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_aux%give_back_pw(coeff_gaux)
CALL pw_aux%create_pw(coeff_raux, use_data=REALDATA3D, &
in_space=REALSPACE)
fscale = coeff_rspace%pw_grid%dvol/coeff_raux%pw_grid%dvol
CALL pw_scale(coeff_rspace, fscale)
CALL pw_pool_give_back_pw(pw_aux, coeff_raux)
CALL pw_aux%give_back_pw(coeff_raux)
ELSE
IF (coeff_gspace%pw_grid%spherical) THEN
@ -469,14 +466,14 @@ CONTAINS
CALL pw_copy(v_rspace, coeff_rspace)
END IF
END IF
CALL pw_pool_give_back_pw(pw_pool, coeff_gspace)
CALL pw_pool%give_back_pw(coeff_gspace)
! Setup the rs grid at level igrid
CALL rs_grid_create(rs_v, rs_desc)
CALL rs_grid_zero(rs_v)
CALL transfer_pw2rs(rs_v, coeff_rspace)
CALL pw_pool_give_back_pw(pw_pool, coeff_rspace)
CALL pw_pool%give_back_pw(coeff_rspace)
! Now the potential is on the right grid => integration

View file

@ -13,8 +13,7 @@ MODULE qs_rho0_types
pi,&
rootpi
USE memory_utilities, ONLY: reallocate
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_types, ONLY: pw_type
USE qs_grid_atom, ONLY: grid_atom_type
USE qs_rho_atom_types, ONLY: rho_atom_coeff
USE whittaker, ONLY: whittaker_c0a,&
@ -376,12 +375,12 @@ CONTAINS
END IF
IF (ASSOCIATED(rho0%rho0_s_rs)) THEN
CALL pw_release(rho0%rho0_s_rs)
CALL rho0%rho0_s_rs%release()
DEALLOCATE (rho0%rho0_s_rs)
END IF
IF (ASSOCIATED(rho0%rho0_s_gs)) THEN
CALL pw_release(rho0%rho0_s_gs)
CALL rho0%rho0_s_gs%release()
DEALLOCATE (rho0%rho0_s_gs)
END IF

View file

@ -37,13 +37,11 @@ MODULE qs_rho_methods
pw_copy,&
pw_scale,&
pw_zero
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
REALSPACE,&
RECIPROCALSPACE,&
pw_release,&
pw_type
USE qs_collocate_density, ONLY: calculate_drho_elec,&
calculate_rho_elec
@ -238,15 +236,15 @@ CONTAINS
IF (my_rebuild_grids .OR. .NOT. ASSOCIATED(rho_r)) THEN
IF (ASSOCIATED(rho_r)) THEN
DO i = 1, SIZE(rho_r)
CALL pw_release(rho_r(i))
CALL rho_r(i)%release()
END DO
DEALLOCATE (rho_r)
END IF
ALLOCATE (rho_r(nspins))
CALL qs_rho_set(rho, rho_r=rho_r)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r(i), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
@ -254,15 +252,15 @@ CONTAINS
IF (my_rebuild_grids .OR. .NOT. ASSOCIATED(rho_g)) THEN
IF (ASSOCIATED(rho_g)) THEN
DO i = 1, SIZE(rho_g)
CALL pw_release(rho_g(i))
CALL rho_g(i)%release()
END DO
DEALLOCATE (rho_g)
END IF
ALLOCATE (rho_g(nspins))
CALL qs_rho_set(rho, rho_g=rho_g)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
END IF
@ -270,14 +268,14 @@ CONTAINS
IF (dft_control%do_sccs) THEN
IF (my_rebuild_grids .OR. (.NOT. ASSOCIATED(rho_r_sccs))) THEN
IF (ASSOCIATED(rho_r_sccs)) THEN
CALL pw_release(rho_r_sccs)
CALL rho_r_sccs%release()
DEALLOCATE (rho_r_sccs)
END IF
ALLOCATE (rho_r_sccs)
CALL qs_rho_set(rho, rho_r_sccs=rho_r_sccs)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_sccs, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r_sccs, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_r_sccs)
END IF
END IF
@ -289,7 +287,7 @@ CONTAINS
IF (ASSOCIATED(drho_r)) THEN
DO j = 1, SIZE(drho_r, 2)
DO i = 1, SIZE(drho_r, 1)
CALL pw_release(drho_r(i, j))
CALL drho_r(i, j)%release()
END DO
END DO
DEALLOCATE (drho_r)
@ -298,8 +296,8 @@ CONTAINS
CALL qs_rho_set(rho, drho_r=drho_r)
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END DO
END IF
@ -308,7 +306,7 @@ CONTAINS
IF (ASSOCIATED(drho_g)) THEN
DO j = 1, SIZE(drho_g, 2)
DO i = 1, SIZE(drho_r, 1)
CALL pw_release(drho_g(i, j))
CALL drho_g(i, j)%release()
END DO
END DO
DEALLOCATE (drho_g)
@ -317,8 +315,8 @@ CONTAINS
CALL qs_rho_set(rho, drho_g=drho_g)
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g(i, j), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g(i, j), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
END DO
END IF
@ -330,15 +328,15 @@ CONTAINS
IF (my_rebuild_grids .OR. .NOT. ASSOCIATED(tau_r)) THEN
IF (ASSOCIATED(tau_r)) THEN
DO i = 1, SIZE(tau_r)
CALL pw_release(tau_r(i))
CALL tau_r(i)%release()
END DO
DEALLOCATE (tau_r)
END IF
ALLOCATE (tau_r(nspins))
CALL qs_rho_set(rho, tau_r=tau_r)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_r(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tau_r(i), &
use_data=REALDATA3D, in_space=REALSPACE)
END DO
END IF
@ -346,15 +344,15 @@ CONTAINS
IF (my_rebuild_grids .OR. .NOT. ASSOCIATED(tau_g)) THEN
IF (ASSOCIATED(tau_g)) THEN
DO i = 1, SIZE(tau_g)
CALL pw_release(tau_g(i))
CALL tau_g(i)%release()
END DO
DEALLOCATE (tau_g)
END IF
ALLOCATE (tau_g(nspins))
CALL qs_rho_set(rho, tau_g=tau_g)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tau_g(i), &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
END DO
END IF
END IF ! use_kinetic_energy_density
@ -884,15 +882,15 @@ CONTAINS
CALL qs_rho_set(rho_output, rho_r=rho_r_out)
IF (mspin > nspins) THEN
DO i = 1, mspin
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(rho_r_in(1), rho_r_out(i))
CALL pw_scale(rho_r_out(i), ospin)
END DO
ELSE
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(rho_r_in(i), rho_r_out(i))
END DO
END IF
@ -906,17 +904,17 @@ CONTAINS
CALL qs_rho_set(rho_output, rho_g=rho_g_out)
IF (mspin > nspins) THEN
DO i = 1, mspin
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rho_g_in(1), rho_g_out(i))
CALL pw_scale(rho_g_out(i), ospin)
END DO
ELSE
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rho_g_in(i), rho_g_out(i))
END DO
END IF
@ -925,9 +923,9 @@ CONTAINS
! SCCS
IF (ASSOCIATED(rho_r_sccs_in)) THEN
CALL qs_rho_set(rho_output, rho_r_sccs=rho_r_sccs_out)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_sccs_out, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(rho_r_sccs_out, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL pw_copy(rho_r_sccs_in, rho_r_sccs_out)
END IF
@ -940,8 +938,8 @@ CONTAINS
IF (mspin > nspins) THEN
DO j = 1, mspin
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(drho_r_in(i, 1), drho_r_out(i, j))
CALL pw_scale(drho_r_out(i, j), ospin)
END DO
@ -949,8 +947,8 @@ CONTAINS
ELSE
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(drho_r_in(i, j), drho_r_out(i, j))
END DO
END DO
@ -966,9 +964,9 @@ CONTAINS
IF (mspin > nspins) THEN
DO j = 1, mspin
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(drho_g_in(i, 1), drho_g_out(i, j))
CALL pw_scale(drho_g_out(i, j), ospin)
END DO
@ -976,9 +974,9 @@ CONTAINS
ELSE
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(drho_g_in(i, j), drho_g_out(i, j))
END DO
END DO
@ -993,15 +991,15 @@ CONTAINS
CALL qs_rho_set(rho_output, tau_r=tau_r_out)
IF (mspin > nspins) THEN
DO i = 1, mspin
CALL pw_pool_create_pw(auxbas_pw_pool, tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(tau_r_in(1), tau_r_out(i))
CALL pw_scale(tau_r_out(i), ospin)
END DO
ELSE
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(tau_r_in(i), tau_r_out(i))
END DO
END IF
@ -1015,17 +1013,17 @@ CONTAINS
CALL qs_rho_set(rho_output, tau_g=tau_g_out)
IF (mspin > nspins) THEN
DO i = 1, mspin
CALL pw_pool_create_pw(auxbas_pw_pool, tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(tau_g_in(1), tau_g_out(i))
CALL pw_scale(tau_g_out(i), ospin)
END DO
ELSE
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(tau_g_in(i), tau_g_out(i))
END DO
END IF
@ -1348,8 +1346,8 @@ CONTAINS
ALLOCATE (rho_r_out(nspins))
CALL qs_rho_set(rho_output, rho_r=rho_r_out)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(rho_r_in(i), rho_r_out(i))
END DO
END IF
@ -1359,9 +1357,9 @@ CONTAINS
ALLOCATE (rho_g_out(nspins))
CALL qs_rho_set(rho_output, rho_g=rho_g_out)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(rho_g_in(i), rho_g_out(i))
END DO
END IF
@ -1369,9 +1367,9 @@ CONTAINS
! SCCS
IF (ASSOCIATED(rho_r_sccs_in)) THEN
CALL qs_rho_set(rho_output, rho_r_sccs=rho_r_sccs_out)
CALL pw_pool_create_pw(auxbas_pw_pool, rho_r_sccs_out, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL auxbas_pw_pool%create_pw(rho_r_sccs_out, &
in_space=REALSPACE, &
use_data=REALDATA3D)
CALL pw_copy(rho_r_sccs_in, rho_r_sccs_out)
END IF
@ -1383,8 +1381,8 @@ CONTAINS
CALL qs_rho_set(rho_output, drho_r=drho_r_out)
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_r_out(i, j), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(drho_r_in(i, j), drho_r_out(i, j))
END DO
END DO
@ -1396,9 +1394,9 @@ CONTAINS
CALL qs_rho_set(rho_output, drho_g=drho_g_out)
DO j = 1, nspins
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(drho_g_out(i, j), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(drho_g_in(i, j), drho_g_out(i, j))
END DO
END DO
@ -1414,8 +1412,8 @@ CONTAINS
ALLOCATE (tau_r_out(nspins))
CALL qs_rho_set(rho_output, tau_r=tau_r_out)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(tau_r_out(i), &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_copy(tau_r_in(i), tau_r_out(i))
END DO
END IF
@ -1425,9 +1423,9 @@ CONTAINS
ALLOCATE (tau_g_out(nspins))
CALL qs_rho_set(rho_output, tau_g=tau_g_out)
DO i = 1, nspins
CALL pw_pool_create_pw(auxbas_pw_pool, tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(tau_g_out(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_copy(tau_g_in(i), tau_g_out(i))
END DO
END IF

View file

@ -24,10 +24,8 @@ MODULE qs_rho_types
kpoint_transitional_type,&
set_1d_pointer,&
set_2d_pointer
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_types, ONLY: pw_release,&
pw_type
USE pw_pool_types, ONLY: pw_pool_type
USE pw_types, ONLY: pw_type
#include "./base/base_uses.f90"
IMPLICIT NONE
@ -128,14 +126,14 @@ CONTAINS
IF (ASSOCIATED(rho_struct%rho_r)) THEN
DO i = 1, SIZE(rho_struct%rho_r)
CALL pw_release(rho_struct%rho_r(i))
CALL rho_struct%rho_r(i)%release()
END DO
DEALLOCATE (rho_struct%rho_r)
END IF
IF (ASSOCIATED(rho_struct%drho_r)) THEN
DO j = 1, SIZE(rho_struct%drho_r, 2)
DO i = 1, SIZE(rho_struct%drho_r, 1)
CALL pw_release(rho_struct%drho_r(i, j))
CALL rho_struct%drho_r(i, j)%release()
END DO
END DO
DEALLOCATE (rho_struct%drho_r)
@ -143,31 +141,31 @@ CONTAINS
IF (ASSOCIATED(rho_struct%drho_g)) THEN
DO i = 1, SIZE(rho_struct%drho_g, 2)
DO j = 1, SIZE(rho_struct%drho_g, 1)
CALL pw_release(rho_struct%drho_g(i, j))
CALL rho_struct%drho_g(i, j)%release()
END DO
END DO
DEALLOCATE (rho_struct%drho_g)
END IF
IF (ASSOCIATED(rho_struct%tau_r)) THEN
DO i = 1, SIZE(rho_struct%tau_r)
CALL pw_release(rho_struct%tau_r(i))
CALL rho_struct%tau_r(i)%release()
END DO
DEALLOCATE (rho_struct%tau_r)
END IF
IF (ASSOCIATED(rho_struct%rho_g)) THEN
DO i = 1, SIZE(rho_struct%rho_g)
CALL pw_release(rho_struct%rho_g(i))
CALL rho_struct%rho_g(i)%release()
END DO
DEALLOCATE (rho_struct%rho_g)
END IF
IF (ASSOCIATED(rho_struct%tau_g)) THEN
DO i = 1, SIZE(rho_struct%tau_g)
CALL pw_release(rho_struct%tau_g(i))
CALL rho_struct%tau_g(i)%release()
END DO
DEALLOCATE (rho_struct%tau_g)
END IF
IF (ASSOCIATED(rho_struct%rho_r_sccs)) THEN
CALL pw_release(rho_struct%rho_r_sccs)
CALL rho_struct%rho_r_sccs%release()
DEALLOCATE (rho_struct%rho_r_sccs)
END IF
@ -352,14 +350,14 @@ CONTAINS
IF (ASSOCIATED(rho_struct%rho_r)) THEN
DO i = 1, SIZE(rho_struct%rho_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_struct%rho_r(i))
CALL auxbas_pw_pool%give_back_pw(rho_struct%rho_r(i))
END DO
DEALLOCATE (rho_struct%rho_r)
NULLIFY (rho_struct%rho_r)
END IF
IF (ASSOCIATED(rho_struct%rho_g)) THEN
DO i = 1, SIZE(rho_struct%rho_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_struct%rho_g(i))
CALL auxbas_pw_pool%give_back_pw(rho_struct%rho_g(i))
END DO
DEALLOCATE (rho_struct%rho_g)
NULLIFY (rho_struct%rho_g)

View file

@ -73,9 +73,7 @@ MODULE qs_sccs
USE pw_poisson_types, ONLY: pw_poisson_analytic,&
pw_poisson_mt,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -271,10 +269,9 @@ CONTAINS
! Retrieve the total electronic density in r-space
BLOCK
TYPE(pw_type) :: rho_elec
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Retrieve grid parameters
ngpts = rho_elec%pw_grid%ngpts
@ -291,14 +288,12 @@ CONTAINS
tot_rho_elec = pw_integrate_function(rho_elec)
! Calculate the dielectric (smoothed) function of rho_elec in r-space
CALL pw_pool_create_pw(auxbas_pw_pool, &
eps_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
deps_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(eps_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(deps_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Relative permittivity or dielectric constant of the solvent (medium)
epsilon_solvent = sccs_control%epsilon_solvent
SELECT CASE (sccs_control%method_id)
@ -350,10 +345,9 @@ CONTAINS
BLOCK
TYPE(pw_type) :: theta, norm_drho_elec
TYPE(pw_type), DIMENSION(3) :: drho_elec
CALL pw_pool_create_pw(auxbas_pw_pool, &
theta, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(theta, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(theta)
! Calculate the (quantum) volume of the solute cavity
@ -374,17 +368,15 @@ CONTAINS
! Calculate the derivative of the electronic density in r-space
! TODO: Could be retrieved from the QS environment
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, &
drho_elec(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(drho_elec(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
END DO
CALL derive(rho_elec, drho_elec, sccs_derivative_fft, pw_env, input)
CALL pw_pool_create_pw(auxbas_pw_pool, &
norm_drho_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(norm_drho_elec, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Calculate the norm of the gradient of the electronic density in r-space
!$OMP PARALLEL DO DEFAULT(NONE) &
@ -449,25 +441,24 @@ CONTAINS
cavity_surface = pw_integrate_function(theta)
! Release storage
CALL pw_pool_give_back_pw(auxbas_pw_pool, theta)
CALL pw_pool_give_back_pw(auxbas_pw_pool, norm_drho_elec)
CALL auxbas_pw_pool%give_back_pw(theta)
CALL auxbas_pw_pool%give_back_pw(norm_drho_elec)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, drho_elec(i))
CALL auxbas_pw_pool%give_back_pw(drho_elec(i))
END DO
END BLOCK
END IF ! epsilon_solvent > 1
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec)
CALL auxbas_pw_pool%give_back_pw(rho_elec)
END BLOCK
BLOCK
TYPE(pw_type) :: rho_tot, phi_tot, rho_solute, rho_tot_zero
! Retrieve the total charge density (core + elec) of the solute in r-space
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_solute, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_solute, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_solute)
CALL pw_transfer(rho_tot_gspace, rho_solute)
tot_rho_solute = pw_integrate_function(rho_solute)
@ -485,10 +476,9 @@ CONTAINS
END IF
! Reassign work storage to rho_tot_zero, because rho_elec is no longer needed
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot_zero, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_zero, &
use_data=REALDATA3D, &
in_space=REALSPACE)
! Build the initial (rho_iter = 0) total charge density (solute plus polarisation) in r-space
! eps_elec <- ln(eps_elec)
@ -514,14 +504,13 @@ CONTAINS
! Build the derivative of LOG(eps_elec)
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, &
dln_eps_elec(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dln_eps_elec(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(dln_eps_elec(i))
END DO
CALL derive(eps_elec, dln_eps_elec, sccs_control%derivative_method, pw_env, input)
CALL pw_pool_give_back_pw(auxbas_pw_pool, eps_elec)
CALL auxbas_pw_pool%give_back_pw(eps_elec)
! Print header for the SCCS cycle
IF (should_output .AND. (output_unit > 0)) THEN
@ -550,24 +539,21 @@ CONTAINS
! Get storage for the derivative of the total potential (field) in r-space
DO i = 1, 3
CALL pw_pool_create_pw(auxbas_pw_pool, &
dphi_tot(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dphi_tot(i), &
use_data=REALDATA3D, &
in_space=REALSPACE)
END DO
! Initialise the total charge density in r-space rho_tot with rho_tot_zero + rho_iter_zero
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(rho_tot_zero, rho_tot)
CALL pw_axpy(rho_pw_r_sccs, rho_tot)
CALL pw_pool_create_pw(auxbas_pw_pool, &
phi_tot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(phi_tot, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(phi_tot)
! Main SCCS iteration loop
@ -657,9 +643,9 @@ CONTAINS
END DO iter_loop
! Release work storage which is no longer needed
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_zero)
CALL auxbas_pw_pool%give_back_pw(rho_tot_zero)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, dln_eps_elec(i))
CALL auxbas_pw_pool%give_back_pw(dln_eps_elec(i))
END DO
! Optional output of the total charge density in cube file format
@ -713,9 +699,9 @@ CONTAINS
! Calculate the Hartree energy and potential of the solute only
BLOCK
TYPE(pw_type) :: phi_solute
CALL pw_pool_create_pw(auxbas_pw_pool, phi_solute, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(phi_solute, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(phi_solute)
CALL pw_poisson_solve(poisson_env=poisson_env, &
density=rho_solute, &
@ -725,7 +711,7 @@ CONTAINS
! Calculate the polarisation potential (store it in phi_tot)
! phi_pol = phi_tot - phi_solute
CALL pw_axpy(phi_solute, phi_tot, alpha=-1.0_dp)
CALL pw_pool_give_back_pw(auxbas_pw_pool, phi_solute)
CALL auxbas_pw_pool%give_back_pw(phi_solute)
END BLOCK
! Optional output of the SCCS polarisation potential in cube file format
@ -791,9 +777,9 @@ CONTAINS
! Calculate SCCS polarisation energy
energy%sccs_pol = 0.5_dp*pw_integral_ab(rho_solute, phi_tot)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_solute)
CALL pw_pool_give_back_pw(auxbas_pw_pool, phi_tot)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot)
CALL auxbas_pw_pool%give_back_pw(rho_solute)
CALL auxbas_pw_pool%give_back_pw(phi_tot)
CALL auxbas_pw_pool%give_back_pw(rho_tot)
END BLOCK
! Calculate additional solvation terms
@ -832,9 +818,9 @@ CONTAINS
END DO
!$OMP END PARALLEL DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, deps_elec)
CALL auxbas_pw_pool%give_back_pw(deps_elec)
DO i = 1, 3
CALL pw_pool_give_back_pw(auxbas_pw_pool, dphi_tot(i))
CALL auxbas_pw_pool%give_back_pw(dphi_tot(i))
END DO
! Release the SCCS printout environment
@ -1046,10 +1032,9 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
! Get work storage for the 1d grids in g-space (derivative calculation)
DO i = 1, SIZE(work_g1d)
CALL pw_pool_create_pw(auxbas_pw_pool, &
work_g1d(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(work_g1d(i), &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END DO
END SELECT
@ -1083,7 +1068,7 @@ CONTAINS
CALL rs_grid_release_descriptor(rs_desc)
CASE (sccs_derivative_fft)
DO i = 1, SIZE(work_g1d)
CALL pw_pool_give_back_pw(auxbas_pw_pool, work_g1d(i))
CALL auxbas_pw_pool%give_back_pw(work_g1d(i))
END DO
END SELECT

View file

@ -101,8 +101,7 @@ MODULE qs_scf
restart_preconditioner
USE pw_env_types, ONLY: pw_env_get,&
pw_env_type
USE pw_pool_types, ONLY: pw_pool_give_back_pw,&
pw_pool_type
USE pw_pool_types, ONLY: pw_pool_type
USE qs_block_davidson_types, ONLY: block_davidson_deallocate
USE qs_cdft_scf_utils, ONLY: build_diagonal_jacobian,&
create_tmp_logger,&
@ -1163,25 +1162,25 @@ CONTAINS
CALL get_qs_env(qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
DO iatom = 1, SIZE(cdft_control%group)
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%group(iatom)%weight)
CALL auxbas_pw_pool%give_back_pw(cdft_control%group(iatom)%weight)
DEALLOCATE (cdft_control%group(iatom)%weight)
END DO
IF (cdft_control%atomic_charges) THEN
DO iatom = 1, cdft_control%natoms
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%charge(iatom))
CALL auxbas_pw_pool%give_back_pw(cdft_control%charge(iatom))
END DO
DEALLOCATE (cdft_control%charge)
END IF
IF (cdft_control%type == outer_scf_becke_constraint .AND. &
cdft_control%becke_control%cavity_confine) THEN
IF (.NOT. ASSOCIATED(cdft_control%becke_control%cavity_mat)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%becke_control%cavity)
CALL auxbas_pw_pool%give_back_pw(cdft_control%becke_control%cavity)
ELSE
DEALLOCATE (cdft_control%becke_control%cavity_mat)
END IF
ELSE IF (cdft_control%type == outer_scf_hirshfeld_constraint) THEN
IF (ASSOCIATED(cdft_control%hirshfeld_control%hirshfeld_env%fnorm)) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, cdft_control%hirshfeld_control%hirshfeld_env%fnorm)
CALL auxbas_pw_pool%give_back_pw(cdft_control%hirshfeld_control%hirshfeld_env%fnorm)
END IF
END IF
IF (ASSOCIATED(cdft_control%charges_fragment)) DEALLOCATE (cdft_control%charges_fragment)

View file

@ -117,9 +117,7 @@ MODULE qs_scf_post_gpw
USE pw_poisson_methods, ONLY: pw_poisson_solve
USE pw_poisson_types, ONLY: pw_poisson_implicit,&
pw_poisson_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -453,12 +451,12 @@ CONTAINS
IF (((do_mo_cubes .OR. do_wannier_cubes) .AND. (nlumo /= 0 .OR. nhomo /= 0)) .OR. p_loc) THEN
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
END IF
! Makes the MOs eigenstates, computes eigenvalues, write cubes
@ -726,8 +724,8 @@ CONTAINS
! Deallocate grids needed to compute wavefunctions
IF (((do_mo_cubes .OR. do_wannier_cubes) .AND. (nlumo /= 0 .OR. nhomo /= 0)) .OR. p_loc) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
END IF
! Destroy the localization environment
@ -1480,9 +1478,9 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
DO ispin = 1, dft_control%nspins
CALL pw_pool_create_pw(auxbas_pw_pool, elf_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(elf_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(elf_r(ispin))
END DO
@ -1522,7 +1520,7 @@ CONTAINS
stride=section_get_ivals(elf_section, "STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, input, "DFT%PRINT%ELF_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, elf_r(ispin))
CALL auxbas_pw_pool%give_back_pw(elf_r(ispin))
END DO
! deallocate
@ -1824,15 +1822,15 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(rho_r(1), wf_r)
CALL pw_axpy(rho_r(2), wf_r, alpha=-1._dp)
total_abs_spin_dens = pw_integrate_function(wf_r, oprt="ABS")
IF (output_unit > 0) WRITE (UNIT=output_unit, FMT='(/,(T3,A,T61,F20.10))') &
"Integrated absolute spin density : ", total_abs_spin_dens
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_r)
!
! XXX Fix Me XXX
! should be extended to the case where added MOs are present
@ -1967,9 +1965,9 @@ CONTAINS
rho0_s_gs=rho0_s_gs)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
IF (dft_control%qs_control%gapw) THEN
CALL pw_transfer(rho0_s_gs, wf_r)
IF (dft_control%qs_control%gapw_control%nopaw_as_gpw) THEN
@ -1991,7 +1989,7 @@ CONTAINS
stride=section_get_ivals(dft_section, "PRINT%TOT_DENSITY_CUBE%STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%TOT_DENSITY_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_r)
END IF
! Write cube file with electron density
@ -2131,15 +2129,13 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(rho_elec_rspace)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_elec_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_elec_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_zero(rho_elec_gspace)
CALL get_pw_grid_info(pw_grid=rho_elec_gspace%pw_grid, &
dr=dr, &
@ -2225,8 +2221,8 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%E_DENSITY_CUBE", mpi_io=mpi_io)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_elec_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_elec_rspace)
ELSE
IF (dft_control%nspins > 1) THEN
CALL get_qs_env(qs_env=qs_env, &
@ -2234,10 +2230,9 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, &
auxbas_pw_pool=auxbas_pw_pool, &
pw_pools=pw_pools)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(rho_r(1), rho_elec_rspace)
CALL pw_axpy(rho_r(2), rho_elec_rspace)
filename = "ELECTRON_DENSITY"
@ -2284,7 +2279,7 @@ CONTAINS
stride=section_get_ivals(dft_section, "PRINT%E_DENSITY_CUBE%STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%E_DENSITY_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_elec_rspace)
ELSE
filename = "ELECTRON_DENSITY"
mpi_io = .TRUE.
@ -2324,9 +2319,9 @@ CONTAINS
pw_env=pw_env, &
v_hartree_rspace=v_hartree_rspace)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
append_cube = section_get_lval(input, "DFT%PRINT%V_HARTREE_CUBE%APPEND")
my_pos_cube = "REWIND"
@ -2349,7 +2344,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%V_HARTREE_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
! Print the external potential
@ -2358,9 +2353,9 @@ CONTAINS
IF (dft_control%apply_external_potential) THEN
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, vee=vee)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
append_cube = section_get_lval(input, "DFT%PRINT%EXTERNAL_POTENTIAL_CUBE%APPEND")
my_pos_cube = "REWIND"
@ -2380,7 +2375,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%EXTERNAL_POTENTIAL_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
END IF
@ -2390,12 +2385,12 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
append_cube = section_get_lval(input, "DFT%PRINT%EFIELD_CUBE%APPEND")
my_pos_cube = "REWIND"
@ -2427,8 +2422,8 @@ CONTAINS
"DFT%PRINT%EFIELD_CUBE", mpi_io=mpi_io)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_g)
CALL auxbas_pw_pool%give_back_pw(aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_g)
END IF
! Write cube files from the local energy
@ -2595,10 +2590,9 @@ CONTAINS
pw_pools=pw_pools)
NULLIFY (mb_rho)
ALLOCATE (mb_rho)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=mb_rho, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=mb_rho, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(rho_r(1), mb_rho)
CALL pw_axpy(rho_r(2), mb_rho)
!CALL voronoi_analysis(qs_env, rho_elec_rspace, print_key, unit_nr)
@ -2628,7 +2622,7 @@ CONTAINS
unit_nr_voro, qs_env, mb_rho)
IF (dft_control%nspins > 1) THEN
CALL pw_pool_give_back_pw(auxbas_pw_pool, mb_rho)
CALL auxbas_pw_pool%give_back_pw(mb_rho)
DEALLOCATE (mb_rho)
END IF
@ -2915,7 +2909,7 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, subsys=subsys)
CALL qs_subsys_get(subsys, particles=particles)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, eden, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(eden, use_data=REALDATA3D, in_space=REALSPACE)
!
CALL qs_local_energy(qs_env, eden)
!
@ -2946,7 +2940,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%LOCAL_ENERGY_CUBE", mpi_io=mpi_io)
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, eden)
CALL auxbas_pw_pool%give_back_pw(eden)
END IF
CALL timestop(handle)
@ -2991,7 +2985,7 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, subsys=subsys)
CALL qs_subsys_get(subsys, particles=particles)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, stress, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(stress, use_data=REALDATA3D, in_space=REALSPACE)
!
! use beta=0: kinetic energy density in symmetric form
beta = 0.0_dp
@ -3025,7 +3019,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%LOCAL_STRESS_CUBE", mpi_io=mpi_io)
!
CALL pw_pool_give_back_pw(auxbas_pw_pool, stress)
CALL auxbas_pw_pool%give_back_pw(stress)
END IF
CALL timestop(handle)
@ -3089,7 +3083,7 @@ CONTAINS
extension=".cube", middle_name="DIELECTRIC_CONSTANT", file_position=my_pos_cube, &
mpi_io=mpi_io)
CALL pw_env_get(pw_env, poisson_env=poisson_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, use_data=REALDATA3D, in_space=REALSPACE)
boundary_condition = pw_env%poisson_env%parameters%ps_implicit_params%boundary_condition
SELECT CASE (boundary_condition)
@ -3109,7 +3103,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%IMPLICIT_PSOLVER%DIELECTRIC_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
! Write Dirichlet constraint charges into a cube file
@ -3137,7 +3131,7 @@ CONTAINS
extension=".cube", middle_name="dirichlet_cstr_charge", file_position=my_pos_cube, &
mpi_io=mpi_io)
CALL pw_env_get(pw_env, poisson_env=poisson_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, use_data=REALDATA3D, in_space=REALSPACE)
boundary_condition = pw_env%poisson_env%parameters%ps_implicit_params%boundary_condition
SELECT CASE (boundary_condition)
@ -3157,7 +3151,7 @@ CONTAINS
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%IMPLICIT_PSOLVER%DIRICHLET_CSTR_CHARGE_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
! Write Dirichlet type constranits into cube files
@ -3180,7 +3174,7 @@ CONTAINS
tile_cubes = section_get_lval(input, "DFT%PRINT%IMPLICIT_PSOLVER%DIRICHLET_BC_CUBE%TILE_CUBES")
CALL pw_env_get(pw_env, poisson_env=poisson_env, auxbas_pw_pool=auxbas_pw_pool)
CALL pw_pool_create_pw(auxbas_pw_pool, aux_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(aux_r, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(aux_r)
IF (tile_cubes) THEN
@ -3209,7 +3203,7 @@ CONTAINS
! a single cube file
NULLIFY (dirichlet_tile)
ALLOCATE (dirichlet_tile)
CALL pw_pool_create_pw(auxbas_pw_pool, dirichlet_tile, use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(dirichlet_tile, use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_zero(dirichlet_tile)
mpi_io = .TRUE.
unit_nr = cp_print_key_unit_nr(logger, input, "DFT%PRINT%IMPLICIT_PSOLVER%DIRICHLET_BC_CUBE", &
@ -3230,11 +3224,11 @@ CONTAINS
mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, input, &
"DFT%PRINT%IMPLICIT_PSOLVER%DIRICHLET_BC_CUBE", mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, dirichlet_tile)
CALL auxbas_pw_pool%give_back_pw(dirichlet_tile)
DEALLOCATE (dirichlet_tile)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, aux_r)
CALL auxbas_pw_pool%give_back_pw(aux_r)
END IF
CALL timestop(handle)
@ -3388,14 +3382,12 @@ CONTAINS
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
poisson_env=poisson_env)
CALL pw_pool_create_pw(auxbas_pw_pool, &
v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, &
rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(v_hartree_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(rho_tot_gspace, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho)
CALL pw_poisson_solve(poisson_env, rho_tot_gspace, energy%hartree, &
@ -3404,8 +3396,8 @@ CONTAINS
CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
CALL pw_pool_give_back_pw(auxbas_pw_pool, v_hartree_gspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
END IF
END SUBROUTINE update_hartree_with_mp2

View file

@ -90,9 +90,7 @@ MODULE qs_scf_post_tb
pw_green_release,&
pw_poisson_analytic,&
pw_poisson_parameter_type
USE pw_pool_types, ONLY: pw_pool_create_pw,&
pw_pool_give_back_pw,&
pw_pool_p_type,&
USE pw_pool_types, ONLY: pw_pool_p_type,&
pw_pool_type
USE pw_types, ONLY: COMPLEXDATA1D,&
REALDATA3D,&
@ -1060,10 +1058,9 @@ CONTAINS
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
BLOCK
TYPE(pw_type) :: rho_elec_rspace
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_elec_rspace, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_copy(rho_r(1), rho_elec_rspace)
CALL pw_axpy(rho_r(2), rho_elec_rspace)
filename = "ELECTRON_DENSITY"
@ -1106,7 +1103,7 @@ CONTAINS
particles=particles, &
stride=section_get_ivals(cube_section, "STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, cube_section, '', mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_elec_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_elec_rspace)
END BLOCK
ELSE
IF (iounit > 0) THEN
@ -1218,10 +1215,9 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
CALL pw_pool_create_pw(pool=auxbas_pw_pool, &
pw=rho_core, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_core, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL calculate_rho_core(rho_core, total_rho_core_rspace, qs_env)
IF (iounit > 0) THEN
@ -1231,8 +1227,8 @@ CONTAINS
"Integrated core density:", total_rho_core_rspace
END IF
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=rho_tot_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_tot_rspace, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho_core, rho_tot_rspace)
DO ispin = 1, dft_control%nspins
CALL pw_axpy(rho_r(ispin), rho_tot_rspace)
@ -1261,8 +1257,8 @@ CONTAINS
IF (my_v_hartree .OR. my_efield) THEN
BLOCK
TYPE(pw_type) :: rho_tot_gspace
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=rho_tot_gspace, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL pw_transfer(rho_tot_rspace, rho_tot_gspace)
poisson_params%solver = pw_poisson_analytic
poisson_params%periodic = cell%perd
@ -1276,8 +1272,8 @@ CONTAINS
CALL pw_green_release(green_fft, auxbas_pw_pool)
END BLOCK
IF (my_v_hartree) THEN
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=vhartree, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(pw=vhartree, &
use_data=REALDATA3D, in_space=REALSPACE)
CALL pw_transfer(rho_tot_gspace, vhartree)
filename = "V_HARTREE"
mpi_io = .TRUE.
@ -1297,11 +1293,11 @@ CONTAINS
particles=particles, &
stride=section_get_ivals(cube_section, "STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, cube_section, '', mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, vhartree)
CALL auxbas_pw_pool%give_back_pw(vhartree)
END IF
IF (my_efield) THEN
CALL pw_pool_create_pw(pool=auxbas_pw_pool, pw=vhartree, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(pw=vhartree, &
use_data=COMPLEXDATA1D, in_space=RECIPROCALSPACE)
udvol = 1.0_dp/rho_tot_rspace%pw_grid%dvol
DO id = 1, 3
CALL pw_transfer(rho_tot_gspace, vhartree)
@ -1330,14 +1326,14 @@ CONTAINS
stride=section_get_ivals(cube_section, "STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, cube_section, '', mpi_io=mpi_io)
END DO
CALL pw_pool_give_back_pw(auxbas_pw_pool, vhartree)
CALL auxbas_pw_pool%give_back_pw(vhartree)
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_gspace)
CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
END BLOCK
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_tot_rspace)
CALL pw_pool_give_back_pw(auxbas_pw_pool, rho_core)
CALL auxbas_pw_pool%give_back_pw(rho_tot_rspace)
CALL auxbas_pw_pool%give_back_pw(rho_core)
END SUBROUTINE print_density_cubes
@ -1396,9 +1392,9 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
DO ispin = 1, dft_control%nspins
CALL pw_pool_create_pw(auxbas_pw_pool, elf_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(elf_r(ispin), &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_zero(elf_r(ispin))
END DO
@ -1434,7 +1430,7 @@ CONTAINS
stride=section_get_ivals(elf_section, "STRIDE"), mpi_io=mpi_io)
CALL cp_print_key_finished_output(unit_nr, logger, elf_section, '', mpi_io=mpi_io)
CALL pw_pool_give_back_pw(auxbas_pw_pool, elf_r(ispin))
CALL auxbas_pw_pool%give_back_pw(elf_r(ispin))
END DO
DEALLOCATE (elf_r)
@ -1518,12 +1514,12 @@ CONTAINS
CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, pw_pools=pw_pools)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL pw_pool_create_pw(auxbas_pw_pool, wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL auxbas_pw_pool%create_pw(wf_r, &
use_data=REALDATA3D, &
in_space=REALSPACE)
CALL auxbas_pw_pool%create_pw(wf_g, &
use_data=COMPLEXDATA1D, &
in_space=RECIPROCALSPACE)
CALL get_qs_env(qs_env, subsys=subsys)
CALL qs_subsys_get(subsys, particles=particles)
@ -1595,8 +1591,8 @@ CONTAINS
END DO
END IF
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g)
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_r)
CALL auxbas_pw_pool%give_back_pw(wf_g)
CALL auxbas_pw_pool%give_back_pw(wf_r)
IF (ASSOCIATED(list_index)) DEALLOCATE (list_index)
END SUBROUTINE print_mo_cubes

Some files were not shown because too many files have changed in this diff Show more