I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com
this unit 3.99
sub units 0.00

nhm sphere

Computes the temperatures at contact surfaces between the layers of a spherical non-homogeneous wall.
Controller: CodeCogs

add cart



Nhm Sphere

double*lambda )
For a spherical non-homogeneous wall, formed by n layers of various diameters d_1, d_2, \ldots, d_n and thermal conductivities \lambda_1, \lambda_2, \ldots, \lambda_n the total conductive heat flow is unidirectional and is given by the following formula:

where d_0 is the internal diameter of the spherical wall.

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 will be denoted by ts_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 total conductive heat flows which pass through each layer and the value of Q given above:


Hence we obtain the following formula:

In the diagram below you may notice the temperatures t_1, ts_1, ts_2, \ldots, ts_{n-1}, t_2 which decrease while the heat flow passes through layers of increasing diameters and various thermal conductivities.


Example 1

#include <codecogs/engineering/heat_transfer/conduction/nhm_sphere.h>
#include <stdio.h>
int main()
  // input data
  int n = 4;
  double t1 = 75.0, t2 = 20.0,
  d[5] = {0.1, 0.15, 0.2,  0.25, 0.35},
  lambda[4] = {0.75, 0.95, 1.2,  1.0};
  // display the various input data
  printf("Input values:\n\n");
  printf(" n = %d\nt1 = %.2lf\nt2 = %.2lf\n\n", n, t1, t2);
  int i;
  for (i = 0; i < n; i++)
    printf("%.2lf, ", d[i]);
  printf("%.2lf)\n\n", d[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 = 
  (4, t1, t2, d, lambda);
  // display the results
  printf("\nThe temperatures at contact surfaces between layers are:\n\n");
  for (i = 0; i < result.size() - 1; i++)
    printf("%.5lf, ", result[i]);
  printf("%.5lf)\n\n", result[result.size() - 1]);
  return 0;


Input values:
 n = 4
t1 = 75.00
t2 = 20.00
(0.10, 0.15, 0.20, 0.25, 0.35)
(0.75, 0.95, 1.20, 1.00)
The temperatures at contact surfaces between layers are:
(45.09862, 33.29544, 27.68893)


The inequality t_1 > t_2 must always hold when passing values to the function. Also the diameters array must be given in increasing order, thus:


Dan Stefanescu, Mircea Marinescu - "Termotehnica"


nthe number of layers
t1the temperature of the heat flow at the entry surface (<i>degrees Celsius</i>)
t2the temperature of the heat flow at the exit surface (<i>degrees Celsius</i>)
dan array with the diameters of the layers (<i>meters</i>)
lambdaan array with the thermal conductivities of the layers (<i>Watts per meter Celsius</i>)


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


Grigore Bentea, Lucian Bentea (October 2006)
Source Code

Source code is available when you buy a Commercial licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.