Tažený prut z prostého betonu:
Nelineární dynamický systém s uvážením plasticity
a reologických jevů materiálu
Petr Frantík
 
1 Úvod
Tato práce předkládá modelování vlivu plasticity a reologických vlastností betonu na jednoduché konstrukci za účelem zjištění možností nástrojů teorie dynamických systémů pro simulaci těchto jevů. Použité náhrady vlastností betonu měly být samostatně vytvořeny a srovnány s náhradami použitými v běžné praxi. Tyto požadavky se podařilo splnit, ačkoliv byly zjištěny významné potíže při vytváření náhrady pracovního diagramu betonu. Význam těchto potíží, jak bude dále uvedeno, byl potlačen neuvažováním změny znaménka napětí v betonu (pro jednoduchost bylo zvoleno tahové napětí).
 
2.1 Konstrukce
Pokus modelovat společně všechny tyto vlastnosti dynamickým systémem vyžadoval zvolení jednoduché konstrukce. Jinými slovy konstrukce, která se dá bez podstatných ztrát zjednodušit na model s jedním stupněm volnosti a kde napětí na průřezu je konstantní. Takovouto konstrukcí je normálově namáhaný prut. Jeho schéma je na obr. 1. Tuto konstrukci lze zjednodušit na prut, kde normálové napětí rovnoběžné s osou prutu na takto namáhané konstrukci je konstantní po délce i po průřezu.
Obr. 1: Tažený prut
 
2.2 Model
Konstrukci na obr. 1 nahradíme modelem s jedním stupněm volnosti, jenž je schematicky znázorněn na obr. 2. Na obrázku 2 jsou zobrazeny tři parametry, z nichž každý odpovídá modelovému zjednodušení některé vlastnosti. Parametr m bude náhradní hmotnost hmotného bodu odpovídající kmitající hmotě. Zvolíme jej pro jednoduchost tak, že bude roven hmotnosti celého prutu. Parametr k je tuhost pružiny odpovídající tuhosti prutu v tahu. Jelikož budeme uvažovat nelineární plastické chování betonu, nebude tato tuhost konstantní. Parametr c je konstanta útlumu, který bude zajišťovat ztrátu energie vlivem jejího rozptýlení způsobeného třením, odporem vzduchu apod. Útlum budeme uvažovat lineární. Dále si rozebereme sestavení jednotlivých vztahů, které potřebujeme pro vytvoření dynamického systému.
Obr. 2: Dynamický model
 
Rovnice kmitání
Pro sestavení rovnic kmitání hmotný bod uvolníme a rozepíšeme si vše, co na něj působí. Všechny síly, které na hmotný bod působí jsou znázorněny na obrázku 3.
Obr. 3: Uvolněný hmotný bod
Síla Fk odpovídá působení pružiny, síla Fs odpovídá setrvačné síle, síla Ft tlumící síle, Fg je tíhová síla a Fb je budící síla odpovídající zatížení. Tyto síly lze rozepsat:
Kde A je plocha průřezu, s je normálové napětí rovnoběžné s osou prutu, x je výchylka hmotného bodu ve směru osy prutu, l je délka prutu, a je zrychlení hmotného bodu, m je hmotnost hmotného bodu, v je rychlost hmotného bodu, c je konstanta útlumu, g je tíhové zrychlení, F(t) je zatížení.
Pro takto uvolněný bod lze potom psát podmínku dynamické rovnováhy:
Protože soustavu diferenciálních rovnic budeme řešit numericky, potřebujeme upravit tuto diferenciální rovnici druhého řádu na soustavu dif. rovnic prvního řádu. Výsledné diferenciální rovnice kmitání tedy budou:
 
