@@ -76,9 +76,8 @@ end subroutine LAT_CLEAR
76
76
subroutine LAT_INIT (LAT )
77
77
! calculate dependent fields in LAT (metric tensor, cell volume, ...)
78
78
!-------------------------------------------------------------
79
- TYPE (TCR_LATTICE) :: LAT
80
- LAT%VOL= GET_CELLVOL(LAT,298.D0 )
81
- call GET_METRIC(LAT,LAT%G)
79
+ TYPE (TCR_LATTICE) :: LAT
80
+ call GET_METRIC(LAT)
82
81
end subroutine LAT_INIT
83
82
84
83
!--------------------------------------------------------
@@ -226,32 +225,34 @@ real(kind(1.D0)) function GET_CELLVOL(LAT,T)
226
225
end function GET_CELLVOL
227
226
228
227
!-------------------------------------------------------------
229
- subroutine GET_METRIC(LAT,G )
228
+ subroutine GET_METRIC(LAT)
230
229
! calculate metric tensor for reciprocal lattice at T=298 K
231
230
!-------------------------------------------------------------
232
- TYPE (TCR_LATTICE),intent(in) :: LAT
233
- real(kind(1.D0)),intent(out) :: G(3,3)
231
+ TYPE (TCR_LATTICE) :: LAT
232
+ real(kind(1.D0)) :: G(3,3)
234
233
integer :: k
235
- real(kind(1.D0)) :: AX(3),SINA(3),COSA(3),VOL
236
- VOL=GET_CELLVOL(LAT,298.D0)
237
- if (VOL.gt.0.D0) then
234
+ real(kind(1.D0)) :: AX(3),SINA(3),COSA(3),VOL2
235
+ LAT%VOL=GET_CELLVOL(LAT,298.D0)
236
+ if (LAT%VOL.gt.0.D0) then
237
+ VOL2 = LAT%VOL**2
238
238
do k=1,3
239
239
COSA(k)=cos(LAT%ANG(k)*deg)
240
240
SINA(k)=sin(LAT%ANG(k)*deg)
241
241
AX(k)=LAT%AX(k)
242
242
enddo
243
- G(1,1)=(AX(2)*AX(3)*SINA(1))**2/VOL**2
244
- G(2,2)=(AX(1)*AX(3)*SINA(2))**2/VOL**2
245
- G(3,3)=(AX(1)*AX(2)*SINA(3))**2/VOL**2
246
- G(1,2)=AX(1)*AX(2)*AX(3)**2*(COSA(1)*COSA(2)-COSA(3))/VOL**2
243
+ G(1,1)=(AX(2)*AX(3)*SINA(1))**2/VOL2
244
+ G(2,2)=(AX(1)*AX(3)*SINA(2))**2/VOL2
245
+ G(3,3)=(AX(1)*AX(2)*SINA(3))**2/VOL2
246
+ G(1,2)=AX(1)*AX(2)*AX(3)**2*(COSA(1)*COSA(2)-COSA(3))/VOL2
247
247
G(2,1)=G(1,2)
248
- G(1,3)=AX(1)*AX(3)*AX(2)**2*(COSA(1)*COSA(3)-COSA(2))/VOL**2
248
+ G(1,3)=AX(1)*AX(3)*AX(2)**2*(COSA(1)*COSA(3)-COSA(2))/VOL2
249
249
G(3,1)=G(1,3)
250
- G(2,3)=AX(2)*AX(3)*AX(1)**2*(COSA(2)*COSA(3)-COSA(1))/VOL**2
250
+ G(2,3)=AX(2)*AX(3)*AX(1)**2*(COSA(2)*COSA(3)-COSA(1))/VOL2
251
251
G(3,2)=G(2,3)
252
252
else
253
253
G=0.D0
254
254
endif
255
+ LAT%G = G
255
256
end subroutine GET_METRIC
256
257
257
258
0 commit comments