33
34
35
36
37
38
39
40
41
42
43
44
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57 INTEGER,INTENT(IN) :: NEL
58 my_real,
INTENT(INOUT) :: temp(nel)
59 my_real,
INTENT(INOUT) :: phin(nel)
61 my_real,
INTENT(IN) :: phi(*), grad(4,nel), vol(nel)
63 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
64
65
66
67#include "com08_c.inc"
68#include "vect01_c.inc"
69
70
71
72 INTEGER I, IE, IV1, IV2, IV3, IV4, IAD2
76
77
78
79 DO i=1,nel
80 ie =nft+i
81 iad2 = ale_connect%ee_connect%iad_connect(ie)
82 iv1 = ale_connect%ee_connect%connected(iad2 + 1 - 1)
83 iv2 = ale_connect%ee_connect%connected(iad2 + 2 - 1)
84 iv3 = ale_connect%ee_connect%connected(iad2 + 3 - 1)
85 iv4 = ale_connect%ee_connect%connected(iad2 + 4 - 1)
86
87 IF(iv1 <= 0)iv1=ie
88 IF(iv2 <= 0)iv2=ie
89 IF(iv3 <= 0)iv3=ie
90 IF(iv4 <= 0)iv4=ie
91
97
98 IF(aa(1) == zero) aa(1)=aa(0)
99 IF(aa(2) == zero) aa(2)=aa(0)
100 IF(aa(3) == zero) aa(3)=aa(0)
101 IF(aa(4) == zero) aa(4)=aa(0)
102
103 aa_face(1) = (aa(0)*aa(1)) /
max(em20,(aa(0)+aa(1)))
104 aa_face(2) = (aa(0)*aa(2)) /
max(em20,(aa(0)+aa(2)))
105 aa_face(3) = (aa(0)*aa(3)) /
max(em20,(aa(0)+aa(3)))
106 aa_face(4) = (aa(0)*aa(4)) /
max(em20,(aa(0)+aa(4)))
107
108
109 dphi(i) = aa_face(1)*(phi(iv1)-phi(ie))*grad(1,i)
110 3 + aa_face(2)*(phi(iv2)-phi(ie))*grad(2,i)
111 5 + aa_face(3)*(phi(iv3)-phi(ie))*grad(3,i)
112 7 + aa_face(4)*(phi(iv4)-phi(ie))*grad(4,i)
113 enddo
114
115
116
117
118 DO i=1,nel
119 dphi(i) = two*dphi(i)*dt1/
max(vol(i),em20)
120 ENDDO
121
122
123 DO i=1,nel
124 phin(i)=phin(i)+dphi(i)
125 ENDDO
126
127
128 IF(rhocp > zero)THEN
129 DO i=1,nel
130 temp(i) = temp(i) + dphi(i)/rhocp
131 ENDDO
132 ENDIF
133
134 RETURN