36
37
38
40 USE elbufdef_mod
41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "vect01_c.inc"
49#include "com01_c.inc"
50#include "param_c.inc"
51
52
53
54
56 . pm(npropm,*)
57 INTEGER IPARG(NPARG,*),NC(5,*),IXS(NIXS,*)
58 INTEGER NUMEL,IFUNC
59 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET ::
60
61 INTEGER I,J,N,IC,IL,IL_OLD,,NEL,MLW,JTURB,MT,G_PLA,II(6)
62
64 . off, p, vonm2, vonm, s1, s2, s12, s3, VALUE
65 REAL R4
66 TYPE(G_BUFEL_) ,POINTER :: GBUF
67 TYPE(L_BUFEL_) ,POINTER :: LBUF
68 TYPE(BUF_MAT_) ,POINTER :: MBUF
69
70 il_old = -1
71 VALUE = zero
72 DO ic=1,numel
73 il = nc(5,ic)
74 IF(il/=il_old)THEN
75 il_old = il
76
77 DO 490 ng=1,ngroup
79 2 mlw ,nel ,nft ,iad ,ity ,
80 3 npt ,jale ,ismstr ,jeul ,jtur ,
81 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
82 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
83 6 irep ,iint ,igtyp ,israt ,isrot ,
84 7 icsen ,isorth ,isorthg ,ifailure,jsms )
85 IF (ity/=1) GOTO 490
86 IF (nel+nft<il) GOTO 490
87
88
89
90 gbuf => elbuf_tab(ng)%GBUF
91 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
92 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
93 i = il - nft
94 llt = nel
95 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
96
97 n = i + nft
98 off = gbuf%OFF(i)
99
100 DO j=1,6
101 ii(j) = nel*(j-1)
102 ENDDO
103
104
105 IF (ifunc==1 .AND. gbuf%G_PLA > 0) THEN
106 VALUE = gbuf%PLA(i)
107
108 ELSEIF (ifunc == 2) THEN
109 VALUE = gbuf%RHO(i)
110
111 ELSEIF (ifunc == 3) THEN
112 VALUE = gbuf%EINT(i)
113
114 ELSEIF(ifunc==4 .AND. jthe > 0) THEN
115 VALUE = gbuf%TEMP(i)
116
117 ELSEIF(ifunc==6.OR.ifunc==7)THEN
118 p = - (gbuf%SIG(ii(1)+i)
119 . + gbuf%SIG(ii(2)+i)
120 . + gbuf%SIG(ii(3)+i)) / three
121 VALUE = p
122 IF (ifunc==7) THEN
123 s1 = gbuf%SIG(ii(1)+i) + p
124 s2 = gbuf%SIG(ii(2)+i) + p
125 s3 = gbuf%SIG(ii(3)+i) + p
126 vonm2 = three*(gbuf%SIG(ii(4)+i)**2 +
127 . gbuf%SIG(ii(5)+i)**2 +
128 . gbuf%SIG(ii(6)+i)**2 +
129 . half*(s1*s1+s2*s2+s3*s3))
130 vonm= sqrt(vonm2)
131 VALUE = vonm
132 ENDIF
133
134 ELSEIF (ifunc==8 . and. jturb/=0) THEN
135
136 VALUE = gbuf%RK(i)
137 ELSEIF (ifunc==9) THEN
138
139 IF((mlw==6 .OR. mlw==17).AND.jturb/=0)THEN
140 mt=ixs(1,n)
141 VALUE=pm(81,mt)*gbuf%RK(i)**2/
142 .
max(em15,gbuf%RE(i))
143 ELSEIF (mlw==46 .OR. mlw==47)THEN
144 VALUE = mbuf%VAR(i)
145 ELSE
146 VALUE = zero
147 ENDIF
148
149 ELSEIF(ifunc==10)THEN
150
151 IF(mlw==6 .OR. mlw==17)THEN
152 VALUE = lbuf%VK(i)
153 ELSEIF(mlw==46 .OR. mlw==47)THEN
154 VALUE = mbuf%VAR(i)
155 ELSE
156 VALUE = zero
157 ENDIF
158
159 ELSEIF(ifunc>=14.AND.ifunc<=19)THEN
160 VALUE = gbuf%SIG(ii(ifunc - 13) + i)
161 ELSE
162 VALUE = zero
163 ENDIF
164 GOTO 500
165
166 490 CONTINUE
167 500 CONTINUE
168 ENDIF
169
170 r4 = VALUE
172 ENDDO
173
174 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
void write_r_c(float *w, int *len)