<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.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@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=FR-CH link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>In trnsys 13.1, i had (long time ago ..) modified the kernel of TRNSYS (see below).<o:p></o:p></p><p class=MsoNormal>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></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Has anybody done something similar for TRNSYS 17.2 ?<o:p></o:p></p><p class=MsoNormal>I have started looking for this, it seems to be located between, exec.for, trnsys.for, etc …<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks in advance,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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 (<a href="http://www.beepindia.org">www.beepindia.org</a>)<o:p></o:p></span></p><p class=MsoNormal><span 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 style='mso-fareast-language:FR-CH'>Associate<o:p></o:p></span></p><p class=MsoNormal><b><span style='mso-fareast-language:FR-CH'>Chemin de Pré-Fleuri 6<o:p></o:p></span></b></p><p class=MsoNormal><b><span 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 style='mso-fareast-language:FR-CH'>CH-1006 Lausanne<o:p></o:p></span></b></p><p class=MsoNormal><span 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 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 style='mso-fareast-language:FR-CH'><a href="mailto:pierre.jaboyedoff@effinart.ch" target="_blank"><span style='color:#0563C1'>pierre.jaboyedoff@effinart.ch</span></a></span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></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><p class=MsoNormal><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><p class=MsoNormal><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><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>in blockdat<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>C MODIF  PJ BEGIN<o:p></o:p></p><p class=MsoNormal>                COMMON /CHKSTEP/ ireiter, icas, icaschk<o:p></o:p></p><p class=MsoNormal>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text <o:p></o:p></p><p class=MsoNormal>C MODIF  PJ END<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><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>in main<o:p></o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>c modif  pj begin<o:p></o:p></p><p class=MsoNormal>                COMMON /CHKSTEP/ IREITER , icas, icaschk<o:p></o:p></p><p class=MsoNormal>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text<o:p></o:p></p><p class=MsoNormal>c modif  pj end<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><p class=MsoNormal>C ********************** MAIN SIMULATION LOOP **************************<o:p></o:p></p><p class=MsoNormal>100   IF (DONE) GO TO 999<o:p></o:p></p><p class=MsoNormal>      CALL CLOCK(TIME,DONE,2)<o:p></o:p></p><p class=MsoNormal>C  modif  pj begin<o:p></o:p></p><p class=MsoNormal>c added label 10001 used for reiter of the time step<o:p></o:p></p><p class=MsoNormal>10001 IF (NDERIV.EQ.0) THEN<o:p></o:p></p><p class=MsoNormal>c modif  pj end<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><p class=MsoNormal>370       CONTINUE<o:p></o:p></p><p class=MsoNormal>         ENDIF<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>C       SWITCH PREDICTED AND CORRECTED VALUES<o:p></o:p></p><p class=MsoNormal>        I = PRED<o:p></o:p></p><p class=MsoNormal>        PRED = CORR<o:p></o:p></p><p class=MsoNormal>        CORR = I<o:p></o:p></p><p class=MsoNormal>        INTG = 2<o:p></o:p></p><p class=MsoNormal>        IF (IRECUR.GT.0) INTG = 3<o:p></o:p></p><p class=MsoNormal>        IF ((IRECUR.GT.0.OR.NCALLS.GT.0).AND.(ICT.EQ.0)) GO TO 200<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>C ************************************************************<o:p></o:p></p><p class=MsoNormal>C MODIF  PJ BEGIN (LABELED COMMON ADDED IN BLOCKDAT_M.FOR, )<o:p></o:p></p><p class=MsoNormal>c control_iter retuen a variable reiter (in common labelled CHKSTEP)        <o:p></o:p></p><p class=MsoNormal>C REITER =0 GO ON TO NEXT TIME STEP<o:p></o:p></p><p class=MsoNormal>C        =1 REITER ON THE SAME TIME STEP<o:p></o:p></p><p class=MsoNormal>      call control_iter(time)<o:p></o:p></p><p class=MsoNormal>                if (ireiter .gt. 0) then<o:p></o:p></p><p class=MsoNormal>                 ireiter=ireiter+1<o:p></o:p></p><p class=MsoNormal>                icasmain=icas<o:p></o:p></p><p class=MsoNormal>                               icaschkm=icaschk<o:p></o:p></p><p class=MsoNormal>                timereit=max(0.,time)<o:p></o:p></p><p class=MsoNormal>c              WRITE(*,*) "reiter ", timereit, icasmain, icaschkm<o:p></o:p></p><p class=MsoNormal>                tsunspm=tsunsp<o:p></o:p></p><p class=MsoNormal>                tsetm=tset<o:p></o:p></p><p class=MsoNormal>                tloadm=tload<o:p></o:p></p><p class=MsoNormal>                tmaxm=tmax<o:p></o:p></p><p class=MsoNormal>                stom=tsto<o:p></o:p></p><p class=MsoNormal>                textm=text<o:p></o:p></p><p class=MsoNormal>c              write (*,*) "  tsunsp=", tsunspm, "  tset=",tsetm," text=",textm<o:p></o:p></p><p class=MsoNormal>c              write (*,*) "  tload=", tloadm, "  tmax=",tmaxm," tsto=",tsto  <o:p></o:p></p><p class=MsoNormal>c              write (*,*) icasmain<o:p></o:p></p><p class=MsoNormal>c              write (*,*) icaschkm<o:p></o:p></p><p class=MsoNormal>c             CALL PRINT(TIME,DONE)<o:p></o:p></p><p class=MsoNormal>                goto 10001<o:p></o:p></p><p class=MsoNormal>                endif<o:p></o:p></p><p class=MsoNormal>C MODIF  PJ END<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><p class=MsoNormal><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><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>in exec<o:p></o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>c modif  pj begin<o:p></o:p></p><p class=MsoNormal>                COMMON /CHKSTEP/ IREITER, icas, icaschk <o:p></o:p></p><p class=MsoNormal>c modif  pj end<o:p></o:p></p><p class=MsoNormal>-------------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>110         INFO(7,J) = -1<o:p></o:p></p><p class=MsoNormal>        ELSE<o:p></o:p></p><p class=MsoNormal>          DO 111 J = 1, NUNITS<o:p></o:p></p><p class=MsoNormal>            CALL(J) = CALL1(J)<o:p></o:p></p><p class=MsoNormal>c modif  pj begin<o:p></o:p></p><p class=MsoNormal>c added info(7,j) =0 for the case where one wants to reiter on the same<o:p></o:p></p><p class=MsoNormal>c time step<o:p></o:p></p><p class=MsoNormal>                if (ireiter .le. 0) then<o:p></o:p></p><p class=MsoNormal>                      INFO(7,J) = -1<o:p></o:p></p><p class=MsoNormal>                else<o:p></o:p></p><p class=MsoNormal>                               CALL(J) = .TRUE.<o:p></o:p></p><p class=MsoNormal>                      INFO(7,J) = 0<o:p></o:p></p><p class=MsoNormal>                endif <o:p></o:p></p><p class=MsoNormal>111   continue      <o:p></o:p></p><p class=MsoNormal>c modif  pj end<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><p class=MsoNormal><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><p class=MsoNormal>In my own control routine<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>c modif  pj begin<o:p></o:p></p><p class=MsoNormal>                 COMMON /CHKSTEP/ IREITER, icas, icaschk<o:p></o:p></p><p class=MsoNormal>                COMMON /sunsp/ tsunsp, tset, tmax, tload, tsto, text<o:p></o:p></p><p class=MsoNormal>                SAVE /sunsp/ <o:p></o:p></p><p class=MsoNormal>c modif  pj end<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><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 (www.beepindia.org)<o:p></o:p></span></p><p class=MsoNormal><span 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 style='mso-fareast-language:FR-CH'>Associate<o:p></o:p></span></p><p class=MsoNormal><b><span style='mso-fareast-language:FR-CH'>Chemin de Pré-Fleuri 6<o:p></o:p></span></b></p><p class=MsoNormal><b><span 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 style='mso-fareast-language:FR-CH'>CH-1006 Lausanne<o:p></o:p></span></b></p><p class=MsoNormal><span 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 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 style='mso-fareast-language:FR-CH'><a href="mailto:pierre.jaboyedoff@effinart.ch" target="_blank"><span style='color:#0563C1'>pierre.jaboyedoff@effinart.ch</span></a></span><span lang=EN-IN style='mso-fareast-language:FR-CH'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>