156 lines
5.7 KiB
Fortran
156 lines
5.7 KiB
Fortran
|
!
|
||
|
!=======================================================================
|
||
|
!
|
||
|
MODULE CALL_CALC_3
|
||
|
!
|
||
|
USE ACCURACY_REAL
|
||
|
USE CALCULATORS_3
|
||
|
USE OUT_VALUES_3
|
||
|
!
|
||
|
! This module calls the subroutines of calculator 3 whenever necessary
|
||
|
!
|
||
|
CONTAINS
|
||
|
!
|
||
|
!=======================================================================
|
||
|
!
|
||
|
SUBROUTINE USE_CALC_3(IQ,X)
|
||
|
!
|
||
|
!
|
||
|
!
|
||
|
! Input parameters:
|
||
|
!
|
||
|
! * IQ : q index
|
||
|
! * X : dimensionless factor --> X = q / (2 * k_F)
|
||
|
!
|
||
|
!
|
||
|
!
|
||
|
!
|
||
|
! Author : D. Sébilleau
|
||
|
!
|
||
|
! Last modified : 28 Jan 2021
|
||
|
!
|
||
|
!
|
||
|
IMPLICIT NONE
|
||
|
!
|
||
|
INTEGER :: IQ
|
||
|
!
|
||
|
REAL (WP) :: X
|
||
|
!
|
||
|
! Computing the local-field corrections G(q,omega)
|
||
|
!
|
||
|
IF(I_LF == 1) THEN !
|
||
|
CALL CALC_LFC(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the I(q) function = G(q,inf)
|
||
|
!
|
||
|
IF(I_IQ == 1) THEN !
|
||
|
CALL CALC_IQF(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the structure factor S(q,omega)
|
||
|
!
|
||
|
IF(I_SF == 1) THEN !
|
||
|
CALL CALC_SFC(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
IF(IQ == 1) THEN !
|
||
|
!
|
||
|
! Computing the pair correlation/distribution functions
|
||
|
!
|
||
|
IF(I_PC == 1) THEN !
|
||
|
CALL CALC_PCF !
|
||
|
END IF !
|
||
|
IF(I_P2 == 1) THEN !
|
||
|
CALL CALC_PDF !
|
||
|
END IF !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the vertex function Gamma(q,omega)
|
||
|
!
|
||
|
IF(I_DC == 1) THEN !
|
||
|
CALL CALC_VTX(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the plasmon damping from eps(q,omega)
|
||
|
!
|
||
|
IF(I_VX == 1) THEN !
|
||
|
CALL CALC_DMP(IQ,X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the q bounds
|
||
|
!
|
||
|
IF(I_QC == 1) THEN !
|
||
|
CALL CALC_QBD !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the relaxation time
|
||
|
!
|
||
|
IF(I_RL == 1) THEN !
|
||
|
CALL CALC_RLX(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the screening vector
|
||
|
!
|
||
|
IF(I_KS == 1) THEN !
|
||
|
CALL CALC_SCR(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the omega = q * v_F file
|
||
|
!
|
||
|
!
|
||
|
IF(I_OQ == 1) THEN !
|
||
|
CALL CALC_QVF(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the moments of Im[ epsilon ]
|
||
|
!
|
||
|
IF(I_ME == 1) THEN !
|
||
|
CALL CALC_MEP(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the moments of the dynamical structure factor
|
||
|
!
|
||
|
IF(I_MS == 1) THEN !
|
||
|
CALL CALC_MSF(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the moments of the loss function
|
||
|
!
|
||
|
IF(I_ML == 1) THEN !
|
||
|
CALL CALC_MLO(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the zeros of Re[ eps(q,omega) ]
|
||
|
!
|
||
|
IF(I_ZE == 1) THEN !
|
||
|
CALL CALC_RE0(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the inelastic mean free path
|
||
|
!
|
||
|
IF(IQ == 1) THEN !
|
||
|
IF(I_MF == 1) THEN !
|
||
|
CALL CALC_MFP !
|
||
|
END IF !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the Fourier-space Nevalinna/memory function
|
||
|
!
|
||
|
IF(I_NV == 1) THEN !
|
||
|
CALL CALC_NEV(X) !
|
||
|
END IF !
|
||
|
!
|
||
|
! Computing the time-domain memory function
|
||
|
!
|
||
|
IF(IQ == 1) THEN !
|
||
|
IF(I_MT == 1) THEN !
|
||
|
CALL CALC_MEM !
|
||
|
END IF !
|
||
|
END IF !
|
||
|
!
|
||
|
END SUBROUTINE USE_CALC_3
|
||
|
!
|
||
|
END MODULE CALL_CALC_3
|
||
|
|