MsSpec-DFM/New_libraries/DFM_library/PRINT_LIBRARY/print_thermodynamics.f90

155 lines
6.9 KiB
Fortran

!
!=======================================================================
!
MODULE THERMODYNAMICS_P
!
! This module defines the thermodynamical parameters
!
USE ACCURACY_REAL
!
IMPLICIT NONE
!
REAL (WP) :: PP,MU,K0,K,BM,U_IN,U_EX,F_FR
!
END MODULE THERMODYNAMICS_P
!
!=======================================================================
!
!
!=======================================================================
!
MODULE PRINT_THERMODYNAMICS
!
! This module prints the thermodynamics properties in the log file
!
!
CONTAINS
!
!=======================================================================
!
SUBROUTINE CALC_THERMODYNAMICS_PROP
!
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE ENERGIES, ONLY : EC_TYPE
USE THERMODYNAMIC_QUANTITIES
!
USE THERMODYNAMICS_P
!
IMPLICIT NONE
!
IF(DMN == '3D') THEN !
CALL THERMODYNAMICS_3D(EC_TYPE,RS,T,PP,MU,K0,K,BM, & !
U_IN,U_EX,F_FR) !
ELSE IF(DMN == '2D') THEN !
CONTINUE !
ELSE IF(DMN == '1D') THEN !
CONTINUE !
END IF !
!
END SUBROUTINE CALC_THERMODYNAMICS_PROP
!
!=======================================================================
!
SUBROUTINE PRINT_THERMODYNAMICS_PROP
!
! This subroutine prints the thermodynamics properties in the log file
!
!
!
! Author : D. Sébilleau
!
! Last modified : 29 Jul 2020
!
!
USE ENE_CHANGE, ONLY : EV
USE EXT_FIELDS, ONLY : T
!
USE THERMODYNAMICS_P
!
REAL (WP) :: TEST
!
INTEGER :: LOGF
!
LOGF=6 ! log file unit
!
TEST=90000.0E0_WP !
!
CALL CALC_THERMODYNAMICS_PROP !
!
WRITE(LOGF,17) !
WRITE(LOGF,7) T !
WRITE(LOGF,27) !
!
IF(K0 <= TEST) THEN !
WRITE(LOGF,10) K0 !
ELSE !
WRITE(LOGF,15) K0 !
END IF !
IF(K <= TEST) THEN !
WRITE(LOGF,20) K !
ELSE !
WRITE(LOGF,25) K !
END IF !
IF(BM <= TEST) THEN !
WRITE(LOGF,30) BM !
ELSE !
WRITE(LOGF,35) BM !
END IF !
IF(U_IN/EV <= TEST) THEN !
WRITE(LOGF,40) U_IN/EV !
ELSE !
WRITE(LOGF,45) U_IN/EV !
END IF !
IF(U_EX/EV <= TEST) THEN !
WRITE(LOGF,50) U_EX/EV !
ELSE !
WRITE(LOGF,55) U_EX/EV !
END IF !
IF(F_FR/EV <= TEST) THEN !
WRITE(LOGF,60) F_FR/EV !
ELSE !
WRITE(LOGF,65) F_FR/EV !
END IF !
IF(PP <= TEST) THEN !
WRITE(LOGF,70) PP !
ELSE !
WRITE(LOGF,75) PP !
END IF !
IF(MU/EV <= TEST) THEN !
WRITE(LOGF,80) MU/EV !
ELSE !
WRITE(LOGF,85) MU/EV !
END IF !
!
WRITE(LOGF,77) !
!
! Formats:
!
10 FORMAT(5X,'|',5X,'compressibility (non-interacting) x n : ',F8.3,' SI |')
20 FORMAT(5X,'|',5X,'compressibility x n : ',F8.3,' SI |')
30 FORMAT(5X,'|',5X,'bulk modulus : ',F8.3,' Pa |')
40 FORMAT(5X,'|',5X,'internal energy per electron : ',F8.3,' eV |')
50 FORMAT(5X,'|',5X,'excess internal energy per el. / k_B T: ',F8.3,' eV |')
60 FORMAT(5X,'|',5X,'Helmoltz free energy per electron : ',F8.3,' eV |')
70 FORMAT(5X,'|',5X,'electron pressure : ',F8.3,' SI |')
80 FORMAT(5X,'|',5X,'chemical potential : ',F8.3,' SI |')
!
15 FORMAT(5X,'|',5X,'compressibility (non-interacting) x n : ',E12.6,' SI |')
25 FORMAT(5X,'|',5X,'compressibility x n : ',E12.6,' SI |')
35 FORMAT(5X,'|',5X,'bulk modulus : ',E12.6,' Pa |')
45 FORMAT(5X,'|',5X,'internal energy per electron : ',E12.6,' eV |')
55 FORMAT(5X,'|',5X,'excess internal energy per el. / k_B T: ',E12.6,' eV |')
65 FORMAT(5X,'|',5X,'Helmoltz free energy per electron : ',E12.6,' eV |')
75 FORMAT(5X,'|',5X,'electron pressure : ',E12.6,' SI |')
85 FORMAT(5X,'|',5X,'chemical potential : ',E12.6,' SI |')
!
7 FORMAT(5X,'|',10X,'Thermodynamics properties at T = ',F8.3,' °K : |')
17 FORMAT(6X,'_________________________________________________________')
27 FORMAT(5X,'| |')
77 FORMAT(5X,'|_________________________________________________________|',/)
!
END SUBROUTINE PRINT_THERMODYNAMICS_PROP
!
ENDMODULE PRINT_THERMODYNAMICS