135 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Fortran
		
	
	
	
!
 | 
						|
!=======================================================================
 | 
						|
!
 | 
						|
MODULE THERMAL_P 
 | 
						|
!
 | 
						|
!  This module defines the thermal parameters
 | 
						|
!
 | 
						|
      USE ACCURACY_REAL
 | 
						|
!
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
      REAL (WP)             ::  K_TH,V_TH,L_TH,CV,P,MU_TH
 | 
						|
!
 | 
						|
END MODULE THERMAL_P
 | 
						|
!
 | 
						|
!=======================================================================
 | 
						|
!
 | 
						|
MODULE PRINT_THERMAL
 | 
						|
!
 | 
						|
!  This module prints the thermal properties in the log file
 | 
						|
!
 | 
						|
!
 | 
						|
CONTAINS
 | 
						|
!
 | 
						|
!=======================================================================
 | 
						|
!
 | 
						|
      SUBROUTINE CALC_THERMAL_PROP
 | 
						|
!
 | 
						|
      USE MATERIAL_PROP,          ONLY : RS,DMN
 | 
						|
      USE EXT_FIELDS,             ONLY : T
 | 
						|
      USE THERMAL_PROPERTIES
 | 
						|
      USE CHEMICAL_POTENTIAL,     ONLY : MU
 | 
						|
!
 | 
						|
      USE THERMAL_P
 | 
						|
!
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
      CALL TH_PROP(DMN,RS,T,K_TH,V_TH,L_TH,CV,P)                    !
 | 
						|
      MU_TH=MU(DMN,T)                                               !
 | 
						|
!
 | 
						|
      END SUBROUTINE CALC_THERMAL_PROP
 | 
						|
!
 | 
						|
!=======================================================================
 | 
						|
!
 | 
						|
      SUBROUTINE PRINT_THERMAL_PROP
 | 
						|
!
 | 
						|
!  This subroutine prints the thermal properties in the log file
 | 
						|
!
 | 
						|
!
 | 
						|
!
 | 
						|
!   Author :  D. Sébilleau
 | 
						|
!
 | 
						|
!                                        Last modified : 28 Jul 2020
 | 
						|
!
 | 
						|
!
 | 
						|
      USE CONSTANTS_P1,     ONLY : BOHR
 | 
						|
      USE ENE_CHANGE,       ONLY : ANG,EV
 | 
						|
      USE EXT_FIELDS,       ONLY : T
 | 
						|
!
 | 
						|
      USE THERMAL_P
 | 
						|
!
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
      REAL (WP)             ::  TEST
 | 
						|
!
 | 
						|
      INTEGER               ::  LOGF
 | 
						|
!
 | 
						|
      LOGF=6                                                        ! log file unit
 | 
						|
!
 | 
						|
      TEST=90000.0E0_WP                                             !
 | 
						|
!
 | 
						|
      CALL CALC_THERMAL_PROP                                        !
 | 
						|
!
 | 
						|
      WRITE(LOGF,17)                                                !
 | 
						|
      WRITE(LOGF,7) T                                               !
 | 
						|
      WRITE(LOGF,27)                                                !
 | 
						|
!
 | 
						|
      IF(K_TH*BOHR <= TEST) THEN                                    !
 | 
						|
        WRITE(LOGF,10) K_TH*ANG                                     !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,15) K_TH*ANG                                     !
 | 
						|
      END IF                                                        !
 | 
						|
      IF(V_TH <= TEST) THEN                                         !
 | 
						|
        WRITE(LOGF,20) V_TH                                         !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,25) V_TH                                         !
 | 
						|
      END IF                                                        !
 | 
						|
      IF(L_TH <= TEST) THEN                                         !
 | 
						|
        WRITE(LOGF,30) L_TH/ANG                                     !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,35) L_TH/ANG                                     !
 | 
						|
      END IF                                                        !
 | 
						|
      IF(CV <= TEST) THEN                                           !
 | 
						|
        WRITE(LOGF,40) CV                                           !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,45) CV                                           !
 | 
						|
      END IF                                                        !
 | 
						|
      IF(P <= TEST) THEN                                            !
 | 
						|
        WRITE(LOGF,50) P                                            !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,55) P                                            !
 | 
						|
      END IF                                                        !
 | 
						|
      IF(MU_TH/EV <= TEST) THEN                                     !
 | 
						|
        WRITE(LOGF,60) MU_TH/EV                                     !
 | 
						|
      ELSE                                                          !
 | 
						|
        WRITE(LOGF,65) MU_TH/EV                                     !
 | 
						|
      END IF                                                        !
 | 
						|
!
 | 
						|
      WRITE(LOGF,70)                                                !
 | 
						|
!
 | 
						|
!  Formats:
 | 
						|
!
 | 
						|
  10  FORMAT(5X,'|',5X,'De Broglie wave vector    : ',F10.3,'     Å^{-1}','   |')
 | 
						|
  20  FORMAT(5X,'|',5X,'thermal velocity          : ',F10.3,'     m/s',3X,'   |')
 | 
						|
  30  FORMAT(5X,'|',5X,'Landau length             : ',F10.3,'     Å        |')
 | 
						|
  40  FORMAT(5X,'|',5X,'electron specific heat    : ',F10.3,'     SI       |')
 | 
						|
  50  FORMAT(5X,'|',5X,'electron pressure         : ',F10.3,'     SI       |')
 | 
						|
  60  FORMAT(5X,'|',5X,'chemical potential        : ',F10.3,'     eV       |')
 | 
						|
!
 | 
						|
  15  FORMAT(5X,'|',5X,'De Broglie wave vector    : ',E12.6,'   Å^{-1}   |')
 | 
						|
  25  FORMAT(5X,'|',5X,'thermal velocity          : ',E12.6,'   m/s      |')
 | 
						|
  35  FORMAT(5X,'|',5X,'Landau length             : ',E12.6,'   Å        |')
 | 
						|
  45  FORMAT(5X,'|',5X,'electron specific heat    : ',E12.6,'   SI       |')
 | 
						|
  55  FORMAT(5X,'|',5X,'electron pressure         : ',E12.6,'   SI       |')
 | 
						|
  65  FORMAT(5X,'|',5X,'chemical potential        : ',E12.6,'   eV       |')
 | 
						|
!
 | 
						|
   7  FORMAT(5X,'|',10X,'Thermal properties at T = ',F10.3,' °K : ',5X,'|')                            
 | 
						|
  17  FORMAT(6X,'_________________________________________________________')
 | 
						|
  27  FORMAT(5X,'|                                                         |')                   
 | 
						|
  70  FORMAT(5X,'|_________________________________________________________|',/)
 | 
						|
!
 | 
						|
      END SUBROUTINE PRINT_THERMAL_PROP
 | 
						|
!
 | 
						|
END MODULE PRINT_THERMAL
 |