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

Re: [TRNSYS-users] TRNSYS-users Digest, Vol 57, Issue 9



Leen,

Take a look at the "subroutine calchtc" of the type56 code, I think this is what you need to change or understand.

P.S: hope you know German

good luck,

Mariana


--- On Sun, 6/9/09, trnsys-users-request@cae.wisc.edu <trnsys-users-request@cae.wisc.edu> wrote:

From: trnsys-users-request@cae.wisc.edu <trnsys-users-request@cae.wisc.edu>
Subject: TRNSYS-users Digest, Vol 57, Issue 9
To: trnsys-users@cae.wisc.edu
Date: Sunday, 6 September, 2009, 8:06 PM

Send TRNSYS-users mailing list submissions to
    trnsys-users@cae.wisc.edu

To subscribe or unsubscribe via the World Wide Web, visit
    https://www-old.cae.wisc.edu/mailman/listinfo/trnsys-users
or, via email, send a message with subject or body 'help' to
    trnsys-users-request@cae.wisc.edu

You can reach the person managing the list at
    trnsys-users-owner@cae.wisc.edu

When replying, please edit your Subject line so it is more specific
than "Re: Contents of TRNSYS-users digest..."
Today's Topics:

   1. changing convection coefficients in a simulation (leen peeters)
_______________________________________________
TRNSYS-users mailing list
TRNSYS-users@cae.wisc.edu
https://www-old.cae.wisc.edu/mailman/listinfo/trnsys-users

      SUBROUTINE CALHTC(TIME,XIN,INP,INFO)
C*******************************************************************************
C  THIS SUBROUTINE CALCULATES FOR ALL SURFACES WITHIN A ZONE 
C  HEAT TRANSFER COEFFICIENTS FOR THE INSIDE SURFACE AND 
C  THE CORRESPONDING OUTSIDE SURFACE OF THAT WALL OR WINDOW
C
C  THIS ROUTINE IS CALLED BY: TYPE56
C  THIS ROUTINE CALLS: VALUE
C
C  ADAPTED FROM TYPE80 IN 2004 BY S.HOLST.
C*******************************************************************************
Cak V16
      USE TrnsysData, ONLY:LUR,LUW,IFORM,LUK 
      use set_unitNo

Cak V16
      USE BPROPS
      USE VAR
      USE BGEN
      USE BREG
      USE BSURFACE
      USE BTYPES
      USE BTRANS
	USE BMATRIX

* SH:15.2.2004 variable declaration -- begin --
      implicit none
*  dummy arguments
Cak V16
c      real TIME
Cak V16
*  local variables
      integer I
      integer N1
      integer N2
      integer NS
      integer N
      integer NTYPE
	integer iHTC
	real HTC
	real VALUE
	real dTSA
	real KFLOORUP
	real EFLOORUP
	real KFLOORDOWN 
	real EFLOORDOWN
	real KCEILUP
	real ECEILUP 
	real KCEILDOWN 
	real ECEILDOWN 
	real KVERTICAL 
	real EVERTICAL
	

*  common block variables
*  /LUNITS/
Cak V16
c      integer LUK
c      integer IFORM
c      integer LUW
c      integer LUR
* SH:15.2.2004 variable declaration -- end --
c      DOUBLE PRECISION XIN
c ak      INTEGER*4 INP,INFO
      INTEGER*4 INP
c ak      DIMENSION XIN(*),INFO(15)
      real(8), intent(in)    :: XIN(*)
      integer, intent(inout) :: info(15)
      real(8)                :: time


!TW      integer                :: unitNo, typeNo
      CHARACTER(len=500) Message


c ak      COMMON /LUNITS/ LUR,LUW,IFORM,LUK
Cak V16

CSH 03/04 set parameters
CSH	KFLOORUP=2.0; EFLOORUP=0.31; KFLOORDOWN=1.08; EFLOORDOWN=0.31
CSH	KCEILUP=1.08; ECEILUP=0.31;  KCEILDOWN=2.0;   ECEILDOWN=0.31 
CSH	KVERTICAL=1.6; EVERTICAL=0.3

	KFLOORUP=HTC_COEF(1)/3.6;   EFLOORUP=HTC_COEF(2) 
	KFLOORDOWN=HTC_COEF(3)/3.6; EFLOORDOWN=HTC_COEF(4)
	KCEILUP=HTC_COEF(5)/3.6;    ECEILUP=HTC_COEF(6)  
	KCEILDOWN=HTC_COEF(7)/3.6;  ECEILDOWN=HTC_COEF(8) 
	KVERTICAL=HTC_COEF(9)/3.6;  EVERTICAL=HTC_COEF(10)

