36#include "../base/base_uses.f90"
47 REAL(KIND=
dp),
PARAMETER :: alpha1 = -1.128223946706117_dp, &
48 alpha2 = 1.452736265762971_dp, &
49 alpha3 = -1.243162299390327_dp, &
50 alpha4 = 0.971824836115601_dp, &
51 alpha5 = -0.568861079687373_dp, &
52 alpha6 = 0.246880514820192_dp, &
53 alpha7 = -0.065032363850763_dp, &
54 alpha8 = 0.008401793031216_dp
55 REAL(KIND=
dp),
PARAMETER :: beta = 1.455915450052607_dp, &
57 REAL(KIND=
dp),
PARAMETER :: a1 = 0.00979681_dp, &
62 REAL(KIND=
dp),
PARAMETER :: a = 1.0161144_dp, &
64 c = -0.077215461_dp, &
66 e = -0.051955731_dp, &
69 clda = -0.73855876638202240588423_dp
70 REAL(KIND=
dp),
PARAMETER :: expcutoff = 700.0_dp, &
75 REAL(KIND=
dp),
PARAMETER :: smax = 8.572844_dp, &
76 sconst = 18.79622316_dp, &
78 REAL(KIND=
dp),
PARAMETER :: gcutoff = 0.08_dp, &
79 g1 = -0.02628417880_dp/e, &
80 g2 = -0.07117647788_dp/e, &
81 g3 = 0.08534541323_dp/e, &
83 REAL(KIND=
dp),
PARAMETER :: wcutoff = 14.0_dp
84 REAL(KIND=
dp),
PARAMETER :: f12 = 0.5_dp, f14 = 0.25_dp, f158 = 15.0_dp/8.0_dp, &
85 f1516 = 15.0_dp/16.0_dp, f24364 = 243.0_dp/64.0_dp, &
86 f2716 = 27.0_dp/16.0_dp, f2732 = 27.0_dp/32.0_dp, &
87 f34 = 0.75_dp, f32 = 1.5_dp, f38 = 0.375_dp, f68 = 0.75_dp, &
88 f6561512 = 6561.0_dp/512.0_dp, f8132 = 81.0_dp/32.0_dp, &
89 f8164 = 81.0_dp/64.0_dp, f729128 = 729.0_dp/128.0_dp, &
90 f52 = 2.5_dp, f94 = 9.0_dp/4.0_dp, f916 = 9.0_dp/16.0_dp, &
91 f89 = 8.0_dp/9.0_dp, f2187256 = 2187.0_dp/256.0_dp, &
92 r1 = 1.0_dp, f98 = 9.0_dp/8.0_dp, r15 = 15.0_dp, &
93 r3 = 3.0_dp, r4 = 4.0_dp, r16 = 16.0_dp, r8 = 8.0_dp, &
94 r6 = 6.0_dp, r2 = 2.0_dp
96 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xc_xwpbe'
112 CHARACTER(LEN=*),
INTENT(OUT),
OPTIONAL :: reference, shortform
114 INTEGER,
INTENT(out),
OPTIONAL :: max_deriv
116 IF (
PRESENT(reference))
THEN
117 reference =
"Jochen Heyd and Gustavo E. Scuseria, J. Chem. Phys., 120, 7274 {LDA version}"
119 IF (
PRESENT(shortform))
THEN
120 shortform =
"shortrange part of PBE exchange {LDA}"
122 IF (
PRESENT(needs))
THEN
124 needs%norm_drho = .true.
127 IF (
PRESENT(max_deriv)) max_deriv = 1
149 INTEGER,
INTENT(IN) :: order
152 CHARACTER(len=*),
PARAMETER :: routinen =
'xwpbe_lda_eval'
154 INTEGER :: handle, npoints
155 INTEGER,
DIMENSION(2, 3) :: bo
156 REAL(kind=
dp) :: epsilon_norm_drho, epsilon_rho, omega, &
158 REAL(kind=
dp),
CONTIGUOUS,
DIMENSION(:, :, :), &
159 POINTER :: dummy, e_0, e_ndrho, e_rho, norm_drho, &
163 CALL timeset(routinen, handle)
172 norm_drho=norm_drho, local_bounds=bo, rho_cutoff=epsilon_rho, &
173 drho_cutoff=epsilon_norm_drho)
174 npoints = (bo(2, 1) - bo(1, 1) + 1)*(bo(2, 2) - bo(1, 2) + 1)*(bo(2, 3) - bo(1, 3) + 1)
183 allocate_deriv=.true.)
187 allocate_deriv=.true.)
190 allocate_deriv=.true.)
194 cpabort(
"derivatives bigger than 1 not implemented")
201 CALL xwpbe_lda_calc(npoints, order, rho=rho, norm_drho=norm_drho, &
202 e_0=e_0, e_rho=e_rho, e_ndrho=e_ndrho, &
203 epsilon_rho=epsilon_rho, sx=sx, sx0=sx0, omega=omega)
207 CALL timestop(handle)
232 SUBROUTINE xwpbe_lda_calc(npoints, order, rho, norm_drho, e_0, e_rho, e_ndrho, &
233 epsilon_rho, sx, sx0, omega)
235 INTEGER,
INTENT(in) :: npoints, order
236 REAL(kind=
dp),
DIMENSION(1:npoints),
INTENT(inout) :: rho, norm_drho, e_0, e_rho, e_ndrho
237 REAL(kind=
dp),
INTENT(in) :: epsilon_rho, sx, sx0, omega
240 REAL(
dp) :: gradient_before, gradient_increment, &
241 my_ndrho, my_rho, pullback
242 REAL(kind=
dp) :: ss, ss2, sscale, t1, t2, t3, t4, t5, t6, &
248 my_rho = max(rho(ip), 0.0_dp)
249 IF (my_rho > epsilon_rho)
THEN
250 gradient_before = e_ndrho(ip)
251 my_ndrho = max(norm_drho(ip), 0.0_dp)
257 t3 = t2**(0.1e1_dp/0.3e1_dp)
260 ww = 0.6933612743506347048433524e0_dp*t5
264 ss = 0.3466806371753173524216762e0_dp*t6*t8
265 IF (ss > scutoff)
THEN
267 sscale = (smax*ss2 - sconst)/(ss2*ss)
270 IF (sx0 /= 0.0_dp)
THEN
272 IF (ss*sscale > gcutoff)
THEN
273 CALL xwpbe_lda_calc_0(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
274 my_ndrho, sscale, sx0, order)
276 CALL xwpbe_lda_calc_01(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
277 my_ndrho, sscale, sx0, order)
281 IF (sx /= 0.0_dp)
THEN
282 IF (omega == 0.0_dp)
THEN
283 IF (ss*sscale > gcutoff)
THEN
284 CALL xwpbe_lda_calc_0(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
285 my_ndrho, sscale, sx, order)
287 CALL xwpbe_lda_calc_01(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
288 my_ndrho, sscale, sx, order)
290 ELSE IF (ww < wcutoff .AND. ss*sscale > gcutoff)
THEN
291 CALL xwpbe_lda_calc_1(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
292 my_ndrho, omega, sscale, sx, order)
293 ELSE IF (ww < wcutoff .AND. ss*sscale <= gcutoff)
THEN
294 CALL xwpbe_lda_calc_2(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
295 my_ndrho, omega, sscale, sx, order)
296 ELSE IF (ww >= wcutoff .AND. ss*sscale > gcutoff)
THEN
297 CALL xwpbe_lda_calc_3(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
298 my_ndrho, omega, sscale, sx, order)
300 CALL xwpbe_lda_calc_4(e_0(ip), e_rho(ip), e_ndrho(ip), my_rho, &
301 my_ndrho, omega, sscale, sx, order)
304 IF (order >= 1 .AND. ss > scutoff)
THEN
307 pullback = (-smax*ss2 + 3.0_dp*sconst)/(smax*ss2 - sconst)
308 gradient_increment = e_ndrho(ip) - gradient_before
309 e_rho(ip) = e_rho(ip) - gradient_increment*(4.0_dp*my_ndrho/(3.0_dp*my_rho))*pullback
310 e_ndrho(ip) = gradient_before + gradient_increment*(1.0_dp + pullback)
317 END SUBROUTINE xwpbe_lda_calc
335 SUBROUTINE xwpbe_lda_calc_0(e_0, e_rho, e_ndrho, rho, ndrho, sscale, sx0, order)
336 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
337 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, sscale, sx0
338 INTEGER,
INTENT(IN) :: order
340 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t100, t103, t105, t106, t109, t11, t110, t111, &
341 t112, t114, t116, t117, t118, t119, t12, t120, t121, t122, t123, t125, t126, t127, t13, &
342 t130, t134, t135, t136, t138, t139, t14, t142, t143, t145, t146, t147, t148, t149, t15, &
343 t150, t152, t156, t158, t159, t16, t160, t163, t164, t165, t166, t169, t170, t172, t173, &
344 t174, t175, t176, t18, t180, t183, t184, t185, t187, t188, t19, t190, t191, t192, t193, &
345 t199, t2, t20, t200, t201, t202, t203, t207, t209, t21, t215, t218, t219, t22, t220, &
346 t222, t223, t224, t225, t227, t228, t231, t233, t236, t237, t24
347 REAL(kind=
dp) :: t240, t241, t242, t245, t246, t247, t249, t25, t250, t253, t254, t258, t26, &
348 t261, t262, t263, t265, t266, t269, t272, t274, t275, t278, t28, t281, t282, t284, t285, &
349 t287, t288, t29, t290, t291, t294, t297, t3, t300, t301, t303, t304, t306, t307, t31, &
350 t314, t32, t321, t323, t326, t327, t33, t330, t334, t335, t336, t337, t338, t339, t34, &
351 t340, t342, t343, t344, t345, t347, t355, t356, t357, t358, t359, t36, t361, t362, t363, &
352 t367, t368, t37, t372, t374, t376, t377, t381, t383, t384, t387, t388, t39, t390, t391, &
353 t394, t397, t398, t4, t40, t400, t401, t402, t404, t405, t406
354 REAL(kind=
dp) :: t408, t409, t410, t411, t412, t413, t414, t415, t416, t417, t418, t42, &
355 t423, t425, t426, t429, t430, t432, t433, t435, t44, t440, t443, t444, t446, t447, t449, &
356 t46, t463, t465, t47, t471, t472, t475, t476, t478, t479, t480, t484, t485, t489, t491, &
357 t495, t497, t5, t500, t501, t504, t505, t507, t508, t510, t511, t513, t514, t515, t52, &
358 t520, t53, t54, t56, t58, t59, t6, t61, t63, t65, t66, t67, t68, t69, t7, t70, t71, t72, &
359 t73, t74, t76, t77, t78, t79, t8, t80, t81, t83, t84, t86, t88, t89, t9, t91, t92, t93, &
370 t9 = t8**(0.1e1_dp/0.3e1_dp)
388 t31 = t5*t16 + t22*t29
394 t39 = 0.1e1_dp/t20/r2
396 t42 = 0.1e1_dp/t10/t8
397 t44 = 0.1e1_dp/t25/rho
400 t52 = 0.1e1_dp/t20/t3
404 t58 = 0.1e1_dp/t54/t56
408 t65 = r1 + t34*t29 + t40*t47 + t53*t63
418 t74 = rho**(0.1e1_dp/0.3e1_dp)
441 t109 = t98*(r15*e + t100*t91*t83 + t103*t93 + t105*t106)
457 t130 = erfc(t121*t122*t123*t127)
458 t134 = 0.1e1_dp/f1516
459 t135 = (t97 + t109*t114 - t97*t118*t130)*t134
462 t139 = t136*t112*t138
463 t142 = (-t135*t139 + r1)*e
471 t152 = log(t147*t150)
472 t156 = (t77*t84 + t92*t95 + t142*t143 + t145*(t146 + t152)) &
474 e_0 = e_0 + (-t76*t156)*sx0
485 t172 = 0.1e1_dp/t9/t170
491 t183 = -0.2e1_dp/0.3e1_dp*t159*t160 - (2._dp*t5*t166) - 0.4e1_dp/ &
492 0.3e1_dp*t174*t176 - (4._dp*t22*t180)
501 t199 = 0.1e1_dp/t10/t170
506 t207 = 0.1e1_dp/t25/t12
508 t215 = t58/t59/rho*t61
509 t218 = -0.4e1_dp/0.3e1_dp*t193*t176 - (4._dp*t34*t180) - 0.5e1_dp &
510 /0.3e1_dp*t201*t203 - (5._dp*t40*t209) - (8._dp*t53*t215)
521 dqrho = t185*t73 - t191*t220 - 0.2e1_dp/0.3e1_dp*t223*t228 - (2._dp &
528 t245 = 2._dp*t237*t16 + 4._dp*t242*t29
536 t261 = 4._dp*t250*t29 + 5._dp*t254*t47 + 6._dp*t258*t63
541 dqndrho = t247*t73 - t191*t263 + 2._dp*t266*t73
551 t287 = -0.2e1_dp/0.3e1_dp*t272*t275 - (2._dp*t79*t278) + (t79 &
558 t300 = t297*t66 - t86*t284
560 t303 = -0.2e1_dp/0.3e1_dp*t272*t291 - (2._dp*t79*t294) + (t79 &
566 t321 = t98*(t100*t303*t83 + t100*t91*t287 + 2._dp*t103*t314 &
567 + 3._dp*t105*t93*t287)
569 t326 = t110/t111/t323
584 t355 = t119*t120*t122
589 t361 = t357 - t358*t359
592 t367 = t342*(-t344*t345*t347/0.3e1_dp - t121*t122*t13*t127 &
593 + t355*t363/0.2e1_dp)
595 t372 = (t321*t114 - 0.7e1_dp/0.2e1_dp*t109*t327 - (t330*dqrho &
596 *t117*t130) + (2._dp*t330*t368))*t134
600 t381 = (-t372*t139 - 0.7e1_dp/0.2e1_dp*t374*t377)*e
603 t387 = dexeirho(q, dqrho, t146)
616 t408 = -0.2e1_dp/0.3e1_dp*t388*t391 - (2._dp*t394*t150) + t147 &
617 *t398 - t147*t402 - t147*t406
628 t423 = (-t77*t288 + t304*t95 - 2._dp*t92*t307 + t381*t143 - 3._dp &
629 *t142*t384 + t145*(t387 + t412*t418))*clda
630 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t269*t156 - t76*t423)*sx0
637 t435 = 2._dp*t426*t81 + t79*t430 - t147*t433
639 t443 = t440*t66 - t86*t432
641 t446 = 2._dp*t426*t89 + t79*t444
644 t463 = t98*(t100*t446*t83 + t100*t91*t435 + 2._dp*t103*t83 &
645 *t435 + 3._dp*t105*t93*t435)
651 t478 = t475 - t358*t476
654 t484 = t342*(t472*t345*t126 + t355*t480/0.2e1_dp)
656 t489 = (t463*t114 - 0.7e1_dp/0.2e1_dp*t109*t465 - (t330*dqndrho &
657 *t117*t130) + (2._dp*t330*t485))*t134
659 t495 = (-t489*t139 - 0.7e1_dp/0.2e1_dp*t374*t491)*e
661 t500 = dexeindrho(q, dqndrho, t146)
669 t513 = 2._dp*t501*t150 + t147*t505 - t147*t508 - t147*t511
672 t520 = (-t77*t94*t435 + t447*t95 - 2._dp*t92*t449 + t495*t143 &
673 - 3._dp*t142*t497 + t145*(t500 + t515*t418))*clda
674 e_ndrho = e_ndrho + (-t76*t520)*sx0
677 END SUBROUTINE xwpbe_lda_calc_0
696 SUBROUTINE xwpbe_lda_calc_01(e_0, e_rho, e_ndrho, rho, ndrho, sscale, sx0, order)
697 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
698 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, sscale, sx0
699 INTEGER,
INTENT(IN) :: order
701 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t100, t101, t103, t104, t107, t109, t11, t111, &
702 t112, t113, t114, t115, t116, t118, t12, t122, t124, t125, t126, t129, t13, t130, t131, &
703 t132, t135, t136, t139, t14, t140, t141, t142, t146, t149, t15, t150, t151, t153, t154, &
704 t156, t157, t158, t159, t16, t165, t166, t167, t168, t169, t173, t175, t18, t181, t184, &
705 t185, t186, t188, t189, t19, t190, t191, t193, t194, t197, t199, t2, t20, t202, t203, &
706 t206, t207, t208, t21, t211, t212, t213, t215, t216, t219, t22, t220, t224, t227, t228, &
707 t229, t231, t232, t235, t238, t24, t240, t241, t244, t247, t248
708 REAL(kind=
dp) :: t25, t250, t251, t253, t254, t256, t257, t26, t260, t263, t266, t267, t270, &
709 t272, t273, t276, t277, t28, t280, t283, t288, t29, t293, t294, t297, t299, t3, t300, &
710 t301, t304, t305, t307, t308, t31, t311, t314, t315, t317, t318, t319, t32, t321, t322, &
711 t323, t325, t326, t327, t328, t329, t33, t330, t331, t332, t333, t334, t335, t34, t340, &
712 t342, t343, t346, t347, t349, t350, t352, t357, t36, t360, t361, t364, t366, t37, t371, &
713 t372, t375, t376, t379, t380, t383, t385, t388, t389, t39, t392, t393, t395, t396, t398, &
714 t399, t4, t40, t401, t402, t403, t408, t42, t44, t46, t47, t5
715 REAL(kind=
dp) :: t52, t53, t54, t56, t58, t59, t6, t61, t63, t65, t66, t67, t68, t69, t7, &
716 t70, t71, t72, t73, t74, t76, t77, t78, t79, t8, t80, t81, t83, t84, t86, t88, t89, t9, &
717 t92, t93, t94, t95, t97, t98
719 IF (ndrho == 0.0_dp)
THEN
721 t1 = -f89*clda*(b/(2.0_dp*dd) + c/(2.0_dp*dd**2) + e/dd**3 + &
722 0.5_dp*a*(-0.577215664901532860606512_dp + log(a/(f94*dd))))
723 e_0 = e_0 + sx0*t1*rho**(4.0_dp/3.0_dp)
724 IF (order >= 1) e_rho = e_rho + sx0*(4.0_dp/3.0_dp)*t1*rho**(1.0_dp/3.0_dp)
736 t9 = t8**(0.1e1_dp/0.3e1_dp)
754 t31 = t5*t16 + t22*t29
760 t39 = 0.1e1_dp/t20/r2
762 t42 = 0.1e1_dp/t10/t8
763 t44 = 0.1e1_dp/t25/rho
766 t52 = 0.1e1_dp/t20/t3
770 t58 = 0.1e1_dp/t54/t56
774 t65 = r1 + t34*t29 + t40*t47 + t53*t63
784 t74 = rho**(0.1e1_dp/0.3e1_dp)
796 t92 = f12*(t79*t89 + r1)
804 t103 = g1 + t98*t16 + t101*t29
806 t107 = (t79*t104 + r1)*e
807 t109 = 0.1e1_dp/t93/t83
814 t118 = log(t113*t116)
815 t122 = (t77*t84 + t92*t95 + t107*t109 + t111*(t112 + t118)) &
817 e_0 = e_0 + (-t76*t122)*sx0
833 t149 = -0.2e1_dp/0.3e1_dp*t125*t126 - (2._dp*t5*t132) - 0.4e1_dp/ &
834 0.3e1_dp*t140*t142 - (4._dp*t22*t146)
843 t165 = 0.1e1_dp/t10/t136
848 t173 = 0.1e1_dp/t25/t12
850 t181 = t58/t59/rho*t61
851 t184 = -0.4e1_dp/0.3e1_dp*t159*t142 - (4._dp*t34*t146) - 0.5e1_dp &
852 /0.3e1_dp*t167*t169 - (5._dp*t40*t175) - (8._dp*t53*t181)
863 dqrho = t151*t73 - t157*t186 - 0.2e1_dp/0.3e1_dp*t189*t194 - (2._dp &
870 t211 = 2._dp*t203*t16 + 4._dp*t208*t29
878 t227 = 4._dp*t216*t29 + 5._dp*t220*t47 + 6._dp*t224*t63
883 dqndrho = t213*t73 - t157*t229 + 2._dp*t232*t73
893 t253 = -0.2e1_dp/0.3e1_dp*t238*t241 - (2._dp*t79*t244) + (t79 &
900 t266 = t263*t66 - t86*t250
902 t270 = f12*(-0.2e1_dp/0.3e1_dp*t238*t257 - (2._dp*t79*t260) + &
911 t293 = -0.2e1_dp/0.3e1_dp*t283*t126 - (2._dp*t98*t132) - 0.4e1_dp &
912 /0.3e1_dp*t288*t142 - (4._dp*t101*t146)
914 t297 = (-0.2e1_dp/0.3e1_dp*t238*t277 - (2._dp*t79*t280) + (t79 &
919 t304 = dexeirho(q, dqrho, t112)
932 t325 = -0.2e1_dp/0.3e1_dp*t305*t308 - (2._dp*t311*t116) + t113 &
933 *t315 - t113*t319 - t113*t323
944 t340 = (-t77*t254 + t270*t95 - 2._dp*t92*t273 + t297*t109 - 3._dp &
945 *t107*t301 + t111*(t304 + t329*t335))*clda
946 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t235*t122 - t76*t340)*sx0
953 t352 = 2._dp*t343*t81 + t79*t347 - t113*t350
955 t360 = t357*t66 - t86*t349
957 t364 = f12*(2._dp*t343*t89 + t79*t361)
963 t379 = 2._dp*t372*t16 + 4._dp*t376*t29
965 t383 = (2._dp*t343*t104 + t79*t380)*e
967 t388 = dexeindrho(q, dqndrho, t112)
975 t401 = 2._dp*t389*t116 + t113*t393 - t113*t396 - t113*t399
978 t408 = (-t77*t94*t352 + t364*t95 - 2._dp*t92*t366 + t383*t109 &
979 - 3._dp*t107*t385 + t111*(t388 + t403*t335))*clda
980 e_ndrho = e_ndrho + (-t76*t408)*sx0
983 END SUBROUTINE xwpbe_lda_calc_01
1002 SUBROUTINE xwpbe_lda_calc_1(e_0, e_rho, e_ndrho, rho, ndrho, omega, sscale, sx, order)
1003 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
1004 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, omega, sscale, sx
1005 INTEGER,
INTENT(IN) :: order
1007 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t1001, t1009, t1011, t102, t1024, t1035, t104, &
1008 t105, t1052, t1066, t1068, t1069, t108, t109, t11, t110, t111, t113, t115, t116, t117, &
1009 t118, t119, t12, t120, t121, t123, t124, t125, t126, t127, t128, t129, t13, t131, t132, &
1010 t133, t136, t14, t140, t141, t142, t144, t145, t147, t148, t149, t15, t150, t151, t152, &
1011 t153, t154, t155, t156, t157, t158, t159, t16, t162, t163, t166, t167, t168, t169, t17, &
1012 t170, t174, t176, t177, t18, t180, t181, t185, t186, t189, t19, t190, t192, t193, t194, &
1013 t195, t197, t198, t199, t2, t200, t202, t205, t209, t21, t210
1014 REAL(kind=
dp) :: t213, t214, t219, t22, t221, t222, t223, t224, t227, t228, t23, t233, t237, &
1015 t239, t24, t241, t243, t246, t247, t25, t250, t251, t252, t253, t255, t256, t257, t258, &
1016 t263, t264, t265, t267, t27, t270, t271, t273, t275, t276, t28, t280, t284, t285, t286, &
1017 t288, t289, t29, t290, t293, t294, t295, t298, t3, t303, t305, t307, t31, t310, t311, &
1018 t312, t313, t315, t316, t318, t319, t32, t321, t326, t329, t330, t332, t333, t335, t336, &
1019 t338, t339, t34, t340, t342, t343, t345, t346, t347, t348, t349, t35, t351, t352, t353, &
1020 t354, t357, t358, t36, t361, t362, t363, t364, t368, t371, t372
1021 REAL(kind=
dp) :: t373, t374, t375, t376, t377, t378, t38, t383, t384, t385, t386, t39, t390, &
1022 t392, t398, t4, t401, t402, t403, t404, t406, t409, t41, t411, t412, t415, t416, t419, &
1023 t42, t420, t421, t424, t425, t426, t428, t429, t432, t433, t437, t44, t440, t441, t442, &
1024 t444, t446, t449, t452, t453, t454, t457, t46, t461, t463, t465, t468, t469, t472, t475, &
1025 t478, t479, t48, t481, t486, t49, t493, t495, t498, t499, t5, t502, t503, t504, t507, &
1026 t508, t509, t510, t511, t513, t514, t515, t517, t518, t522, t525, t529, t530, t531, t532, &
1027 t533, t534, t535, t537, t538, t539, t54, t540, t542, t55, t550
1028 REAL(kind=
dp) :: t551, t552, t553, t554, t556, t557, t558, t56, t562, t563, t567, t569, &
1029 t571, t572, t575, t576, t577, t578, t58, t581, t582, t583, t587, t588, t589, t592, t596, &
1030 t597, t6, t60, t602, t603, t608, t61, t613, t617, t620, t621, t624, t626, t629, t63, &
1031 t631, t634, t638, t639, t644, t645, t65, t653, t655, t656, t657, t658, t659, t663, t666, &
1032 t669, t67, t673, t679, t68, t681, t685, t689, t69, t690, t691, t697, t698, t7, t70, t701, &
1033 t71, t711, t713, t717, t718, t72, t721, t728, t73, t735, t736, t739, t74, t740, t746, &
1034 t747, t748, t75, t752, t753, t754, t755, t759, t761, t763, t765, t769
1035 REAL(kind=
dp) :: t77, t771, t772, t779, t78, t780, t781, t783, t784, t787, t791, t792, t799, &
1036 t8, t80, t800, t801, t803, t804, t808, t81, t810, t812, t815, t816, t817, t82, t820, &
1037 t823, t826, t83, t832, t834, t836, t84, t842, t845, t846, t848, t849, t85, t851, t865, &
1038 t867, t87, t870, t871, t873, t874, t876, t877, t88, t880, t884, t885, t888, t889, t891, &
1039 t892, t893, t897, t898, t9, t90, t902, t904, t907, t908, t909, t91, t910, t916, t918, &
1040 t919, t92, t93, t930, t932, t933, t937, t94, t942, t945, t95, t951, t954, t958, t96, &
1041 t962, t965, t968, t97, t971, t972, t979, t982, t988, t99
1050 t8 = t7**(0.1e1_dp/0.3e1_dp)
1067 t27 = 0.1e1_dp/t8/t7
1072 t34 = t17*t19 + t25*t32
1077 t41 = 0.1e1_dp/t23/r2
1079 t44 = 0.1e1_dp/t9/t7
1080 t46 = 0.1e1_dp/t28/rho
1083 t54 = 0.1e1_dp/t23/t2
1087 t60 = 0.1e1_dp/t56/t58
1091 t67 = r1 + t36*t32 + t42*t49 + t55*t65
1102 t78 = rho**(0.1e1_dp/0.3e1_dp)
1123 t108 = t97*(r15*e + t99*t90*t82 + t102*t92 + t104*t105)
1135 t123 = exp(t118*t121)
1145 t136 = erfc(t127*t128*t129*t133)
1146 t140 = 0.1e1_dp/f1516
1147 t141 = (t96 + t108*t113 - t96*t124*t136)*t140
1150 t145 = t142*t111*t144
1151 t147 = -t141*t145 + r1
1153 t149 = 0.1e1_dp/t105
1158 t154 = t71 + dd + t153
1163 t159 = 0.1e1_dp/t158
1165 t163 = 0.1e1_dp/t162
1170 t170 = 0.1e1_dp/t169
1171 t174 = (-t151*t152*t159 - t81*t83*t163 - t166*t167*t170) &
1178 t186 = (-t176*t177*t159 - t180*t181*t170)*t185
1179 t189 = 0.1e1_dp/r3/t5
1187 t199 = t71 + dd + t74
1188 t200 = 0.1e1_dp/t199
1189 t202 = log(t75*t200)
1193 t213 = (t197*t97/t205 - t209*t210)*alpha1
1195 t219 = (t197*t200 - f98*t198)*alpha2
1201 t228 = 0.1e1_dp/t227
1202 t233 = 0.1e1_dp/t115
1203 t237 = (t97*(t221/t224 - f98*t228) + f2716*t210*t233)*alpha3 &
1206 t241 = 0.1e1_dp/t222
1208 t246 = (-f98*t239 + t197*t241 + t243*t198)*alpha4
1213 t253 = 0.1e1_dp/t252
1222 t270 = (t97*(t243*t228 - f916*t253 + t255/t258) - t267*t210) &
1225 t273 = 0.1e1_dp/t223
1226 t275 = 0.1e1_dp/t250
1230 t285 = (a*t273 - t276 + t243*r1*t239 - t280*t198)*alpha6 &
1242 t307 = f2187256/t305
1243 t310 = (t97*(t288/t290 - f2732/t295 + t298*t253 - t280*t228) &
1248 t315 = 0.1e1_dp/t8/t313
1251 t319 = 0.1e1_dp/t256
1252 t321 = 0.1e1_dp/t251
1253 t326 = f6561512/t264
1254 t329 = (t318*t319 - f94*t321 + t243*t275 - t280*t239 + t326 &
1257 t332 = 0.1e1_dp/t9/t313
1259 t335 = t84 + t95 + t150 + t174*t128 + t186*t190 - t150*t195 + &
1260 t197*(t198 + t202) + t213*t214 + t219*t153 + t237*t190 + &
1261 t246*t247 + t270*t271 + t285*t286 + t310*t316 + t329*t333
1263 e_0 = e_0 + (-t80*t336)*sx
1264 IF (order >= 1)
THEN
1270 t345 = 0.2e1_dp/0.3e1_dp*t339*t343
1272 t347 = 0.1e1_dp/t346
1275 t351 = 2._dp*t11*t349
1286 t371 = -0.2e1_dp/0.3e1_dp*t353*t354 - (2._dp*t17*t358) - 0.4e1_dp &
1287 /0.3e1_dp*t362*t364 - (4._dp*t25*t368)
1293 t377 = 0.1e1_dp/t376
1299 t390 = 0.1e1_dp/t28/t12
1301 t398 = t60/t61/rho*t63
1302 t401 = -0.4e1_dp/0.3e1_dp*t378*t364 - (4._dp*t36*t368) - 0.5e1_dp &
1303 /0.3e1_dp*t384*t386 - (5._dp*t42*t392) - (8._dp*t55*t398)
1308 t409 = -t345 - t351 + t374 - t404 - 0.2e1_dp/0.3e1_dp*t73*t406
1309 dqrho = f94*t409*t77
1317 t424 = 2._dp*t416*t19 + 4._dp*t421*t32
1325 t440 = 4._dp*t429*t32 + 5._dp*t433*t49 + 6._dp*t437*t65
1328 t444 = 2._dp*t412*t70 + t11*t426 - t375*t442
1329 dqndrho = f94*t444*t77
1333 t453 = -t345 - t351 + t374 - t404
1336 t461 = t56*r3*t58*t5*t346
1337 t463 = 0.1e1_dp/t9/t461
1343 t478 = t475*t68 - t85*t402
1345 t481 = -0.2e1_dp/0.3e1_dp*t339*t469 - (2._dp*t11*t472) + (t11 &
1348 t493 = t97*(t99*t481*t82 + t99*t90*t453 + 2._dp*t102*t486 &
1349 + 3._dp*t104*t92*t453)
1351 t498 = t109/t110/t495
1366 t522 = t119*t348*t77
1367 t525 = t504*t121 - t508*t511 - 0.2e1_dp/0.3e1_dp*t514*t518 - (2._dp &
1370 t530 = 0.1e1_dp/t529
1376 t537 = exp(-t534*t535)
1381 t550 = t125*t126*t128
1382 t551 = 0.1e1_dp/t132
1386 t556 = t552 - t553*t554
1389 t562 = t537*(-t539*t540*t542/0.3e1_dp - t127*t128*t13*t133 &
1390 + t550*t558/0.2e1_dp)
1392 t567 = (t493*t113 - 0.7e1_dp/0.2e1_dp*t108*t499 - (t502*t525 &
1393 *t123*t136) + (2._dp*t502*t563))*t140
1395 t571 = t110*t92*t144
1397 t575 = -t567*t145 - 0.7e1_dp/0.2e1_dp*t569*t572
1401 t581 = 0.1e1_dp/t158/t157
1404 t587 = -t345 - t351 + t374 - t404 - 0.2e1_dp/0.3e1_dp*t72*t44*t6
1408 t596 = 0.1e1_dp/t224/t223
1410 t602 = 0.1e1_dp/t227/t75
1412 t608 = dexerrho(q, dqrho)
1413 t613 = (t97*(-0.3e1_dp/0.2e1_dp*t221*t597*t409 + t603*t409/ &
1414 0.2e1_dp) + f2716*t608*t233)*alpha3*t185
1416 t620 = 0.1e1_dp/t495
1423 t638 = 0.1e1_dp/t252/t251
1425 t644 = 0.1e1_dp/t258/t257
1427 t653 = (t97*(-t243*t634/0.2e1_dp + 0.3e1_dp/0.2e1_dp*t639*t250* &
1428 t409 - 0.5e1_dp/0.2e1_dp*t255*t645*t409) - t267*t608)*alpha5
1429 t655 = -(2._dp*t285*t449) - (2._dp*t91*t454) - 0.8e1_dp/0.3e1_dp &
1430 *t457*t465 + t577 - t186*t578 + 0.5e1_dp/0.2e1_dp*t583*t589 &
1431 - 0.2e1_dp/0.3e1_dp*t592*t406 + t613*t190 - t81*t93*t453 + &
1432 t617*t94 - t237*t578 - (3._dp*t148*t621) - t624*t626/0.3e1_dp &
1433 - 0.4e1_dp/0.3e1_dp*t629*t631 + t653*t271
1439 t666 = dexeirho(q, dqrho)
1440 t669 = (t276*t409 - 2._dp*t197*t663 + t243*t666)*alpha4
1441 t673 = t97/t205/t199
1442 t679 = (-t197*t673*t409/0.2e1_dp - t209*t608)*alpha1
1444 t685 = (-t197*t681 - f98*t666)*alpha2
1445 t689 = 0.1e1_dp/t290/t289
1448 t697 = f2732/t295/t294
1451 t711 = (t97*(-0.7e1_dp/0.2e1_dp*t288*t691*t409 + 0.5e1_dp/0.2e1_dp &
1452 *t697*t698 - 0.3e1_dp/0.2e1_dp*t298*t701*t409 + t280*t634/ &
1453 0.2e1_dp) + t307*t608)*alpha7
1454 t713 = 0.1e1_dp/t257
1455 t717 = 0.1e1_dp/t293
1458 t728 = (-4._dp*t318*t713*t409 + 3._dp*t718*t409 - 2._dp*t243*t721 &
1459 + t280*t275*t409 + t326*t666)*alpha8
1467 t752 = 0.1e1_dp/t169/t168
1471 t759 = (-t176*t575*t93*t159 + (2._dp*t735*t736) + 0.5e1_dp/ &
1472 0.2e1_dp*(t735)*(t740) - t180*t481*t93*t170 + (2._dp &
1473 *t746*t748) + 0.3e1_dp/0.2e1_dp*(t746)*(t755))*t185
1475 t763 = 0.1e1_dp/t8/t461
1478 t771 = t409*t200 - t769*t409
1486 t791 = 0.1e1_dp/t162/t154
1493 t808 = (-t151*t575*t83*t159 + t779*t781 + 0.5e1_dp/0.2e1_dp*t779 &
1494 *t784 + t81*t787*t453 + t81*t792*t587/0.2e1_dp - t166 &
1495 *t481*t83*t170 + t799*t801 + 0.3e1_dp/0.2e1_dp*t799*t804)* &
1498 t812 = t194*t44*t453
1505 t832 = (-3._dp*t820*t409 + 2._dp*t823*t409 - t243*t826*t409 - t280 &
1507 t834 = 0.5e1_dp/0.3e1_dp*t657*t659 + t669*t247 + t679*t214 + t685 &
1508 *t153 - t577*t195 + t711*t316 + t728*t333 - t174*t626 &
1509 /0.3e1_dp + t759*t190 - 0.7e1_dp/0.3e1_dp*t761*t765 + t197*(t666 &
1510 + t772*t199) + t808*t128 + (3._dp*t810*t812) - 0.5e1_dp/0.3e1_dp &
1511 *t815*t817 + t832*t286
1512 t836 = (t655 + t834)*clda
1513 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t446*t336 - t80*t836)*sx
1515 t845 = t842*t68 - t85*t441
1517 t848 = 2._dp*t412*t88 + t11*t846
1520 t865 = t97*(t99*t848*t82 + t99*t90*t444 + 2._dp*t102*t82 &
1521 *t444 + 3._dp*t104*t92*t444)
1529 t880 = t871*t121 - t508*t874 + 2._dp*t877*t121
1534 t891 = t888 - t553*t889
1537 t897 = t537*(t885*t540*t132 + t550*t893/0.2e1_dp)
1539 t902 = (t865*t113 - 0.7e1_dp/0.2e1_dp*t108*t867 - (t502*t880 &
1540 *t123*t136) + (2._dp*t502*t898))*t140
1542 t907 = -t902*t145 - 0.7e1_dp/0.2e1_dp*t569*t904
1552 t937 = (-t151*t907*t83*t159 + t779*t916 + 0.5e1_dp/0.2e1_dp*t779 &
1553 *t919 + t81*t787*t444 + t81*t792*t444/0.2e1_dp - t166 &
1554 *t848*t83*t170 + t799*t930 + 0.3e1_dp/0.2e1_dp*t799*t933)* &
1560 t958 = (-t176*t907*t93*t159 + (2._dp*t735*t942) + 0.5e1_dp/ &
1561 0.2e1_dp*(t735)*(t945) - t180*t848*t93*t170 + (2._dp &
1562 *t746*t951) + 0.3e1_dp/0.2e1_dp*(t746)*(t954))*t185
1563 t962 = t194*t44*t444
1565 t968 = dexeindrho(q, dqndrho)
1566 t971 = t444*t200 - t769*t444
1568 t979 = dexerndrho(q, dqndrho)
1569 t982 = (-t197*t673*t444/0.2e1_dp - t209*t979)*alpha1
1570 t988 = (-t197*t241*t444 - f98*t968)*alpha2
1571 t1001 = (t97*(-0.3e1_dp/0.2e1_dp*t221*t597*t444 + t603*t444/ &
1572 0.2e1_dp) + f2716*t979*t233)*alpha3*t185
1573 t1009 = (t276*t444 - 2._dp*t197*t273*t444 + t243*t968)*alpha4
1575 t1024 = (t97*(-t243*t1011/0.2e1_dp + 0.3e1_dp/0.2e1_dp*t639*t250 &
1576 *t444 - 0.5e1_dp/0.2e1_dp*t255*t645*t444) - t267*t979)*alpha5
1577 t1035 = (-3._dp*t820*t444 + 2._dp*t823*t444 - t243*t826*t444 - &
1578 t280*t968)*alpha6*t284
1579 t1052 = (t97*(-0.7e1_dp/0.2e1_dp*t288*t691*t444 + 0.5e1_dp/0.2e1_dp &
1580 *t697*t293*t444 - 0.3e1_dp/0.2e1_dp*t298*t701*t444 + t280 &
1581 *t1011/0.2e1_dp) + t307*t979)*alpha7
1582 t1066 = (-4._dp*t318*t713*t444 + 3._dp*t718*t444 - 2._dp*t243*t321 &
1583 *t444 + t280*t275*t444 + t326*t968)*alpha8
1584 t1068 = -t81*t93*t444 + t849*t94 - (2._dp*t91*t851) + t909 &
1585 - (3._dp*t148*t910) + t937*t128 + t958*t190 - t909*t195 &
1586 + (3._dp*t810*t962) + 0.5e1_dp/0.2e1_dp*t583*t965 + t197*(t968 &
1587 + t972*t199) + t982*t214 + t988*t153 + t1001*t190 + t1009 &
1588 *t247 + t1024*t271 + t1035*t286 + t1052*t316 + t1066* &
1591 e_ndrho = e_ndrho + (-t80*t1069)*sx
1594 END SUBROUTINE xwpbe_lda_calc_1
1614 SUBROUTINE xwpbe_lda_calc_2(e_0, e_rho, e_ndrho, rho, ndrho, omega, sscale, sx, order)
1615 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
1616 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, omega, sscale, sx
1617 INTEGER,
INTENT(IN) :: order
1619 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t100, t102, t103, t105, t106, t108, t109, t11, &
1620 t110, t111, t112, t113, t114, t115, t116, t117, t118, t12, t121, t122, t125, t126, t127, &
1621 t128, t129, t13, t133, t134, t136, t137, t14, t140, t141, t145, t146, t149, t15, t151, &
1622 t153, t154, t155, t156, t158, t159, t16, t160, t161, t163, t166, t167, t17, t171, t172, &
1623 t173, t176, t177, t18, t182, t184, t185, t186, t187, t19, t190, t191, t196, t2, t200, &
1624 t202, t204, t206, t209, t21, t210, t213, t214, t215, t216, t218, t219, t22, t220, t221, &
1625 t226, t227, t228, t23, t230, t233, t234, t236, t238, t239, t24
1626 REAL(kind=
dp) :: t243, t247, t248, t249, t25, t251, t252, t253, t256, t257, t258, t261, &
1627 t266, t268, t27, t270, t273, t274, t275, t276, t278, t279, t28, t281, t282, t284, t289, &
1628 t29, t292, t293, t295, t296, t298, t299, t3, t301, t302, t303, t305, t306, t308, t309, &
1629 t31, t310, t311, t312, t314, t315, t316, t317, t32, t320, t321, t324, t325, t326, t327, &
1630 t331, t334, t335, t336, t337, t338, t339, t34, t340, t341, t346, t347, t348, t349, t35, &
1631 t353, t355, t36, t361, t364, t365, t366, t367, t369, t372, t374, t375, t378, t379, t38, &
1632 t382, t383, t384, t387, t388, t389, t39, t391, t392, t395, t396, t4
1633 REAL(kind=
dp) :: t400, t403, t404, t405, t407, t409, t41, t413, t416, t417, t42, t420, t423, &
1634 t428, t433, t434, t436, t44, t440, t441, t442, t443, t447, t448, t452, t453, t454, t457, &
1635 t458, t46, t461, t464, t467, t468, t470, t474, t475, t476, t48, t480, t481, t482, t483, &
1636 t487, t489, t49, t491, t496, t5, t500, t503, t505, t506, t507, t510, t512, t513, t514, &
1637 t516, t519, t522, t523, t524, t530, t531, t535, t536, t54, t541, t542, t549, t55, t551, &
1638 t552, t558, t559, t56, t561, t565, t566, t569, t574, t577, t579, t58, t583, t584, t585, &
1639 t587, t588, t591, t595, t596, t6, t60, t603, t604, t605, t607
1640 REAL(kind=
dp) :: t608, t61, t612, t615, t620, t622, t626, t628, t629, t63, t633, t634, t635, &
1641 t638, t641, t644, t65, t650, t652, t656, t658, t659, t660, t665, t67, t670, t671, t679, &
1642 t68, t681, t685, t687, t689, t69, t692, t695, t697, t699, t7, t70, t702, t705, t709, t71, &
1643 t710, t714, t72, t723, t725, t727, t73, t733, t736, t737, t739, t74, t740, t742, t747, &
1644 t748, t75, t751, t752, t755, t756, t758, t759, t760, t761, t767, t769, t77, t770, t78, &
1645 t781, t783, t784, t788, t793, t796, t8, t80, t802, t805, t809, t81, t813, t816, t819, &
1646 t82, t822, t823, t83, t830, t833, t839, t84, t85, t852, t860
1647 REAL(kind=
dp) :: t862, t87, t875, t88, t886, t9, t90, t903, t91, t917, t919, t92, t920, t93, &
1648 t94, t95, t96, t97, t99
1657 t8 = t7**(0.1e1_dp/0.3e1_dp)
1674 t27 = 0.1e1_dp/t8/t7
1679 t34 = t17*t19 + t25*t32
1684 t41 = 0.1e1_dp/t23/r2
1686 t44 = 0.1e1_dp/t9/t7
1687 t46 = 0.1e1_dp/t28/rho
1690 t54 = 0.1e1_dp/t23/t2
1694 t60 = 0.1e1_dp/t56/t58
1698 t67 = r1 + t36*t32 + t42*t49 + t55*t65
1709 t78 = rho**(0.1e1_dp/0.3e1_dp)
1728 t102 = g1 + t97*t19 + t100*t32
1730 t105 = t11*t103 + r1
1732 t108 = 0.1e1_dp/t92/t82
1737 t113 = t71 + dd + t112
1742 t118 = 0.1e1_dp/t117
1744 t122 = 0.1e1_dp/t121
1749 t129 = 0.1e1_dp/t128
1750 t133 = (-t110*t111*t118 - t81*t83*t122 - t125*t126*t129) &
1758 t146 = (-t136*t137*t118 - t140*t141*t129)*t145
1759 t149 = 0.1e1_dp/r3/t5
1767 t160 = t71 + dd + t74
1768 t161 = 0.1e1_dp/t160
1769 t163 = log(t75*t161)
1775 t176 = (t158*t166/t167 - t172*t173)*alpha1
1777 t182 = (t158*t161 - f98*t159)*alpha2
1783 t191 = 0.1e1_dp/t190
1784 t196 = 0.1e1_dp/t171
1785 t200 = (t166*(t184/t187 - f98*t191) + f2716*t173*t196)* &
1788 t204 = 0.1e1_dp/t185
1790 t209 = (-f98*t202 + t158*t204 + t206*t159)*alpha4
1795 t216 = 0.1e1_dp/t215
1804 t233 = (t166*(t206*t191 - f916*t216 + t218/t221) - t230*t173) &
1807 t236 = 0.1e1_dp/t186
1808 t238 = 0.1e1_dp/t213
1812 t248 = (a*t236 - t239 + t206*r1*t202 - t243*t159)*alpha6 &
1824 t270 = f2187256/t268
1825 t273 = (t166*(t251/t253 - f2732/t258 + t261*t216 - t243*t191) &
1830 t278 = 0.1e1_dp/t8/t276
1833 t282 = 0.1e1_dp/t219
1834 t284 = 0.1e1_dp/t214
1835 t289 = f6561512/t227
1836 t292 = (t281*t282 - f94*t284 + t206*t238 - t243*t202 + t289 &
1839 t295 = 0.1e1_dp/t9/t276
1841 t298 = t84 + t95 + t109 + t133*t134 + t146*t151 - t109*t156 + &
1842 t158*(t159 + t163) + t176*t177 + t182*t112 + t200*t151 + &
1843 t209*t210 + t233*t234 + t248*t249 + t273*t279 + t292*t296
1845 e_0 = e_0 + (-t80*t299)*sx
1846 IF (order >= 1)
THEN
1852 t308 = 0.2e1_dp/0.3e1_dp*t302*t306
1854 t310 = 0.1e1_dp/t309
1857 t314 = 2._dp*t11*t312
1868 t334 = -0.2e1_dp/0.3e1_dp*t316*t317 - (2._dp*t17*t321) - 0.4e1_dp &
1869 /0.3e1_dp*t325*t327 - (4._dp*t25*t331)
1875 t340 = 0.1e1_dp/t339
1881 t353 = 0.1e1_dp/t28/t12
1883 t361 = t60/t61/rho*t63
1884 t364 = -0.4e1_dp/0.3e1_dp*t341*t327 - (4._dp*t36*t331) - 0.5e1_dp &
1885 /0.3e1_dp*t347*t349 - (5._dp*t42*t355) - (8._dp*t55*t361)
1890 t372 = -t308 - t314 + t337 - t367 - 0.2e1_dp/0.3e1_dp*t73*t369
1891 dqrho = f94*t372*t77
1899 t387 = 2._dp*t379*t19 + 4._dp*t384*t32
1907 t403 = 4._dp*t392*t32 + 5._dp*t396*t49 + 6._dp*t400*t65
1910 t407 = 2._dp*t375*t70 + t11*t389 - t338*t405
1911 dqndrho = f94*t407*t77
1919 t433 = -0.2e1_dp/0.3e1_dp*t423*t317 - (2._dp*t97*t321) - 0.4e1_dp &
1920 /0.3e1_dp*t428*t327 - (4._dp*t100*t331)
1922 t436 = -0.2e1_dp/0.3e1_dp*t302*t417 - (2._dp*t11*t420) + (t11 &
1926 t442 = -t308 - t314 + t337 - t367
1928 t447 = 0.1e1_dp/t117/t116
1930 t452 = -t308 - t314 + t337 - t367 - 0.2e1_dp/0.3e1_dp*t72*t44*t6
1937 t467 = t464*t68 - t85*t365
1939 t470 = -0.2e1_dp/0.3e1_dp*t302*t458 - (2._dp*t11*t461) + (t11 &
1944 t480 = 0.1e1_dp/t128/t127
1948 t487 = (-t136*t436*t93*t118 + (2._dp*t440*t443) + 0.5e1_dp/ &
1949 0.2e1_dp*(t440)*(t454) - t140*t470*t93*t129 + (2._dp &
1950 *t474*t476) + 0.3e1_dp/0.2e1_dp*(t474)*(t483))*t145
1953 t496 = t166/t167/t160
1954 t500 = dexerrho(q, dqrho)
1955 t503 = (-t158*t496*t372/0.2e1_dp - t172*t500)*alpha1
1961 t513 = 0.1e1_dp/t512
1963 t516 = t155*t44*t442
1965 t522 = 0.1e1_dp/t253/t252
1968 t530 = f2732/t258/t257
1970 t535 = 0.1e1_dp/t215/t214
1972 t541 = 0.1e1_dp/t190/t75
1974 t549 = (t166*(-0.7e1_dp/0.2e1_dp*t251*t524*t372 + 0.5e1_dp/0.2e1_dp &
1975 *t530*t531 - 0.3e1_dp/0.2e1_dp*t261*t536*t372 + t243*t542 &
1976 /0.2e1_dp) + t270*t500)*alpha7
1981 t561 = 0.1e1_dp/t220
1982 t565 = 0.1e1_dp/t256
1985 t574 = dexeirho(q, dqrho)
1986 t577 = (-4._dp*t281*t561*t372 + 3._dp*t566*t372 - 2._dp*t206*t569 &
1987 + t243*t238*t372 + t289*t574)*alpha8
1988 t579 = -t133*t413/0.3e1_dp + t487*t151 - 0.4e1_dp/0.3e1_dp*t489* &
1989 t491 + t503*t177 + 0.5e1_dp/0.3e1_dp*t505*t507 + t510*t94 + (3._dp &
1990 *t514*t516) - t146*t519 + t549*t279 - (2._dp*t91*t552) &
1991 - t81*t93*t442 - t200*t519 - t559*t156 + t577*t296 &
1999 t595 = 0.1e1_dp/t121/t113
2006 t612 = (-t110*t436*t83*t118 + t583*t585 + 0.5e1_dp/0.2e1_dp*t583 &
2007 *t588 + t81*t591*t442 + t81*t596*t452/0.2e1_dp - t125 &
2008 *t470*t83*t129 + t603*t605 + 0.3e1_dp/0.2e1_dp*t603*t608)* &
2011 t620 = (t239*t372 - 2._dp*t158*t615 + t206*t574)*alpha4
2014 t628 = t372*t161 - t626*t372
2022 t650 = (-3._dp*t638*t372 + 2._dp*t641*t372 - t206*t644*t372 - t243 &
2025 t656 = (-t158*t652 - f98*t574)*alpha2
2030 t670 = 0.1e1_dp/t221/t220
2032 t679 = (t166*(-t206*t542/0.2e1_dp + 0.3e1_dp/0.2e1_dp*t665*t213 &
2033 *t372 - 0.5e1_dp/0.2e1_dp*t218*t671*t372) - t230*t500)*alpha5
2035 t685 = t56*r3*t58*t5*t309
2036 t687 = 0.1e1_dp/t9/t685
2040 t697 = 0.1e1_dp/t8/t685
2044 t709 = 0.1e1_dp/t187/t186
2047 t723 = (t166*(-0.3e1_dp/0.2e1_dp*t184*t710*t372 + t714*t372/ &
2048 0.2e1_dp) + f2716*t500*t196)*alpha3*t145
2049 t725 = t612*t134 + t620*t210 - (3._dp*t106*t622) + t158*(t574 &
2050 + t629*t160) - 0.5e1_dp/0.3e1_dp*t633*t635 + t650*t249 + &
2051 t656*t112 + 0.5e1_dp/0.2e1_dp*t659*t660 + t679*t234 - 0.8e1_dp/ &
2052 0.3e1_dp*t681*t689 - (2._dp*t248*t692) - 0.7e1_dp/0.3e1_dp*t695 &
2053 *t699 - t702*t413/0.3e1_dp - 0.2e1_dp/0.3e1_dp*t705*t369 + t723 &
2055 t727 = (t579 + t725)*clda
2056 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t409*t299 - t80*t727)*sx
2058 t736 = t733*t68 - t85*t404
2060 t739 = 2._dp*t375*t88 + t11*t737
2067 t755 = 2._dp*t748*t19 + 4._dp*t752*t32
2069 t758 = 2._dp*t375*t103 + t11*t756
2079 t788 = (-t110*t758*t83*t118 + t583*t767 + 0.5e1_dp/0.2e1_dp*t583 &
2080 *t770 + t81*t591*t407 + t81*t596*t407/0.2e1_dp - t125 &
2081 *t739*t83*t129 + t603*t781 + 0.3e1_dp/0.2e1_dp*t603*t784)* &
2087 t809 = (-t136*t758*t93*t118 + (2._dp*t440*t793) + 0.5e1_dp/ &
2088 0.2e1_dp*(t440)*(t796) - t140*t739*t93*t129 + (2._dp &
2089 *t474*t802) + 0.3e1_dp/0.2e1_dp*(t474)*(t805))*t145
2090 t813 = t155*t44*t407
2092 t819 = dexeindrho(q, dqndrho)
2093 t822 = t407*t161 - t626*t407
2095 t830 = dexerndrho(q, dqndrho)
2096 t833 = (-t158*t496*t407/0.2e1_dp - t172*t830)*alpha1
2097 t839 = (-t158*t204*t407 - f98*t819)*alpha2
2098 t852 = (t166*(-0.3e1_dp/0.2e1_dp*t184*t710*t407 + t714*t407/ &
2099 0.2e1_dp) + f2716*t830*t196)*alpha3*t145
2100 t860 = (t239*t407 - 2._dp*t158*t236*t407 + t206*t819)*alpha4
2102 t875 = (t166*(-t206*t862/0.2e1_dp + 0.3e1_dp/0.2e1_dp*t665*t213 &
2103 *t407 - 0.5e1_dp/0.2e1_dp*t218*t671*t407) - t230*t830)*alpha5
2104 t886 = (-3._dp*t638*t407 + 2._dp*t641*t407 - t206*t644*t407 - t243 &
2106 t903 = (t166*(-0.7e1_dp/0.2e1_dp*t251*t524*t407 + 0.5e1_dp/0.2e1_dp &
2107 *t530*t256*t407 - 0.3e1_dp/0.2e1_dp*t261*t536*t407 + t243 &
2108 *t862/0.2e1_dp) + t270*t830)*alpha7
2109 t917 = (-4._dp*t281*t561*t407 + 3._dp*t566*t407 - 2._dp*t206*t284 &
2110 *t407 + t243*t238*t407 + t289*t819)*alpha8
2111 t919 = -t81*t93*t407 + t740*t94 - (2._dp*t91*t742) + t760 &
2112 - (3._dp*t106*t761) + t788*t134 + t809*t151 - t760*t156 &
2113 + (3._dp*t514*t813) + 0.5e1_dp/0.2e1_dp*t659*t816 + t158*(t819 &
2114 + t823*t160) + t833*t177 + t839*t112 + t852*t151 + t860 &
2115 *t210 + t875*t234 + t886*t249 + t903*t279 + t917*t296
2117 e_ndrho = e_ndrho + (-t80*t920)*sx
2120 END SUBROUTINE xwpbe_lda_calc_2
2140 SUBROUTINE xwpbe_lda_calc_3(e_0, e_rho, e_ndrho, rho, ndrho, omega, sscale, sx, order)
2141 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
2142 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, omega, sscale, sx
2143 INTEGER,
INTENT(IN) :: order
2145 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t102, t104, t105, t108, t109, t11, t110, t111, &
2146 t113, t115, t116, t117, t118, t119, t12, t120, t121, t123, t124, t125, t126, t127, t128, &
2147 t129, t13, t131, t132, t133, t136, t14, t140, t141, t142, t144, t145, t147, t148, t149, &
2148 t15, t150, t151, t152, t154, t155, t156, t157, t158, t159, t16, t162, t163, t166, t167, &
2149 t168, t169, t17, t170, t174, t176, t177, t18, t180, t181, t185, t186, t189, t19, t190, &
2150 t192, t193, t194, t195, t197, t198, t199, t2, t200, t202, t206, t208, t209, t21, t210, &
2151 t212, t213, t215, t216, t217, t218, t219, t22, t221, t222, t223
2152 REAL(kind=
dp) :: t224, t227, t228, t23, t231, t232, t234, t235, t236, t237, t238, t24, t242, &
2153 t245, t246, t247, t248, t249, t25, t250, t251, t252, t258, t259, t260, t261, t262, t266, &
2154 t268, t27, t274, t277, t278, t279, t28, t280, t285, t287, t288, t29, t291, t292, t295, &
2155 t296, t297, t3, t300, t301, t302, t304, t305, t308, t309, t31, t313, t316, t317, t318, &
2156 t32, t320, t322, t325, t328, t329, t332, t335, t338, t339, t34, t341, t342, t344, t345, &
2157 t35, t352, t359, t36, t361, t364, t365, t368, t369, t370, t373, t374, t375, t376, t377, &
2158 t379, t38, t380, t381, t383, t384, t388, t39, t391, t395, t396
2159 REAL(kind=
dp) :: t397, t398, t399, t4, t400, t401, t403, t404, t405, t406, t408, t41, t416, &
2160 t417, t418, t419, t42, t420, t422, t423, t424, t428, t429, t433, t435, t437, t438, t44, &
2161 t441, t442, t443, t444, t445, t451, t452, t453, t456, t457, t46, t461, t462, t463, t466, &
2162 t470, t471, t478, t479, t48, t480, t483, t484, t485, t486, t49, t490, t493, t499, t5, &
2163 t500, t501, t504, t505, t511, t512, t513, t516, t517, t521, t523, t526, t528, t531, t532, &
2164 t533, t534, t537, t538, t539, t54, t542, t544, t545, t546, t548, t549, t55, t550, t554, &
2165 t555, t56, t561, t564, t565, t567, t568, t570, t58, t584, t586
2166 REAL(kind=
dp) :: t589, t590, t592, t593, t595, t596, t599, t6, t60, t603, t604, t607, t608, &
2167 t61, t610, t611, t612, t616, t617, t621, t623, t626, t627, t628, t629, t63, t635, t637, &
2168 t638, t649, t65, t651, t652, t656, t661, t664, t67, t670, t673, t677, t68, t681, t684, &
2169 t687, t69, t690, t691, t695, t696, t7, t70, t71, t72, t73, t74, t75, t77, t78, t8, t80, &
2170 t81, t82, t83, t84, t85, t87, t88, t9, t90, t91, t92, t93, t94, t95, t96, t97, t99
2179 t8 = t7**(0.1e1_dp/0.3e1_dp)
2196 t27 = 0.1e1_dp/t8/t7
2201 t34 = t17*t19 + t25*t32
2206 t41 = 0.1e1_dp/t23/r2
2208 t44 = 0.1e1_dp/t9/t7
2209 t46 = 0.1e1_dp/t28/rho
2212 t54 = 0.1e1_dp/t23/t2
2216 t60 = 0.1e1_dp/t56/t58
2220 t67 = r1 + t36*t32 + t42*t49 + t55*t65
2231 t78 = rho**(0.1e1_dp/0.3e1_dp)
2252 t108 = t97*(r15*e + t99*t90*t82 + t102*t92 + t104*t105)
2264 t123 = exp(t118*t121)
2274 t136 = erfc(t127*t128*t129*t133)
2275 t140 = 0.1e1_dp/f1516
2276 t141 = (t96 + t108*t113 - t96*t124*t136)*t140
2279 t145 = t142*t111*t144
2280 t147 = -t141*t145 + r1
2282 t149 = 0.1e1_dp/t105
2286 t154 = t71 + dd + t72*t10
2291 t159 = 0.1e1_dp/t158
2293 t163 = 0.1e1_dp/t162
2298 t170 = 0.1e1_dp/t169
2299 t174 = (-t151*t152*t159 - t81*t83*t163 - t166*t167*t170) &
2306 t186 = (-t176*t177*t159 - t180*t181*t170)*t185
2307 t189 = 0.1e1_dp/r3/t5
2315 t199 = t71 + dd + t74
2316 t200 = 0.1e1_dp/t199
2317 t202 = log(t75*t200)
2318 t206 = (t84 + t95 + t150 + t174*t128 + t186*t190 - t150*t195 &
2319 + t197*(t198 + t202))*clda
2320 e_0 = e_0 + (-t80*t206)*sx
2321 IF (order >= 1)
THEN
2327 t215 = 0.2e1_dp/0.3e1_dp*t209*t213
2329 t217 = 0.1e1_dp/t216
2332 t221 = 2._dp*t11*t219
2340 t234 = 0.1e1_dp/t8/t232
2346 t245 = -0.2e1_dp/0.3e1_dp*t223*t224 - (2._dp*t17*t228) - 0.4e1_dp &
2347 /0.3e1_dp*t236*t238 - (4._dp*t25*t242)
2353 t251 = 0.1e1_dp/t250
2355 t258 = 0.1e1_dp/t9/t232
2360 t266 = 0.1e1_dp/t28/t12
2362 t274 = t60/t61/rho*t63
2363 t277 = -0.4e1_dp/0.3e1_dp*t252*t238 - (4._dp*t36*t242) - 0.5e1_dp &
2364 /0.3e1_dp*t260*t262 - (5._dp*t42*t268) - (8._dp*t55*t274)
2368 t285 = -t215 - t221 + t248 - t280 - 0.2e1_dp/0.3e1_dp*t73*t44*r3 &
2370 dqrho = f94*t285*t77
2378 t300 = 2._dp*t292*t19 + 4._dp*t297*t32
2386 t316 = 4._dp*t305*t32 + 5._dp*t309*t49 + 6._dp*t313*t65
2389 t320 = 2._dp*t288*t70 + t11*t302 - t249*t318
2390 dqndrho = f94*t320*t77
2392 t325 = -t215 - t221 + t248 - t280
2397 t338 = t335*t68 - t85*t278
2399 t341 = -0.2e1_dp/0.3e1_dp*t209*t329 - (2._dp*t11*t332) + (t11 &
2405 t359 = t97*(t99*t341*t82 + t99*t90*t325 + 2._dp*t102*t352 &
2406 + 3._dp*t104*t92*t325)
2408 t364 = t109/t110/t361
2423 t388 = t119*t218*t77
2424 t391 = t370*t121 - t374*t377 - 0.2e1_dp/0.3e1_dp*t380*t384 - (2._dp &
2427 t396 = 0.1e1_dp/t395
2433 t403 = exp(-t400*t401)
2438 t416 = t125*t126*t128
2439 t417 = 0.1e1_dp/t132
2443 t422 = t418 - t419*t420
2446 t428 = t403*(-t405*t406*t408/0.3e1_dp - t127*t128*t13*t133 &
2447 + t416*t424/0.2e1_dp)
2449 t433 = (t359*t113 - 0.7e1_dp/0.2e1_dp*t108*t365 - (t368*t391 &
2450 *t123*t136) + (2._dp*t368*t429))*t140
2452 t437 = t110*t92*t144
2454 t441 = -t433*t145 - 0.7e1_dp/0.2e1_dp*t435*t438
2457 t444 = 0.1e1_dp/t361
2462 t456 = 0.1e1_dp/t158/t157
2464 t461 = -t215 - t221 + t248 - t280 - 0.2e1_dp/0.3e1_dp*t72*t44*t6
2468 t470 = 0.1e1_dp/t162/t154
2473 t483 = 0.1e1_dp/t169/t168
2477 t490 = (-t151*t441*t83*t159 + t451*t453 + 0.5e1_dp/0.2e1_dp*t451 &
2478 *t463 + t81*t466*t325 + t81*t471*t461/0.2e1_dp - t166 &
2479 *t341*t83*t170 + t478*t480 + 0.3e1_dp/0.2e1_dp*t478*t486)* &
2492 t521 = (-t176*t441*t93*t159 + (2._dp*t499*t501) + 0.5e1_dp/ &
2493 0.2e1_dp*(t499)*(t505) - t180*t341*t93*t170 + (2._dp &
2494 *t511*t513) + 0.3e1_dp/0.2e1_dp*(t511)*(t517))*t185
2497 t528 = t194*t44*t325
2505 t542 = dexeirho(q, dqrho)
2507 t545 = 0.1e1_dp/t544
2509 t548 = t285*t200 - t546*t285
2512 t554 = -t81*t93*t325 + t342*t94 - (2._dp*t91*t345) + t443 &
2513 - (3._dp*t148*t445) + t490*t128 - t174*t493/0.3e1_dp + t521 &
2514 *t190 - t186*t523 - t443*t195 + (3._dp*t526*t528) + 0.5e1_dp &
2515 /0.2e1_dp*t532*t534 + 0.5e1_dp/0.3e1_dp*t537*t539 + t197*(t542 &
2518 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t322*t206 - t80*t555)*sx
2520 t564 = t561*t68 - t85*t317
2522 t567 = 2._dp*t288*t88 + t11*t565
2525 t584 = t97*(t99*t567*t82 + t99*t90*t320 + 2._dp*t102*t82 &
2526 *t320 + 3._dp*t104*t92*t320)
2534 t599 = t590*t121 - t374*t593 + 2._dp*t596*t121
2539 t610 = t607 - t419*t608
2542 t616 = t403*(t604*t406*t132 + t416*t612/0.2e1_dp)
2544 t621 = (t584*t113 - 0.7e1_dp/0.2e1_dp*t108*t586 - (t368*t599 &
2545 *t123*t136) + (2._dp*t368*t617))*t140
2547 t626 = -t621*t145 - 0.7e1_dp/0.2e1_dp*t435*t623
2557 t656 = (-t151*t626*t83*t159 + t451*t635 + 0.5e1_dp/0.2e1_dp*t451 &
2558 *t638 + t81*t466*t320 + t81*t471*t320/0.2e1_dp - t166 &
2559 *t567*t83*t170 + t478*t649 + 0.3e1_dp/0.2e1_dp*t478*t652)* &
2565 t677 = (-t176*t626*t93*t159 + (2._dp*t499*t661) + 0.5e1_dp/ &
2566 0.2e1_dp*(t499)*(t664) - t180*t567*t93*t170 + (2._dp &
2567 *t511*t670) + 0.3e1_dp/0.2e1_dp*(t511)*(t673))*t185
2568 t681 = t194*t44*t320
2570 t687 = dexeindrho(q, dqndrho)
2571 t690 = t320*t200 - t546*t320
2573 t695 = -t81*t93*t320 + t568*t94 - (2._dp*t91*t570) + t628 &
2574 - (3._dp*t148*t629) + t656*t128 + t677*t190 - t628*t195 &
2575 + (3._dp*t526*t681) + 0.5e1_dp/0.2e1_dp*t532*t684 + t197*(t687 &
2578 e_ndrho = e_ndrho + (-t80*t696)*sx
2581 END SUBROUTINE xwpbe_lda_calc_3
2602 SUBROUTINE xwpbe_lda_calc_4(e_0, e_rho, e_ndrho, rho, ndrho, omega, sscale, sx, order)
2603 REAL(kind=
dp),
INTENT(INOUT) :: e_0, e_rho, e_ndrho
2604 REAL(kind=
dp),
INTENT(IN) :: rho, ndrho, omega, sscale, sx
2605 INTEGER,
INTENT(IN) :: order
2607 REAL(kind=
dp) :: dqndrho, dqrho, q, t1, t10, t100, t102, t103, t105, t106, t108, t109, t11, &
2608 t110, t111, t113, t114, t115, t116, t117, t118, t12, t121, t122, t125, t126, t127, t128, &
2609 t129, t13, t133, t134, t136, t137, t14, t140, t141, t145, t146, t149, t15, t151, t153, &
2610 t154, t155, t156, t158, t159, t16, t160, t161, t163, t167, t169, t17, t170, t171, t173, &
2611 t174, t176, t177, t178, t179, t18, t180, t182, t183, t184, t185, t188, t189, t19, t192, &
2612 t193, t195, t196, t197, t198, t199, t2, t203, t206, t207, t208, t209, t21, t210, t211, &
2613 t212, t213, t219, t22, t220, t221, t222, t223, t227, t229, t23
2614 REAL(kind=
dp) :: t235, t238, t239, t24, t240, t241, t246, t248, t249, t25, t252, t253, t256, &
2615 t257, t258, t261, t262, t263, t265, t266, t269, t27, t270, t274, t277, t278, t279, t28, &
2616 t281, t283, t286, t289, t29, t290, t293, t296, t299, t3, t300, t302, t303, t305, t306, &
2617 t309, t31, t310, t313, t316, t32, t321, t326, t327, t329, t330, t331, t332, t333, t334, &
2618 t34, t340, t341, t342, t345, t346, t35, t350, t351, t352, t355, t359, t36, t360, t367, &
2619 t368, t369, t372, t373, t374, t375, t379, t38, t382, t388, t389, t39, t390, t393, t394, &
2620 t4, t400, t401, t402, t405, t406, t41, t410, t412, t415, t417
2621 REAL(kind=
dp) :: t42, t420, t421, t422, t423, t426, t427, t428, t431, t433, t434, t435, &
2622 t437, t438, t439, t44, t443, t444, t450, t453, t454, t456, t457, t459, t46, t464, t465, &
2623 t468, t469, t472, t473, t475, t476, t477, t478, t48, t484, t486, t487, t49, t498, t5, &
2624 t500, t501, t505, t510, t513, t519, t522, t526, t530, t533, t536, t539, t54, t540, t544, &
2625 t545, t55, t56, t58, t6, t60, t61, t63, t65, t67, t68, t69, t7, t70, t71, t72, t73, t74, &
2626 t75, t77, t78, t8, t80, t81, t82, t83, t84, t85, t87, t88, t9, t90, t91, t92, t93, t94, &
2636 t8 = t7**(0.1e1_dp/0.3e1_dp)
2653 t27 = 0.1e1_dp/t8/t7
2658 t34 = t17*t19 + t25*t32
2663 t41 = 0.1e1_dp/t23/r2
2665 t44 = 0.1e1_dp/t9/t7
2666 t46 = 0.1e1_dp/t28/rho
2669 t54 = 0.1e1_dp/t23/t2
2673 t60 = 0.1e1_dp/t56/t58
2677 t67 = r1 + t36*t32 + t42*t49 + t55*t65
2688 t78 = rho**(0.1e1_dp/0.3e1_dp)
2707 t102 = g1 + t97*t19 + t100*t32
2709 t105 = t11*t103 + r1
2711 t108 = 0.1e1_dp/t92/t82
2715 t113 = t71 + dd + t72*t10
2720 t118 = 0.1e1_dp/t117
2722 t122 = 0.1e1_dp/t121
2727 t129 = 0.1e1_dp/t128
2728 t133 = (-t110*t111*t118 - t81*t83*t122 - t125*t126*t129) &
2736 t146 = (-t136*t137*t118 - t140*t141*t129)*t145
2737 t149 = 0.1e1_dp/r3/t5
2745 t160 = t71 + dd + t74
2746 t161 = 0.1e1_dp/t160
2747 t163 = log(t75*t161)
2748 t167 = (t84 + t95 + t109 + t133*t134 + t146*t151 - t109*t156 &
2749 + t158*(t159 + t163))*clda
2750 e_0 = e_0 + (-t80*t167)*sx
2751 IF (order >= 1)
THEN
2757 t176 = 0.2e1_dp/0.3e1_dp*t170*t174
2759 t178 = 0.1e1_dp/t177
2762 t182 = 2._dp*t11*t180
2770 t195 = 0.1e1_dp/t8/t193
2776 t206 = -0.2e1_dp/0.3e1_dp*t184*t185 - (2._dp*t17*t189) - 0.4e1_dp &
2777 /0.3e1_dp*t197*t199 - (4._dp*t25*t203)
2783 t212 = 0.1e1_dp/t211
2785 t219 = 0.1e1_dp/t9/t193
2790 t227 = 0.1e1_dp/t28/t12
2792 t235 = t60/t61/rho*t63
2793 t238 = -0.4e1_dp/0.3e1_dp*t213*t199 - (4._dp*t36*t203) - 0.5e1_dp &
2794 /0.3e1_dp*t221*t223 - (5._dp*t42*t229) - (8._dp*t55*t235)
2798 t246 = -t176 - t182 + t209 - t241 - 0.2e1_dp/0.3e1_dp*t73*t44*r3 &
2800 dqrho = f94*t246*t77
2808 t261 = 2._dp*t253*t19 + 4._dp*t258*t32
2816 t277 = 4._dp*t266*t32 + 5._dp*t270*t49 + 6._dp*t274*t65
2819 t281 = 2._dp*t249*t70 + t11*t263 - t210*t279
2820 dqndrho = f94*t281*t77
2822 t286 = -t176 - t182 + t209 - t241
2827 t299 = t296*t68 - t85*t239
2829 t302 = -0.2e1_dp/0.3e1_dp*t170*t290 - (2._dp*t11*t293) + (t11 &
2839 t326 = -0.2e1_dp/0.3e1_dp*t316*t185 - (2._dp*t97*t189) - 0.4e1_dp &
2840 /0.3e1_dp*t321*t199 - (4._dp*t100*t203)
2842 t329 = -0.2e1_dp/0.3e1_dp*t170*t310 - (2._dp*t11*t313) + (t11 &
2847 t333 = 0.1e1_dp/t332
2852 t345 = 0.1e1_dp/t117/t116
2854 t350 = -t176 - t182 + t209 - t241 - 0.2e1_dp/0.3e1_dp*t72*t44*t6
2858 t359 = 0.1e1_dp/t121/t113
2863 t372 = 0.1e1_dp/t128/t127
2867 t379 = (-t110*t329*t83*t118 + t340*t342 + 0.5e1_dp/0.2e1_dp*t340 &
2868 *t352 + t81*t355*t286 + t81*t360*t350/0.2e1_dp - t125 &
2869 *t302*t83*t129 + t367*t369 + 0.3e1_dp/0.2e1_dp*t367*t375)* &
2882 t410 = (-t136*t329*t93*t118 + (2._dp*t388*t390) + 0.5e1_dp/ &
2883 0.2e1_dp*(t388)*(t394) - t140*t302*t93*t129 + (2._dp &
2884 *t400*t402) + 0.3e1_dp/0.2e1_dp*(t400)*(t406))*t145
2887 t417 = t155*t44*t286
2895 t431 = dexeirho(q, dqrho)
2897 t434 = 0.1e1_dp/t433
2899 t437 = t246*t161 - t435*t246
2902 t443 = -t81*t93*t286 + t303*t94 - (2._dp*t91*t306) + t331 &
2903 - (3._dp*t106*t334) + t379*t134 - t133*t382/0.3e1_dp + t410 &
2904 *t151 - t146*t412 - t331*t156 + (3._dp*t415*t417) + 0.5e1_dp &
2905 /0.2e1_dp*t421*t423 + 0.5e1_dp/0.3e1_dp*t426*t428 + t158*(t431 &
2908 e_rho = e_rho + (-0.4e1_dp/0.3e1_dp*t283*t167 - t80*t444)*sx
2910 t453 = t450*t68 - t85*t278
2912 t456 = 2._dp*t249*t88 + t11*t454
2919 t472 = 2._dp*t465*t19 + 4._dp*t469*t32
2921 t475 = 2._dp*t249*t103 + t11*t473
2931 t505 = (-t110*t475*t83*t118 + t340*t484 + 0.5e1_dp/0.2e1_dp*t340 &
2932 *t487 + t81*t355*t281 + t81*t360*t281/0.2e1_dp - t125 &
2933 *t456*t83*t129 + t367*t498 + 0.3e1_dp/0.2e1_dp*t367*t501)* &
2939 t526 = (-t136*t475*t93*t118 + (2._dp*t388*t510) + 0.5e1_dp/ &
2940 0.2e1_dp*(t388)*(t513) - t140*t456*t93*t129 + (2._dp &
2941 *t400*t519) + 0.3e1_dp/0.2e1_dp*(t400)*(t522))*t145
2942 t530 = t155*t44*t281
2944 t536 = dexeindrho(q, dqndrho)
2945 t539 = t281*t161 - t435*t281
2947 t544 = -t81*t93*t281 + t457*t94 - (2._dp*t91*t459) + t477 &
2948 - (3._dp*t106*t478) + t505*t134 + t526*t151 - t477*t156 &
2949 + (3._dp*t415*t530) + 0.5e1_dp/0.2e1_dp*t421*t533 + t158*(t536 &
2952 e_ndrho = e_ndrho + (-t80*t545)*sx
2955 END SUBROUTINE xwpbe_lda_calc_4
2969 CHARACTER(LEN=*),
INTENT(OUT),
OPTIONAL :: reference, shortform
2971 INTEGER,
INTENT(out),
OPTIONAL :: max_deriv
2973 IF (
PRESENT(reference))
THEN
2974 reference =
"Jochen Heyd and Gustavo E. Scuseria, J. Chem. Phys., 120, 7274 {LSD version}"
2976 IF (
PRESENT(shortform))
THEN
2977 shortform =
"shortrange part of PBE exchange {LSD}"
2979 IF (
PRESENT(needs))
THEN
2980 needs%rho_spin = .true.
2981 needs%norm_drho_spin = .true.
2983 IF (
PRESENT(max_deriv)) max_deriv = 1
3005 INTEGER,
INTENT(IN) :: order
3008 CHARACTER(len=*),
PARAMETER :: routinen =
'xwpbe_lsd_eval'
3010 INTEGER :: handle, npoints
3011 INTEGER,
DIMENSION(2, 3) :: bo
3012 REAL(kind=
dp) :: epsilon_norm_drho, epsilon_rho, omega, &
3014 REAL(kind=
dp),
CONTIGUOUS,
DIMENSION(:, :, :), &
3015 POINTER :: dummy, e_0, e_ndrhoa, e_ndrhob, e_rhoa, &
3016 e_rhob, norm_drhoa, norm_drhob, rhoa, &
3020 CALL timeset(routinen, handle)
3028 CALL xc_rho_set_get(rho_set, rhoa=rhoa, rhob=rhob, norm_drhoa=norm_drhoa, &
3029 norm_drhob=norm_drhob, local_bounds=bo, rho_cutoff=epsilon_rho, &
3030 drho_cutoff=epsilon_norm_drho)
3031 npoints = (bo(2, 1) - bo(1, 1) + 1)*(bo(2, 2) - bo(1, 2) + 1)*(bo(2, 3) - bo(1, 3) + 1)
3042 allocate_deriv=.true.)
3044 IF (order >= 1 .OR. order == -1)
THEN
3046 allocate_deriv=.true.)
3049 allocate_deriv=.true.)
3052 allocate_deriv=.true.)
3055 allocate_deriv=.true.)
3059 cpabort(
"derivatives bigger than 1 not implemented")
3069 CALL xwpbe_lsd_calc(npoints, order, rho=rhoa, norm_drho=norm_drhoa, &
3070 e_0=e_0, e_rho=e_rhoa, e_ndrho=e_ndrhoa, &
3071 epsilon_rho=epsilon_rho, &
3072 sx=sx, sx0=sx0, omega=omega)
3073 CALL xwpbe_lsd_calc(npoints, order, rho=rhob, norm_drho=norm_drhob, &
3074 e_0=e_0, e_rho=e_rhob, e_ndrho=e_ndrhob, &
3075 epsilon_rho=epsilon_rho, &
3076 sx=sx, sx0=sx0, omega=omega)
3080 CALL timestop(handle)
3112 SUBROUTINE xwpbe_lsd_calc(npoints, order, rho, norm_drho, e_0, e_rho, e_ndrho, &
3113 epsilon_rho, sx, sx0, omega)
3115 INTEGER,
INTENT(in) :: npoints, order
3116 REAL(kind=
dp),
DIMENSION(1:npoints),
INTENT(inout) :: rho, norm_drho, e_0, e_rho, e_ndrho
3117 REAL(kind=
dp),
INTENT(in) :: epsilon_rho, sx, sx0, omega
3120 REAL(
dp) :: e_0_temp, gradient_before, &
3121 gradient_increment, my_ndrho, my_rho, &
3123 REAL(kind=
dp) :: ss, ss2, sscale, t1, t2, t3, t4, t5, t6, &
3130 my_rho = 2.0_dp*max(rho(ip), 0.0_dp)
3131 IF (my_rho > epsilon_rho)
THEN
3132 gradient_before = e_ndrho(ip)
3133 my_ndrho = 2.0_dp*max(norm_drho(ip), 0.0_dp)
3139 t3 = t2**(0.1e1_dp/0.3e1_dp)
3142 ww = 0.6933612743506347048433524e0_dp*t5
3144 t7 = 0.1e1_dp/my_rho
3146 ss = 0.3466806371753173524216762e0_dp*t6*t8
3147 IF (ss > scutoff)
THEN
3149 sscale = ((smax)*ss2 - (sconst))/(ss2*ss)
3152 IF (sx0 /= 0.0_dp)
THEN
3154 IF (ss*sscale > gcutoff)
THEN
3155 CALL xwpbe_lda_calc_0(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3156 my_ndrho, sscale, sx0, order)
3158 CALL xwpbe_lda_calc_01(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3159 my_ndrho, sscale, sx0, order)
3162 e_0(ip) = e_0(ip) + 0.5_dp*e_0_temp
3165 IF (sx /= 0.0_dp)
THEN
3166 IF (omega == 0.0_dp)
THEN
3167 IF (ss*sscale > gcutoff)
THEN
3168 CALL xwpbe_lda_calc_0(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3169 my_ndrho, sscale, sx, order)
3171 CALL xwpbe_lda_calc_01(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3172 my_ndrho, sscale, sx, order)
3174 ELSE IF (ww < wcutoff .AND. ss*sscale > gcutoff)
THEN
3175 CALL xwpbe_lda_calc_1(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3176 my_ndrho, omega, sscale, sx, order)
3177 ELSE IF (ww < wcutoff .AND. ss*sscale <= gcutoff)
THEN
3178 CALL xwpbe_lda_calc_2(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3179 my_ndrho, omega, sscale, sx, order)
3180 ELSE IF (ww >= wcutoff .AND. ss*sscale > gcutoff)
THEN
3181 CALL xwpbe_lda_calc_3(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3182 my_ndrho, omega, sscale, sx, order)
3184 CALL xwpbe_lda_calc_4(e_0_temp, e_rho(ip), e_ndrho(ip), my_rho, &
3185 my_ndrho, omega, sscale, sx, order)
3189 e_0(ip) = e_0(ip) + 0.5_dp*e_0_temp
3190 IF (order >= 1 .AND. ss > scutoff)
THEN
3193 pullback = (-smax*ss2 + 3.0_dp*sconst)/(smax*ss2 - sconst)
3194 gradient_increment = e_ndrho(ip) - gradient_before
3195 e_rho(ip) = e_rho(ip) - gradient_increment*(4.0_dp*my_ndrho/(3.0_dp*my_rho))*pullback
3196 e_ndrho(ip) = gradient_before + gradient_increment*(1.0_dp + pullback)
3203 END SUBROUTINE xwpbe_lsd_calc
3223 FUNCTION exei(Q, exp_q)
3224 REAL(
dp),
INTENT(IN) :: q
3225 REAL(
dp),
INTENT(IN),
OPTIONAL :: exp_q
3229 IF (q < expcutoff)
THEN
3231 IF (
PRESENT(exp_q))
THEN
3232 exei = exp_q*expint(1, q, 1.0_dp/exp_q)
3234 exei = exp(q)*expint(1, q)
3238 exei = (1._dp/q)*(q*q + exei1*q + exei2)/(q*q + exei3*q + exei4)
3248 REAL(
dp),
INTENT(IN) :: q
3254 IF (q < expcutoff)
THEN
3256 exer =
pi*exp(q)*erfc(sqrt(q))
3261 exer =
pi*(1.0_dp/sqrt(q*
pi) - 1.0_dp/(2.0_dp*sqrt(
pi*q3)) + 3.0_dp/(4.0_dp*(sqrt(
pi*q5))))
3272 FUNCTION dexeirho(Q, dQrho, exei_q)
3273 REAL(
dp),
INTENT(IN) :: q, dqrho
3274 REAL(
dp),
INTENT(IN),
OPTIONAL :: exei_q
3275 REAL(
dp) :: dexeirho
3277 IF (
PRESENT(exei_q))
THEN
3278 dexeirho = dqrho*(exei_q - 1.0_dp/q)
3280 dexeirho = dqrho*(exei(q) - 1.0_dp/q)
3282 END FUNCTION dexeirho
3291 FUNCTION dexeindrho(Q, dQndrho, exei_q)
3292 REAL(
dp),
INTENT(IN) :: q, dqndrho
3293 REAL(
dp),
INTENT(IN),
OPTIONAL :: exei_q
3294 REAL(
dp) :: dexeindrho
3296 IF (
PRESENT(exei_q))
THEN
3297 dexeindrho = dqndrho*(exei_q - 1.0_dp/q)
3299 dexeindrho = dqndrho*(exei(q) - 1.0_dp/q)
3301 END FUNCTION dexeindrho
3309 FUNCTION dexerrho(Q, dQrho)
3310 REAL(
dp),
INTENT(IN) :: q, dqrho
3311 REAL(
dp) :: dexerrho
3313 dexerrho = dqrho*exer(q) - dqrho*
rootpi/sqrt(q)
3314 END FUNCTION dexerrho
3322 FUNCTION dexerndrho(Q, dQndrho)
3323 REAL(
dp),
INTENT(IN) :: q, dqndrho
3324 REAL(
dp) :: dexerndrho
3326 dexerndrho = dqndrho*exer(q) - dqndrho*
rootpi/sqrt(q)
3327 END FUNCTION dexerndrho
3336 FUNCTION d2exeirhorho(Q, dQrho, d2Qrhorho)
3337 REAL(
dp),
INTENT(IN) :: q, dqrho, d2qrhorho
3338 REAL(
dp) :: d2exeirhorho
3340 d2exeirhorho = exei(q)*(d2qrhorho + dqrho*dqrho) + &
3341 1.0_dp/(q*q)*(-q*dqrho*dqrho - q*d2qrhorho + dqrho*dqrho)
3342 END FUNCTION d2exeirhorho
3351 FUNCTION d2exerrhorho(Q, dQrho, d2Qrhorho)
3352 REAL(
dp),
INTENT(IN) :: q, dqrho, d2qrhorho
3353 REAL(
dp) :: d2exerrhorho
3355 REAL(
dp) :: pi12, q12
3360 d2exerrhorho = exer(q)*(d2qrhorho + dqrho*dqrho) - dqrho*dqrho/(pi12*q12) + &
3361 0.5_dp*dqrho*dqrho/(pi12*q*q12) - d2qrhorho/(pi12*q12)
3362 END FUNCTION d2exerrhorho
3372 FUNCTION d2exeirhondrho(Q, dQrho, dQndrho, d2Qrhondrho)
3373 REAL(
dp),
INTENT(IN) :: q, dqrho, dqndrho, d2qrhondrho
3374 REAL(
dp) :: d2exeirhondrho
3376 d2exeirhondrho = exei(q)*(d2qrhondrho + dqrho*dqndrho) - &
3377 1.0_dp/q*(dqrho*dqndrho + d2qrhondrho) + 1.0_dp/(q*q)*dqrho*dqndrho
3378 END FUNCTION d2exeirhondrho
3388 FUNCTION d2exerrhondrho(Q, dQrho, dQndrho, d2Qrhondrho)
3389 REAL(
dp),
INTENT(IN) :: q, dqrho, dqndrho, d2qrhondrho
3390 REAL(
dp) :: d2exerrhondrho
3392 REAL(
dp) :: pi12, q12
3397 d2exerrhondrho = exer(q)*(d2qrhondrho + dqrho*dqndrho) - 1.0_dp/(pi12*q12)*dqrho*dqndrho &
3398 + 0.5_dp/(pi12*q12*q)*dqrho*dqndrho - 1.0_dp/(pi12*q12)*d2qrhondrho
3399 END FUNCTION d2exerrhondrho
3408 FUNCTION d2exeindrhondrho(Q, dQndrho, d2Qndrhondrho)
3409 REAL(
dp),
INTENT(IN) :: q, dqndrho, d2qndrhondrho
3410 REAL(
dp) :: d2exeindrhondrho
3412 d2exeindrhondrho = exei(q)*(d2qndrhondrho + dqndrho*dqndrho) + &
3413 1.0_dp/(q*q)*(-q*dqndrho*dqndrho - q*d2qndrhondrho + dqndrho*dqndrho)
3414 END FUNCTION d2exeindrhondrho
3423 FUNCTION d2exerndrhondrho(Q, dQndrho, d2Qndrhondrho)
3424 REAL(
dp),
INTENT(IN) :: q, dqndrho, d2qndrhondrho
3425 REAL(
dp) :: d2exerndrhondrho
3427 REAL(
dp) :: pi12, q12
3432 d2exerndrhondrho = exer(q)*(d2qndrhondrho + dqndrho*dqndrho) - dqndrho*dqndrho/(pi12*q12) &
3433 + 0.5_dp*dqndrho*dqndrho/(pi12*q*q12) - d2qndrhondrho/(pi12*q12)
3434 END FUNCTION d2exerndrhondrho
3448 ELEMENTAL FUNCTION expint(n, x, exp_mx)
3449 INTEGER,
INTENT(IN) :: n
3450 REAL(
dp),
INTENT(IN) :: x
3451 REAL(
dp),
INTENT(IN),
OPTIONAL :: exp_mx
3454 INTEGER,
PARAMETER :: maxit = 100
3455 REAL(
dp),
PARAMETER :: cf_rescale_inv = 1.0e-100_dp, cf_rescale_max = 1.0e100_dp, &
3456 eps = 6.e-14_dp,
euler = 0.5772156649015328606065120_dp
3458 INTEGER :: i, ii, nm1
3459 REAL(
dp) :: a, a0, a1, a2, b, b0, b1, b2, del, fact, &
3464 IF (n < 0 .OR. x < 0.0_dp .OR. (x == 0.0_dp .AND. (n == 0 .OR. n == 1)))
THEN
3465 expint = huge(1.0_dp)
3466 ELSE IF (n == 0)
THEN
3467 IF (
PRESENT(exp_mx))
THEN
3472 ELSE IF (x == 0.0_dp)
THEN
3474 ELSE IF (x > 750.0_dp)
THEN
3476 ELSE IF (x > 1.0_dp)
THEN
3477 IF (
PRESENT(exp_mx))
THEN
3493 IF (abs(b2) > cf_rescale_max)
THEN
3494 a2 = a2*cf_rescale_inv
3495 b2 = b2*cf_rescale_inv
3496 a1 = a1*cf_rescale_inv
3497 b1 = b1*cf_rescale_inv
3499 IF (abs(a2*b1 - a1*b2) < eps*abs(a2*b1) .OR. i == maxit)
THEN
3500 expint = (a2/b2)*my_exp_mx
3512 expint = -log(x) -
euler
3518 del = -fact/(i - nm1)
3522 psi = psi + 1.0_dp/ii
3524 del = fact*(-log(x) + psi)
3526 expint = expint + del
3527 IF (abs(del) < abs(expint)*eps)
RETURN
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public heyd2004
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
real(kind=dp), parameter, public euler
real(kind=dp), parameter, public rootpi
Module with functions to handle derivative descriptors. derivative description are strings have the f...
integer, parameter, public deriv_norm_drho
integer, parameter, public deriv_norm_drhoa
integer, parameter, public deriv_rhob
integer, parameter, public deriv_rhoa
integer, parameter, public deriv_rho
integer, parameter, public deriv_norm_drhob
represent a group ofunctional derivatives
type(xc_derivative_type) function, pointer, public xc_dset_get_derivative(derivative_set, description, allocate_deriv)
returns the requested xc_derivative
Provides types for the management of the xc-functionals and their derivatives.
subroutine, public xc_derivative_get(deriv, split_desc, order, deriv_data, accept_null_data)
returns various information on the given derivative
subroutine, public xc_rho_set_get(rho_set, can_return_null, rho, drho, norm_drho, rhoa, rhob, norm_drhoa, norm_drhob, rho_1_3, rhoa_1_3, rhob_1_3, laplace_rho, laplace_rhoa, laplace_rhob, drhoa, drhob, rho_cutoff, drho_cutoff, tau_cutoff, tau, tau_a, tau_b, local_bounds)
returns the various attributes of rho_set
Calculates short range exchange part for wPBE functional and averaged PBE exchange-hole functional (o...
subroutine, public xwpbe_lda_eval(rho_set, deriv_set, order, xwpbe_params)
evaluates the screened hole averaged PBE exchange functional for lda
subroutine, public xwpbe_lsd_eval(rho_set, deriv_set, order, xwpbe_params)
evaluates the screened hole averaged PBE exchange functional for lsd
subroutine, public xwpbe_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xwpbe_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
A derivative set contains the different derivatives of a xc-functional in form of a linked list.
represent a derivative of a functional
contains a flag for each component of xc_rho_set, so that you can use it to tell which components you...
represent a density, with all the representation and data needed to perform a functional evaluation