root / src / Energy_GEDIIS.f90 @ 2
Historique | Voir | Annoter | Télécharger (1,06 ko)
1 |
SUBROUTINE Energy_GEDIIS(MRESET,MSET,ci,GeomSet,GradSet,ESET,NCoord,ER_star) |
---|---|
2 |
IMPLICIT NONE |
3 |
integer, parameter :: KINT = kind(1) |
4 |
integer, parameter :: KREAL = kind(1.0d0) |
5 |
|
6 |
|
7 |
INTEGER(KINT) :: MRESET, MSET, NCoord |
8 |
REAL(KREAL) :: ci(MRESET), GeomSet(MRESET*NCoord), GradSet(MRESET*NCoord), ESET(MRESET) |
9 |
REAL(KREAL) :: ER_star, tmp |
10 |
|
11 |
INTEGER(KINT) :: I, J, IX, JX, INV, JNV, KX |
12 |
|
13 |
LOGICAL PRINT |
14 |
|
15 |
PRINT=.FALSE. |
16 |
|
17 |
IF (PRINT) WRITE(*,'(/,'' BEGIN Energy_GEDIIS '')') |
18 |
|
19 |
ER_star=0.D0 |
20 |
INV=-NCoord |
21 |
DO IX=1,MSET |
22 |
INV=INV+NCoord |
23 |
JNV=-NCoord |
24 |
DO JX=1,MSET |
25 |
JNV=JNV+NCoord |
26 |
tmp=0.D0 |
27 |
DO KX=1, NCoord |
28 |
tmp = tmp + (((GradSet(INV+KX)-GradSet(JNV+KX))*(GeomSet(INV+KX)-GeomSet(JNV+KX)))/2.D0) |
29 |
END DO |
30 |
ER_star = ER_star + ci(IX)*ci(JX)*tmp |
31 |
END DO |
32 |
END DO |
33 |
|
34 |
DO I=1, MSET |
35 |
ER_star = ER_star + (ci(I)*ESET(I)) |
36 |
END DO |
37 |
|
38 |
IF (PRINT) WRITE(*,'(/,'' END Energy_GEDIIS '',/)') |
39 |
|
40 |
END SUBROUTINE Energy_GEDIIS |