Computes the temperatures at contact surfaces between the layers of a planar non-homogeneous wall.

You're viewing an older version of this page (#407). View the current version.

View versions (1)

Interface

#include <codecogs/engineering/thermodynamics/conduction/nhm_plane.h>

using namespace Engineering::Thermodynamics::Conduction;

For a planar non-homogeneous wall, formed by n layers of various thicknesses \delta_1, \delta_2, \ldots, \delta_n and thermal conductivities \lambda_1, \lambda_2, \ldots, \lambda_n, the conductive heat flow per unit area is unidirectional and is given by the following formula:

q = (t_1 - t_2) \left( \sum_{i=1}^n \frac{\delta_i}{\lambda_i} \right)^{-1}.
(1)

It is assumed that the <i>i</i>-th layer has constant thermal conductivity \lambda_i at any of its points.

The temperature at the contact surface between layer i and layer i + 1 is denoted by tw_i, for any value of i between 1 and n-1. The value of these temperatures are obtained by considering the following equality relation between the conductive heat flows per unit area which pass through each layer and the value of q given above:

q_1 = q_2 = \ldots = q_n = q
(2)

where:

q_k = (t_1 - tw_k) \left( \sum_{i=1}^k \frac{\delta_i}{\lambda_i} \right)^{-1}.
(3)

Hence we obtain the following formula:

tw_k = t_1 - q \sum_{i=1}^k \frac{\delta_i}{\lambda_i}
\qquad k = \overline{1, n-1}.
(4)

In the diagram below you may notice that the temperature decreases linearly while the heat flow passes through layers of various thicknesses and thermal conductivities.

1/nhmplane-378.jpg

Example 1

#include <codecogs/engineering/heat_transfer/conduction/nhm_plane.h>
#include <stdio.h>
 
int main()
{
  // input data
  int n = 3;
  double t1 = 22.73, t2 = -15.4,
   delta[3] = { 0.1, 0.15, 0.2},
  lambda[3] = {0.75, 0.95, 1.2};
 
  // display the various input data
  printf("Input values:\n\n");
  printf(" n = %d\nt1 = %.2lf\nt2 = %.2lf\n\n", n, t1, t2);
  printf("delta:\n(");
  int i;
  for (i = 0; i < n - 1; i++)
    printf("%.2lf, ", delta[i]);
  printf("%.2lf)\n\n", delta[n - 1]);
  printf("lambda:\n(");
  for (i = 0; i < n - 1; i++)
    printf("%.2lf, ", lambda[i]);
  printf("%.2lf)\n\n", lambda[n - 1]);
 
  // compute the temperatures at the contact surfaces between all layers
  std::vector<double> result = 
  Engineering::Heat_Transfer::Conduction::nhm_plane
  (3, t1, t2, delta, lambda);
 
  // display the results
  printf("\nThe temperatures at contact surfaces between layers are:\n\n");
  printf("(");
  for (i = 0; i < result.size() - 1; i++)
    printf("%.5lf, ", result[i]);
  printf("%.5lf)\n\n", result[result.size() - 1]);
 
  return 0;
}

Output

Input values:

 n = 3
t1 = 22.73
t2 = -15.40

delta:
(0.10, 0.15, 0.20)

lambda:
(0.75, 0.95, 1.20)


The temperatures at contact surfaces between layers are:

(11.62701, -1.52126)

Parameters

n
the number of layers
t1
the temperature of the heat flow at the entry surface (<i>degrees Celsius</i>)
t2
the temperature of the heat flow at the exit surface (<i>degrees Celsius</i>)
delta
an array with the thicknesses of the layers (<i>meters</i>)
lambda
an array with the thermal conductivities of the layers (<i>Watts per meter Celsius</i>)

Returns

A vector containing the temperatures at the contact surfaces between all layers (<i>degrees Celsius</i>).

The inequality t_1 > t_2 must always hold when passing values to the function.

References

Dan Stefanescu, Mircea Marinescu - "Termotehnica"

GPL Licence — free for non commercial use. See Licence details.