<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-CA link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hello,<o:p></o:p></p><p class=MsoNormal>The co-simulator with ESP-r available in TRNSYS 17 and 18 implements something that is similar to what you are trying to do, if I understand correctly. <o:p></o:p></p><p class=MsoNormal>Once TRNSYS has converged for a time step, Type 130 checks that the iterations between the 2 programs have converged, and if that is not the case, Type 130 “forces” TRNSYS to continue iterating at the current time step.<o:p></o:p></p><p class=MsoNormal>Perhaps you can take a look at Type 130 and how it interacts with the Kernel to see whether you can use that for what you are trying to achieve.<o:p></o:p></p><p class=MsoNormal>The part I am not sure to understand is that in the co-simulation case, it makes sense to force additional iterations because the inputs coming from ESP-r will be different so the TRNSYS results after new iterations will be different. In your case, I am not sure what would cause TRNSYS to find different results, but I am probably missing something. <o:p></o:p></p><p class=MsoNormal>In any case, I hope this helps.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Michaël Kummert<o:p></o:p></p><p class=MsoNormal>Polytechnique Montréal<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='mso-fareast-language:EN-CA'>From:</span></b><span lang=EN-US style='mso-fareast-language:EN-CA'> Pierre Jaboyedoff via TRNSYS-users <trnsys-users@lists.onebuilding.org> <br><b>Sent:</b> July 9, 2021 08:35<br><b>To:</b> trnsys-users@lists.onebuilding.org<br><b>Cc:</b> pierre.jaboyedoff@effinart.ch<br><b>Subject:</b> [TRNSYS-users] controlling the passage to the next time steps<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=FR-CH>In trnsys 13.1, i had (long time ago ..) modified the kernel of TRNSYS (see below).<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>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.<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>Has anybody done something similar for TRNSYS 17.2 ?<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>I have started looking for this, it seems to be located between, exec.for, trnsys.for, etc …<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>Thanks in advance,<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-IN style='mso-fareast-language:FR-CH'>Pierre Jaboyedoff<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Head of BEEP PMTU Switzerland (<a href="http://www.beepindia.org">www.beepindia.org</a>)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Effin’Art</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Associate<o:p></o:p></span></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>Chemin de Pré-Fleuri 6<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>Entrance at the back, 3rd floor on the left<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>CH-1006 Lausanne<o:p></o:p></span></b></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Tel : 00 41 21 616 11 00</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Mobile : 00 41 79 668 50 88</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'><a href="mailto:pierre.jaboyedoff@effinart.ch" target="_blank">pierre.jaboyedoff@effinart.ch</a></span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>in blockdat<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>C MODIF  PJ BEGIN<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /CHKSTEP/ ireiter, icas, icaschk<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C MODIF  PJ END<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>in main<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj begin<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /CHKSTEP/ IREITER , icas, icaschk<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj end<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>C ********************** MAIN SIMULATION LOOP **************************<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>100   IF (DONE) GO TO 999<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>      CALL CLOCK(TIME,DONE,2)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C  modif  pj begin<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c added label 10001 used for reiter of the time step<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>10001 IF (NDERIV.EQ.0) THEN<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj end<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>370       CONTINUE<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>         ENDIF<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>C       SWITCH PREDICTED AND CORRECTED VALUES<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        I = PRED<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        PRED = CORR<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        CORR = I<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        INTG = 2<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        IF (IRECUR.GT.0) INTG = 3<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        IF ((IRECUR.GT.0.OR.NCALLS.GT.0).AND.(ICT.EQ.0)) GO TO 200<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>C ************************************************************<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C MODIF  PJ BEGIN (LABELED COMMON ADDED IN BLOCKDAT_M.FOR, )<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c control_iter retuen a variable reiter (in common labelled CHKSTEP)        <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C REITER =0 GO ON TO NEXT TIME STEP<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C        =1 REITER ON THE SAME TIME STEP<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>      call control_iter(time)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                if (ireiter .gt. 0) then<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                ireiter=ireiter+1<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                icasmain=icas<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                               icaschkm=icaschk<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                timereit=max(0.,time)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c              WRITE(*,*) "reiter ", timereit, icasmain, icaschkm<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                tsunspm=tsunsp<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                tsetm=tset<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                tloadm=tload<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                tmaxm=tmax<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                stom=tsto<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                textm=text<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c              write (*,*) "  tsunsp=", tsunspm, "  tset=",tsetm," text=",textm<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c              write (*,*) "  tload=", tloadm, "  tmax=",tmaxm," tsto=",tsto  <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c              write (*,*) icasmain<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c              write (*,*) icaschkm<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c             CALL PRINT(TIME,DONE)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                goto 10001<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                endif<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>C MODIF  PJ END<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>in exec<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj begin<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /CHKSTEP/ IREITER, icas, icaschk <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj end<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>110         INFO(7,J) = -1<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>        ELSE<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>          DO 111 J = 1, NUNITS<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>            CALL(J) = CALL1(J)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj begin<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c added info(7,j) =0 for the case where one wants to reiter on the same<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c time step<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                if (ireiter .le. 0) then<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                      INFO(7,J) = -1<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                else<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                               CALL(J) = .TRUE.<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                      INFO(7,J) = 0<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                endif <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>111   continue      <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj end<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>-------------------------------------------------------------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>In my own control routine<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj begin<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /CHKSTEP/ IREITER, icas, icaschk<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>                SAVE /sunsp/ <o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH>c modif  pj end<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-IN style='mso-fareast-language:FR-CH'>Pierre Jaboyedoff<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:FR-CH'>Head of BEEP PMTU Switzerland (</span><span lang=FR-CH style='mso-fareast-language:FR-CH'><a href="http://www.beepindia.org"><span lang=EN-CA>www.beepindia.org</span></a></span><span style='mso-fareast-language:FR-CH'>)<o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Effin’Art</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Associate<o:p></o:p></span></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>Chemin de Pré-Fleuri 6<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>Entrance at the back, 3rd floor on the left<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=FR-CH style='mso-fareast-language:FR-CH'>CH-1006 Lausanne<o:p></o:p></span></b></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Tel : 00 41 21 616 11 00</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'>Mobile : 00 41 79 668 50 88</span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH style='mso-fareast-language:FR-CH'><a href="mailto:pierre.jaboyedoff@effinart.ch" target="_blank">pierre.jaboyedoff@effinart.ch</a></span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><span lang=FR-CH><o:p> </o:p></span></p></div></body></html>