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

Re: Problem of "out array exceeded"



Dear TRNSYS users,

I think that the easiest solution to the problem is that if you have a Fortran compiler, you can increase the limit of 2000 outputs in the param.inc file and recompile TRNSYS. If you do not have a compiler you can contact your TRNSYS distributor and they should be able to make and send you a new trnlib.dll with the increased limits. 

To answer your other questions about the code in rcheck.for and proc.for, the OUT( ) array, as you have determined is a global array that contains the outputs of all the components in a simulation. Each Type in the simulation has a line in it that reserves some space in the OUT( ) array - if they do not reserve space for themselves, then the Type is assigned a default number of 10 outputs. Once the TRNSYS kernal has cycled through all the Types, it then checks to see if there are any printing devices (Type 25 through Type 29). Because these Types have to interact with the TRNSYS kernal a little bit differently from regular Types, they are contained inside the kernal. The code that you quoted below determines the number of OUT( ) array spots that are required for the printing and output devices in the simulation. 

kind regards,
  David




I have got a problem in TRNSYS input file and may I have your advice please. 

There are totally 10 nos. of PIPE (type 31) connected by Mixers or Diverters in my input file.  In running the simulation, an error message of "The output storage of the out array has been exceeded" appears and the simulation cannot start.  When I delete all the pipes (type 31) and just connect the mixers and diverters directly to form the HVAC water circuit, the error "The output storage of the out array has been exceeded" disappears and the simulation can go on. 

In tackling this "The output storage of the out array has been exceeded" problem, I have gone through some of the *.for files.  

(In RCHECK.for) 
IF ((K1+NUMOUT).GT.NMOUT), 

then the following will be printed on screen: 

5000  FORMAT(//,1X,'***** ERROR *****',8X,'TRNSYS ERROR # ',I3,/1X,'THE 
     1 OUTPUT STORAGE OF THE OUT ARRAY HAS BEEN EXCEEDED') 

NMOUT is set to 2000 by TRNSYS (PARAM.INC) and, 
NUMOUT=MAX(20,INFO2(6)), in the case of PIPE (type 31), NUMOUT is 6. 

The problem comes from the value of K1 which make the output storage greater than 2000. 

The value of K1 is: K1=IOUTPT(INUNIT) where INUNIT=INFO2(1)=Unit Number. 

(In Proc.for) 
          IF ((I.GE.8 .AND. I.LE.20).OR.(I.GE.35.AND.I.LE.41)) THEN 
            IOUTPT(IU) = ILOUT + 1 
            IF (I.GE.13) THEN 
          ILOUT = ILOUT + INPUTS 
            ELSE 
CNB        ILOUT = ILOUT + 20 
          ILOUT = ILOUT + 60 
            END IF 

My question is that I cannot understand the meanings of IOUTPT and IU which causes the output storage greater than 2000. 


Thanks a lot! 

Apple Chan 
13 Feb. 2003 

</blockquote></x-html> 

********************************************************************************* 
Thermal Energy System Specialists (TESS) 
David BRADLEY                           2916 Marketplace Drive - Suite 104 
Project Engineer                           Madison, WI 53719 
Phone: (608) 274-2577 USA 
Fax: (608) 278-1475 
E-mail: bradley@tess-inc.com 
Web Page:          www.tess-inc.com

"Providing software solutions for today's energy engineering projects" 
**************************************************************************** *****