make gauxc_cache a POINTER in qs_environment_type and allocate on first use

This commit is contained in:
AI Agent 2026-07-16 15:52:13 +02:00 committed by Franz Pöschel
parent 67f1fef70f
commit 62f158b7e8
2 changed files with 24 additions and 16 deletions

View file

@ -324,7 +324,7 @@ MODULE qs_environment_types
TYPE(mo_set_type), DIMENSION(:), POINTER :: mos_last_converged => NULL()
! tblite
TYPE(tblite_type), POINTER :: tb_tblite => Null()
TYPE(cp_gauxc_cache_type) :: gauxc_cache
TYPE(cp_gauxc_cache_type), POINTER :: gauxc_cache => NULL()
END TYPE qs_environment_type
CONTAINS
@ -1010,9 +1010,10 @@ CONTAINS
IF (.NOT. ASSOCIATED(qs_env%molecular_scf_guess_env)) ALLOCATE (qs_env%molecular_scf_guess_env)
NULLIFY (qs_env%tb_tblite)
NULLIFY (qs_env%tb_tblite)
NULLIFY (qs_env%gauxc_cache)
END SUBROUTINE init_qs_env
END SUBROUTINE init_qs_env
! **************************************************************************************************
!> \brief Set the QUICKSTEP environment.
@ -1688,13 +1689,16 @@ CONTAINS
IF (ASSOCIATED(qs_env%rhs)) DEALLOCATE (qs_env%rhs)
! tblite
IF (ASSOCIATED(qs_env%tb_tblite)) THEN
CALL deallocate_tblite_type(qs_env%tb_tblite)
END IF
IF (ASSOCIATED(qs_env%tb_tblite)) THEN
CALL deallocate_tblite_type(qs_env%tb_tblite)
END IF
CALL gauxc_cache_release(qs_env%gauxc_cache)
IF (ASSOCIATED(qs_env%gauxc_cache)) THEN
CALL gauxc_cache_release(qs_env%gauxc_cache)
DEALLOCATE (qs_env%gauxc_cache)
END IF
END SUBROUTINE qs_env_release
END SUBROUTINE qs_env_release
! **************************************************************************************************
!> \brief releases part of the given qs_env in order to save memory
@ -1916,12 +1920,15 @@ CONTAINS
IF (ASSOCIATED(qs_env%rhs)) DEALLOCATE (qs_env%rhs)
! tblite
IF (ASSOCIATED(qs_env%tb_tblite)) THEN
CALL deallocate_tblite_type(qs_env%tb_tblite)
END IF
IF (ASSOCIATED(qs_env%tb_tblite)) THEN
CALL deallocate_tblite_type(qs_env%tb_tblite)
END IF
CALL gauxc_cache_release(qs_env%gauxc_cache)
IF (ASSOCIATED(qs_env%gauxc_cache)) THEN
CALL gauxc_cache_release(qs_env%gauxc_cache)
DEALLOCATE (qs_env%gauxc_cache)
END IF
END SUBROUTINE qs_env_part_release
END SUBROUTINE qs_env_part_release
END MODULE qs_environment_types

View file

@ -1264,10 +1264,11 @@ CONTAINS
END IF
END IF
! After creating the basisset, we will have to check max_l>3 as a further condition
params%use_fd_gradient = gapw_method .AND. need_xc_gradient
! After creating the basisset, we will have to check max_l>3 as a further condition
params%use_fd_gradient = gapw_method .AND. need_xc_gradient
cache => qs_env%gauxc_cache
IF (.NOT. ASSOCIATED(qs_env%gauxc_cache)) ALLOCATE (qs_env%gauxc_cache)
cache => qs_env%gauxc_cache
CALL gauxc_cache_init( &
cache, &
params, &