Cak V16
!TW      unitNo = info(1)
!TW      typeNo = info(2)
Cak V16


      DO I=1,NTZONE !loop all (regular+fictive) zones
C *** Walls ***
       IF(NZWALL(I).GT.0) THEN ! if walls
        N1=IPWALL(I)
        N2=N1+NZWALL(I)-1
        DO N=N1,N2 ! all walls
          NS=NSWALL(N)
          NTYPE=NSTYPE(NS)
	    IF (NFACE(NS).EQ.-1) THEN ! back side of adj/int wall
		   HTC=HCO(NTYPE) 		  
		  ELSE ! front side of adj/int or other wall
		   HTC=HCI(NTYPE)
		ENDIF ! back or front side of wall   
          IF (HTC.GT.-5500) THEN ! standard HTC calc for inside surface
		   HTCI(NS)=VALUE(TIME,HTC,INP,XIN)
CSH 08/04 KD
             IF (HTC.EQ.-4000) THEN ! gap calculation of active layer kuehldecke
	         HTCI(NS)=UC1(NS) ! use stored 1/R1 value from kuehldecken calc for gap calculation
		   ENDIF ! gap calculation of active layer kuehldecke		   
CSH 08/04 KD
            ELSE ! automatic HTC calc for inside surface
	       iHTC=INT(HTC-0.1)
	       dTSA=TSI(NS)-TBAR(I)
		   
		   IF (iHTC.EQ.-6000) THEN ! floor surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow up
                 HTCI(NS)=MAX(1.,KHTC(NS)*KFLOORUP*(ABS(dTSA))
     .                           **EFLOORUP)*3.6           
                ELSE ! floor heat flow down
                 HTCI(NS)=MAX(1.,KHTC(NS)*KFLOORDOWN*(ABS(dTSA))
     .                           **EFLOORDOWN)*3.6           
               ENDIF ! heat flow direction
	  	   ENDIF ! floor surface   
         	   
		   IF (iHTC.EQ.-7000) THEN ! ceiling surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow down
                 HTCI(NS)=MAX(1.,KHTC(NS)*KCEILDOWN*(ABS(dTSA))
     .                           **ECEILDOWN)*3.6           
                ELSE ! floor heat flow up
                 HTCI(NS)=MAX(1.,KHTC(NS)*KCEILUP*(ABS(dTSA))
     .                           **ECEILUP)*3.6           
               ENDIF ! heat flow direction
		   ENDIF ! ceiling surface   

		   IF (iHTC.EQ.-8000) THEN ! vertical surface
               HTCI(NS)=MAX(1.,KHTC(NS)*KVERTICAL*(ABS(dTSA))
     .                           **EVERTICAL)*3.6           
		   ENDIF ! vertical surface
         	   
		   IF (iHTC.LT.-8000) THEN ! error 
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN
c              WRITE(LUW,1600) INFO(1),INFO(2),NS  ! error in HTC calc for surface NS
c              CALL MYSTOP (1001)
c              RETURN  
cak V16

             ENDIF ! error in HTC calc 
          ENDIF ! standard or automatic HTC calcs for inside surface
	    IF (NFACE(NS).EQ.-1) THEN ! back side of adj/int wall
		   HTC=HCI(NTYPE) 		  
		  ELSE ! front side of adj/int or other wall
		   HTC=HCO(NTYPE)
		ENDIF ! back or front side of wall   
		IF (HTC.GT.-5500) THEN ! standard HTC calc for outside surface
		   HTCO(NS)=VALUE(TIME,HTC,INP,XIN)
            ELSE ! automatic HTC calc for outside surface (if adj or int surface)
		   iHTC=INT(HTC-0.1)
             SELECT CASE (CONTYPE(NS)) ! which wall type
              CASE (1,4) ! external or boundary
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!:
     & Automatic heat transfer calculation
     & is only allowed on surfaces within a zone. 
     & Please check building input file (.bui)!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN
