31#include "./base/base_uses.f90"
37 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rpa_sigma_functional'
43 REAL(KIND=
dp) :: e_sigma_corr = 0.0_dp
44 REAL(kind=
dp) :: e_rpa_by_eig_val = 0.0_dp
45 INTEGER :: sigma_param = 0
48 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: sigma_eigenvalue
49 INTEGER :: dimen_ri_red = 0
66 INTEGER :: sigma_param
75 CALL cp_fm_get_info(fm_mat_q, matrix_struct=matrix_struct, nrow_global=rpa_sigma%dimen_RI_red)
77 ALLOCATE (rpa_sigma%sigma_eigenvalue(rpa_sigma%dimen_RI_red))
80 CALL cp_fm_create(rpa_sigma%mat_Q_diagonal, matrix_struct)
82 rpa_sigma%sigma_param = sigma_param
84 SELECT CASE (rpa_sigma%sigma_param)
89 cpabort(
"Unknown parameterization")
92 IF (unit_nr > 0)
WRITE (unit=unit_nr, fmt=
"(T3, A)") &
93 "SIGMA_INFO| Sigma eigenvalues parameterized with PBE0_S1 reference"
96 IF (unit_nr > 0)
WRITE (unit=unit_nr, fmt=
"(T3, A)") &
97 "SIGMA_INFO| Sigma eigenvalues parameterized with PBE0_S2 reference"
100 IF (unit_nr > 0)
WRITE (unit=unit_nr, fmt=
"(T3, A)") &
101 "SIGMA_INFO| Sigma eigenvalues parameterized with PBE_S1 reference"
104 IF (unit_nr > 0)
WRITE (unit=unit_nr, fmt=
"(T3, A)") &
105 "SIGMA_INFO| Sigma eigenvalues parameterized with PBE_S2 reference"
107 IF (unit_nr > 0)
CALL m_flush(unit_nr)
116 SUBROUTINE rpa_sigma_cleanup(rpa_sigma)
122 DEALLOCATE (rpa_sigma%sigma_eigenvalue)
124 END SUBROUTINE rpa_sigma_cleanup
141 CALL cp_fm_to_fm(fm_mat_q, rpa_sigma%mat_Q_diagonal)
144 CALL choose_eigv_solver(rpa_sigma%mat_Q_diagonal, rpa_sigma%fm_evec, rpa_sigma%sigma_eigenvalue)
147 CALL compute_e_sigma_corr_by_freq_int(rpa_sigma, wj, para_env_rpa)
159 SUBROUTINE compute_e_sigma_corr_by_freq_int(rpa_sigma, wj, para_env_RPA)
161 REAL(kind=
dp),
INTENT(IN) :: wj
165 REAL(kind=
dp) :: dedw_rpa, dedw_sigma
171 DO iaux = 1, rpa_sigma%dimen_RI_red
172 IF (rpa_sigma%sigma_eigenvalue(iaux) > 0.0_dp)
THEN
173 IF (
modulo(iaux, para_env_rpa%num_pe) /= para_env_rpa%mepos) cycle
174 dedw_rpa = dedw_rpa + log(1.0_dp + rpa_sigma%sigma_eigenvalue(iaux)) - rpa_sigma%sigma_eigenvalue(iaux)
175 IF (
modulo(iaux, para_env_rpa%num_pe) /= para_env_rpa%mepos) cycle
176 dedw_sigma = dedw_sigma - cubic_spline_integr(rpa_sigma%sigma_eigenvalue(iaux), rpa_sigma%sigma_param)
181 rpa_sigma%e_sigma_corr = rpa_sigma%e_sigma_corr + (wj*dedw_sigma/(2.0_dp*
pi*2.0_dp))
182 rpa_sigma%e_rpa_by_eig_val = rpa_sigma%e_rpa_by_eig_val + (wj*dedw_rpa/(2.0_dp*
pi*2.0_dp))
184 END SUBROUTINE compute_e_sigma_corr_by_freq_int
197 REAL(kind=
dp),
INTENT(OUT) :: e_sigma_corr
199 LOGICAL,
INTENT(IN) :: do_minimax_quad
201 IF (do_minimax_quad) rpa_sigma%e_rpa_by_eig_val = rpa_sigma%e_rpa_by_eig_val/2.0_dp
202 CALL para_env%sum(rpa_sigma%e_rpa_by_eig_val)
203 e_sigma_corr = rpa_sigma%e_sigma_corr
204 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)') &
205 'RI-RPA energy from eigenvalues of Q(w) = ', &
206 rpa_sigma%e_rpa_by_eig_val
208 CALL rpa_sigma_cleanup(rpa_sigma)
218 FUNCTION cubic_spline_integr(sigma, sigma_param)
RESULT(integral)
219 REAL(kind=
dp),
INTENT(in) :: sigma
220 INTEGER :: sigma_param
221 REAL(kind=
dp) :: integral
225 REAL(kind=
dp),
ALLOCATABLE :: coeff(:, :), x_coord(:)
227 SELECT CASE (sigma_param)
230 ALLOCATE (x_coord(n))
231 ALLOCATE (coeff(4, n))
233 coeff(1, 1) = 0.000000000000d+00
234 coeff(1, 2) = 0.000000000000d+00
235 coeff(1, 3) = -0.149500660756d-03
236 coeff(1, 4) = -0.353017276233d-02
237 coeff(1, 5) = -0.109810247734d-01
238 coeff(1, 6) = -0.231246943777d-01
239 coeff(1, 7) = -0.268999962858d-01
240 coeff(1, 8) = -0.634751994007d-03
241 coeff(1, 9) = 0.118792892470d-01
242 coeff(1, 10) = -0.473431931326d-01
243 coeff(1, 11) = -0.817589390539d-01
244 coeff(1, 12) = 0.125726011069d-01
245 coeff(1, 13) = 0.108028492092d+00
246 coeff(1, 14) = 0.193548206759d+00
247 coeff(1, 15) = 0.358395561305d-01
248 coeff(1, 16) = -0.497714974829d-01
249 coeff(1, 17) = 0.341059348835d-01
250 coeff(1, 18) = 0.341050720155d-01
251 coeff(1, 19) = 0.785549033229d-01
252 coeff(1, 20) = 0.000000000000d+00
253 coeff(1, 21) = 0.000000000000d+00
254 coeff(2, 1) = 0.000000000000d+00
255 coeff(2, 2) = 0.000000000000d+00
256 coeff(2, 3) = -0.208376539581d+01
257 coeff(2, 4) = -0.469755869285d+01
258 coeff(2, 5) = -0.565503803415d+01
259 coeff(2, 6) = -0.135502867642d+01
260 coeff(2, 7) = 0.000000000000d+00
261 coeff(2, 8) = 0.284340701746d+01
262 coeff(2, 9) = 0.000000000000d+00
263 coeff(2, 10) = -0.342695931351d+01
264 coeff(2, 11) = 0.000000000000d+00
265 coeff(2, 12) = 0.358739081268d+01
266 coeff(2, 13) = 0.203368806130d+01
267 coeff(2, 14) = 0.000000000000d+00
268 coeff(2, 15) = -0.901387663218d+00
269 coeff(2, 16) = 0.000000000000d+00
270 coeff(2, 17) = 0.000000000000d+00
271 coeff(2, 18) = 0.000000000000d+00
272 coeff(2, 19) = 0.000000000000d+00
273 coeff(2, 20) = 0.000000000000d+00
274 coeff(2, 21) = 0.000000000000d+00
275 coeff(3, 1) = -0.000000000000d+00
276 coeff(3, 2) = -0.322176662524d+05
277 coeff(3, 3) = -0.267090835643d+04
278 coeff(3, 4) = -0.373532067350d+04
279 coeff(3, 5) = -0.797121299000d+03
280 coeff(3, 6) = 0.111299540119d+03
281 coeff(3, 7) = 0.299284621116d+04
282 coeff(3, 8) = -0.319333485618d+02
283 coeff(3, 9) = -0.140910103454d+04
284 coeff(3, 10) = -0.848330431187d+01
285 coeff(3, 11) = 0.435025012278d+03
286 coeff(3, 12) = -0.700327539634d+01
287 coeff(3, 13) = 0.545486142353d+01
288 coeff(3, 14) = -0.453346282407d+02
289 coeff(3, 15) = 0.371921027910d+00
290 coeff(3, 16) = 0.464101795796d+01
291 coeff(3, 17) = -0.190069531714d-04
292 coeff(3, 18) = 0.514345336660d-01
293 coeff(3, 19) = -0.431543078188d-02
294 coeff(3, 20) = -0.000000000000d+00
295 coeff(3, 21) = 0.000000000000d+00
296 coeff(4, 1) = 0.000000000000d+00
297 coeff(4, 2) = 0.152897717268d+09
298 coeff(4, 3) = 0.902815532735d+06
299 coeff(4, 4) = 0.191760493084d+07
300 coeff(4, 5) = 0.445372471512d+06
301 coeff(4, 6) = 0.188362654331d+04
302 coeff(4, 7) = -0.383203258784d+06
303 coeff(4, 8) = -0.170027418959d+05
304 coeff(4, 9) = 0.819629330224d+05
305 coeff(4, 10) = 0.560228610945d+04
306 coeff(4, 11) = -0.108203002413d+05
307 coeff(4, 12) = -0.363378668069d+03
308 coeff(4, 13) = -0.260332257619d+03
309 coeff(4, 14) = 0.291068208088d+03
310 coeff(4, 15) = 0.122322834276d+02
311 coeff(4, 16) = -0.132875656470d+02
312 coeff(4, 17) = 0.343356030115d-04
313 coeff(4, 18) = -0.212958640167d-01
314 coeff(4, 19) = 0.389311916174d-03
315 coeff(4, 20) = 0.000000000000d+00
316 coeff(4, 21) = 0.000000000000d+00
317 x_coord(1) = 0.000000000000d+00
318 x_coord(2) = 0.100000000000d-04
319 x_coord(3) = 0.100000000000d-03
320 x_coord(4) = 0.100000000000d-02
321 x_coord(5) = 0.215443469000d-02
322 x_coord(6) = 0.464158883000d-02
323 x_coord(7) = 0.100000000000d-01
324 x_coord(8) = 0.146779926762d-01
325 x_coord(9) = 0.215443469003d-01
326 x_coord(10) = 0.316227766017d-01
327 x_coord(11) = 0.464158883361d-01
328 x_coord(12) = 0.681292069058d-01
329 x_coord(13) = 0.100000000000d+00
330 x_coord(14) = 0.158489319246d+00
331 x_coord(15) = 0.251188643151d+00
332 x_coord(16) = 0.398107170553d+00
333 x_coord(17) = 0.630957344480d+00
334 x_coord(18) = 0.100000000000d+01
335 x_coord(19) = 0.261015721568d+01
336 x_coord(20) = 0.100000000000d+02
337 x_coord(21) = 0.215443469000d+02
341 ALLOCATE (x_coord(n))
342 ALLOCATE (coeff(4, n))
344 coeff(1, 1) = 0.000000000000d+00
345 coeff(1, 2) = 0.000000000000d+00
346 coeff(1, 3) = -0.431405252048d-04
347 coeff(1, 4) = -0.182874853131d-02
348 coeff(1, 5) = -0.852003132762d-02
349 coeff(1, 6) = -0.218177403992d-01
350 coeff(1, 7) = -0.305777654735d-01
351 coeff(1, 8) = -0.870882903969d-02
352 coeff(1, 9) = 0.137878988102d-01
353 coeff(1, 10) = -0.284352007440d-01
354 coeff(1, 11) = -0.798812002431d-01
355 coeff(1, 12) = -0.334010771574d-02
356 coeff(1, 13) = 0.934182748715d-01
357 coeff(1, 14) = 0.204960802253d+00
358 coeff(1, 15) = 0.213204380281d-01
359 coeff(1, 16) = -0.401220283037d-01
360 coeff(1, 17) = 0.321629738336d-01
361 coeff(1, 18) = 0.321618301891d-01
362 coeff(1, 19) = 0.808763912948d-01
363 coeff(1, 20) = 0.000000000000d+00
364 coeff(1, 21) = 0.000000000000d+00
365 coeff(2, 1) = 0.000000000000d+00
366 coeff(2, 2) = 0.000000000000d+00
367 coeff(2, 3) = -0.661870777583d+00
368 coeff(2, 4) = -0.289752912590d+01
369 coeff(2, 5) = -0.558979946652d+01
370 coeff(2, 6) = -0.267765704540d+01
371 coeff(2, 7) = 0.000000000000d+00
372 coeff(2, 8) = 0.389592612611d+01
373 coeff(2, 9) = 0.000000000000d+00
374 coeff(2, 10) = -0.382296397421d+01
375 coeff(2, 11) = 0.000000000000d+00
376 coeff(2, 12) = 0.327772498106d+01
377 coeff(2, 13) = 0.239633724310d+01
378 coeff(2, 14) = 0.000000000000d+00
379 coeff(2, 15) = -0.726304793204d+00
380 coeff(2, 16) = 0.000000000000d+00
381 coeff(2, 17) = 0.000000000000d+00
382 coeff(2, 18) = 0.000000000000d+00
383 coeff(2, 19) = 0.000000000000d+00
384 coeff(2, 20) = 0.000000000000d+00
385 coeff(2, 21) = 0.000000000000d+00
386 coeff(3, 1) = -0.000000000000d+00
387 coeff(3, 2) = -0.862385254713d+04
388 coeff(3, 3) = -0.192306222883d+04
389 coeff(3, 4) = -0.520047462362d+04
390 coeff(3, 5) = -0.877473657666d+03
391 coeff(3, 6) = 0.841408344046d+02
392 coeff(3, 7) = 0.216516760964d+04
393 coeff(3, 8) = 0.296702212913d+03
394 coeff(3, 9) = -0.867733655494d+03
395 coeff(3, 10) = -0.188410055380d+03
396 coeff(3, 11) = 0.336084151111d+03
397 coeff(3, 12) = 0.489746728744d+01
398 coeff(3, 13) = 0.158746877181d+02
399 coeff(3, 14) = -0.562764882273d+02
400 coeff(3, 15) = 0.134759277149d+01
401 coeff(3, 16) = 0.399959778866d+01
402 coeff(3, 17) = -0.251917983154d-04
403 coeff(3, 18) = 0.563694092760d-01
404 coeff(3, 19) = -0.444296223097d-02
405 coeff(3, 20) = -0.000000000000d+00
406 coeff(3, 21) = 0.000000000000d+00
407 coeff(4, 1) = 0.000000000000d+00
408 coeff(4, 2) = 0.366429086790d+08
409 coeff(4, 3) = 0.504466528222d+06
410 coeff(4, 4) = 0.232980923705d+07
411 coeff(4, 5) = 0.392124287301d+06
412 coeff(4, 6) = 0.206173887726d+05
413 coeff(4, 7) = -0.249217659838d+06
414 coeff(4, 8) = -0.563519876566d+05
415 coeff(4, 9) = 0.448530826095d+05
416 coeff(4, 10) = 0.143140667434d+05
417 coeff(4, 11) = -0.800144415404d+04
418 coeff(4, 12) = -0.391685311241d+03
419 coeff(4, 13) = -0.414433988077d+03
420 coeff(4, 14) = 0.376550449117d+03
421 coeff(4, 15) = 0.510124747789d+01
422 coeff(4, 16) = -0.114511339236d+02
423 coeff(4, 17) = 0.455083767664d-04
424 coeff(4, 18) = -0.233390912502d-01
425 coeff(4, 19) = 0.400817027790d-03
426 coeff(4, 20) = 0.000000000000d+00
427 coeff(4, 21) = 0.000000000000d+00
428 x_coord(1) = 0.000000000000d+00
429 x_coord(2) = 0.100000000000d-04
430 x_coord(3) = 0.100000000000d-03
431 x_coord(4) = 0.100000000000d-02
432 x_coord(5) = 0.215443469000d-02
433 x_coord(6) = 0.464158883000d-02
434 x_coord(7) = 0.100000000000d-01
435 x_coord(8) = 0.146779926762d-01
436 x_coord(9) = 0.215443469003d-01
437 x_coord(10) = 0.316227766017d-01
438 x_coord(11) = 0.464158883361d-01
439 x_coord(12) = 0.681292069058d-01
440 x_coord(13) = 0.100000000000d+00
441 x_coord(14) = 0.158489319246d+00
442 x_coord(15) = 0.251188643151d+00
443 x_coord(16) = 0.398107170553d+00
444 x_coord(17) = 0.630957344480d+00
445 x_coord(18) = 0.100000000000d+01
446 x_coord(19) = 0.261015721568d+01
447 x_coord(20) = 0.100000000000d+02
448 x_coord(21) = 0.215443469000d+02
452 ALLOCATE (x_coord(n))
453 ALLOCATE (coeff(4, n))
455 coeff(1, 1) = 0.000000000000d+00
456 coeff(1, 2) = 0.000000000000d+00
457 coeff(1, 3) = -0.493740326815d-04
458 coeff(1, 4) = -0.136110637329d-02
459 coeff(1, 5) = -0.506905111755d-02
460 coeff(1, 6) = -0.127411222930d-01
461 coeff(1, 7) = -0.220144968504d-01
462 coeff(1, 8) = -0.239939034695d-01
463 coeff(1, 9) = -0.436386416290d-01
464 coeff(1, 10) = -0.117890214262d+00
465 coeff(1, 11) = -0.141123921668d+00
466 coeff(1, 12) = 0.865524876740d-01
467 coeff(1, 13) = 0.179390274565d+00
468 coeff(1, 14) = 0.269368658116d+00
469 coeff(1, 15) = 0.785040456996d-01
470 coeff(1, 16) = 0.490248637276d-01
471 coeff(1, 17) = -0.111571911794d+00
472 coeff(1, 18) = -0.197712184164d-01
473 coeff(1, 19) = -0.197716870218d-01
474 coeff(1, 20) = -0.372253617253d-01
475 coeff(1, 21) = 0.000000000000d+00
476 coeff(1, 22) = 0.000000000000d+00
477 coeff(2, 1) = 0.000000000000d+00
478 coeff(2, 2) = 0.000000000000d+00
479 coeff(2, 3) = -0.709484897949d+00
480 coeff(2, 4) = -0.197447407686d+01
481 coeff(2, 5) = -0.315478745349d+01
482 coeff(2, 6) = -0.229603163128d+01
483 coeff(2, 7) = -0.670801534786d+00
484 coeff(2, 8) = -0.704199644986d+00
485 coeff(2, 9) = -0.400987325224d+01
486 coeff(2, 10) = -0.269982990241d+01
487 coeff(2, 11) = 0.000000000000d+00
488 coeff(2, 12) = 0.472814414167d+01
489 coeff(2, 13) = 0.207638470052d+01
490 coeff(2, 14) = 0.000000000000d+00
491 coeff(2, 15) = -0.389846972557d+00
492 coeff(2, 16) = -0.298496119087d+00
493 coeff(2, 17) = 0.000000000000d+00
494 coeff(2, 18) = 0.000000000000d+00
495 coeff(2, 19) = -0.601781536636d-06
496 coeff(2, 20) = 0.000000000000d+00
497 coeff(2, 21) = 0.000000000000d+00
498 coeff(2, 22) = 0.000000000000d+00
499 coeff(3, 1) = -0.000000000000d+00
500 coeff(3, 2) = -0.104035132381d+05
501 coeff(3, 3) = -0.108777473624d+04
502 coeff(3, 4) = -0.219328637518d+04
503 coeff(3, 5) = -0.260711341283d+03
504 coeff(3, 6) = 0.132509852177d+02
505 coeff(3, 7) = 0.165970301474d+03
506 coeff(3, 8) = -0.460909893146d+03
507 coeff(3, 9) = -0.112939707971d+04
508 coeff(3, 10) = 0.465035067500d+02
509 coeff(3, 11) = 0.123097490767d+04
510 coeff(3, 12) = -0.876616265219d+02
511 coeff(3, 13) = 0.790484996078d+01
512 coeff(3, 14) = -0.624281400584d+02
513 coeff(3, 15) = 0.324152775194d+01
514 coeff(3, 16) = -0.632212496608d+01
515 coeff(3, 17) = 0.202215332970d+01
516 coeff(3, 18) = -0.308693235932d-06
517 coeff(3, 19) = -0.495067060383d-02
518 coeff(3, 20) = 0.116855980641d-02
519 coeff(3, 21) = -0.000000000000d+00
520 coeff(3, 22) = 0.000000000000d+00
521 coeff(4, 1) = 0.000000000000d+00
522 coeff(4, 2) = 0.478661516427d+08
523 coeff(4, 3) = 0.285187385316d+06
524 coeff(4, 4) = 0.971371823345d+06
525 coeff(4, 5) = 0.116156741398d+06
526 coeff(4, 6) = 0.172191903906d+05
527 coeff(4, 7) = -0.241613612898d+05
528 coeff(4, 8) = 0.213790845631d+05
529 coeff(4, 9) = 0.790063233314d+05
530 coeff(4, 10) = 0.201667888760d+04
531 coeff(4, 11) = -0.344519214370d+05
532 coeff(4, 12) = 0.963471669433d+03
533 coeff(4, 13) = -0.292417702205d+03
534 coeff(4, 14) = 0.433842720035d+03
535 coeff(4, 15) = -0.132982468090d+02
536 coeff(4, 16) = 0.199358142858d+02
537 coeff(4, 17) = -0.365297127483d+01
538 coeff(4, 18) = 0.434041376596d-07
539 coeff(4, 19) = 0.101490424907d-02
540 coeff(4, 20) = -0.796902275213d-04
541 coeff(4, 21) = 0.000000000000d+00
542 coeff(4, 22) = 0.000000000000d+00
543 x_coord(1) = 0.000000000000d+00
544 x_coord(2) = 0.100000000000d-04
545 x_coord(3) = 0.100000000000d-03
546 x_coord(4) = 0.100000000000d-02
547 x_coord(5) = 0.215443469000d-02
548 x_coord(6) = 0.464158883000d-02
549 x_coord(7) = 0.100000000000d-01
550 x_coord(8) = 0.146779926762d-01
551 x_coord(9) = 0.215443469003d-01
552 x_coord(10) = 0.316227766017d-01
553 x_coord(11) = 0.464158883361d-01
554 x_coord(12) = 0.681292069058d-01
555 x_coord(13) = 0.100000000000d+00
556 x_coord(14) = 0.158489319246d+00
557 x_coord(15) = 0.251188643151d+00
558 x_coord(16) = 0.398107170553d+00
559 x_coord(17) = 0.630957344480d+00
560 x_coord(18) = 0.100000000000d+01
561 x_coord(19) = 0.237137370566d+01
562 x_coord(20) = 0.562341325000d+01
563 x_coord(21) = 0.153992652606d+02
564 x_coord(22) = 0.316227766000d+02
568 ALLOCATE (x_coord(n))
569 ALLOCATE (coeff(4, n))
571 coeff(1, 1) = 0.000000000000d+00
572 coeff(1, 2) = 0.000000000000d+00
573 coeff(1, 3) = -0.156157535801d-03
574 coeff(1, 4) = -0.365199003270d-02
575 coeff(1, 5) = -0.108302033233d-01
576 coeff(1, 6) = -0.203436953346d-01
577 coeff(1, 7) = -0.214330355346d-01
578 coeff(1, 8) = 0.109617244934d-03
579 coeff(1, 9) = 0.813969827075d-02
580 coeff(1, 10) = -0.701367130014d-01
581 coeff(1, 11) = -0.162002361715d+00
582 coeff(1, 12) = 0.337288711362d-01
583 coeff(1, 13) = 0.140348429629d+00
584 coeff(1, 14) = 0.271234417677d+00
585 coeff(1, 15) = 0.780732751240d-01
586 coeff(1, 16) = 0.436066976238d-01
587 coeff(1, 17) = -0.106097689688d+00
588 coeff(1, 18) = -0.133141637069d-01
589 coeff(1, 19) = -0.133143525246d-01
590 coeff(1, 20) = -0.430994711278d-01
591 coeff(1, 21) = 0.000000000000d+00
592 coeff(1, 22) = 0.000000000000d+00
593 coeff(2, 1) = 0.000000000000d+00
594 coeff(2, 2) = 0.000000000000d+00
595 coeff(2, 3) = -0.217211651544d+01
596 coeff(2, 4) = -0.473638379726d+01
597 coeff(2, 5) = -0.487821808504d+01
598 coeff(2, 6) = -0.433631413905d+00
599 coeff(2, 7) = 0.000000000000d+00
600 coeff(2, 8) = 0.193813387881d+01
601 coeff(2, 9) = 0.000000000000d+00
602 coeff(2, 10) = -0.695060290528d+01
603 coeff(2, 11) = 0.000000000000d+00
604 coeff(2, 12) = 0.502541925806d+01
605 coeff(2, 13) = 0.273498669354d+01
606 coeff(2, 14) = 0.000000000000d+00
607 coeff(2, 15) = -0.448708826169d+00
608 coeff(2, 16) = -0.332102918195d+00
609 coeff(2, 17) = 0.000000000000d+00
610 coeff(2, 18) = 0.000000000000d+00
611 coeff(2, 19) = -0.242488141082d-06
612 coeff(2, 20) = 0.000000000000d+00
613 coeff(2, 21) = 0.000000000000d+00
614 coeff(2, 22) = 0.000000000000d+00
615 coeff(3, 1) = -0.000000000000d+00
616 coeff(3, 2) = -0.337014964214d+05
617 coeff(3, 3) = -0.285795351280d+04
618 coeff(3, 4) = -0.372723918347d+04
619 coeff(3, 5) = -0.516689374427d+03
620 coeff(3, 6) = 0.480322803175d+02
621 coeff(3, 7) = 0.253894893657d+04
622 coeff(3, 8) = -0.535684993409d+02
623 coeff(3, 9) = -0.162223464755d+04
624 coeff(3, 10) = -0.319667723139d+03
625 coeff(3, 11) = 0.101401359817d+04
626 coeff(3, 12) = -0.862770702569d+02
627 coeff(3, 13) = 0.212578002151d+02
628 coeff(3, 14) = -0.625949163782d+02
629 coeff(3, 15) = 0.357838438707d+01
630 coeff(3, 16) = -0.543078279308d+01
631 coeff(3, 17) = 0.204380282001d+01
632 coeff(3, 18) = -0.124376927880d-06
633 coeff(3, 19) = -0.844892173480d-02
634 coeff(3, 20) = 0.135295689023d-02
635 coeff(3, 21) = -0.000000000000d+00
636 coeff(3, 22) = 0.000000000000d+00
637 coeff(4, 1) = 0.000000000000d+00
638 coeff(4, 2) = 0.160253203309d+09
639 coeff(4, 3) = 0.106174857663d+07
640 coeff(4, 4) = 0.211694319531d+07
641 coeff(4, 5) = 0.377995031873d+06
642 coeff(4, 6) = -0.941771032564d+03
643 coeff(4, 7) = -0.332306990184d+06
644 coeff(4, 8) = -0.850176312292d+04
645 coeff(4, 9) = 0.844978829514d+05
646 coeff(4, 10) = 0.249933770676d+05
647 coeff(4, 11) = -0.275803550484d+05
648 coeff(4, 12) = 0.105308484492d+04
649 coeff(4, 13) = -0.508788318128d+03
650 coeff(4, 14) = 0.432758845019d+03
651 coeff(4, 15) = -0.144367801061d+02
652 coeff(4, 16) = 0.175904487062d+02
653 coeff(4, 17) = -0.369208055752d+01
654 coeff(4, 18) = 0.174842962107d-07
655 coeff(4, 19) = 0.173203285755d-02
656 coeff(4, 20) = -0.922652326542d-04
657 coeff(4, 21) = 0.000000000000d+00
658 coeff(4, 22) = 0.000000000000d+00
659 x_coord(1) = 0.000000000000d+00
660 x_coord(2) = 0.100000000000d-04
661 x_coord(3) = 0.100000000000d-03
662 x_coord(4) = 0.100000000000d-02
663 x_coord(5) = 0.215443469000d-02
664 x_coord(6) = 0.464158883000d-02
665 x_coord(7) = 0.100000000000d-01
666 x_coord(8) = 0.146779926762d-01
667 x_coord(9) = 0.215443469003d-01
668 x_coord(10) = 0.316227766017d-01
669 x_coord(11) = 0.464158883361d-01
670 x_coord(12) = 0.681292069058d-01
671 x_coord(13) = 0.100000000000d+00
672 x_coord(14) = 0.158489319246d+00
673 x_coord(15) = 0.251188643151d+00
674 x_coord(16) = 0.398107170553d+00
675 x_coord(17) = 0.630957344480d+00
676 x_coord(18) = 0.100000000000d+01
677 x_coord(19) = 0.237137370566d+01
678 x_coord(20) = 0.562341325000d+01
679 x_coord(21) = 0.153992652606d+02
680 x_coord(22) = 0.316227766000d+02
685 m = intervalnum(x_coord, n, sigma)
690 integral = 0.5_dp*coeff(2, 1)*sigma
692 IF ((m > 1) .AND. (m < n))
THEN
693 h = sigma - x_coord(m)
694 integral = 0.5_dp*coeff(2, 1)*x_coord(2)**2/sigma &
695 + (coeff(1, m)*h + coeff(2, m)/2.0_dp*h**2 + &
696 coeff(3, m)/3.0_dp*h**3 + coeff(4, m)/4.0_dp*h**4)/sigma
698 h = x_coord(i + 1) - x_coord(i)
699 integral = integral &
700 + (coeff(1, i)*h + coeff(2, i)/2.0_dp*h**2 + &
701 coeff(3, i)/3.0_dp*h**3 + coeff(4, i)/4.0_dp*h**4)/sigma
705 integral = 0.5_dp*coeff(2, 1)*x_coord(2)**2/sigma
707 h = x_coord(i + 1) - x_coord(i)
708 integral = integral &
709 + (coeff(1, i)*h + coeff(2, i)/2.0_dp*h**2 &
710 + coeff(3, i)/3.0_dp*h**3 + coeff(4, i)/4.0_dp*h**4)/sigma
712 integral = integral + coeff(1, n)*(1.0_dp - x_coord(n)/sigma)
714 integral = integral*sigma
716 DEALLOCATE (x_coord, coeff)
718 END FUNCTION cubic_spline_integr
727 INTEGER FUNCTION intervalnum(x_coord, n, sigma)
RESULT(inum)
730 REAL(kind=
dp),
INTENT(in) :: x_coord(n), sigma
734 IF (sigma <= 0.0_dp) cpabort(
'intervalnum: sigma should be positive')
737 IF (sigma > x_coord(n)) inum = n
739 IF ((sigma > x_coord(i)) .AND. (sigma <= x_coord(i + 1))) inum = i
742 IF (inum == -1) cpabort(
'interval: something was wrong')
744 END FUNCTION intervalnum
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also mo...
subroutine, public choose_eigv_solver(matrix, eigenvectors, eigenvalues, info)
Choose the Eigensolver depending on which library is available ELPA seems to be unstable for small sy...
represent the structure of a full matrix
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp)
creates a new full matrix with the given structure
Defines the basic variable types.
integer, parameter, public dp
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
Interface to the message passing library MPI.
Routines to calculate RI-RPA energy and Sigma correction to the RPA energies using the cubic spline b...
subroutine, public rpa_sigma_create(rpa_sigma, sigma_param, fm_mat_q, unit_nr, para_env)
... Collect the Q(w) (fm_mat_Q) matrix to create rpa_sigma a derived type variable....
subroutine, public finalize_rpa_sigma(rpa_sigma, unit_nr, e_sigma_corr, para_env, do_minimax_quad)
... Save the calculated value of E_c correction to the global variable and memory clean.
subroutine, public rpa_sigma_matrix_spectral(rpa_sigma, fm_mat_q, wj, para_env_rpa)
... Diagonalize and store the eigenvalues of fm_mat_Q in rpa_sigmasigma_eigenvalue.
keeps the information about the structure of a full matrix
stores all the informations relevant to an mpi environment