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

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

View versions (2)

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/thermodynamics/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::Thermodynamics::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.