OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
manctr.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com06_c.inc"
#include "com08_c.inc"
#include "units_c.inc"
#include "scr06_c.inc"
#include "scr07_c.inc"
#include "scr14_c.inc"
#include "chara_c.inc"
#include "task_c.inc"
#include "rad2r_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine manctr (sensors, h3d_data)

Function/Subroutine Documentation

◆ manctr()

subroutine manctr ( type (sensors_), intent(inout) sensors,
type(h3d_database) h3d_data )

Definition at line 38 of file manctr.F.

39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
43 USE h3d_mod
45 USE sensor_mod
46 USE anim_mod
47 USE ale_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "com06_c.inc"
58#include "com08_c.inc"
59#include "units_c.inc"
60#include "scr06_c.inc"
61#include "scr07_c.inc"
62#include "scr14_c.inc"
63#include "chara_c.inc"
64#include "task_c.inc"
65#include "rad2r_c.inc"
66C-----------------------------------------------
67C D u m m y A r g u m e n t s
68C-----------------------------------------------
69 TYPE(H3D_DATABASE) :: H3D_DATA
70 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
71C-----------------------------------------------
72C L o c a l P a r a m e t e r s
73C-----------------------------------------------
74 INTEGER NKEY,I
75 parameter(nkey = 13)
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER J,MANIM0, MREST0, MSTOP0, MFILR, MCYCLE, LK2, IKEY, WMCHECK0,
80 . MSG_R2R, R2R_MSTOP_LOC,ICTLSTOP0, MH3D0,SENS_ID
81 my_real tmpman(50), tman,tman_loc
82 CHARACTER FILNAM*100, KEY2*80, FMT*80, KEY0(NKEY)*5,REC*1
83 CHARACTER(LEN=NCHARLINE100)::CARTE
84 INTEGER :: LEN_TMP_NAME
85 CHARACTER(len=2148) :: TMP_NAME
86C-----------------------------------------------
87C E x t e r n a l F u n c t i o n s
88C-----------------------------------------------
89C REAL
90C-----------------------------------------------
91 SAVE manim0,mrest0,mstop0,mfilr,key0,ictlstop0,mh3d0
92 DATA mfilr/0/
93 DATA manim0/0/
94 DATA mrest0/0/
95 DATA mstop0/0/
96 DATA mcycle/0/
97 DATA tman/0.0/
98 DATA wmcheck0/0/
99 DATA ictlstop0/0/
100 DATA mh3d0/0/
101 DATA key0/'TIME ','CYCLE','GFILE','PATRA','RFILE','STOP ',
102 . 'KILL ','INFO ','ANIM ','OUTP ','LFLUS','CHKPT',
103 . 'H3D '/
104C-----------------------------
105C INTERVENTION MANUELLE
106C-----------------------------
107 mdess=0
108 mrest=0
109 manim=0
110 mstop=0
111 wmcheck = 0
112 h3d_data%MH3D=0
113 mh3d0=0
114
115 msg_r2r = 0
116 IF ((irad2r==1).AND.(ncycle<2)) r2r_mfilr = 0
117C
118 IF(ale%SUB%IALESUB/=0 .AND. tt+dt2<=t1s+dt2s)RETURN
119C SOUS CYCLAGE ALE
120C-----------------------------
121C SENSOR
122C-----------------------------
123 IF (sensors%ANIM_ID > 0)THEN
124 IF (tt > sensors%SENSOR_TAB(sensors%ANIM_ID)%TSTART) THEN
125C ACTIVATION
126 sensors%ANIM_ID = -sensors%ANIM_ID
127 tanimsens = tt + sensors%ANIM_DT
128 manim=4
129 mdess=mdess+manim
130 ENDIF
131 ELSEIF (sensors%ANIM_ID < 0) THEN
132 IF (tt < sensors%SENSOR_TAB(-sensors%ANIM_ID)%TSTART) THEN
133C DEACTIVATION
134 sensors%ANIM_ID = -sensors%ANIM_ID
135 ELSEIF (tt > tanimsens) THEN
136C ACTIF
137 tanimsens = tanimsens + sensors%ANIM_DT
138 manim=4
139 mdess=mdess+manim
140 RETURN
141 ENDIF
142 ENDIF
143c
144 IF (sensors%NANIM > 0) THEN
145 DO i=1,sensors%NANIM
146 sens_id = sensors%ANIM(i)
147 IF (sensors%ANIM(i) > 0) THEN
148 IF (tt > sensors%SENSOR_TAB(sens_id)%TSTART) THEN ! ACTIVATION
149 sensors%ANIM(i) = -sens_id
150 manim=4
151 mdess=mdess+manim
152 ENDIF
153 ELSEIF (sens_id < 0) THEN
154 IF (tt < sensors%SENSOR_TAB(-sens_id)%TSTART) THEN ! DEACTIVATION
155 sensors%ANIM(i) = -sens_id
156 ENDIF
157 ENDIF
158 ENDDO
159 ENDIF
160c
161 IF(h3d_data%N_SENS_H3D>0)THEN
162 DO i=1,h3d_data%N_SENS_H3D
163 IF(h3d_data%LSENS_H3D(i)>0)THEN
164 IF (tt > sensors%SENSOR_TAB(h3d_data%LSENS_H3D(i))%TSTART) THEN
165C ACTIVATION
166 h3d_data%LSENS_H3D(i)=-h3d_data%LSENS_H3D(i)
167 h3d_data%MH3D=1
168 ENDIF
169 ELSEIF (h3d_data%LSENS_H3D(i)<0) THEN
170 IF (tt < sensors%SENSOR_TAB(-h3d_data%LSENS_H3D(i))%TSTART) THEN
171C DEACTIVATION
172 h3d_data%LSENS_H3D(i)=-h3d_data%LSENS_H3D(i)
173 ENDIF
174 ENDIF
175 ENDDO
176 ENDIF
177C-----------------------------
178C INTERVENTION MANUELLE
179C-----------------------------
180C
181 IF((ncycle/ncinp)*ncinp==ncycle)THEN
182 IF(ispmd==0)THEN
183 filnam=rootnam(1:rootlen)//'_'//chrun//'.ctl'
184 len_tmp_name = infile_name_len + len_trim(filnam)
185 tmp_name=infile_name(1:infile_name_len)//filnam(1:len_trim(filnam))
186 OPEN(unit=iusc3,file=tmp_name(1:len_tmp_name),
187 . status='OLD',err=999)
188 READ(iusc3,'(A)',err=990,END=990)carte
189 IF(carte(1:1)/='/')GOTO 990
190 mrest=0
191 manim=0
192 mstop=0
193 mrest0=0
194 manim0=0
195 mstop0=0
196 tman=0.
197 mcycle=0
198 ictlstop=0
199 ictlstop0=0
200 mh3d0 = 0
201C
202 5 CALL redkey2(key2,lk2,key0,nkey,carte,ikey)
203 GOTO (10,20,30,40,50,60,70,80,90,95,96,97,98)ikey
204 GOTO 100
205C TIME
206 10 IF(lk2>1.AND.lk2<10)THEN
207 WRITE(fmt,'(A,I1,A)')'(E',lk2,'.0)'
208 ELSEIF(lk2<100)THEN
209 WRITE(fmt,'(A,I2,A)')'(E',lk2,'.0)'
210 ELSE
211 GOTO 100
212 ENDIF
213 READ(key2,fmt,err=990,END=990)tman
214 GOTO 100
215C CYCLE
216 20 IF(lk2>1.AND.lk2<10)THEN
217 WRITE(fmt,'(A,I1,A)')'(I',lk2,')'
218 ELSEIF(lk2<100)THEN
219 WRITE(fmt,'(A,I2,A)')'(I',lk2,')'
220 ELSE
221 GOTO 100
222 ENDIF
223 READ(key2,fmt,err=990,END=990)mcycle
224C MCYCLE DESATIVE EN MULTIDOMAINES
225 IF (irad2r==1) THEN
226 msg_r2r = 1
227 mcycle = 0
228 ENDIF
229 GOTO 100
230C PLOT
231 30 manim0=manim0+1
232 GOTO 100
233C PATRAN
234 40 manim0=manim0+2
235 GOTO 100
236C RESTART
237 50 mrest0=1
238 GOTO 100
239C STOP
24060 mstop0=1
241 mrest0=1
242 ictlstop0 = 1
243 GOTO 100
244C KILL
245 70 mstop0=1
246 ictlstop0 = 1
247 GOTO 100
248C INFO
249 80 GOTO 100
250C ANIM PLOT
251 90 manim0=manim0+4
252 GOTO 100
253C OUTP PLOT
254 95 manim0=manim0+8
255 GOTO 100
256C L01 FLUSH
257 96 backspace(iout)
258 READ(iout,'(A)')rec
259 GOTO 100
260 97 wmcheck0 = 1
261 GOTO 100
262C H3D PLOT
263 98 mh3d0=1
264 GOTO 100
265 100 CONTINUE
266 READ(iusc3,'(A)',err=400,END=400)carte
267 GOTO 5
268C
269 400 mdess=1
270 rewind iusc3
271C
272 WRITE (iusc3,'(A)',err=990) ' RUN CONTROL FILE'
273 WRITE (iusc3,'(A,/)',err=990) ' ----------------'
274 IF(tman==0.0.AND.mcycle==0)THEN
275 IF (msg_r2r==1) THEN
276 WRITE (iusc3,'(A)',err=990)
277 . ' MULTIDOMAINS -> /CYCLE NOT ALLOWED'
278 ENDIF
279 WRITE(carte,'(A)')' AT CURRENT CYCLE'
280 ELSEIF(tman==0.0)THEN
281 WRITE(carte,'(A,I10)')' AT CYCLE',mcycle
282 ELSEIF(mcycle==0)THEN
283 WRITE(carte,'(A,G14.7)')' AT TIME ',tman
284 ELSE
285 WRITE(carte,'(A,G14.7,A,I10)')' IF TIME >=',tman,
286 . ' AND IF CYCLE >=',mcycle
287 ENDIF
288 IF(manim0==1 .OR.manim0== 3.OR.
289 . manim0==5 .OR.manim0== 7.OR.
290 . manim0==9 .OR.manim0==11.OR.
291 . manim0==13.OR.manim0==15)
292 . WRITE(iusc3,'(/A,A)',err=990)' WRITE NEXT PLOT FILE',carte
293 IF(manim0== 2.OR.manim0== 3.OR.
294 . manim0== 6.OR.manim0== 7.OR.
295 . manim0==10.OR.manim0==11.OR.
296 . manim0==14.OR.manim0==15)
297 . WRITE(iusc3,'(A,A)',err=990)' WRITE NEXT PATRAN FILES',carte
298 IF(manim0== 4.OR.manim0== 5.OR.
299 . manim0== 6.OR.manim0== 7.OR.
300 . manim0==12.OR.manim0==13.OR.
301 . manim0==14.OR.manim0==15)
302 . WRITE(iusc3,'(A,A)',err=990)' WRITE NEXT ANIMATION FILES',
303 . carte
304 IF(manim0== 8.OR.manim0== 9.OR.
305 . manim0==10.OR.manim0==11.OR.
306 . manim0==12.OR.manim0==13.OR.
307 . manim0==14.OR.manim0==15)
308 . WRITE(iusc3,'(A,A)',err=990)' WRITE NEXT OUTPUT FILES',
309 . carte
310 IF(mrest0==1)
311 . WRITE(iusc3,'(A,A)',err=990)' WRITE NEXT RESTART FILE',carte
312 IF(mstop0==1)
313 . WRITE(iusc3,'(A,A)',err=990)' RUN STOP',carte
314 IF(mh3d0 == 1)
315 . WRITE(iusc3,'(A,A)',err=990)' UPDATE H3D FILE', carte
316 mfilr=1
317 IF (irad2r==1) r2r_mfilr=1
318 GOTO 999
319 990 CONTINUE
320 CLOSE (iusc3)
321 999 CONTINUE
322 ENDIF
323C
324 ENDIF
325C
326C---------------------------------
327C TRAITEMENT MULTIDOMAINES
328C---------------------------------
329
330 IF (irad2r==1) THEN
331 IF (ispmd==0) THEN
332C *** traitement flag mstop ***
333 mstop = r2r_mstop
334 r2r_mstop = mstop0
335 mstop0 = mstop
336 IF (r2r_mfilr == 1) THEN
337C *** stockage des flags pour envoi rad2rad ***
338 tman_r2r = tman
339 r2r_ctr(1) = mrest0
340 r2r_ctr(2) = manim0
341 r2r_ctr(3) = wmcheck0
342 ELSEIF (r2r_mfilr == 2) THEN
343C *** on applique les flags recus de rad2rad ***
344 mfilr = 1
345 r2r_mfilr = 0
346 tman = tman_r2r
347 manim0 = r2r_ctr(2)
348 wmcheck0= r2r_ctr(3)
349 ENDIF
350 ENDIF
351 IF(nspmd > 1) CALL spmd_ibcast(mfilr,mfilr,1,1,0,2)
352 ENDIF
353
354C---------------------------------
355C ECHANGE MULTIPROCS
356C---------------------------------
357 IF((sensors%ANIM_ID /=0 .OR. sensors%NANIM /=0 .OR. h3d_data%N_SENS_H3D > 0) .OR.
358 . ((ncycle/ncinp)*ncinp==ncycle) .OR. (irad2r==1 .AND. mfilr==1)) THEN
359 IF (ispmd==0) THEN
360 tmpman(1) = mdess
361 tmpman(2) = mrest0
362 tmpman(3) = mrest
363 tmpman(4) = mstop0
364 tmpman(5) = mstop
365 tmpman(6) = manim0
366 tmpman(7) = manim
367 tmpman(8) = mcycle
368 tmpman(9) = mfilr
369 tmpman(10)= tman
370 tmpman(11)= wmcheck0
371 tmpman(12) = ictlstop0
372 tmpman(13) = mh3d0
373 tmpman(14) = h3d_data%MH3D
374 ENDIF
375 IF(nspmd > 1)CALL spmd_rbcast(tmpman,tmpman,1,14,0,2)
376 IF (ispmd/=0)THEN
377 mdess = nint(tmpman(1))
378 mrest0 = nint(tmpman(2))
379 mrest = nint(tmpman(3))
380 mstop0 = nint(tmpman(4))
381 mstop = nint(tmpman(5))
382 manim0 = nint(tmpman(6))
383 manim = nint(tmpman(7))
384 mcycle = nint(tmpman(8))
385 mfilr = nint(tmpman(9))
386 tman = tmpman(10)
387 wmcheck0 = nint(tmpman(11))
388 ictlstop0 = nint(tmpman(12))
389 mh3d0 = nint(tmpman(13))
390 h3d_data%MH3D = nint(tmpman(14))
391 ENDIF
392 ENDIF
393C---------------------------------
394
395 IF(mfilr==1)THEN
396 IF(tt>=tman.AND.ncycle>=mcycle)THEN
397 mfilr=0
398 mrest=mrest0
399 manim=manim0
400 mstop=mstop0
401 mdess=mdess+manim
402 wmcheck = wmcheck0
403 ictlstop = ictlstop0
404 h3d_data%MH3D=mh3d0
405 ENDIF
406 ENDIF
407C
408 RETURN
#define my_real
Definition cppsort.cpp:32
type(ale_) ale
Definition ale_mod.F:249
integer infile_name_len
character(len=infile_char_len) infile_name
integer, parameter ncharline100
subroutine redkey2(key2, lk2, key0, nkey, carte, ikey)
Definition redkey2.F:29
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)
Definition spmd_ibcast.F:57
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
Definition spmd_rbcast.F:62