Pracovní diagram
Chování betonu pod zatížením je složité. Deformace roste s napětím nelineárně a poklesne-li napětí, pak deformace neklesá stejným způsobem jako stoupala (viz obr. 4: červená je zvyšování napětí, zelená je snižování napětí). Vznikají trvalé deformace. Takové chování popisujeme jako plasticitu.
Obr. 4: Schéma pracovního diagramu betonu
Pro tuto práci byl pracovní diagram zjednodušen, protože definice funkcí zajišťujících kompletní popis diagramu je složitá. Zjednodušení je takové, že nelineární zůstává pouze ohraničující funkce, která je funkcí, jež by byla správná, kdyby napětí neklesalo. V případě, že napětí poklesne, pak klesá i následně stoupá lineárně až po průsečík s ohraničující funkcí. Takový pracovní diagram je znázorněn na obrázku 5 (červená je zvyšování napětí na ohraničující funkci, modrá je snižování a zvyšování napětí pod ohraničující funkcí).
Obr. 5: Zjednodušení pracovního diagramu betonu
Pro popis ohraničující funkce byl vybrán neúplný polynom třetího stupně s lineárním a kubickým členem:
kde Ep je počáteční modul pružnosti a a je násobitel Ep pro kubický člen. Počáteční modul pružnosti byl zvolen 40 GPa a násobitel a byl zvolen -2.107. Lineární část diagramu je popsána návratovým modulem pružnosti Er. Návratový modul pružnosti byl zvolen 45 GPa.
Již v úvodu bylo zmíněno, že vznikly potíže se zjednodušeným pracovním diagramem při změně znaménka. Zjednodušení, které je použito totiž způsobí, že při dosažení nulového napětí na návratové lineární části dojde při myšleném zvýšení napětí k nejednoznačné situaci. Kdyby bylo připuštěno libovolně malé opačné napětí, musela by být ohraničující funkce posunuta z počátku, což by způsobylo onu nejednoznačnost. Tyto potíže by byly odstraněny s odstraněním zjednodušení.
 
Reologické jevy
Další komplikací pro výpočet betonových konstrukcí jsou reologické vlastnosti betonu. Pro výpočet jsou podstatné dvě. Smršťování betonu a dotvarování betonu. Smršťování betonu je způsobeno odpařováním vody z betonu. Poločas smrštění je přibližně 28 dní (za 28 dní dojde k polovičnímu smrštění) Velikost smrštění závisí na druhu betonu a na prostředí, v němž je beton uložen. Dotvarování betonu je způsobeno transportem vody v betonu vlivem zatěžování a jejím odpaření. Je to tedy podobný jev jako smršťování, ale je závislý na prostředí i na napětí.
Pro oba tyto jevy budeme uvažovat stejné funkce ve tvaru:
Poločas smrštění a dotvarování byl zvolen 28 dní. Tedy:
kde t28 je 28 dní v sekundách.
Konečné smrštění bylo zvoleno as = 1mm/m. Konečné dotvarování bylo zvoleno jako lineární funkce napětí:
kde parametr R je zvolen tak, aby konečné dovarování při napětí 3 MPa bylo 0.9mm/m. Tedy R = 3.10-10 Pa-1.
Pro délku nenapjatého prutu lze psát:
Kde L je počáteční délka nenapjatého prutu a bs = bd = b.
Diferenciální rovnice reologických jevů potom bude:
 
Na závěr si ukážeme srovnání průběhu zvolené funkce s funkcí použitou v normě. Norma používá funkci:
Na obrázku 6 je srovnání obou funkcí, přičemž parametry b = 2.7172 a a = 1. Je vidět, že normová funkce má nekonečnou hodnotu derivace v počátku a její hodnota pro 28 dní rozhodně není 0.5, což by odpovídalo poločasu smršťování.
Obr. 6: Srovnání zvolené funkce a funkce použité v normě
 
2.3 Simulace
Pro kontrolu bylo třeba provést simulace jednotlivých jevů. Byl vytvořen program v jazyce Pascal, který je uveden v části 5 a byly provedeny jednotlivé simulace.
 
