LCOV - code coverage report
Current view: top level - src/xc - xc_tpss.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:9ccafda) Lines: 98.7 % 390 385
Test Date: 2026-10-15 00:55:44 Functions: 100.0 % 3 3

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2026 CP2K developers group <https://cp2k.org>                                   !
       4              : !                                                                                                  !
       5              : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6              : !--------------------------------------------------------------------------------------------------!
       7              : 
       8              : ! **************************************************************************************************
       9              : !> \brief Calculates the tpss functional.
      10              : !> \note
      11              : !>      The derivation of the formulaes is lengthly, and not fully trivial,
      12              : !>      so I have put it in doc/tpss.mw
      13              : !> \par History
      14              : !>      05.2004 created
      15              : !> \author fawzi
      16              : ! **************************************************************************************************
      17              : MODULE xc_tpss
      18              :    USE bibliography,                    ONLY: Tao2003,&
      19              :                                               cite_reference
      20              :    USE cp_log_handling,                 ONLY: cp_get_default_logger,&
      21              :                                               cp_logger_type
      22              :    USE input_section_types,             ONLY: section_vals_type,&
      23              :                                               section_vals_val_get
      24              :    USE kinds,                           ONLY: dp
      25              :    USE mathconstants,                   ONLY: pi
      26              :    USE xc_derivative_desc,              ONLY: deriv_norm_drho,&
      27              :                                               deriv_rho,&
      28              :                                               deriv_tau
      29              :    USE xc_derivative_set_types,         ONLY: xc_derivative_set_type,&
      30              :                                               xc_dset_get_derivative
      31              :    USE xc_derivative_types,             ONLY: xc_derivative_get,&
      32              :                                               xc_derivative_type
      33              :    USE xc_rho_cflags_types,             ONLY: xc_rho_cflags_type
      34              :    USE xc_rho_set_types,                ONLY: xc_rho_set_get,&
      35              :                                               xc_rho_set_type
      36              : #include "../base/base_uses.f90"
      37              : 
      38              :    IMPLICIT NONE
      39              :    PRIVATE
      40              : 
      41              :    LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .TRUE.
      42              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'xc_tpss'
      43              : 
      44              :    PUBLIC :: tpss_lda_info, tpss_lda_eval
      45              : 
      46              : !***
      47              : CONTAINS
      48              : 
      49              : ! **************************************************************************************************
      50              : !> \brief return various information on the functional
      51              : !> \param tpss_params ...
      52              : !> \param reference string with the reference of the actual functional
      53              : !> \param shortform string with the shortform of the functional name
      54              : !> \param needs the components needed by this functional are set to
      55              : !>        true (does not set the unneeded components to false)
      56              : !> \param max_deriv the highest derivative available
      57              : !> \author fawzi
      58              : ! **************************************************************************************************
      59         5222 :    SUBROUTINE tpss_lda_info(tpss_params, reference, shortform, needs, max_deriv)
      60              :       TYPE(section_vals_type), POINTER                   :: tpss_params
      61              :       CHARACTER(LEN=*), INTENT(OUT), OPTIONAL            :: reference, shortform
      62              :       TYPE(xc_rho_cflags_type), INTENT(inout), OPTIONAL  :: needs
      63              :       INTEGER, INTENT(out), OPTIONAL                     :: max_deriv
      64              : 
      65              :       REAL(kind=dp)                                      :: sc, sx
      66              : 
      67         2611 :       CALL section_vals_val_get(tpss_params, "SCALE_C", r_val=sc)
      68         2611 :       CALL section_vals_val_get(tpss_params, "SCALE_X", r_val=sx)
      69              : 
      70         2611 :       IF (PRESENT(reference)) THEN
      71           23 :          IF (sx == 1._dp .AND. sc == 1._dp) THEN
      72           23 :             reference = "J. Tao, J.P.Perdew, V.N.Staroverov, E.Scuseria PRL, 91, 146401 (2003) {LDA version}"
      73              :          ELSE
      74              :             WRITE (reference, "(a,'sx=',f5.3,'sc=',f5.3,' {LDA version}')") &
      75            0 :                "J. Tao, J.P.Perdew, V.N.Staroverov, E.Scuseria PRL, 91, 146401 (2003)", &
      76            0 :                sx, sc
      77              :          END IF
      78              :       END IF
      79         2611 :       IF (PRESENT(shortform)) THEN
      80           23 :          IF (sx == 1._dp .AND. sc == 1._dp) THEN
      81           23 :             shortform = "TPSS meta-GGA functional (LDA)"
      82              :          ELSE
      83              :             WRITE (shortform, "(a,'sx=',f5.3,'sc=',f5.3,' (LDA)')") &
      84            0 :                "TPSS meta-GGA functional", &
      85            0 :                sx, sc
      86              :          END IF
      87              :       END IF
      88         2611 :       IF (PRESENT(needs)) THEN
      89         2588 :          needs%rho = .TRUE.
      90         2588 :          needs%tau = .TRUE.
      91         2588 :          needs%norm_drho = .TRUE.
      92              :       END IF
      93         2611 :       IF (PRESENT(max_deriv)) max_deriv = 1
      94              : 
      95         2611 :    END SUBROUTINE tpss_lda_info
      96              : 
      97              : ! **************************************************************************************************
      98              : !> \brief evaluates the tpss functional in the spin unpolarized (lda) case
      99              : !> \param rho_set the density where you want to evaluate the functional
     100              : !> \param deriv_set place where to store the functional derivatives (they are
     101              : !>        added to the derivatives)
     102              : !> \param grad_deriv maximum degree of the derivative that should be evaluated
     103              : !> \param tpss_params ...
     104              : !> \author fawzi
     105              : ! **************************************************************************************************
     106        13544 :    SUBROUTINE tpss_lda_eval(rho_set, deriv_set, grad_deriv, tpss_params)
     107              :       TYPE(xc_rho_set_type), INTENT(IN)                  :: rho_set
     108              :       TYPE(xc_derivative_set_type), INTENT(IN)           :: deriv_set
     109              :       INTEGER, INTENT(in)                                :: grad_deriv
     110              :       TYPE(section_vals_type), POINTER                   :: tpss_params
     111              : 
     112              :       CHARACTER(len=*), PARAMETER                        :: routineN = 'tpss_lda_eval'
     113              : 
     114              :       INTEGER                                            :: handle, non_coer, npoints
     115              :       INTEGER, DIMENSION(2, 3)                           :: bo
     116              :       REAL(kind=dp)                                      :: epsilon_rho, epsilon_tau, scale_ec, &
     117              :                                                             scale_ex
     118              :       REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
     119         3386 :          POINTER                                         :: dummy, e_0, e_ndrho, e_rho, e_tau, &
     120         3386 :                                                             norm_drho, rho, tau
     121              :       TYPE(cp_logger_type), POINTER                      :: logger
     122              :       TYPE(xc_derivative_type), POINTER                  :: deriv
     123              : 
     124         3386 :       CALL timeset(routineN, handle)
     125              : 
     126         3386 :       CALL cite_reference(tao2003)
     127              : 
     128              :       CALL xc_rho_set_get(rho_set, rho=rho, &
     129              :                           norm_drho=norm_drho, local_bounds=bo, rho_cutoff=epsilon_rho, &
     130         3386 :                           tau=tau, tau_cutoff=epsilon_tau)
     131         3386 :       npoints = (bo(2, 1) - bo(1, 1) + 1)*(bo(2, 2) - bo(1, 2) + 1)*(bo(2, 3) - bo(1, 3) + 1)
     132              : 
     133         3386 :       dummy => rho
     134              : 
     135         3386 :       e_0 => dummy
     136         3386 :       e_rho => dummy
     137         3386 :       e_ndrho => dummy
     138         3386 :       e_tau => dummy
     139              : 
     140         3386 :       IF (grad_deriv >= 0) THEN
     141              :          deriv => xc_dset_get_derivative(deriv_set, [INTEGER::], &
     142         3386 :                                          allocate_deriv=.TRUE.)
     143         3386 :          CALL xc_derivative_get(deriv, deriv_data=e_0)
     144              :       END IF
     145         3386 :       IF (grad_deriv >= 1) THEN
     146              :          deriv => xc_dset_get_derivative(deriv_set, [deriv_rho], &
     147         3368 :                                          allocate_deriv=.TRUE.)
     148         3368 :          CALL xc_derivative_get(deriv, deriv_data=e_rho)
     149              :          deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho], &
     150         3368 :                                          allocate_deriv=.TRUE.)
     151         3368 :          CALL xc_derivative_get(deriv, deriv_data=e_ndrho)
     152              :          deriv => xc_dset_get_derivative(deriv_set, [deriv_tau], &
     153         3368 :                                          allocate_deriv=.TRUE.)
     154         3368 :          CALL xc_derivative_get(deriv, deriv_data=e_tau)
     155              :       END IF
     156         3386 :       IF (grad_deriv > 1) THEN
     157            0 :          CPABORT("derivatives bigger than 1 not implemented")
     158              :       END IF
     159              : 
     160         3386 :       non_coer = 0
     161         3386 :       CALL section_vals_val_get(tpss_params, "SCALE_C", r_val=scale_ec)
     162         3386 :       CALL section_vals_val_get(tpss_params, "SCALE_X", r_val=scale_ex)
     163              : 
     164              : !$OMP     PARALLEL DEFAULT(NONE) &
     165              : !$OMP              SHARED(rho, tau, norm_drho, e_0, e_rho, e_ndrho, e_tau) &
     166              : !$OMP              SHARED(epsilon_rho, epsilon_tau, npoints, grad_deriv) &
     167              : !$OMP              SHARED(scale_ec, scale_ex) &
     168         3386 : !$OMP              REDUCTION(+: non_coer)
     169              : 
     170              :       CALL tpss_lda_calc(rho=rho, norm_drho=norm_drho, &
     171              :                          tau=tau, e_0=e_0, e_rho=e_rho, e_ndrho=e_ndrho, e_tau=e_tau, &
     172              :                          grad_deriv=grad_deriv, npoints=npoints, epsilon_rho=epsilon_rho, &
     173              :                          epsilon_tau=epsilon_tau, scale_ec=scale_ec, scale_ex=scale_ex, non_coer=non_coer)
     174              : 
     175              : !$OMP     END PARALLEL
     176              : 
     177         3386 :       logger => cp_get_default_logger()
     178              :       ! we could check if tau/grad were consistent, but don't do anything here
     179              :       IF (non_coer > 0) THEN
     180         3386 :          non_coer = 0
     181              :       END IF
     182              : 
     183         3386 :       CALL timestop(handle)
     184         3386 :    END SUBROUTINE tpss_lda_eval
     185              : 
     186              : ! **************************************************************************************************
     187              : !> \brief low level calculation routine for the unpolarized (lda) tpss
     188              : !> \param rho ...
     189              : !> \param norm_drho ...
     190              : !> \param tau ...
     191              : !> \param e_0 ...
     192              : !> \param e_rho ...
     193              : !> \param e_ndrho ...
     194              : !> \param e_tau ...
     195              : !> \param npoints ...
     196              : !> \param grad_deriv ...
     197              : !> \param epsilon_rho ...
     198              : !> \param epsilon_tau ...
     199              : !> \param scale_ec ...
     200              : !> \param scale_ex ...
     201              : !> \param non_coer ...
     202              : !> \author fawzi
     203              : !> \note
     204              : !>      maple is nice, but if you want the uman readable version of the code
     205              : !>      look in doc/tpss.mw
     206              : ! **************************************************************************************************
     207         3386 :    SUBROUTINE tpss_lda_calc(rho, norm_drho, tau, e_0, e_rho, e_ndrho, e_tau, &
     208              :                             npoints, grad_deriv, epsilon_rho, epsilon_tau, &
     209              :                             scale_ec, scale_ex, non_coer)
     210              :       REAL(kind=dp), DIMENSION(*), INTENT(in)            :: rho, norm_drho, tau
     211              :       REAL(kind=dp), DIMENSION(*), INTENT(inout)         :: e_0, e_rho, e_ndrho, e_tau
     212              :       INTEGER, INTENT(in)                                :: npoints, grad_deriv
     213              :       REAL(kind=dp), INTENT(in)                          :: epsilon_rho, epsilon_tau, scale_ec, &
     214              :                                                             scale_ex
     215              :       INTEGER, INTENT(inout)                             :: non_coer
     216              : 
     217              :       INTEGER                                            :: ii
     218              :       LOGICAL                                            :: clipped_tau, floored_tau, t571, t639
     219              :       REAL(dp) :: incoming_gradient, incoming_rho, incoming_tau, partial_gradient, partial_rho, &
     220              :          partial_tau, tau_floor, tau_unif_inverse
     221              :       REAL(kind=dp) :: A, A_1, A_2, A_s1, A_s1rho, A_s2, A_s2rho, alpha, alpha_1_1, alpha_1_2, &
     222              :          alphanorm_drho, alpharho, alphatau, Arho, b, beta, beta_1_1, beta_1_2, beta_2_1, &
     223              :          beta_2_2, beta_3_1, beta_3_2, beta_4_1, beta_4_2, c, d, e_c_u_0, e_c_u_0rho, e_c_u_1_s1, &
     224              :          e_c_u_1_s1rho, e_c_u_1_s2, e_c_u_1_s2rho, e_var, epsilon_cGGA, epsilon_cGGA_0_1, &
     225              :          epsilon_cGGA_1_0, epsilon_cGGArho, epsilon_cRevPKZB, epsilon_cRevPKZBnorm_drho, &
     226              :          epsilon_cRevPKZBrho, epsilon_cRevPKZBtau, ex_unif, Fx, gamma_var, Hnorm_drho, k_f_s1, &
     227              :          k_f_s1rho, k_s, k_s_s1, k_s_s2, kappa, m, ma, manorm_drho, marho, mb, mbnorm_drho, mbrho
     228              :       REAL(kind=dp) :: mu, my_ndrho, my_rho, my_tau, p, p_1, p_2, p_3, phi_s1, phi_s2, pnorm_drho, &
     229              :          prho, regular_tau, rs, rs_s1, rs_s1rho, rs_s2, rs_s2rho, rsrho, t, t1, t100, t101, t111, &
     230              :          t12, t13, t138, t14, t140, t143, t145, t146, t147, t151, t152, t16, t161, t168, t177, &
     231              :          t186, t187, t189, t19, t190, t191, t193, t194, t196, t197, t198, t199, t2, t20, t201, &
     232              :          t202, t204, t205, t208, t209, t21, t211, t212, t213, t215, t216, t218, t219, t22, t220, &
     233              :          t221, t223, t224, t226, t227, t230, t231, t233, t234, t235, t238, t239, t241, t242, t243, &
     234              :          t245, t246, t248, t249, t252, t253, t254, t256, t26, t260, t263
     235              :       REAL(kind=dp) :: t264, t265, t267, t268, t269, t27, t271, t272, t274, t275, t276, t277, &
     236              :          t278, t279, t28, t280, t281, t284, t286, t29, t290, t291, t293, t294, t295, t299, t3, &
     237              :          t301, t302, t303, t305, t307, t310, t313, t316, t319, t322, t325, t327, t328, t329, t331, &
     238              :          t337, t340, t343, t344, t35, t351, t36, t370, t371, t376, t383, t385, t386, t39, t390, &
     239              :          t391, t395, t396, t398, t4, t403, t404, t406, t41, t410, t411, t419, t42, t437, t445, &
     240              :          t450, t452, t464, t472, t475, t485, t489, t49, t490, t5, t505, t513, t517, t536, t541, &
     241              :          t542, t546, t547, t549, t55, t554, t555, t557, t561, t562, t569, t574
     242              :       REAL(kind=dp) :: t58, t585, t6, t60, t604, t609, t610, t614, t615, t617, t622, t623, t625, &
     243              :          t629, t630, t637, t642, t645, t659, t67, t7, t71, t73, t77, t78, t79, t799, t80, t84, &
     244              :          t85, t89, t9, t94, t95, t96, t_s1, t_s1norm_drho, t_s1rho, t_s2, t_s2norm_drho, t_s2rho, &
     245              :          tau_w, tau_wnorm_drho, tau_wrho, tildeq_b, tildeq_bnorm_drho, tildeq_brho, tildeq_btau, &
     246              :          tnorm_drho, trho, z, znorm_drho, zrho, ztau
     247              : 
     248         3386 :       kappa = 0.804e0_dp
     249         3386 :       beta = 0.66725e-1_dp
     250         3386 :       mu = 0.21951e0_dp
     251         3386 :       gamma_var = (0.1e1_dp - LOG(0.2e1_dp))/pi**2
     252         3386 :       b = 0.4e0_dp
     253         3386 :       c = 0.159096e1_dp
     254         3386 :       e_var = 0.1537e1_dp
     255         3386 :       d = 0.28e1_dp
     256         3386 :       p_1 = 0.10e1_dp
     257         3386 :       A_1 = 0.31091e-1_dp
     258         3386 :       alpha_1_1 = 0.21370e0_dp
     259         3386 :       beta_1_1 = 0.75957e1_dp
     260         3386 :       beta_2_1 = 0.35876e1_dp
     261         3386 :       beta_3_1 = 0.16382e1_dp
     262         3386 :       beta_4_1 = 0.49294e0_dp
     263         3386 :       p_2 = 0.10e1_dp
     264         3386 :       A_2 = 0.15545e-1_dp
     265         3386 :       alpha_1_2 = 0.20548e0_dp
     266         3386 :       beta_1_2 = 0.141189e2_dp
     267         3386 :       beta_2_2 = 0.61977e1_dp
     268         3386 :       beta_3_2 = 0.33662e1_dp
     269         3386 :       beta_4_2 = 0.62517e0_dp
     270         3386 :       p_3 = 0.10e1_dp
     271              : 
     272         3386 :       tau_floor = MAX(epsilon_tau, EPSILON(0.0_dp))
     273         3386 :       t1 = 3._dp**(0.1e1_dp/0.3e1_dp)
     274         3386 :       t2 = 4._dp**(0.1e1_dp/0.3e1_dp)
     275         3386 :       t3 = t2**2
     276         3386 :       t4 = t1*t3
     277         3386 :       t5 = 2._dp**(0.1e1_dp/0.3e1_dp)
     278         3386 :       t6 = 0.1e1_dp/pi
     279         3386 :       t12 = t5**2
     280              : 
     281         3386 : !$OMP     DO
     282              : 
     283              :       DO ii = 1, npoints
     284              :          ! Fourier interpolation can give negative tau even at finite density.
     285              :          ! Continue the energy through tau=0; discarding these points makes it
     286              :          ! discontinuous and invalidates the potential and geometry derivatives.
     287    126007345 :          floored_tau = tau(ii) <= tau_floor
     288    126007345 :          regular_tau = MAX(tau(ii), tau_floor)
     289    126007345 :          my_tau = regular_tau
     290    126007345 :          my_rho = rho(ii)
     291    126007345 :          IF (my_rho > epsilon_rho) THEN
     292    121554717 :             my_ndrho = norm_drho(ii)
     293    121554717 :             IF (grad_deriv > 0) THEN
     294    119403449 :                incoming_rho = e_rho(ii)
     295    119403449 :                incoming_gradient = e_ndrho(ii)
     296    119403449 :                incoming_tau = e_tau(ii)
     297              :             END IF
     298              : 
     299    121554717 :             t7 = 0.1e1_dp/my_rho
     300    121554717 :             t254 = my_ndrho**2
     301    121554717 :             tau_w = t254*t7/0.8e1_dp
     302              : 
     303    121554717 :             clipped_tau = my_tau < tau_w
     304    121554717 :             IF (clipped_tau) THEN
     305              :                ! Project the gradient and kinetic density onto z=1.
     306      2724599 :                m = 0.5_dp*t254 + 4.0_dp*my_rho*my_tau
     307      2724599 :                my_tau = m/8._dp/my_rho
     308      2724599 :                my_ndrho = SQRT(m)
     309      2724599 :                t254 = m
     310      2724599 :                tau_w = my_tau
     311      2724599 :                non_coer = non_coer + 1
     312              :             END IF
     313              : 
     314    121554717 :             t9 = (t6*t7)**(0.1e1_dp/0.3e1_dp)
     315    121554717 :             rs_s1 = t4*t5*t9/0.4e1_dp
     316    121554717 :             phi_s1 = t12/0.2e1_dp
     317    121554717 :             t13 = t1*t12
     318    121554717 :             t14 = pi**2
     319    121554717 :             t16 = (t14*my_rho)**(0.1e1_dp/0.3e1_dp)
     320    121554717 :             k_f_s1 = t13*t16/0.2e1_dp
     321    121554717 :             t19 = SQRT(k_f_s1*t6)
     322    121554717 :             k_s_s1 = 0.2e1_dp*t19
     323    121554717 :             t20 = 0.1e1_dp/phi_s1
     324    121554717 :             t21 = my_ndrho*t20
     325    121554717 :             t22 = 0.1e1_dp/k_s_s1
     326    121554717 :             t_s1 = t21*t22*t7/0.2e1_dp
     327    121554717 :             rs_s2 = rs_s1
     328    121554717 :             phi_s2 = phi_s1
     329    121554717 :             t26 = SQRT(k_f_s1*t6)
     330    121554717 :             k_s_s2 = 0.2e1_dp*t26
     331    121554717 :             t27 = 0.1e1_dp/phi_s2
     332    121554717 :             t28 = my_ndrho*t27
     333    121554717 :             t29 = 0.1e1_dp/k_s_s2
     334    121554717 :             t_s2 = t28*t29*t7/0.2e1_dp
     335    121554717 :             t35 = 0.1e1_dp/A_1
     336    121554717 :             t36 = SQRT(rs_s2)
     337    121554717 :             t39 = t36*rs_s2
     338    121554717 :             t41 = p_1 + 0.1e1_dp
     339    121554717 :             t42 = rs_s2**t41
     340              :             t49 = LOG(0.1e1_dp + t35/(beta_1_1*t36 + beta_2_1*rs_s2 + &
     341              :                                       beta_3_1*t39 + beta_4_1*t42)/0.2e1_dp)
     342    121554717 :             t55 = SQRT(rs_s1)
     343    121554717 :             t58 = t55*rs_s1
     344    121554717 :             t60 = rs_s1**t41
     345              :             t67 = LOG(0.1e1_dp + t35/(beta_1_1*t55 + beta_2_1*rs_s1 + &
     346              :                                       beta_3_1*t58 + beta_4_1*t60)/0.2e1_dp)
     347    121554717 :             t71 = 0.1e1_dp + alpha_1_2*rs_s2
     348    121554717 :             t73 = 0.1e1_dp/A_2
     349    121554717 :             t77 = p_2 + 0.1e1_dp
     350    121554717 :             t78 = rs_s2**t77
     351    121554717 :             t79 = beta_4_2*t78
     352    121554717 :             t80 = beta_1_2*t36 + beta_2_2*rs_s2 + beta_3_2*t39 + t79
     353    121554717 :             t84 = 0.1e1_dp + t73/t80/0.2e1_dp
     354    121554717 :             t85 = LOG(t84)
     355    121554717 :             e_c_u_1_s2 = -0.2e1_dp*A_2*t71*t85
     356    121554717 :             t89 = 0.1e1_dp + alpha_1_2*rs_s1
     357    121554717 :             t94 = rs_s1**t77
     358    121554717 :             t95 = beta_4_2*t94
     359    121554717 :             t96 = beta_1_2*t55 + beta_2_2*rs_s1 + beta_3_2*t58 + t95
     360    121554717 :             t100 = 0.1e1_dp + t73/t96/0.2e1_dp
     361    121554717 :             t101 = LOG(t100)
     362    121554717 :             e_c_u_1_s1 = -0.2e1_dp*A_2*t89*t101
     363    121554717 :             t111 = p_3 + 1._dp
     364    121554717 :             rs = t4*t9/0.4e1_dp
     365    121554717 :             t138 = 0.1e1_dp + alpha_1_1*rs
     366    121554717 :             t140 = SQRT(rs)
     367    121554717 :             t143 = t140*rs
     368    121554717 :             t145 = rs**t41
     369    121554717 :             t146 = beta_4_1*t145
     370    121554717 :             t147 = beta_1_1*t140 + beta_2_1*rs + beta_3_1*t143 + t146
     371    121554717 :             t151 = 0.1e1_dp + t35/t147/0.2e1_dp
     372    121554717 :             t152 = LOG(t151)
     373    121554717 :             e_c_u_0 = -0.2e1_dp*A_1*t138*t152
     374    121554717 :             t161 = rs**t77
     375              :             t168 = LOG(0.1e1_dp + t73/(beta_1_2*t140 + beta_2_2*rs + &
     376              :                                        beta_3_2*t143 + beta_4_2*t161)/0.2e1_dp)
     377    121554717 :             t177 = rs**t111
     378    121554717 :             t186 = 0.1e1_dp/gamma_var
     379    121554717 :             t187 = beta*t186
     380    121554717 :             t189 = phi_s1**2
     381    121554717 :             t190 = t189*phi_s1
     382    121554717 :             t191 = 0.1e1_dp/t190
     383    121554717 :             t193 = EXP(-e_c_u_1_s1*t186*t191)
     384    121554717 :             t194 = t193 - 0.1e1_dp
     385    121554717 :             A_s1 = t187/t194
     386    121554717 :             t196 = gamma_var*t190
     387    121554717 :             t197 = t_s1**2
     388    121554717 :             t198 = A_s1*t197
     389    121554717 :             t199 = 0.1e1_dp + t198
     390    121554717 :             t201 = A_s1**2
     391    121554717 :             t202 = t197**2
     392    121554717 :             t204 = 0.1e1_dp + t198 + t201*t202
     393    121554717 :             t205 = 0.1e1_dp/t204
     394    121554717 :             t208 = 0.1e1_dp + t187*t197*t199*t205
     395    121554717 :             t209 = LOG(t208)
     396    121554717 :             epsilon_cGGA_1_0 = e_c_u_1_s1 + t196*t209
     397    121554717 :             t211 = phi_s2**2
     398    121554717 :             t212 = t211*phi_s2
     399    121554717 :             t213 = 0.1e1_dp/t212
     400    121554717 :             t215 = EXP(-e_c_u_1_s2*t186*t213)
     401    121554717 :             t216 = t215 - 0.1e1_dp
     402    121554717 :             A_s2 = t187/t216
     403    121554717 :             t218 = gamma_var*t212
     404    121554717 :             t219 = t_s2**2
     405    121554717 :             t220 = A_s2*t219
     406    121554717 :             t221 = t220 + 0.1e1_dp
     407    121554717 :             t223 = A_s2**2
     408    121554717 :             t224 = t219**2
     409    121554717 :             t226 = 0.1e1_dp + t220 + t223*t224
     410    121554717 :             t227 = 0.1e1_dp/t226
     411    121554717 :             t230 = 0.1e1_dp + t187*t219*t221*t227
     412    121554717 :             t231 = LOG(t230)
     413    121554717 :             epsilon_cGGA_0_1 = e_c_u_1_s2 + t218*t231
     414    121554717 :             t233 = SQRT(t1*t16*t6)
     415    121554717 :             k_s = 0.2e1_dp*t233
     416    121554717 :             t234 = 0.1e1_dp/k_s
     417    121554717 :             t235 = my_ndrho*t234
     418    121554717 :             t = t235*t7/0.2e1_dp
     419    121554717 :             t238 = EXP(-e_c_u_0*t186)
     420    121554717 :             t239 = -0.1e1_dp + t238
     421    121554717 :             A = t187/t239
     422    121554717 :             t241 = t**2
     423    121554717 :             t242 = A*t241
     424    121554717 :             t243 = 0.1e1_dp + t242
     425    121554717 :             t245 = A**2
     426    121554717 :             t246 = t241**2
     427    121554717 :             t248 = 0.1e1_dp + t242 + t245*t246
     428    121554717 :             t249 = 0.1e1_dp/t248
     429    121554717 :             t252 = 0.1e1_dp + t187*t241*t243*t249
     430    121554717 :             t253 = LOG(t252)
     431    121554717 :             epsilon_cGGA = e_c_u_0 + gamma_var*t253
     432    121554717 :             ma = MAX(epsilon_cGGA_1_0, epsilon_cGGA)
     433    121554717 :             mb = MAX(epsilon_cGGA_0_1, epsilon_cGGA)
     434    121554717 :             t256 = tau_w**2
     435    121554717 :             t260 = ma/0.2e1_dp + mb/0.2e1_dp
     436    121554717 :             t263 = 0.53e0_dp*epsilon_cGGA*t256 - 0.153e1_dp*t256*t260
     437    121554717 :             t264 = my_tau**2
     438    121554717 :             t265 = 0.1e1_dp/t264
     439    121554717 :             epsilon_cRevPKZB = epsilon_cGGA + t263*t265
     440    121554717 :             t267 = my_rho*epsilon_cRevPKZB
     441    121554717 :             t268 = d*epsilon_cRevPKZB
     442    121554717 :             t269 = t256*tau_w
     443    121554717 :             t271 = 0.1e1_dp/t264/my_tau
     444    121554717 :             t272 = t269*t271
     445    121554717 :             t274 = 0.1e1_dp + t268*t272
     446    121554717 :             t275 = t254*t1
     447    121554717 :             t276 = t14**(0.1e1_dp/0.3e1_dp)
     448    121554717 :             t277 = t276**2
     449    121554717 :             t278 = 0.1e1_dp/t277
     450    121554717 :             t279 = my_rho**2
     451    121554717 :             t280 = my_rho**(0.1e1_dp/0.3e1_dp)
     452    121554717 :             t281 = t280**2
     453    121554717 :             t284 = t278/t281/t279
     454    121554717 :             p = t275*t284/0.12e2_dp
     455    121554717 :             t286 = 0.1e1_dp/my_tau
     456    121554717 :             z = tau_w*t286
     457              :             ! Use the finite stationary-density limit of (5/3)*p*(1/z-1).
     458    121554717 :             tau_unif_inverse = 10.0_dp/9.0_dp*t1*t278/(t281*my_rho)
     459    121554717 :             alpha = (my_tau - tau_w)*tau_unif_inverse
     460    121554717 :             t290 = alpha - 0.1e1_dp
     461    121554717 :             t291 = b*alpha
     462    121554717 :             t293 = 0.1e1_dp + t291*t290
     463    121554717 :             t294 = SQRT(t293)
     464    121554717 :             t295 = 0.1e1_dp/t294
     465    121554717 :             tildeq_b = 0.9e1_dp/0.20e2_dp*t290*t295 + 0.2e1_dp/0.3e1_dp*p
     466    121554717 :             t299 = z**2
     467    121554717 :             t301 = 0.1e1_dp + t299
     468    121554717 :             t302 = t301**2
     469    121554717 :             t303 = 0.1e1_dp/t302
     470    121554717 :             t305 = 0.10e2_dp/0.81e2_dp + c*t299*t303
     471    121554717 :             t307 = tildeq_b**2
     472    121554717 :             t310 = p**2
     473    121554717 :             t313 = SQRT(0.18e2_dp*t299 + 0.50e2_dp*t310)
     474    121554717 :             t316 = 0.1e1_dp/kappa
     475    121554717 :             t319 = SQRT(e_var)
     476    121554717 :             t322 = e_var*mu
     477              :             t325 = t305*p + 0.146e3_dp/0.2025e4_dp*t307 - 0.73e2_dp/ &
     478              :                    0.4050e4_dp*tildeq_b*t313 + 0.100e3_dp/0.6561e4_dp*t316* &
     479    121554717 :                    t310 + 0.4e1_dp/0.45e2_dp*t319*t299 + t322*t310*p
     480    121554717 :             t327 = 0.1e1_dp + t319*p
     481    121554717 :             t328 = t327**2
     482    121554717 :             t329 = 0.1e1_dp/t328
     483    121554717 :             t331 = 0.1e1_dp + t325*t329*t316
     484    121554717 :             Fx = 0.1e1_dp + kappa - kappa/t331
     485    121554717 :             ex_unif = -0.3e1_dp/0.4e1_dp*t1*t16*t6
     486    121554717 :             t337 = my_rho*ex_unif
     487              : 
     488              :             e_0(ii) = e_0(ii) + &
     489    121554717 :                       scale_ec*t267*t274 + scale_ex*t337*Fx
     490              : 
     491    121554717 :             IF (grad_deriv > 0) THEN
     492    119403449 :                t340 = t9**2
     493    119403449 :                t343 = 0.1e1_dp/t279
     494    119403449 :                t344 = 0.1e1_dp/t340*t6*t343
     495    119403449 :                rsrho = -t4*t344/0.12e2_dp
     496    119403449 :                t351 = t147**2
     497              :                e_c_u_0rho = -0.2e1_dp*A_1*alpha_1_1*rsrho*t152 + t138/ &
     498              :                             t351*(beta_1_1/t140*rsrho/0.2e1_dp + beta_2_1*rsrho + &
     499              :                                   0.3e1_dp/0.2e1_dp*beta_3_1*t140*rsrho + t146*t41*rsrho/ &
     500    119403449 :                                   rs)/t151
     501    119403449 :                t370 = t16**2
     502    119403449 :                t371 = 0.1e1_dp/t370
     503    119403449 :                t376 = k_s**2
     504              :                trho = -my_ndrho/t376*t7/t233*t1*t371*t14*t6 &
     505    119403449 :                       /0.6e1_dp - t235*t343/0.2e1_dp
     506    119403449 :                t383 = gamma_var**2
     507    119403449 :                t385 = beta/t383
     508    119403449 :                t386 = t239**2
     509    119403449 :                Arho = t385/t386*e_c_u_0rho*t238
     510    119403449 :                t390 = t187*t
     511    119403449 :                t391 = t243*t249
     512    119403449 :                t395 = Arho*t241
     513    119403449 :                t396 = A*t
     514    119403449 :                t398 = 0.2e1_dp*t396*trho
     515    119403449 :                t403 = t187*t241
     516    119403449 :                t404 = t248**2
     517    119403449 :                t406 = t243/t404
     518    119403449 :                t410 = t241*t
     519    119403449 :                t411 = t245*t410
     520    119403449 :                t419 = 0.1e1_dp/t252
     521              :                epsilon_cGGArho = e_c_u_0rho + gamma_var*(0.2e1_dp*t390*t391 &
     522              :                                                          *trho + t187*t241*(t395 + t398)*t249 - t403*t406*(t395 + &
     523    119403449 :                                                                              t398 + 0.2e1_dp*A*t246*Arho + 0.4e1_dp*t411*trho))*t419
     524    119403449 :                tau_wrho = -t254*t343/0.8e1_dp
     525    119403449 :                prho = -0.2e1_dp/0.9e1_dp*t275*t278/t281/t279/my_rho
     526    119403449 :                zrho = tau_wrho*t286
     527    119403449 :                alpharho = 5.0_dp/3.0_dp*(p - alpha)*t7
     528    119403449 :                t437 = t290/t294/t293
     529              :                tildeq_brho = 0.9e1_dp/0.20e2_dp*alpharho*t295 - 0.9e1_dp/ &
     530              :                              0.40e2_dp*t437*(b*alpharho*t290 + t291*alpharho) + &
     531    119403449 :                              0.2e1_dp/0.3e1_dp*prho
     532    119403449 :                t445 = c*z
     533    119403449 :                t450 = c*t299*z
     534    119403449 :                t452 = 0.1e1_dp/t302/t301
     535              :                ! The associated first-gradient factors vanish at t313=0.
     536    119403449 :                t464 = 0.0_dp
     537    119403449 :                IF (t313 > 0.0_dp) t464 = tildeq_b/t313
     538    119403449 :                t472 = t316*p
     539    119403449 :                t475 = t319*z
     540    119403449 :                t485 = t325/t328/t327
     541    119403449 :                t489 = t331**2
     542    119403449 :                t490 = 0.1e1_dp/t489
     543    119403449 :                rs_s1rho = -t4*t5*t344/0.12e2_dp
     544    119403449 :                k_f_s1rho = t13*t371*t14/0.6e1_dp
     545    119403449 :                t505 = k_s_s1**2
     546              :                t_s1rho = -t21/t505*t7/t19*k_f_s1rho*t6/0.2e1_dp - t21 &
     547    119403449 :                          *t22*t343/0.2e1_dp
     548    119403449 :                t513 = A_2*alpha_1_2
     549    119403449 :                t517 = t96**2
     550              :                e_c_u_1_s1rho = -0.2e1_dp*t513*rs_s1rho*t101 + t89/t517* &
     551              :                                (beta_1_2/t55*rs_s1rho/0.2e1_dp + beta_2_2*rs_s1rho + &
     552              :                                 0.3e1_dp/0.2e1_dp*beta_3_2*t55*rs_s1rho + t95*t77* &
     553    119403449 :                                 rs_s1rho/rs_s1)/t100
     554    119403449 :                t536 = t194**2
     555    119403449 :                A_s1rho = t385/t536*e_c_u_1_s1rho*t191*t193
     556    119403449 :                t541 = t187*t_s1
     557    119403449 :                t542 = t199*t205
     558    119403449 :                t546 = A_s1rho*t197
     559    119403449 :                t547 = A_s1*t_s1
     560    119403449 :                t549 = 0.2e1_dp*t547*t_s1rho
     561    119403449 :                t554 = t187*t197
     562    119403449 :                t555 = t204**2
     563    119403449 :                t557 = t199/t555
     564    119403449 :                t561 = t197*t_s1
     565    119403449 :                t562 = t201*t561
     566    119403449 :                t569 = 0.1e1_dp/t208
     567    119403449 :                t571 = epsilon_cGGA < epsilon_cGGA_1_0
     568    119403449 :                IF (t571) THEN
     569              :                   marho = e_c_u_1_s1rho + t196*(0.2e1_dp*t541*t542 &
     570              :                                                 *t_s1rho + t187*t197*(t546 + t549)*t205 - t554*t557*(t546 &
     571              :                                                                               + t549 + 0.2e1_dp*A_s1*t202*A_s1rho + 0.4e1_dp*t562* &
     572    119330471 :                                                                                                      t_s1rho))*t569
     573              :                ELSE
     574              :                   marho = epsilon_cGGArho
     575              :                END IF
     576    119403449 :                rs_s2rho = rs_s1rho
     577    119403449 :                t574 = k_s_s2**2
     578              :                t_s2rho = -t28/t574*t7/t26*k_f_s1rho*t6/0.2e1_dp - t28 &
     579    119403449 :                          *t29*t343/0.2e1_dp
     580    119403449 :                t585 = t80**2
     581              :                e_c_u_1_s2rho = -0.2e1_dp*t513*rs_s2rho*t85 + t71/t585*( &
     582              :                                beta_1_2/t36*rs_s2rho/0.2e1_dp + beta_2_2*rs_s2rho + &
     583              :                                0.3e1_dp/0.2e1_dp*beta_3_2*t36*rs_s2rho + t79*t77* &
     584    119403449 :                                rs_s2rho/rs_s2)/t84
     585    119403449 :                t604 = t216**2
     586    119403449 :                A_s2rho = t385/t604*e_c_u_1_s2rho*t213*t215
     587    119403449 :                t609 = t187*t_s2
     588    119403449 :                t610 = t221*t227
     589    119403449 :                t614 = A_s2rho*t219
     590    119403449 :                t615 = A_s2*t_s2
     591    119403449 :                t617 = 0.2e1_dp*t615*t_s2rho
     592    119403449 :                t622 = t187*t219
     593    119403449 :                t623 = t226**2
     594    119403449 :                t625 = t221/t623
     595    119403449 :                t629 = t219*t_s2
     596    119403449 :                t630 = t223*t629
     597    119403449 :                t637 = 0.1e1_dp/t230
     598    119403449 :                t639 = epsilon_cGGA < epsilon_cGGA_0_1
     599              :                IF (t639) THEN
     600              :                   mbrho = e_c_u_1_s2rho + t218*(0.2e1_dp*t609*t610 &
     601              :                                                 *t_s2rho + t187*t219*(t614 + t617)*t227 - t622*t625*(t614 &
     602              :                                                                               + t617 + 0.2e1_dp*A_s2*t224*A_s2rho + 0.4e1_dp*t630* &
     603    119403449 :                                                                                                      t_s2rho))*t637
     604              :                ELSE
     605              :                   mbrho = epsilon_cGGArho
     606              :                END IF
     607    119403449 :                t642 = epsilon_cGGA*tau_w
     608    119403449 :                t645 = tau_w*t260
     609              :                epsilon_cRevPKZBrho = epsilon_cGGArho + (0.53e0_dp* &
     610              :                                                         epsilon_cGGArho*t256 + 0.106e1_dp*t642*tau_wrho - 0.306e1_dp* &
     611              :                                                         t645*tau_wrho - 0.153e1_dp*t256*(marho/0.2e1_dp + mbrho/ &
     612    119403449 :                                                                                          0.2e1_dp))*t265
     613    119403449 :                t659 = t256*t271
     614              : 
     615              :                e_rho(ii) = e_rho(ii) + &
     616              :                            scale_ec*(epsilon_cRevPKZB*t274 + my_rho* &
     617              :                                      epsilon_cRevPKZBrho*t274 + t267*(d*epsilon_cRevPKZBrho*t272 &
     618              :                                                                       + 0.3e1_dp*t268*t659*tau_wrho)) + scale_ex*(ex_unif*Fx - &
     619              :                                                                                              my_rho*pi*t1*t371*Fx/0.4e1_dp + t337* &
     620              :                                                                              t490*(((0.2e1_dp*t445*t303*zrho - 0.4e1_dp*t450*t452* &
     621              :                                                                             zrho)*p + t305*prho + 0.292e3_dp/0.2025e4_dp*tildeq_b* &
     622              :                                                                             tildeq_brho - 0.73e2_dp/0.4050e4_dp*tildeq_brho*t313 - &
     623              :                                                                          0.73e2_dp/0.8100e4_dp*t464*(0.36e2_dp*z*zrho + 0.100e3_dp &
     624              :                                                                            *p*prho) + 0.200e3_dp/0.6561e4_dp*t472*prho + 0.8e1_dp/ &
     625              :                                                                              0.45e2_dp*t475*zrho + 0.3e1_dp*t322*t310*prho)*t329 - &
     626    119403449 :                                                                                                            0.2e1_dp*t485*t319*prho))
     627              : 
     628    119403449 :                tnorm_drho = t234*t7/0.2e1_dp
     629              :                Hnorm_drho = gamma_var*(0.2e1_dp*t390*t391*tnorm_drho + &
     630              :                                        0.2e1_dp*t187*t410*A*tnorm_drho*t249 - t403*t406*( &
     631    119403449 :                                        0.2e1_dp*t396*tnorm_drho + 0.4e1_dp*t411*tnorm_drho))*t419
     632    119403449 :                tau_wnorm_drho = my_ndrho*t7/0.4e1_dp
     633    119403449 :                pnorm_drho = my_ndrho*t1*t284/0.6e1_dp
     634    119403449 :                znorm_drho = tau_wnorm_drho*t286
     635    119403449 :                alphanorm_drho = -5.0_dp/3.0_dp*pnorm_drho
     636              :                tildeq_bnorm_drho = 0.9e1_dp/0.20e2_dp*alphanorm_drho*t295 - &
     637              :                                    0.9e1_dp/0.40e2_dp*t437*(b*alphanorm_drho*t290 + t291* &
     638    119403449 :                                                             alphanorm_drho) + 0.2e1_dp/0.3e1_dp*pnorm_drho
     639    119403449 :                t_s1norm_drho = t20*t22*t7/0.2e1_dp
     640    119403449 :                IF (t571) THEN
     641              :                   manorm_drho = t196*(0.2e1_dp*t541*t542* &
     642              :                                       t_s1norm_drho + 0.2e1_dp*t187*t561*A_s1*t_s1norm_drho*t205 &
     643              :                                       - t554*t557*(0.2e1_dp*t547*t_s1norm_drho + 0.4e1_dp*t562 &
     644    119330471 :                                                    *t_s1norm_drho))*t569
     645              :                ELSE
     646              :                   manorm_drho = Hnorm_drho
     647              :                END IF
     648    119403449 :                t_s2norm_drho = t27*t29*t7/0.2e1_dp
     649              :                IF (t639) THEN
     650              :                   mbnorm_drho = t218*(0.2e1_dp*t609*t610* &
     651              :                                       t_s2norm_drho + 0.2e1_dp*t187*t629*A_s2*t_s2norm_drho*t227 &
     652              :                                       - t622*t625*(0.2e1_dp*t615*t_s2norm_drho + 0.4e1_dp*t630 &
     653    119403449 :                                                    *t_s2norm_drho))*t637
     654              :                ELSE
     655              :                   mbnorm_drho = Hnorm_drho
     656              :                END IF
     657              :                epsilon_cRevPKZBnorm_drho = Hnorm_drho + (0.53e0_dp*Hnorm_drho* &
     658              :                                                          t256 + 0.106e1_dp*t642*tau_wnorm_drho - 0.306e1_dp*t645* &
     659              :                                                          tau_wnorm_drho - 0.153e1_dp*t256*(manorm_drho/0.2e1_dp + &
     660    119403449 :                                                                                            mbnorm_drho/0.2e1_dp))*t265
     661              : 
     662              :                e_ndrho(ii) = e_ndrho(ii) + &
     663              :                              scale_ec*(my_rho*epsilon_cRevPKZBnorm_drho* &
     664              :                                        t274 + t267*(d*epsilon_cRevPKZBnorm_drho*t272 + 0.3e1_dp* &
     665              :                                                     t268*t659*tau_wnorm_drho)) + scale_ex*t337*t490*((( &
     666              :                                                                                0.2e1_dp*t445*t303*znorm_drho - 0.4e1_dp*t450*t452* &
     667              :                                                                          znorm_drho)*p + t305*pnorm_drho + 0.292e3_dp/0.2025e4_dp* &
     668              :                                                                                tildeq_b*tildeq_bnorm_drho - 0.73e2_dp/0.4050e4_dp* &
     669              :                                                                              tildeq_bnorm_drho*t313 - 0.73e2_dp/0.8100e4_dp*t464*( &
     670              :                                                                                0.36e2_dp*z*znorm_drho + 0.100e3_dp*p*pnorm_drho) + &
     671              :                                                                        0.200e3_dp/0.6561e4_dp*t472*pnorm_drho + 0.8e1_dp/0.45e2_dp &
     672              :                                                                           *t475*znorm_drho + 0.3e1_dp*t322*t310*pnorm_drho)*t329 - &
     673    119403449 :                                                                                                      0.2e1_dp*t485*t319*pnorm_drho)
     674              : 
     675    119403449 :                epsilon_cRevPKZBtau = -0.2e1_dp*t263*t271
     676    119403449 :                t799 = t264**2
     677    119403449 :                ztau = -tau_w*t265
     678    119403449 :                alphatau = tau_unif_inverse
     679              :                tildeq_btau = 0.9e1_dp/0.20e2_dp*alphatau*t295 - 0.9e1_dp/ &
     680    119403449 :                              0.40e2_dp*t437*(b*alphatau*t290 + t291*alphatau)
     681              : 
     682              :                e_tau(ii) = e_tau(ii) + &
     683              :                            scale_ec*(my_rho*epsilon_cRevPKZBtau*t274 + t267* &
     684              :                                      (d*epsilon_cRevPKZBtau*t272 - 0.3e1_dp*t268*t269/t799)) + &
     685              :                            scale_ex*t337*t490*((0.2e1_dp*t445*t303*ztau - 0.4e1_dp &
     686              :                                                 *t450*t452*ztau)*p + 0.292e3_dp/0.2025e4_dp*tildeq_b* &
     687              :                                                tildeq_btau - 0.73e2_dp/0.4050e4_dp*tildeq_btau*t313 - &
     688              :                                                0.73e2_dp/0.225e3_dp*t464*z*ztau + 0.8e1_dp/0.45e2_dp* &
     689    119403449 :                                                t475*ztau)*t329
     690    119403449 :                IF (clipped_tau) THEN
     691              :                   ! Differentiate the same projected gradient and kinetic density
     692              :                   ! used by the energy, preserving other functional contributions.
     693      2712252 :                   partial_rho = e_rho(ii) - incoming_rho
     694      2712252 :                   partial_gradient = e_ndrho(ii) - incoming_gradient
     695      2712252 :                   partial_tau = e_tau(ii) - incoming_tau
     696              :                   e_rho(ii) = incoming_rho + partial_rho + &
     697              :                               2.0_dp*regular_tau/my_ndrho*partial_gradient - &
     698      2712252 :                               norm_drho(ii)**2/(16.0_dp*my_rho**2)*partial_tau
     699              :                   e_ndrho(ii) = incoming_gradient + &
     700              :                                 0.5_dp*norm_drho(ii)/my_ndrho*partial_gradient + &
     701      2712252 :                                 norm_drho(ii)/(8.0_dp*my_rho)*partial_tau
     702      2712252 :                   e_tau(ii) = incoming_tau + 2.0_dp*my_rho/my_ndrho*partial_gradient + 0.5_dp*partial_tau
     703              :                END IF
     704    119403449 :                IF (floored_tau) e_tau(ii) = incoming_tau
     705              :             END IF
     706              :          END IF
     707              :       END DO
     708              : 
     709              : !$OMP     END DO
     710              : 
     711         3386 :    END SUBROUTINE tpss_lda_calc
     712              : 
     713              : END MODULE xc_tpss
        

Generated by: LCOV version 2.0-1