c               WRITE(LUW,1600) INFO(1),INFO(2),NS  ! no automatic HTC calc on outside surf of ext or bound wall 
c               CALL MYSTOP (1001)
c               RETURN  
cak V16
              CASE (2)  ! adjacent
	         dTSA=TSO(NS)-TBAR(INT(BOUCON(NS)/1000.))
              CASE (3)  ! internal 
	         dTSA=TSO(NS)-TBAR(I)
              CASE (5)  ! identical boundaries
	         dTSA=TSO(NS)-TBAR(I)
             END SELECT ! which wall type
		   
		   IF (iHTC.EQ.-6000) THEN ! floor surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow up
                 HTCO(NS)=MAX(1.,KHTC(NS)*KFLOORUP*(ABS(dTSA))
     .                           **EFLOORUP)*3.6           
                ELSE ! floor heat flow down
                 HTCO(NS)=MAX(1.,KFLOORDOWN*(ABS(dTSA))**EFLOORDOWN)*3.6           
               ENDIF ! heat flow direction
	  	   ENDIF ! floor surface   
         	   
		   IF (iHTC.EQ.-7000) THEN ! ceiling surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow down
                 HTCO(NS)=MAX(1.,KHTC(NS)*KCEILDOWN*(ABS(dTSA))
     .                           **ECEILDOWN)*3.6           
                ELSE ! floor heat flow up
                 HTCO(NS)=MAX(1.,KHTC(NS)*KCEILUP*(ABS(dTSA))
     .                           **ECEILUP)*3.6           
               ENDIF ! heat flow direction
		   ENDIF ! ceiling surface   

		   IF (iHTC.EQ.-8000) THEN ! vertical surface
               HTCO(NS)=MAX(1.,KHTC(NS)*KVERTICAL*(ABS(dTSA))
     .                           **EVERTICAL)*3.6           
		   ENDIF ! vertical surface
         	   
		   IF (iHTC.LT.-8000) THEN ! error 
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!:
     & Automatic heat transfer calculation
     & is only allowed on surfaces within a zone. 
     & Please check building input file (.bui)!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN
c              WRITE(LUW,1600) INFO(1),INFO(2),NS  ! error in HTC calc for surface NS
c              CALL MYSTOP (1001)
c              RETURN  
cak V16
             ENDIF ! error in HTC calc 
         ENDIF ! standard or automatic HTC calcs for outside surface

       ENDDO ! all walls
      ENDIF ! if walls

C *** Windows ***
       IF(NZWIN(I).GT.0) THEN ! if windows
        N1=IPWIN(I)
        N2=N1+NZWIN(I)-1
        DO N=N1,N2 ! all windows
         NS=NSWIN(N)
         NTYPE=NSTYPE(NS)
	   IF (NFACE(NS).EQ.-1) THEN ! back side of int window
	     HTC=DWIN(3,NTYPE) 		  
	    ELSE ! front side of int or external window
	     HTC=DWIN(2,NTYPE)
	   ENDIF ! back or front side of window   
         IF (HTC.GT.-5500) THEN ! standard HTC calc inside glass surface
		  HTCI(NS)=VALUE(TIME,DWIN(2,NTYPE),INP,XIN)
           ELSE ! automatic HTC calc
	      iHTC=INT(HTC-0.1)
	      dTSA=TSI(NS)-TBAR(I)
		  IF (iHTC.EQ.-6000) THEN ! floor surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow up
                 HTCI(NS)=MAX(1.,KHTC(NS)*KFLOORUP*(ABS(dTSA))
     .                           **EFLOORUP)*3.6           
                ELSE ! floor heat flow down
                 HTCI(NS)=MAX(1.,KHTC(NS)*KFLOORDOWN*(ABS(dTSA))
     .                           **EFLOORDOWN)*3.6           
               ENDIF ! heat flow direction
	  	   ENDIF ! floor surface   
         	   
		   IF (iHTC.EQ.-7000) THEN ! ceiling surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow down
                 HTCI(NS)=MAX(1.,KHTC(NS)*KCEILDOWN*(ABS(dTSA))
     .                           **ECEILDOWN)*3.6           
                ELSE ! floor heat flow up
                 HTCI(NS)=MAX(1.,KHTC(NS)*KCEILUP*(ABS(dTSA))
     .                           **ECEILUP)*3.6           
               ENDIF ! heat flow direction
		   ENDIF ! ceiling surface   
		   
		   IF (iHTC.EQ.-8000) THEN ! vertical surface
               HTCI(NS)=MAX(1.,KHTC(NS)*KVERTICAL*(ABS(dTSA))
     .                           **EVERTICAL)*3.6           
		  ENDIF ! vertical surface
         	   
		   IF (iHTC.LT.-8000) THEN ! error 
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!:
     & Automatic heat transfer calculation
     & is only allowed on surfaces within a zone. 
     & Please check building input file (.bui)!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN
