[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE[3]: FW: Re: [TRNSYS-users] Bug in TYPE74



Dear David,

Look at the sentence ALF=ALF*RHOEFF, just before line 60. This is the
problem. As the program executes it at every iteration, the value of ALF
changes incorrectly:

ALF=ALF*RHOEFF 
ALF=ALF*RHOEFF*RHOEFF ......

The best way to fix this bug is:
ALF=par(10)*RHOEFF

Yesterday I fixed it in the following way:
IF(INFO(1).EQ.IUNIT) GO TO 60
IUNIT=INFO(1)
 *** Parameter reading and calculations ****

At TIME=TIME0, IUNIT=0

(Sorry, but I did not explain the problem rightly in the former e-mail)

Best regards

Fernando.


>Dear Fernando,
>  It is inefficient to recalculate the characteristic parameters at 
>every iteration (as is done in the component) because if you only have 
>one instance in the input file, then there is no need to recalculate 
>those values at each time step. You need only read the parameters once 
>and then calculate those lines between the ENDIF and line 60 once. If 
>those lines were brought inside the ENDIF then you would also want to 
>copy the lines up to the section between
>
>      !initialize storage variables
>        RHOD=-1.
>      EFFD=0.
>        TALN=TAU_ALPHA(NG,EFFD,XKL,RI,ALF,RHOD)
>      stored(1) = RHOD
>      stored(2) = TALN
>      CALL setStorageVars(NStorage,stored,INFO)
>
>and
>
>      !set the outputs to 0
>        OUT(1) = XIN(1) 
>      OUT(2:NO) = 0.d0 !zero remaining outputs
>        RETURN 1         !the first timestep is for initialization - exit.
>
>as well because if there is only one instance of Type74, and if the 
>ENDIF had been moved down to line 60 then those lines would never be 
>executed because INFO(1) would always equal IUNIT. If you have an input 
>file that is giving you results that you don't understand and you have 
>tracked it to Type74, please feel free to send it to me. You may be 
>right that there is a problem although I do not see one from looking at 
>the structure of the code in there.
>Kind regards,
>  David
>
>Fernando Domínguez Muñoz wrote:
>
>>Dear David,
>>
>>the (INFO(1).NE.IUNIT) check is right. The problem comes from the end
>>point of the IF statement:
>>
>>c      IF(INFO(1).NE.IUNIT) THEN
>>        !recall the UNIT and TYPE number
>>        IUNIT = INFO(1)
>>	ITYPE = INFO(2)
>>        !read parameter values
>>	NS     = JFIX(PAR(1)+0.1)
>>        XNS    = DBLE(NS)
>>
>>         ..........
>>         ..........
>>
>>        RI     = PAR(12)
>>        XKL    = PAR(13)
>>
>>c	ENDIF  <---------- THIS
>>
>>C    RETRIEVE STORED VARIABLES
>>      CALL getStorageVars(NStorage,stored,INFO)
>>
>>I think that the end point of this loop must be the line number 60,
>>where the program starts reading the inputs. But, the characteristic
>>parameters of the unit are re-calculated on every interation, and
>>consequently its values turn incorrect.
>>
>>Best regards
>>
>>Fernando.
>>
>>  
>>
>>>Dear Fernando,
>>> The line
>>>
>>>IF(INFO(1).NE.IUNIT) THEN
>>>
>>>is correct. The point of the line is to handle the case in which there 
>>>is more than one instance of Type74 in the simulation. The variable 
>>>INFO(1) is always the current instance's UNIT number (specified in the 
>>>input file). At each time that the Type is called, the value of INFO(1) 
>>>is stored as a local variable. In this way, if ever INFO(1) and IUNIT do 
>>>not have the same value, then it can only be because a different 
>>>instance of the component has been simulated. If a different instance 
>>>has been simulated, then the component's parameters should be reread and 
>>>reset to local variables.
>>>
>>>In December 2004, a bug fix was made in that component. If your version 
>>>does not have the comment:
>>>
>>>C  12/02/2004 - JWT - Fixed an error with storing variables and added 
>>>the first call to Tau_Alpha
>>>
>>>in the "Revision History" near the top of the file Type74.for then you 
>>>should contact your distributor to get the latest version.
>>>Kind regards,
>>> David
>>>
>>>Fernando Domínguez Muñoz wrote:
>>>
>>>    
>>>
>>>>Dear all,
>>>>
>>>>I think I have found a bug in TYPE74 (parabolic concentrator solar
>>>>collector).
>>>>
>>>>Where says (Line 207):
>>>>
>>>>     IF(INFO(1).NE.IUNIT) THEN
>>>>
>>>>Should said:
>>>>
>>>>     IF(INFO(1).NE.IUNIT) GO TO 60
>>>>
>>>>Best regards.
>>>>
>>>>Fernando Domínguez Muñoz
>>>>University of Málaga (Spain)
>>>>_______________________________________________
>>>>TRNSYS-users mailing list
>>>>TRNSYS-users@engr.wisc.edu
>>>>https://www.cae.wisc.edu/mailman/listinfo/trnsys-users
>>>> 
>>>>
>>>>      
>>>>
>>_______________________________________________
>>TRNSYS-users mailing list
>>TRNSYS-users@engr.wisc.edu
>>https://www.cae.wisc.edu/mailman/listinfo/trnsys-users
>>  
>>