FUNCTION
nhm_plane
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.
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:
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:
where:
Hence we obtain the following formula:
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.

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
Returns
The inequality $t_1 > t_2$ must always hold when passing values to the function.
References
Dan Stefanescu, Mircea Marinescu - "Termotehnica"