Professor Diomar Cesar Lobao

Universidade Federal Fluminense-Volta Redonda, RJ, Brasil

Diomar Cesar


Dept. Ciências Exatas - Exact Science Dept.

Search

htcoef2.f

      program htcoef2
c
c       John Mahaffy,  Penn State University, CmpSc 201 Example
c       1/26/96
c
      implicit none
      real k,D,h,Re,Pr
      real htc
      real anum
c
c    Calculate an approximation for heat transfer coefficients
c    in a 1 inch pipe for several different Reynolds numbers
c
c   h    -  heat transfer coefficient ( w/m**2/K)'
c   k   -  conductivity ( w/m/K)'
c   D   -  hydraulic diameter (m)
c   Re  -  Reynolds number
c
      data k,D,Pr/0.617,0.0254,1.0/
c
c     Just to prove a point, I'm going to initialize the variable
c     called anum to 100 here.  Watch what happens to the value
c     of the variable with the same name in the function htc,
c     the subroutine output, and here.
c
      anum=100.
c
c    Calculate and print Heat Transfer Coefficients for several
c    Reynolds numbers.
c
      Re=10.
      h=htc(Re,D,k,Pr)
      call output (Re,h)
c
c    Notice that I can use constants as arguments to subprograms
c
      h=htc(100.,D,k,Pr)
      call output( 100., h)
c
c    I can also use functions within the arguments to subprograms
c
      call output (1000.,htc(1000.,D,k,Pr))
c
c    Watch what happens if the data type of my argument in the calling
c    sequence doesn't match the data type of the corresponding element
c    of the subprogram's argument list.
c    (I'm incorrectly using integer "10000" instead of 1.0e4 or 10000.0)
c
      h=htc(10000,D,k,Pr)
      call output(10000,h)
c
c    Although I set the value of variables called "anum" within htc and
c    output, the value of "anum" in the main program remains unchanged
c    The name "anum" represents a different memory location in each section
c    of the program.
c
c
      print *,'     In main program      anum = ',anum
c
      stop
      end
c
      function htc(Re,Hd,k,Pr)
c
c    Calculate a heat transfer coefficient based on the maximum of the
c    Laminar and Turbulent coefficients.  The turbulent coefficient is
c    obtained from a Dittus-Boelter correlation
c
c    Notice that the variable names within the function do not have to
c    match the argument names in the calling sequence where the function
c    is used.  Unless you take special measures, the Fortran compiler
c    makes no connection between variable names in the main program
c    and in functions or subroutines.  At this point the only way that you
c    can get the main program and subprograms to agree that two variable
c    names represent the same location in computer memory is by alligning
c    those names in the same position in appropriate calling sequences and
c    subprogram argument lists.
c
c
      implicit none
      real Re,k,Hd,Pr,htc,Nulam,Nuturb
      real anum
c
c   htc  -  heat transfer coefficient ( w/m**2/K)'
c   Nulam - laminar Nusselt number
c   Nuturb - Turbulent Nusselt number (Dittus-Boelter correlation)
c   k   -  conductivity ( w/m/K)'
c   Hd  -  hydraulic diameter (m)
c   Re  -  Reynolds number
c   Pr  -  Prandl number
c
      data Nulam / 4.0/
c
c     Just to prove a point, I'm going to initialize the variable
c     called anum to 1 within this function.  Watch what happens to the
c     value of the variable with the same name in the main program and
c     the subroutine output.
c
      data anum/1.0/
c
      Nuturb=0.023*Re**0.8*Pr**0.4
      htc=k/Hd*max(Nulam,Nuturb)
c
      print *,'     In function  htc     anum = ',anum
c
      return
      end
c
      subroutine output ( Re, h)
c   Print results to the screen
c
      implicit none
      real Re, h
      real anum
c
c   Re  -  Reynolds Number
c   h   -  Heat Transfer Coefficient
c
      print *, 'For Reynolds Number = ',Re
      print *, 'Heat Transfer Coefficient is ',h,' w/m**2/K'
c
c     Just to prove a point, I'm going to set the value of a variable
c     called anum to 3 within this subroutine.  Watch what happens to the
c     value of the variable with the same name in the main program and
c     the function htc.
c
      anum=3
      print *,'     In Subroutine output anum = ',anum
c
      return
      end
Skip to content