Napisanie i uruchomienie programu do modelowania za
pomocą MRS nagrzewania wsadu przed plastyczną przeróbką na gorąco
Równanie Fouriera dla procesu
niestacjonarnego (nieustalonego) ma postać:
(1)
Dla przypadku
jednowymiarowego:
(2)
Na rys. 1 pokazano schemat
obliczeniowy modelu nagrzewania wsadu.
Rys. 1. Schemat obliczeniowy modelu nagrzewania wsadu a – ogólny schemat, b – ze
schematem numeracji węzłów.
Warunki brzegowe
(3)
(4)
Jeżeli k=const,
c=const oraz przyjmujemy, że
, (5)
(6)
Dla węzłów wewnętrznych:
(7)
N – numer warstwy czasowej.
(8)
Pod warunkiem, że:
(9)
Dla węzła B na rys. 1.b
formuła dla ti jest wyznaczona za pomocą
warunku brzegowego (4)
(10)
(11)
Natomiast dla węza A
, czyli
(12)
Zadanie:
1.
Napisać program
do symulacji rozkładu temperatury we wlewku podczas nagrzewania.
2.
Wykonać
modelowanie procesu nagrzewania przy zadanych warunkach brzegowych.
3.
Zbadać zależność
rozwiązania od gęstości siatki oraz kroku czasowego.
Sprawozdanie powinno
zawierać:
1.
Sformułowanie
problemu technicznego;
2.
Teoretyczne
podstawy rozwiązania;
3.
Metodą
rozwiązania numerycznego;
4.
Tekst własnego
programu;
5.
Wyniki obliczeni;
6.
Analizę wpływu
kroku czasowego i kroku po X.
Uwzględnienie krystalizacji:
1.
Wykorzystać
metodę efektywnej pojemności cieplnej.
2.
Przykładowa zależność
efektywnej pojemności cieplnej od temperatury jest pokazana na rys. 2.
Rys. 2. Przykładowa zależność
efektywnej pojemności cieplnej od temperatury dla stali węglowej.
3.
Przykładowy kod
programu jest podany niżej :
// CCM_FDM.cpp : Defines
the entry point for the console application.
#include "stdafx.h"
#include <math.h>
#include <string.h>
#include <iostream.h>
int main(int
argc, char* argv[])
{
double k,c,ro,dx,a,Tliq,Tsol,Csol;
double Tau,dTau;
double
t[10],t0[10];
double TauMax,Tbegin,Alfa,Tsr,H,TauKrist;
int i,nh,nTau,iTau;
char st;
k = 30;
Csol =
500;
ro = 7800;
Tliq =
1450; // C
Tsol =
1350; // C
Tbegin
= 1450; // C
Tsr = 20; //
C
Alfa = 200;
H = 0.250; // AB, m
TauMax
= 4800; // s
nh = 10;
dx =
H/(nh-1); // m
a = k/(Csol*ro);
dTau = dx*dx/(2*a);
nTau = int(TauMax/dTau);
for
(i=0; i<nh; i++)
{
t0[i] = Tbegin;
t[i] = Tbegin;
}
printf( "Tau,s tc,C tpov,C \n
" );
Tau =
0;
TauKrist
= 0;
for
(iTau=0; iTau<nTau; iTau++)
{
for (i=1; i<nh-1; i++)
{
c = Csol;
if (t0[i]>=Tsol
&& t0[i]<=Tliq)
{
c = 2000;
}
a = k/(c*ro);
t[i] = (1-2*a*dTau/(dx*dx))*t0[i]
+ a*dTau* (t0[i-1] + t0[i+1]) / (dx*dx);
}
t[nh-1] = t[nh-2] - Alfa*dx*(t[nh-2]-Tsr)/k;
t[0] = t[1];
for (i=0; i<nh; i++)
{
t0[i] = t[i];
}
printf( "%f %f %f \n ", Tau, t[0], t[nh-1] );
if (t[0]>=Tsol)
{
TauKrist = Tau;
}
Tau = Tau + dTau;
}
printf( "TauKrist= %f
\n ", TauKrist );
cin >> st;
return
0;
}