38 SUBROUTINE manctr(OUTPUT,SENSORS ,H3D_DATA)
51#include "implicit_f.inc"
69 TYPE(output_),
INTENT(INOUT) :: OUTPUT
71 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
80 INTEGER MANIM0, MREST0, MSTOP0, MFILR, MCYCLE, LK2, IKEY, WMCHECK0,
81 . MSG_R2R,ICTLSTOP0, MH3D0,SENS_ID
83 CHARACTER FILNAM*100, KEY2*80, *80, KEY0(NKEY)*5,REC*1
84 CHARACTER(LEN=NCHARLINE100)::CARTE
85 INTEGER :: LEN_TMP_NAME
86 CHARACTER(len=2148) :: TMP_NAME
92 SAVE manim0,mrest0,mstop0,mfilr,key0,ictlstop0,mh3d0
102 DATA key0/
'TIME ',
'CYCLE',
'GFILE',
'PATRA',
'RFILE',
'STOP ',
103 .
'KILL ',
'INFO ',
'ANIM ',
'OUTP ',
'LFLUS',
'CHKPT',
117 IF ((irad2r==1).AND.(ncycle<2)) r2r_mfilr = 0
119 IF(
ale%SUB%IALESUB/=0 .AND. tt+dt2<=t1s+dt2s)
RETURN
124 IF (sensors%ANIM_ID > 0)
THEN
125 IF (tt > sensors%SENSOR_TAB(sensors%ANIM_ID)%TSTART)
THEN
127 sensors%ANIM_ID = -sensors%ANIM_ID
128 output%TANIMSENS = tt + sensors%ANIM_DT
132 ELSEIF (sensors%ANIM_ID < 0)
THEN
133 IF (tt < sensors%SENSOR_TAB(-sensors%ANIM_ID)%TSTART)
THEN
135 sensors%ANIM_ID = -sensors%ANIM_ID
136 ELSEIF (tt > output%TANIMSENS)
THEN
138 output%TANIMSENS = output%TANIMSENS + sensors%ANIM_DT
145 IF (sensors%NANIM > 0)
THEN
147 sens_id = sensors%ANIM(i)
148 IF (sensors%ANIM(i) > 0)
THEN
149 IF (tt > sensors%SENSOR_TAB(sens_id)%TSTART)
THEN
150 sensors%ANIM(i) = -sens_id
154 ELSEIF (sens_id < 0)
THEN
155 IF (tt < sensors%SENSOR_TAB(-sens_id)%TSTART)
THEN
156 sensors%ANIM(i) = -sens_id
162 IF(h3d_data%N_SENS_H3D>0)
THEN
163 DO i=1,h3d_data%N_SENS_H3D
164 IF(h3d_data%LSENS_H3D(i)>0)
THEN
165 IF (tt > sensors%SENSOR_TAB(h3d_data%LSENS_H3D(i))%TSTART)
THEN
167 h3d_data%LSENS_H3D(i)=-h3d_data%LSENS_H3D(i)
170 ELSEIF (h3d_data%LSENS_H3D(i)<0)
THEN
171 IF (tt < sensors%SENSOR_TAB(-h3d_data%LSENS_H3D(i))%TSTART)
THEN
173 h3d_data%LSENS_H3D(i)=-h3d_data%LSENS_H3D(i)
182 IF((ncycle/ncinp)*ncinp==ncycle)
THEN
184 filnam=rootnam(1:rootlen)//
'_'//chrun//
'.ctl'
187 OPEN(unit=iusc3,file=tmp_name(1:len_tmp_name),
188 . status=
'OLD',err=999)
189 READ(iusc3,
'(A)',err=990,
END=990)carte
190 IF(carte(1:1)/=
'/')
GOTO 990
203 5
CALL redkey2(key2,lk2,key0,nkey,carte,ikey)
204 GOTO (10,20,30,40,50,60,70,80,90,95,96,97,98)ikey
207 10
IF(lk2>1.AND.lk2<10)
THEN
208 WRITE(fmt,
'(A,I1,A)')
'(E',lk2,
'.0)'
210 WRITE(fmt,
'(A,I2,A)')
'(E',lk2,
'.0)'
214 READ(key2,fmt,err=990,
END=990)tman
217 20
IF(lk2>1.AND.lk2<10)
THEN
218 WRITE(fmt,
'(A,I1,A)')
'(I',lk2,
')'
220 WRITE(fmt,
'(A,I2,A)')
'(I',lk2,
')'
224 READ(key2,fmt,err=990,
END=990)mcycle
267 READ(iusc3,
'(A)',err=400,
END=400)carte
273 WRITE (iusc3,
'(A)',err=990)
' RUN CONTROL FILE'
274 WRITE (iusc3,
'(A,/)',err=990)
' ----------------'
275 IF(tman==0.0.AND.mcycle==0)
THEN
277 WRITE (iusc3,'(a)
',ERR=990)
278 . ' multidomains -> /cycle not allowed
'
280 WRITE(CARTE,'(a)
')' at current cycle
'
281 ELSEIF(TMAN==0.0)THEN
282 WRITE(CARTE,'(a,i10)
')' at cycle
',MCYCLE
283 ELSEIF(MCYCLE==0)THEN
284 WRITE(CARTE,'(a,g14.7)
')' at time
',TMAN
286 WRITE(CARTE,'(a,g14.7,a,i10)
')' IF time >=
',TMAN,
287 . ' and
IF cycle >=
',MCYCLE
289.OR..OR.
IF(MANIM0==1 MANIM0== 3
290.OR..OR.
. MANIM0==5 MANIM0== 7
291.OR..OR.
. MANIM0==9 MANIM0==11
292.OR.
. MANIM0==13MANIM0==15)
293 . WRITE(IUSC3,'(/a,a)
',ERR=990)' WRITE next plot file
',CARTE
294.OR..OR.
IF(MANIM0== 2MANIM0== 3
295.OR..OR.
. MANIM0== 6MANIM0== 7
296.OR..OR.
. MANIM0==10MANIM0==11
297.OR.
. MANIM0==14MANIM0==15)
298 . WRITE(IUSC3,'(a,a)
',ERR=990)' WRITE next patran files
',CARTE
299.OR..OR.
IF(MANIM0== 4MANIM0== 5
300.OR..OR.
. MANIM0== 6MANIM0== 7
301.OR..OR.
. MANIM0==12MANIM0==13
302.OR.
. MANIM0==14MANIM0==15)
303 . WRITE(IUSC3,'(a,a)
',ERR=990)' WRITE next animation files
',
305.OR..OR.
IF(MANIM0== 8MANIM0== 9
306.OR..OR.
. MANIM0==10MANIM0==11
307.OR..OR.
. MANIM0==12MANIM0==13
308.OR.
. MANIM0==14MANIM0==15)
309 . WRITE(IUSC3,'(a,a)
',ERR=990)' WRITE next output files
',
312 . WRITE(IUSC3,'(a,a)
',ERR=990)' WRITE next restart
',CARTE
314 . WRITE(IUSC3,'(a,a)
',ERR=990)' run stop
',CARTE
316 . WRITE(IUSC3,'(a,a)
',ERR=990)' update h3d file
', CARTE
318 IF (IRAD2R==1) R2R_MFILR=1
337 IF (R2R_MFILR == 1) THEN
342 R2R_CTR(3) = WMCHECK0
343 ELSEIF (R2R_MFILR == 2) THEN
352 IF(NSPMD > 1) CALL SPMD_IBCAST(MFILR,MFILR,1,1,0,2)
358.OR..OR..OR.
IF((SENSORS%ANIM_ID /=0 SENSORS%NANIM /=0 H3D_DATA%N_SENS_H3D > 0)
359.OR..AND.
. ((NCYCLE/NCINP)*NCINP==NCYCLE) (IRAD2R==1 MFILR==1)) THEN
372 TMPMAN(12) = ICTLSTOP0
374 TMPMAN(14) = H3D_DATA%MH3D
376 IF(NSPMD > 1)CALL SPMD_RBCAST(TMPMAN,TMPMAN,1,14,0,2)
378 MDESS = NINT(TMPMAN(1))
379 MREST0 = NINT(TMPMAN(2))
380 MREST = NINT(TMPMAN(3))
381 MSTOP0 = NINT(TMPMAN(4))
382 MSTOP = NINT(TMPMAN(5))
383 MANIM0 = NINT(TMPMAN(6))
384 MANIM = NINT(TMPMAN(7))
385 MCYCLE = NINT(TMPMAN(8))
386 MFILR = NINT(TMPMAN(9))
388 WMCHECK0 = NINT(TMPMAN(11))
389 ICTLSTOP0 = NINT(TMPMAN(12))
390 MH3D0 = NINT(TMPMAN(13))
391 H3D_DATA%MH3D = NINT(TMPMAN(14))
397.AND.
IF(TT>=TMANNCYCLE>=MCYCLE)THEN