![]() |
![]() |
![]() |
Demo: A 2-D transient diffusion code
This code is developed to solve 2-D transient (time dependent) heat transfer problems. We use here an alternative to the presentation of the previous demo code. More specifically, we show how to perform all important phases of a time dependent finite element code.
#include "OFELI.h" #include "Therm.h" using namespace OFELI; |
IPF data("ttd2 - 1.1",argv[1]);
theFinalTime = data.getMaxTime();
theTimeStep = data.getTimeStep();
int save_flag = data.getSave();
int verbose = data.getVerbose();
|
IOField pf(data.getPlotFile(),IOField::OUT); |
Mesh ms(data.getMeshFile());
Vect<double> b(ms), u(ms);
u.setName("Temperature");
|
Prescription pr(ms,data.getDataFile()); pr.get(INITIAL_FIELD,u); |
Vect<double> bc(ms), body_f(ms), bound_f(ms); |
DC2DT3 eq(ms); eq.setInput(INITIAL,u); |
TimeLoop {
|
pr.get(BOUNDARY_CONDITION,bc,theTime);
pr.get(SOURCE,body_f,theTime);
pr.get(FLUX,bound_f,theTime);
|
eq.setInput(BOUNDARY_CONDITION,bc);
eq.setInput(SOURCE,body_f);
eq.setInput(FLUX,bound_f);
|
eq.run(TRANSIENT_ONE_STEP); |
u.setTime(theTime);
if (theStep%save_flag == 0)
pf.put(u);
}
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<OFELI_File>
<info>
<title>Finite Element Mesh of a beam</title>
<date>January 1, 2010</date>
<author>R. Touzani</author>
</info>
<Project name="proj">
<mesh_file>proj-5x10.m</mesh_file>
<plot_file>proj.pl</plot_file>
<time_step>0.01</time_step>
<max_time>1.0</max_time>
<verbose>0</verbose>
<output>0</output>
<save>1</save>
</Project>
<Prescription>
<BoundaryCondition code="1">-tanh(10)*(exp(t)-1)</BoundaryCondition>
<BoundaryCondition code="2"> tanh(10)*(exp(t)-1)</BoundaryCondition>
<Source>tanh(10*y)*(exp(t)+200*(exp(t)-1)/(cosh(10*y)*cosh(10*y)))</Source>
</Prescription>
</OFELI_File>
|
In summary, this file looks mainly like the one in the previous example. We show here in addition how to prescribe a boundary condition by an algebraic expression. The OFELI library is equipped with the expression parser fparser. We use here the variables x, y, z, and t for space and time variables.
![]() |
![]() |
![]() |