[TRNSYS-users] controlling the passage to the next time steps
pierre.jaboyedoff at effinart.ch
pierre.jaboyedoff at effinart.ch
Fri Jul 9 05:35:24 PDT 2021
In trnsys 13.1, i had (long time ago ..) modified the kernel of TRNSYS (see
below).
The reason was to be able to check if the control routine developed was
converging to the correct physical case (e.g. solar, then auxiliary etc
).
If not then i was getting TRNSYS to restart the iteration on the same time
step until the correct control case was obtained.
Has anybody done something similar for TRNSYS 17.2 ?
I have started looking for this, it seems to be located between, exec.for,
trnsys.for, etc
Thanks in advance,
Pierre Jaboyedoff
Head of BEEP PMTU Switzerland (www.beepindia.org <http://www.beepindia.org>
)
EffinArt
Associate
Chemin de Pré-Fleuri 6
Entrance at the back, 3rd floor on the left
CH-1006 Lausanne
Tel : 00 41 21 616 11 00
Mobile : 00 41 79 668 50 88
<mailto:pierre.jaboyedoff at effinart.ch> pierre.jaboyedoff at effinart.ch
-------------------------------------------------------------------------
-------------------------------------------------------------------------
in blockdat
C MODIF PJ BEGIN
COMMON /CHKSTEP/ ireiter, icas, icaschk
COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text
C MODIF PJ END
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
in main
-------------------------------------------------------------------------
c modif pj begin
COMMON /CHKSTEP/ IREITER , icas, icaschk
COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text
c modif pj end
-------------------------------------------------------------------------
C ********************** MAIN SIMULATION LOOP **************************
100 IF (DONE) GO TO 999
CALL CLOCK(TIME,DONE,2)
C modif pj begin
c added label 10001 used for reiter of the time step
10001 IF (NDERIV.EQ.0) THEN
c modif pj end
-------------------------------------------------------------------------
370 CONTINUE
ENDIF
C SWITCH PREDICTED AND CORRECTED VALUES
I = PRED
PRED = CORR
CORR = I
INTG = 2
IF (IRECUR.GT.0) INTG = 3
IF ((IRECUR.GT.0.OR.NCALLS.GT.0).AND.(ICT.EQ.0)) GO TO 200
C ************************************************************
C MODIF PJ BEGIN (LABELED COMMON ADDED IN BLOCKDAT_M.FOR, )
c control_iter retuen a variable reiter (in common labelled CHKSTEP)
C REITER =0 GO ON TO NEXT TIME STEP
C =1 REITER ON THE SAME TIME STEP
call control_iter(time)
if (ireiter .gt. 0) then
ireiter=ireiter+1
icasmain=icas
icaschkm=icaschk
timereit=max(0.,time)
c WRITE(*,*) "reiter ", timereit, icasmain, icaschkm
tsunspm=tsunsp
tsetm=tset
tloadm=tload
tmaxm=tmax
stom=tsto
textm=text
c write (*,*) " tsunsp=", tsunspm, " tset=",tsetm,"
text=",textm
c write (*,*) " tload=", tloadm, " tmax=",tmaxm," tsto=",tsto
c write (*,*) icasmain
c write (*,*) icaschkm
c CALL PRINT(TIME,DONE)
goto 10001
endif
C MODIF PJ END
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
in exec
-------------------------------------------------------------------------
c modif pj begin
COMMON /CHKSTEP/ IREITER, icas, icaschk
c modif pj end
-------------------------------------------------------------------------
110 INFO(7,J) = -1
ELSE
DO 111 J = 1, NUNITS
CALL(J) = CALL1(J)
c modif pj begin
c added info(7,j) =0 for the case where one wants to reiter on the same
c time step
if (ireiter .le. 0) then
INFO(7,J) = -1
else
CALL(J) = .TRUE.
INFO(7,J) = 0
endif
111 continue
c modif pj end
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
In my own control routine
c modif pj begin
COMMON /CHKSTEP/ IREITER, icas, icaschk
COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text
SAVE /sunsp/
c modif pj end
Pierre Jaboyedoff
Head of BEEP PMTU Switzerland (www.beepindia.org)
EffinArt
Associate
Chemin de Pré-Fleuri 6
Entrance at the back, 3rd floor on the left
CH-1006 Lausanne
Tel : 00 41 21 616 11 00
Mobile : 00 41 79 668 50 88
<mailto:pierre.jaboyedoff at effinart.ch> pierre.jaboyedoff at effinart.ch
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.onebuilding.org/pipermail/trnsys-users-onebuilding.org/attachments/20210709/36a3a14b/attachment-0001.html>
More information about the TRNSYS-users
mailing list