Line data Source code
1 : !--------------------------------------------------------------------------------
2 : ! Copyright (c) 2017 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
3 : ! This file is part of FLEUR and available as free software under the conditions
4 : ! of the MIT license as expressed in the LICENSE file in more detail.
5 : !--------------------------------------------------------------------------------
6 :
7 : MODULE m_bs_comfort
8 : use m_juDFT
9 : CONTAINS
10 :
11 0 : SUBROUTINE bs_comfort(eig_id,input,noco,nkpt,param)
12 :
13 : USE m_types
14 : USE m_eig66_io, ONLY : read_eig
15 :
16 : IMPLICIT NONE
17 :
18 :
19 : TYPE(t_input), INTENT(IN) :: input
20 : TYPE(t_noco), INTENT(IN) :: noco
21 :
22 : C .. Scalar Arguments ..
23 : INTEGER, INTENT (IN) :: eig_id
24 : INTEGER, INTENT (IN) :: nkpt
25 : INTEGER, INTENT (IN) :: param
26 :
27 : C .. Local Scalars ..
28 : INTEGER :: i, jsp, k, nspins
29 :
30 : C .. Local Arrays ..
31 0 : REAL, ALLOCATABLE :: eig(:,:,:)
32 0 : INTEGER, ALLOCATABLE :: ne(:,:)
33 :
34 0 : call timestart("bs_comfort")
35 : c---> pk non-collinear
36 0 : IF (noco%l_noco) THEN
37 : nspins = 1
38 : ELSE
39 0 : nspins = input%jspins
40 : ENDIF
41 : c---> pk non-collinear
42 :
43 0 : ALLOCATE (eig(input%neig,nkpt,nspins))
44 0 : ALLOCATE (ne(nkpt,nspins))
45 :
46 0 : DO jsp = 1, nspins
47 0 : DO k = 1, nkpt
48 0 : CALL read_eig(eig_id,k,jsp,neig=ne(k,jsp),eig=eig(:,k,jsp))
49 : END DO ! k = 1,nkpt
50 :
51 0 : DO i = 1, input%neig
52 0 : DO k = 1, nkpt
53 0 : WRITE(776+jsp,*) param,k,eig(i,k,jsp)
54 : END DO
55 0 : WRITE(776+jsp,*)
56 : END DO
57 :
58 0 : DO i = 1, input%neig
59 0 : DO k = 1, nkpt
60 0 : IF (k.eq.param) WRITE(778+jsp,*) param,k,eig(i,k,jsp)
61 : END DO
62 0 : WRITE(778+jsp,*)
63 : END DO
64 : END DO ! jsp = 1,nspins
65 :
66 0 : DEALLOCATE (ne,eig)
67 :
68 0 : call timestop("bs_comfort")
69 :
70 0 : END SUBROUTINE bs_comfort
71 : END MODULE m_bs_comfort
|