43
44
45
49 USE output_mod
50 USE sensor_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59#include "com01_c.inc"
60#include "warn_c.inc"
61#include "scr06_c.inc"
62#include "scr14_c.inc"
63#include "scrcut_c.inc"
64
65
66
67 type(output_), intent(inout) :: OUTPUT
68 INTEGER (0:*),KANIM
69 CHARACTER KEY0(*)*5
70 TYPE (SENSORS_), INTENT(INOUT) :: SENSORS
71
72
73
74 INTEGER NVAR
75
76
77
78 INTEGER I, NBC, K, IKEY, N1, N2, N3, ITYP,J,NTITLE, IXITKEY
79 CHARACTER TITLE*72, TITLE2*80
80 CHARACTER(LEN=LINE120)::LINE
81 CHARACTER(LEN=NCHARLINE100)::CARTE
82 CHARACTER(LEN=NCHARKEY)::KEY2
83 CHARACTER(LEN=NCHARKEY)::KEY3
84 CHARACTER(LEN=NCHARKEY)::KEY4
85 CHARACTER(LEN=NCHARKEY)::KEY5
86 CHARACTER(LEN=NCHARKEY)::KEY6
87 CHARACTER(LEN=NCHARKEY)::KEY7
88 CHARACTER(LEN=NCHARKEY)::KEY8
89
91
92 ikey = kanim
93 animcont = 0
94 output%nb_anim_frame = 0
95 output%DTANIM_FCT_ID = 0
96
97
98
100
101
102
103 ixitkey=0
104 IF(ikad(ikey)/=ikad(ikey+1))THEN
105 k=0
106 1160 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)')line
107 CALL fredec_8key_i(line,key2,key3,key4,key5,key6,key7,key8,nbc)
108
109 k=k+1
110
111 IF(nbc/=0)THEN
112
113
114
115 IF(key2(1:5)=='DT ')THEN
116 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
117 READ(iusc2,*,err=310,END=320)OUTPUT%TANIM0,output%DTANIM0,output%TANIM_STOP0,output%nb_anim_
118 GOTO 320
119 310 READ(iusc2,*,err=320,END=320)OUTPUT%tanim0
120 320 CONTINUE
121
122
123
124
125
126
127
128
129
130
131
132
133 IF (output%DTANIM0 <= zero.AND.output%DTANIM_FCT_ID == 0.AND.output%nb_anim_frameTHEN
134 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'ANIM',c2=
'ANIM')
136 ENDIF
137
138 IF (output%TANIM_STOP0 < zero) THEN
139 CALL ancmsg(msgid=304,anmode=aninfo,c1=
'ANIM',c2=
'ANIM')
141 ELSEIF (output%TANIM_STOP0 == zero)THEN
142 output%TANIM_STOP0 = ep20
143 ELSE
144 output%TANIM_STOP0 =
max(output%TANIM_STOP0,
max(zero,output%TANIM0))
145 ENDIF
146
147 ELSEIF(key2(1:5)=='SENSO')THEN
148 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
149 READ(iusc2,*,err=9990) sensors%ANIM_ID,sensors%ANIM_DT
150
151 ELSEIF(key2(1:5)=='LSENS')THEN
152 DO i=1,nbc
153 READ(iusc1,rec=ikad(ikey)+k+i-1,fmt='(A)',err=9990)carte
154 CALL wriusc2(ikad(ikey)+k+i-1,1,key0(ikey))
155 READ(iusc2,*,err=9990,END=9990) (SENSORS%ANIM_TMP(J+SENSORS%NANIM),J=1,NVAR(CARTE))
157 sensors%NANIM = sensors%NANIM + 1
158 ENDDO
159 ENDDO
160
161 ELSEIF(key2(1:5)=='TITLE')THEN
162 DO i=1,nbc
163 READ(iusc1,rec=ikad(ikey)+k+i-1,fmt='(A)',err=9990)carte
164 CALL wriusc2(ikad(ikey)+k+i-1,1,key0(ikey))
165 READ(iusc2,*,err=9990,END=9990) NTITLE,title2
166 nltitle=nltitle+1
167 ntitletab(nltitle)=ntitle
168 titletab(nltitle)=title2
169 ENDDO
170 ELSEIF(key2(1:3)=='CUT')THEN
171 ncuts=ncuts+1
172 READ(key3(1:4),'(I4)')ityp
173 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
174 READ(iusc2,'(A)',err=9990,END=9990)title
175 WRITE(iin,'(I8,A)')ityp,title
176 k=k+1
177 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
178 IF(ityp<3)THEN
179 READ(iusc2,*,err=9990,END=9990)X0,Y0,Z0,VNX,VNY,VNZ,v0
180 WRITE(iin,'(7E16.9)')x0,y0,z0,vnx,vny,vnz,v0
181 ELSE
182 READ(iusc2,*,err=9990,END=9990)N1,N2,n3
183 WRITE(iin,'(3I8)')n1,n2,n3
184 ENDIF
185 k=k-1
186 END IF
187 ELSE
188
189
190
192 IF(ixitkey/=0) GOTO 9990
193 ENDIF
194 k=k+nbc
195 IF(ikad(ikey)+k/=ikad(ikey+1))GO TO 1160
196 ENDIF
197
198
199
200
201
203
204 nv_ani = 0
205 nt_ani = 0
206 ne_ani = 0
207 nn_ani = 0
208 nct_ani = 0
209 nce_ani = 0
210 nst_ani = 0
211 nse_ani = 0
212 nft_ani = 0
213 nfe_ani = 0
214 DO i = 1,mx_ani
215 nv_ani = nv_ani + anim_v(i)
216 nt_ani = nt_ani + anim_t(i)
217 ne_ani = ne_ani + anim_e(i)
218 nn_ani = nn_ani + anim_n(i)
219 nst_ani = nst_ani + anim_st(i)
220 nse_ani = nse_ani + anim_se(i)
221 nct_ani = nct_ani + anim_ct(i)
222 nce_ani = nce_ani + anim_ce(i)
223 nft_ani = nft_ani + anim_ft(i)
224 nfe_ani = nfe_ani + anim_fe(i)
225 ENDDO
226 IF(anim_v(12)==1)nv_ani=nv_ani+1
227 IF(anim_v(4)==1.AND.animcont == 0) nv_ani=nv_ani-1
228 IF(anim_v(27)==1)nv_ani=nv_ani+1
229
230
231 IF (ncuts>0.AND.nspmd>1) THEN
232 CALL ancmsg(msgid=191,anmode=aninfo)
233 ierr=ierr+1
234 ENDIF
235 IF(anim_vers<40) THEN
236 CALL ancmsg(msgid=192,anmode=aninfo)
237 ierr=ierr+1
238 ENDIF
239 IF (anim_vers>=50) THEN
240 CALL ancmsg(msgid=193,anmode=aninfo)
241 ierr=ierr+1
242 ENDIF
243 RETURN
244
245 9990 CONTINUE
246 CALL ancmsg(msgid=73,anmode=aninfo,c1=key0(ikey),c2=line(1:35))
subroutine anim_dcod_key_0(output, key2, key3, key4, key5, key6, jerr, ixitkey)
subroutine anim_reset_index_all()
subroutine anim_set2zero_struct(output, sensors)
subroutine fredec_8key_i(cart, key2, key3, key4, key5, key6, key7, key8, nbc)
integer, parameter line120
integer, parameter ncharline100
integer, parameter ncharkey
integer function nvar(text)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine wriusc2(irec, nbc, key0)