You are on page 1of 8

Steady State and Transient Conduction for Joule Heating of a Nichrome Wire

Kansas State University, ME 400, M W 1:30pm


February 18, 2015, Manhattan, Kansas, USA

PROJECT 1 JOULE HEATING


Caleb Shunatona
Mechanical Engineering Student
Kansas State University
Manhattan, Kansas, USA
ABSTRACT
This articles shows how I found the temperatures of a
Nichrome wire being heated by electricity passing through the
wire using c++ through methods of Numerical and Analytical
analysis of steady state and transient conduction.

P=I2*R

With the known power generated, I found the thermal


generation term (q). This term will find the heat generated in the
wire that is kept within the wire per unit volume.
q=P/(L*A)

INTRODUCTION
Electricity while create heat as it travels through a metal.
This process is called joule heating. The amount of heating can
be found using an energy and heat equation. If you assume a
constant thermal conductivity and a 1 dimensional Cartesian
coordinates you can use a steady state conduction analysis to
find the temperature of the metal relative to its location. If you
assume a time-dependent temperature profile you can use a
transient conduction analysis to find the temperature of the
metal dependent on the location and the time. I found the
temperature profile of a 5 ft length of 25 AWG Nichrome wire
with an electrical current of 500 amps put through the wire. One
end of the wire was held at a constant temperature of -150
degrees Celsius and the other was held at a constant temperature
of 20 degrees Celsius.

(2)

(3)

I then wrote a code to find the temperature profile


using a numerical method of repeating a temperature matrix. [1]
The code did this through an equation that was discretized and
isolated for a node i to find a finite difference approximation
through an iterative manner.
Ti=0.5*(Ti-1 + Ti-1) + q/(2*k)*x2

(4)

I ran these code using 500 different nodes, a tolerance


of 10e-8, and it went through 147,242 different iterations. After
finding a profile for steady state through a numerical method, I
found a temperature profile using an analytical method. I
assumed the temperature equation was a quadratic equation and
solved for the coefficients creating an analytical equation.
Ti= -q /(2*k)*x2 + (Ti-1 - T0 - (-q/(2*k))*L2)/L*x+T0 (5)

STEADY STATE CONDUCTION


When finding the Steady State temperature profile I had to
find some material properties of the wire. These included the
density, specific heat, thermal conductivity, and resistivity from
http://www.nickel-alloys.net/nickel_chrome_alloys.html.

Nichrome

I created a code from this equation to create the


temperature profile. [2] I ran this code using 500 different
nodes. This is the results of both numerical and analytical
methods.
Graph 1. TEMPERATURE PROFILE OF STEADY STATE
CONDUCTION

(kg/m^3) Cp (J/(kg*K)) k(W/(m*K)) R(*m)


8.65e3
500
17
240e-8

After determining some constants, I used them to find


the resistance () of the wire the using the resistivity, the length,
and the area.
R= R*L/A

(1)

I used that to find the power (W) being produced by


that wire using the current given with the energy equation.

Copyright 2015 by ASME

From the temperature profiles found, the numerical method had


a maximum temperature of 597.398 Kelvin at 0.844296 meters
and the analytical method had a maximum temperature of
600.385 Kelvin also at 0.844296 meters.

TRANSIENT CONDUCTION
To find the transient time-dependent temperature
profile, I had to use an equation that discretized the time and
spatial variable.
Tit+1 = Tit +t/(*Cp)*(k*( Tti-1 2*Tit + Tti+1)/x2 +q)

(6)

I assumed at the initial time that the temperature of the


wire was -150 degrees Celsius at every node except for the last
node that was 20 degrees Celsius. I created a code to produce
the time gradient using different time periods. [3] Here is the
plot I created of the temperature profile using every 15 seconds
for 300 seconds starting at 0 seconds.

Graph 2. TEMPERATURE PROFILE OF TRANSIENT


CONDUCTION

This plot was created using 50 different nodes and a


time step of 50 seconds within the code.
ACKNOWLEDGMENTS
I would like to thank the instructors Richard McCulloch
and Aaron Schmidt for all their help.
REFERENCES
[1] Steady_State_Numerical.cpp
[2] Steady_State_Analytical.cpp
[3] Transient.cpp

Copyright 2015 by ASME

APPENDIX
ALL OF MY CODES USED

count=0;
Steady_State_Numerical.cpp
#include <iostream>
#include <math.h>
using namespace std;

// Nodes
N = 500;
// s dt
dt = 0.;

