32
33
34
36
37
38
39#include "implicit_f.inc"
40#include "comlock.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "units_c.inc"
49#include "scr06_c.inc"
50#include "com08_c.inc"
51
52
53
54 INTEGER NGL(*),MAT(*),NEL
55 my_real uvar(nel,*),flux(mvsiz,6), flu1(*), voln(*), dxx(*),dyy(*),dzz(*),off(*),rho0(*)
56 TARGET :: uvar
57
58
59
60 my_real dvv, e0(nel),vavg,rv,rvp
61 INTEGER I, J,COUNT,LIST(),II
62 my_real,
DIMENSION(:),
POINTER :: volo,rhon,eint,dvol
63
64 rhon => uvar(1:nel,1)
65 eint => uvar(1:nel,2)
66 volo => uvar(1:nel,3)
67 dvol => uvar(1:nel,4)
68
69
70
71 IF(
ale%GLOBAL%INCOMP == 1)
THEN
72 e0 = zero
73 DO i=1,nel
74 dvv=dt1*(dxx(i)+dyy(i)+dzz(i))
75 rhon(i)=rhon(i)-dvv*rho0(i)
76 vavg=half*(voln(i)+volo(i))
77 dvol(i)=vavg*dvv
78 eint(i)=eint(i)*volo(i)-e0(i)*dvv*vavg
79 ENDDO
80
81 ELSE
82 DO i=1,nel
83 rhon(i) = rhon(i)/voln(i)
84
85 dvol(i) = voln(i)
86 . - volo(i)+0.5*dt1*(flu1(i)+flux(i,1)+flux(i,2)
87 . + flux(i,3)+flux(i,4)+flux(i,5)+flux(i,6) )
88 volo(i)=voln(i)
89 rhon(i) =
max(rhon(i) , em30)
90
91 ENDDO
92 ENDIF
93
94 count=0
95 DO i=1,nel
96 IF(rhon(i) <= zero .AND. off(i)/= zero)THEN
97 count = count + 1
98 list
99 ENDIF
100 ENDDO
101 DO ii=1,count
102 i=list(ii)
103#include "lockon.inc"
104 WRITE(iout,1000) ngl(i
105 WRITE(istdo,1000) ngl(i),rhon(i)
106#include "lockoff.inc"
107 1000 FORMAT('-STOP GAZ ',i8,' HAS NEGATIVE RHO',g12.5)
108 ENDDO
109
110 RETURN