c              WRITE(LUW,1600) INFO(1),INFO(2),NS  ! error in HTC calc for surface NS
c              CALL MYSTOP (1001)
c              RETURN  
cak V16
             ENDIF ! error in HTC calc 
          ENDIF ! standard or automatic HTC calcs for inside glass surface

	   IF (NFACE(NS).EQ.-1) THEN ! back side of int window
	     HTC=DWIN(2,NTYPE) 		  
	    ELSE ! front side of int or external window
	     HTC=DWIN(3,NTYPE)
	   ENDIF ! back or front side of window   
         IF (HTC.GT.-5500) THEN ! standard HTC calc outside glass surface
		  HTCO(NS)=VALUE(TIME,HTC,INP,XIN)
           ELSE ! automatic HTC calc
            SELECT CASE (CONTYPE(NS)) ! which window type
              CASE (1) ! external 
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!:
     & Automatic heat transfer calculation
     & is only allowed on surfaces within a zone. 
     & Please check building input file (.bui)!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN

c               WRITE(LUW,1600) INFO(1),INFO(2),NS  ! no automatic HTC calc on outside surf of ext window
c               CALL MYSTOP (1001)
c               RETURN  
              CASE (2)  ! adjacent
	         iHTC=INT(HTC-0.1)
	         dTSA=TSI(NADJ(NS))-TBAR(INT(BOUCON(NS)/1000.))
            END SELECT ! which window type
		   
		   IF (iHTC.EQ.-6000) THEN ! floor surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow up
                 HTCO(NS)=MAX(1.,KHTC(NS)*KFLOORUP*(ABS(dTSA))
     .                           **EFLOORUP)*3.6           
                ELSE ! floor heat flow down
                 HTCO(NS)=MAX(1.,KHTC(NS)*KFLOORDOWN*(ABS(dTSA))
     .                           **EFLOORDOWN)*3.6           
               ENDIF ! heat flow direction
	  	   ENDIF ! floor surface   
         	   
		   IF (iHTC.EQ.-7000) THEN ! ceiling surface
	         IF (dTSA.GT.0.) THEN ! floor heat flow down
                 HTCO(NS)=MAX(1.,KHTC(NS)*KCEILDOWN*(ABS(dTSA))
     .                           **ECEILDOWN)*3.6           
                ELSE ! floor heat flow up
                 HTCO(NS)=MAX(1.,KHTC(NS)*KCEILUP*(ABS(dTSA))
     .                           **ECEILUP)*3.6           
               ENDIF ! heat flow direction
		   ENDIF ! ceiling surface   

		   IF (iHTC.EQ.-8000) THEN ! vertical surface
               HTCO(NS)=MAX(1.,KHTC(NS)*KVERTICAL*(ABS(dTSA))
     .                         **EVERTICAL)*3.6           
		   ENDIF ! vertical surface
         	   
		   IF (iHTC.LT.-8000) THEN ! error 
cak V16
      write(Message,'("Error in automatic heat transfer calculation 
     & for surface",i4," or its adjacent surface!:
     & Automatic heat transfer calculation
     & is only allowed on surfaces within a zone. 
     & Please check building input file (.bui)!")') NS
          CALL MESSAGES(-1,Message,'FATAL',unitNo,typeNo)
          RETURN
c              WRITE(LUW,1600) INFO(1),INFO(2),NS  ! error in HTC calc for surface NS
c              CALL MYSTOP (1001)
c              RETURN  
             ENDIF ! error in HTC calc 
         ENDIF ! standard or automatic HTC calcs for outside glass surface

        ENDDO ! all windows
       ENDIF ! if windows

      ENDDO !loop all regular+fictive zones
      RETURN
C1600  FORMAT(//,1X,'***** ERROR *****',8X,/1X,
C     .'UNIT ',I3,' TYPE ',I3,' MULTIZONE BUILDING',/1X,
C     .'ERROR IN AUTOMATIC HEAT TRANSFER CALCULATION FOR SURFACE ',I4,
C     .' OR ITS ADJACENT SURFACE')

      END ! CALHTC