Pracovní diagram
Obr. 7: Vypočtený tahový pracovní diagram betonu
 
Smršťování
Obr. 8: Vypočtený průběh smršťování
 
Dotvarování
Obr. 9: Vypočtený průběh dotvarování pro napětí 3 MPa
 
Zatěžovací pokus
Pro simulaci zatěžovacího pokusu byl vybrán model konstrukce s těmito parametry:
Zatěžovací plán byl použit takový, že se do bednění vybetonuje prut, po 10 dnech se odbední a po 28 dnech se na 4 dny zatíží silou 25 kN.
Obr. 10: Vypočtené napětí
Obr. 11: Vypočtené protažení prutu vlivem napětí
Obr. 12: Změna délky prutu vlivem reologických jevů
 
3 Závěr
Všechny požadované jevy se podařilo úspěšně simulovat pomocí diferenciálních rovnic dynamického systému.
Důležitým poznatkem byl problém s diskretizačním krokem numerických metod. Pro kmitání systému byl vyžadován krok maximálně jedna statitisícina sekundy, což pro požadovanou délku simulace bylo příliž málo (simulace by na AMD K6/300 MHz trvala příliž dlouho). Tento problém byl vyřešen odstavením řešení diferenciálních rovnic kmitání vždy tehdy, když byl systém ustálen a krok byl zvýšen na 10 sekund. Automaticky při změně rozhodujícího parametru (zatěžovací síla) byl pak krok snížen a diferenciální rovnice kmitání se započaly řešit.
Objevily se potíže při vytváření náhrady pracovního diagramu betonu, kterou by bylo vhodné vylepšit. Nesoulad mezi reologickými funkcemi neumím vysvětlit.
 