int main ()
{

//meters delta x
dx = 1.524/N;

// initiate variables
double P,p,Cp,I,R,pR,L,A,D,dx,k,dt,q,err,temp,tol;
int N,count;

// Solve for q
//thermal generation term J
q=P/(L*A);

// kg/m^3 density
p= 8.65e3;
// J/(kg*K) specific heat
Cp= 500.;

//Kelvin Temperature array


double T[N];
double T_old[N];

// amps current
I = 500.;

//set intial T array


for(int i=0; i<N; i++)
{
T[i]=123.15;
T[N-1]=293.15;

// ohms*m resistivity
pR = 240.e-8;
// m Length
L = 1.524;

}
// m diameter
D = 0.000455;

//Steady State Numerical

// m^2 Area
A = (1./4.)*3.141592659*D*D;

while (err>tol)
{
count++;

// ohms Resistance
R= pR*L/A;

//set T old to T
for (int i=0; i<N; i++)
{
T_old[i]=T[i];
}

// watts Power
P=(I*I*R)*1.e-9;
// watts/(m*K) thermal conductivity
k=17;

//equation 6
for (int i=0; i<N; i++)
{
T[i]=(0.5*(T[i-1]+T[i+1]))+(dx*dx*q/(2.*k));
T[0]=123.15;

// tolerence
tol=10e-8;
// iterations

Copyright 2015 by ASME

T[N-1]=293.15;
}
//array err
err=0.0;
for (int i=0; i<N; i++)
{
temp=fabs((T[i]-T_old[i])/T[i]);
if (temp > err)
{
err=temp;
}
}
}

//output
for (int i=0;i<N;i++)
{
// output temperatures
cout << T[i] << endl;
// output x
// cout << i*dx << endl;
// output to command prompt
// cout << i*dx << " " << T[i] << endl;
}
// output itterations
// cout << count << endl;
return 0;
}

Copyright 2015 by ASME

Steady_State_Analytical.cpp
#include <iostream>
#include <math.h>
using namespace std;

//thermal generation term J


q=P/(L*A);
//Kelvin Temperature array
double T[N];
double T_old[N];

int main ()
{
double P,p,Cp,I,R,pR,L,A,D,x,dx,k,dt,q,err,temp,tol;
int N,count;

//set intial T array


for(int i=0; i<N; i++)
{
T[i]=123.15;
T[N-1]=293.15;

// kg/m^3 density
p= 8.65e3;
// J/(kg*K) specific heat
Cp= 500.;

// amps current
I = 500.;

for (int i=0; i<N; i++)


{
x=dx * i;

// ohms*m resistivity
pR = 240.e-8;

T[i]= -q/(2*k)*x*x+(T[N-1]-T[0]-(q/(2*k))*L*L)/L*x+T[0];

// m Length
L = 1.524;
// output temperature analytical
cout << T[i] << endl;

// m diameter
D = 0.000455;

// output to command prompt


// cout << x << " " << T[i] << endl;

// m^2 Area
A = (1./4.)*3.141592659*D*D;

}
// ohms Resistance
R= pR*L/A;

return 0;
}

// watts Power
P=(I*I*R)*1.e-9;
// watts/(m*K) thermal conductivity
k=17;
// tolerence
tol=10e-8;
// iterations
count=0;
// Nodes
N = 500;
// s dt
dt = 1000.;
//meters delta x
dx = 1.524/N;

Copyright 2015 by ASME

Transient.cpp
#include <iostream>
#include <math.h>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;

//set intial T array


for(int i=0; i<N; i++)
{
T[i]=123.15;
T[N-1]=293.15;
}

int main ()
{
double P,p,Cp,I,R,pR,L,A,D,dx,k,dt,q,err,temp,tol;
int N,count;

//s delta t
dt= 50.;

// kg/m^3 density
p= 8.65e3;

cout << q << endl;


// Transient Conduction

// J/(kg*K) specific heat


Cp= 500.;

ostringstream filename;

// amps current
I = 500.;
// ohms*m resistivity
pR = 240.e-8;

ofstream output;
int
Nt=ceil(200000.0/dt),Nstop=ceil(10000.0/dt),f_count=0;
for (int tm=0; tm<Nt; tm++)

// m Length
L = 1.524;

{
for (int i=1; i < N-1; i++)
{

// m diameter
D = 0.000455;

T[i]=T[i]+dt/(p*Cp)*(k*(T[i-1]2*T[i]+T[i+1])/(dx*dx)+q);
}

// m^2 Area
A = (1./4.)*3.141592659*D*D;

if (tm%Nstop==0||tm==0)
{

// ohms Resistance
R= pR*L/A;

f_count++;
filename.str("");

// watts Power
P=(I*I*R)*1.e-9;

filename.clear();

// watts/(m*K) thermal conductivity


k=17;

filename << "transient_" << f_count << ".dat";


output.open(filename.str().c_str());

// Nodes
N = 50;

for (int i=0; i<N; i++)

//meters delta x
dx = 1.524/N;

{
output << (double)i*dx << " " << T[i] << endl;
}

//thermal generation term W/m^3


q=P/(L*A);
//Kelvin Temperature array
double T[N];
double T_old[N];

output.close();
}
}
return 0;
}

Copyright 2015 by ASME

Copyright 2015 by ASME

Copyright 2015 by ASME

You might also like