4 Literatura
5 Zdrojový kód programu
{$N+}
Uses Crt,Graph;
Const
{Metoda 0-RK, 1-EE, 2-SE, 3-ME, 4-O, 5-MO}
meti=0;
{Krok metod}
hm1=0.00001; {dynamicky 0.00001}
hm2=10; {staticky 10}
{}
dgx=0.00001; {0.00001}
cxgi=5; {5}
dgy=0.01; {0.01}
cygi=2; {2}
{}
{parametry}
Ep=40E+9; {40E+9 Pa}
alfa=-2E+7; {-2E+7}
Er=45E+9; {45E+9 Pa}
A=0.01; {0.01 m2}
m=150; {150 kg}
c=500000; {10000}
{}
Reo=3E-10; {ad=Reo*sig; max sig=30E+6: ad=0.009}
{}
time1=60*60*24; {v sekundach 1 den}
time10=time1*10; {v sekundach 10 dni}
time28=time1*28; {v sekundach 28 dni}
time32=time1*32; {v sekundach 32 dni}
{}
{auto deleni os}
osb=false;
Var
g:double; {9.81 m/s2}
{}
{}
grdi,gmi,erri,ki:integer;
{}
h,h2,hd2,hd6:double;
{Stavove promenne}
x,y,l:double;
x0,y0,l0:double;
xp,yp,lp:double;
F:double;
{}
{Casove promenne}
time:double;
{}
{parametry}
{reologie}
ad,bd,as,bs:double;
{}
{cleny funkce tahoveho diagramu}
sig:double;
epsm,epsp,epshr:double;
{}
kx,ky,px,py:real;
{}
il:longint;
{}
smodei:integer; {prepinac casoveho kroku 1-dynamic,2-static}
{}
fo:file of double;
zari:integer;
{Rozsirujici funkce}
{$I Tools}
{$I Input}
{****************************************************************************}
{Soustava diferencialnich rovnic systemu}
Function F1(y1,y2,y3:double):double;
begin
if smodei=1 then
begin
F1:=y2;
end
else
begin
F1:=0;
end;
end;
{******}
Function Fung(eps:double):double;
function ghr(x:double):double;
begin
ghr:=Ep*x*(1+alfa*x*x);
end;
function glin(x:double):double;
begin
glin:=Er*x;
end;
begin
if eps>=epshr then
begin
sig:=ghr(eps-epsp);
epshr:=eps;
epsm:=epshr-sig/Er;
end
else if epshr>eps then
begin
sig:=glin(eps-epsm);
end;
{ustaveni smrstovaci meze}
ad:=Reo*sig;
{}
fung:=sig;
end;
{******}
Function F2(y1,y2,y3:double):double;
begin
if smodei=1 then
begin
{F2:=-c/m*y2-A/m*fung(y1/y3)+g+F/m;}
F2:=-c/m*y2-A/m*fung(y1/l0)+g+F/m;
end
else
begin
F2:=0;
end;
end;
Function F3(y1,y2,y3:double):double;
begin
F3:=(ad/Moc(bd,time)*ln(bd)-as/Moc(bs,time)*ln(bs))*l0;
end;
{$I Library}
{Konec soustavy}
{****************************************************************************}
{Zobrazeni aktualnich informaci}
Procedure Info;
begin
Bar(1,1,638,30);
SetColor(white);
{stavove}
OutTextXY(10,10,'t: '+Fix(time,4,12)+'('+Num(smodei)+')'+
' l: '+Fix(l,4,6)+' F: '+Fix(F,0,5)+' sig: '+Fix(sig,0,6)+'/'+Fix(F/A,0,6));
OutTextXY(10,20,'x: '+Fix(x,8,12));
{pocatecni podminky}
{OutTextXY(558,10,'x0'+Fix(x0,0,1)+' y0'+Fix(y0,0,1)+' l0'+Fix(l0,0,2));}
{parametry}
OutTextXY(150,20,'Ep'+Fix(Ep/1E+9,0,2)+' alfa'+Fix(alfa/1E+6,0,2)+'E+6 Er'+Fix(Er/1E+9,0,2)+'E+9 A'+Fix(A,2,4)+
' g'+Fix(g,1,3)+' m'+Fix(m,1,3)+' c'+Fix(c,1,5)+' Reo'+Fix(Reo/1E-12,0,2)+'E-12');
end;
Procedure Ustav;
begin
if smodei=1 then h:=hm1 else h:=hm2;
h2:=h*2;
hd2:=h/2;
hd6:=h/6;
end;
{****************************************************************************}
{Zakladni funkce}
{Vynulovani casu systemu}
Procedure Restart;
begin
time:=0;
{Pocatecni podminky}
x:=x0;
y:=y0;
l:=l0;
xp:=x0;
yp:=y0;
lp:=l0;
{}
epsp:=0;
epsm:=0;
epshr:=0;
sig:=0;
end;
{Vypocet koeficientu snizujicich pocet parametru}
Procedure Substit;
begin
end;
{Inicializace promennych}
Procedure Init(kx0,ky0,px0,py0:real);
begin
Restart;
Substit;
{Zobrazovaci promenne}
kx:=kx0;
ky:=ky0;
px:=px0;
py:=py0;
end;
{Klavesova nabidka}
Function Menu(ki:integer):integer;
begin
if (ki>0) and (ki=/27) and (ki=/32) then
begin
if ki=8 then
begin
{}
end
else if ki=9 then
begin
Info;
ki:=290;
end
else if ki=13 then
begin
smodei:=3-smodei;
end
else if (ki=ord('i')) or (ki=ord('I')) then
begin
Info;
end
else if (ki=ord('p')) or (ki=ord('P')) then
begin
F:=F+1000;
Substit;
end
else if (ki=ord('o')) or (ki=ord('O')) then
begin
F:=F-1000;
Substit;
end
else
begin
if ki=1 then
begin
ky:=ky*1.1;
py:=py*1.1;
end
else if ki=2 then
begin
ky:=ky/1.1;
py:=py/1.1;
end
else if ki=3 then
begin
kx:=kx/1.1;
px:=px/1.1;
end
else if ki=4 then
begin
kx:=kx*1.1;
px:=px*1.1;
end
else if (ki=ord('a')) or (ki=ord('A')) then
begin
px:=px-10;
end
else if (ki=ord('d')) or (ki=ord('D')) then
begin
px:=px+10;
end
else if (ki=ord('w')) or (ki=ord('W')) then
begin
py:=py-10;
end
else if (ki=ord('s')) or (ki=ord('S')) then
begin
py:=py+10;
end;
ki:=290;
end;
end;
Menu:=ki;
end;
{Konec zakladnich funkci}
{****************************************************************************}
procedure Save;
var hd:double;
begin
if time=0 then
begin
Assign(fo,'G:\Out.num');
Rewrite(fo);
zari:=0;
end;
if zari=0 then
begin
hd:=time/time1;
Write(fo,hd);
Write(fo,sig);
Write(fo,x);
Write(fo,l);
zari:=1000;
end
else zari:=zari-1;
end;
{****************************************************************************}
Begin
{mod kroku}
smodei:=2; {1}
{Pocatecni podminky}
x0:=0; {musi byt nula (napjatost)}
y0:=0;
l0:=10;
{}
F:=0;
g:=0;
{Parametry reologie}
ad:=0; {konecne dotvarovani}
bd:=moc(2,1/time28); {rychlost dotvarovani 50% za 28 dni}
{}
as:=0.001; {0.001 m/m konecne smrsteni}
bs:=moc(2,1/time28); {rychlost smrstovani 50% za 28 dni}
{}
{textovy uvod}
ClrScr;
TextColor(green);
WriteLn('Program TahPrut');
TextColor(lightgray);
WriteLn('Autor '+Autor+', rok emise 2001.');
WriteLn('(Program pro simulaci disipativniho dynamickeho systemu)');
WriteLn;
Writeln(' Esc - ukonceni');
WriteLn(' Enter - ulozeni');
WriteLn(' Sipky - zoom');
WriteLn(' A,W,S,D - posun os');
WriteLn(' I - informacni okenko');
WriteLn(' P - dana zmena daneho parametru');
WriteLn(' Mezera - restart simulace');
WriteLn('BackSpace - vynulovani znacky lokalni extremni vychylky');
WriteLn(' Tab - ulozeni a vymazani obrazovky');
WriteLn;
TextColor(white);
WriteLn('(Stiskni klavesu)');
WriteLn;
TextColor(lightgray);
if Get=/27 then
begin
{Inicializace grafiky}
grdi:=Detect;
InitGraph(grdi,gmi,'');
erri:=GraphResult;
if erri=GrOK then
begin
{Pauza pro grafiku}
Delay(1000);
SetFillStyle(1,7);
{}
Ustav;
Init(Moc(1.1,150),Moc(1.1,80),0,0);
{cyklus pripadu}
repeat
Restart;
gCls;
MoveTo(Round(320+px),240);
{cyklus simulace}
repeat
ShowTraj(x,y,xp,yp);
{}
Save;
{}
step(meti,x,y,l,xp,yp,lp);
{}
{Zatezovaci plan}
if (time>=time10) and (time10+hm2>=time) then
begin
g:=9.81;
smodei:=1;
end
else if (time>=time28) and (time28+hm2>=) then
begin
F:=25000;
smodei:=1;
end
else if (time>=time32) and (time32+hm2>=time) then
begin
F:=0;
smodei:=1;
end;
{}
ki:=Menu(key);
Ustav;
if ki=290 then gCls;
until (ki=32) or (ki=27);
{konec cyklu simulace}
until ki=27;
{konec cyklu pripadu}
{Uzavreni grafiky}
CloseGraph;
Delay(1000);
end
else
begin
WriteLn('Chyba grafiky: ',GraphErrorMsg(erri));
end;
end;
ClrScr;
end.