Recent Posts

úterý 19. února 2013

Tabáky

Jaký ten tabák vlastně je?

Především chci upozornit, že se jedná o tabáky čistě dýmkové, tudíž cigaretáři si nikterak skvělého počtení nedočkají. Nějakým způsobem bych rád přiblížil mnou vyzkoušené typy a subjektivně je shrnul.

Holger Danske Honey Dew

složení:  Virginie
               Black Cavendish
               Orient

řez:         Loose Cut

Lze říci, že se jedná o velmi slabý tabák, je výrazně aromatický, když si k němu člověk čichne, ovšem po zapálení, jako kdyby o ono aromna přišel. (na bezfiltrové dýmce)

Samuel Gawith Black XX

složení:  Virginie
               Orient

řez:         Rope

Jedná se o nejsilnější tabák jaký jsem kdy měl, dokonce mi přišlo, že během bafání z něj dostávám okamžitou žízen, po dokouření zůstává specifická chuť, která je ovšem příjemná. Jedna dýmka je už opravdu znát na motorice a jedná se tedy o velmi silný zážitek. Každému bafání ovšem předchází nařezání tabáku na nudličky, respektive menší kousky, nemyslím si, že je vhodné rozřezat rovnou celé "lano" nacházející se v krabičce, protože dle mého soudu tak déle vydrží jeho vlhkost. Nařezaný tabák jsem vždy před nacpáním nechal ještě nějakou dobu na vzduchu, poněvadž je zpočátku velmi vlhký a špatně by i hořel.
Celkově ho hodnotím velice kladně, ale tuším, že Samuel Gawith Brown No.4 by mohl být velkým soupeřem. (na bezfiltrové dýmce)

Samuel Gawith Navy Flake

složení:  Virginie
               Latakie

řez:         Flake

Po otevření jsem měl dojem, že jsem si koupil Framykoin, jelikož se z krabičky linula velice podobná vůně. Jednoznačně tabák středně silný, ke kterému se rád vrátím. Určitě není vůně pro nekuřáky tak nelibá jako u Black XX, takže se jedná o vhodnější tabák do společnosti (neproklínali mne tolik jako s Blackem). Řez flake jsem nejprve zkoušel srulovat do válečku a vložit do hlavičky, hořel pak na jednu zápalku, ale to se s postupnou ztrátou vlkosti stávalo stále méně možné, ačkoli jsem se ji snažil uměle udržovat keramickým zvlhčovačem či všelijakými jinými triky. Je to velký konkurent Balkanu, takže jsem ještě na vážkách, ke kterému z nich se vrátím. (na bezfiltrové dýmce)

Peterson Irish Oak

složení:  Burley
               Cavendish
               Perique

řez:         Loose Cut

Přírodní tabák se specifickou vůní, zatím mi nepřijde až tolik silný, ovšem mám dojem, že je to způsobeno tím, že jsem si na delší dobu oblíbil již zmiňovaný Black XX. Chuť jemná celou dobu, i po dokouření. Řekl bych, že je to tabák vhodný k běžnému každodennímu kouření, či spíše odpočinku. Pokusím se přiblížit po dokouření celé krabičky. (na bezfiltrové dýmce)
Musím poznamenat, že jsem měl velké problémy s vysycháním, což se mi teď delší dobu nestávalo - pravdou je, že flake i rope odolávají ztrátě vlhkosti mnohem lépe. Názor po dokončení krabičky neměním, vhodný ke každodennímu užití, přátelé ho přirovnávali k cigaretovému tabáku, takový mi ovšem nepřišel.


Samuel Gawith Balkan Flake

složení:  Virginie
               Latakie

řez:         Flake

Tahle Latakie jednoznačně konkuruje výše zmiňované Navy a myslím, že by to byl tenhle tabák, ke kterému bych se z těchto dvou vracel. Vůně zmiňovaná u Navy Flaku není v tomto případě tak silná a co se týká síly během kouření, tak myslím, že tento kousek je nepatrně silnější, ovšem to je asi konzument od konzumenta... Chuťový zážitek je rozhodně lepší než u Irish Oaku a zároveň se nejedná zas o vraždu jako v případě Blacka XX.


Samuel Gawith Brown No.4

složení:  Virginie

řez:         Rope

Po ochutnávce dvou dýmek od zkušeného pekárenského dýmkaře jsem se rozhodl pořídit si tento, jelikož jsem byl nadchnut, jednalo se o silnější tabák, ale o příjemnější alternativu Blacka, takže jsem opravdu zvědav, jak se to s ním vyvrbí....






Popis funkce vh_reseni

Reseni vodohospodarske zasobni funkce nadrze

Následující text mapuje kód funkce vh_reseni, tato funkce je využita ve skriptu zjišťujícím velikost nadlepšeného odtoku z nádrže pro jistou zabezpečenost. 

(Ke stažení zde.)


Reseni vodohospodarske zasobni funkce nadrze

function [ Pt,Po,por_mes,por_rok ] = vh_reseni( P,Vz,Qn )
% vh_reseni...program pro reseni vodohosp.zasobni funkce nadrze
% P...rada prumernych mesicnich prutoku [m^3/s]
% Vz...zasobni objem zadat v milionech [m^3]
% Qn...nadlepseny prutok [m^3/s]
% Moznost zadani pouze argumentu P, na zbytek se funkce zepta.
Zkontrolovani poctu vstupnich argumentu a jejich pripadne zjisteni
if nargin < 1
    error('Nezadan zadny vstupni argument') % zadny vstupni argument
end
if nargin <2
    Vz=input('Zadejte pozadovaný objem nadrze v milionech m^3 : ')*1e6
end
if nargin <3
    Qn=input('Zadejte nadlepseny prutok v [m^3/s]: ')
end
Vlastni reseni zasobni funkce nadrze
a=size(P);
mes=a(1,2);
rok=a(1,1);
k=0;
 
for i=1:rok
    for j=1:mes
        k=k+1;
        Q(k,1)=P(i,j);
    end
end
por=0;
Vt_minul=Vz;        % pocatecni podminka
konec=length(Q);
Vt=zeros(konec,1);
por_rok=0;          % citac poruchovych let
novy_rok=1;         % citac zacatku noveho roku
for b=1:konec
    if mod(b-1,12)==0   % zjisti zacatek noveho roku (zbytek po deleni)
        novy_rok=1;
    end
    Vt(b,1)=Vt_minul+(Q(b,1)-Qn)*3600*24*30.5;
    if Vt(b,1)>Vz       % omezuje nadrz, aby nepretekla
        Vt(b,1)=Vz;
    else
        if Vt(b,1)<0
        Vt(b,1)=0;      % omezeni objemu nadze zdola
        por=por+1;      % citac poruchovych mesicu
        if novy_rok==1
            por_rok=por_rok+1; % citac poruchovych let
            novy_rok=0;
        end
        end
    end
Vt_minul=Vt(b,1);    % vstupni hodnota zpet do rovnice
end
ZOBRAZENI VYSLEDKU
%Zabezpecenost podle doby trvani
Pt=(length(Q)-por-0.3)/(length(Q)+0.4)*100;
%Zabezpecenost podle doby opakovani
Po=(length(Q)/12-por_rok-0.3)/(length(Q)/12+0.4)*100;
por_mes=por;         % pocet poruchovych mesicu
por_rok=por_rok;     % pocet poruchovych roku
ZOBRAZENI GRAFU
%Vykresleni grafu prutoku
figure
plot(Q);
% Nastaveni grafu
xlabel('zacatky roku','VerticalAlignment','cap');
ylabel('prutok Q [m^3.s^{-1}');
title('Prubeh pritoku do nadrze','FontWeight','bold','FontSize',14);
mlabel=length(P)/12+1;
dlabel=round(mlabel/21);
dtick=dlabel*12;
mtick=length(P);
label=num2str((1:dlabel:mlabel)');
tick=(0:dtick:mtick);
set(gca,...
    'XTickLabel',{label},...
    'XTick',[tick],'XLim',[0 mtick],'FontSize',8);
NameFields=(strread(num2str(1:dlabel:mlabel),'%s'))';
XTick=tick;
xticklabel_rotate(XTick,45,NameFields,'interpreter','none');
 
% Vykresleni grafu prubehu objemu nadrze
figure
plot(Vt,'r -','linewidth',2);
% Nastaveni grafu
xlabel('zacatky roku','VerticalAlignment','cap');
ylabel('objem vody v nadrzi V [m^3]');
title('Objem vody v nádrzi','FontWeight','bold','FontSize',14);
label2=num2str((1:dlabel:mlabel)');
tick2=(0:dtick:mtick);
set(gca,...
    'XTickLabel',{label2},...
    'XTick',[tick2],'XLim',[0 mtick],'FontSize',8);
xticklabel_rotate(XTick,45,NameFields,'interpreter','none');
end

pondělí 18. února 2013

Vodohospodářské řešení nádrže (využití funkce vh_reseni)

VOSO ukol 1 - Vodohospodarske reseni nadrze

Využití Matlabu v problematice zjištění optimálního objemu dané nádrže pro zadanou zabezpečenost podle trvání v závislosti na zvoleném nadlepšeném odtoku. Tento skript využívá předem definovanou funkci vh_reseni, která tuto problematiku konkrétně řeší, a která požaduje tři vstupní údaje (průtoková řada, objem nádrže, nadlepšený odtok) a vrací hodnotu zabezpečenosti. Níže uvedený skript se tedy pokouší využít výše uvedené funkce k tomu, aby pro konkrétní zabezpečenost našel odpovídající nadlepšený odtok z nádrže. Z důvodu nespojité závislosti zabezpečenosti a nadlepšených průtoků bylo zvoleno řešení vybírající správnou hodnotu z tabulky předem vypočtených nadlepšených průtoků v závislosti na zvolené zabezpečenosti (průběh viz Gr. 1 a 4).

(Matlabovské soubory jsou ke stažení zde. )

 

Vodohospodarske reseni nadrze (VOSO_1)

Skript spousti funkce:
  • vh_reseni - nalezne pro dane P,Vz a Qn zabezpecenosti Pt, Po a vykresli graf prubehu pritoku a graf prubehu objemu vody v nadrzi
  • vh_reseni optim - osekana funkce vh_reseni vraci pouze Pt a nevykresluje zadne grafy
Dale nacte mesicni prutokove rady K a K500, pro ktere na nadrzi Kruzberk(Vz=24.5 mil m^3) urci pro pozadovanou zabezpecenost podle trvani Pt odpovidajici nalepseny prutok Qn, a to jak pro realnou radu prutoku K, tak pro syntetickou radu K500. Mimo jine tez vykresli do grafu zavislost mezi zabezpecenosti Pt a nalepsenym prutokem Qn.
Rucni zmena zabezpecenosti Pt se provadi v sekci 'VSTUPNI UDAJE' v radku oznacujicim pozadovanou zabezpecenost Pt_poz.

Contents

Zadani

Ukolem je nalezt pro zabezpecenost 98,5 % odpovidajici nadlepseny odtok z nadrze.
clc;clear;close all hidden;
set(0,'DefaultFigureWindowStyle','docked');

VSTUPNI UDAJE

Pt_poz=98.5;    %pro zadanou hodnotu Pt nalezne odpovidajici Qn
Vz=24.5e6;      %objem nadrze Kruzberk
Import datovych rad mesicnich prutoku
K= importdata('K.DAT');
K500=importdata('K500.DAT');
P=do_sloupce(K);
P500=do_sloupce(K500);
Interval hledani Qn
Qnmin=0.1;      %zacatek intervalu hledani
dQn=0.005;       %krok v intervalu
Qnmax=5;        %maximalni hodnota Qn v intervalu hledani

Reseni realne rady K

Hledani Qn pro zadane Pt (pomoci funkce vh_reseni_optim)
Qn=(Qnmin:dQn:Qnmax)';          %rozsah hledani Qn
for i=1:length(Qn)              %nalezeni Pt pro dana Qn
    Pt_g(i,1)=vh_reseni_optim(P,Vz,Qn(i,1));
end

% Vykresleni zavisloti mezi Pt a Qn
figure(1)
plot(Qn,Pt_g,'ro');
grid on; text('interpreter','tex','String','');
title('Zavislost mezi P_t a Q_n','FontWeight','bold','FontSize',14);
xlabel('Nadlepseny prutok Q_n [m^3.s^{-1}]');
ylabel('Zabezpecenost podle trvani P_t [%]');

data=[Qn,Pt_g];             %zapsani zavislosti do tabulky data
for j=1:length(Qn)          %hledani daneho prutoku Qn v tabulce data
    if data(j,2)>=Pt_poz
        pozice=j;
    end
end
Qn_vysl=data(pozice,1);     %vysledny hledany prutok

% Urceni vsech potrebnych hodnot pouzitim funkce vh_reseni
[ Pt,Po, por_mes,por_rok ]=vh_reseni(P,Vz,Qn_vysl);
Gr. 1: Průběh závislosti zabezpečenosti podle trvání v souvislosti se zvoleným nadlepšeným odtokem
Gr. 2: Průběh stavu objemu vody v nádrži v milionech m^3 během modelovaných třiceti let

Gr. 3: Průtoková řada přítoku do nádrže pro období třiceti let


ULOZENI A ZOBRAZENI VYSLEDKU
realna(:,1)={['Pt'];['Po']; ['poruchy_mesicni'];['poruchy_rocni'];...
    ['nadlepseny prutok']};
realna(:,2)={[Pt];[Po]; [por_mes];[por_rok];[Qn_vysl]};
disp('Realna rada');
disp(realna);
Realna rada
    'Pt'                   [98.6959]
    'Po'                   [91.1184]
    'poruchy_mesicni'      [      4]
    'poruchy_rocni'        [      2]
    'nadlepseny prutok'    [ 2.1300]

Reseni synteticke rady K500

Hledani Qn pro zadane Pt (pomoci funkce vh_reseni_optim)
Qn=(Qnmin:dQn:Qnmax)';          %rozsah hledani Qn
for i=1:length(Qn)              %nalezeni Pt pro dana Qn
    Pt_gS(i,1)=vh_reseni_optim(P500,Vz,Qn(i,1));
end

% Vykresleni zavisloti mezi Pt a Qn
figure(4)
plot(Qn,Pt_gS,'bo');
grid on
title('Zavislost mezi P_t a Q_n','FontWeight','bold','FontSize',14);
xlabel('Nadlepsený prutok Q_n [m^3.s^{-1}]');
ylabel('Zabezpecenost podle trvani P_t [%]');

dataS=[Qn,Pt_gS];       %zapsani zavislosti do tabulky dataS
for j=1:length(Qn)      %hledani daneho prutoku Qn v tabulce dataS
    if dataS(j,2)>=Pt_poz
        pozice=j;
    end
end
Qn_vyslS=dataS(pozice,1);   %vysledny hledany prutok

% Urceni vsech potrebnych hodnot pouzitim funkce vh_reseni
[ Pts,Pos, por_mess,por_roks ]=vh_reseni(P500,Vz,Qn_vyslS);
Gr. 4: Průběh zabezpečenosti podle trvání v souvislosti se zvoleným nadlepšeným odtokem (syntetická řada)
Gr. 5: Průběh stavu objemu vody v nádrži v milionech m^3 během modelovaných třiceti let (syntetická řada)
Gr. 6: Průtoková řada přítoku do nádrže pro období třiceti let (syntetická řada)


ULOZENI A ZOBRAZENI VYSLEDKU
synteticka(:,1)={['Pt'];['Po']; ['poruchy_mesicni'];['poruchy_rocni'];...
    ['nadlepseny prutok']};
synteticka(:,2)={[Pts];[Pos]; [por_mess];[por_roks];[Qn_vyslS]};
disp('Synteticka rada');
disp(synteticka);
Synteticka rada
    'Pt'                   [98.5218]
    'Po'                   [89.4684]
    'poruchy_mesicni'      [     88]
    'poruchy_rocni'        [     52]
    'nadlepseny prutok'    [ 2.4400]

Seznámení s Matlabem

Článek se snaží přiblížit první kroky pro používání programu. Jelikož v tomto programu nepracuji až tak dlouho, možná nepodám výklad tak profesionálně a uceleně, ale chtěl bych touto cestou alespoň přibližně naznačit pro ty, kteří nemají tolik času na prostudovávání knih a chtějí začít urychleně pracovat.

Zjednodušeně bych řekl, že se jedná o lepší kalkulačku, která nabízí výhody předpřipravených funkcí, ale i možnosti tvorby vlastních, přičemž ovládání a práce v programu plně vyhovuje inženýrskému přístupu k řešenému problému.

Verze programu, keré se popis týká, je MATLAB R2012a, ale v zásadě lze říci, že ovládání je velkmi obdobné i u ostatních.Po otevření programu je obrazovka rozdělena do několika oken, uprostřed Command Window, po pravé straně většinou Workspace a Command History, nalevo potom okno Current Folder. Do okna Command Window můžeme zadávat příkazy, volat odtamtud rozličné funkce, ať už své či předdefinované a samozřejmě přiřazovat libovolnému písmenku či slovu příslušnou hodnotu např. 2, nebo matici. To si lze rovnou vyzkoušet. Nejprve uvedu několik základních tipů.

Základní přiřazovací symbol je: =
Konstanta, které přiřazuji hodnotu nesmí obsahovat zvláštní symboly typu otazníku či vykřičníku, délka názvu může být maximálně 63 znaků, obsahovat číslice, ale nesmí s ní začínat. Pokud něco zadáte špatně, vždy se objeví hláška upozornění/varování.
Násobení, sčítání, odčítání, dělení je klasické (*,+,-,/), umocňování pomocí vokáně ^ (lze zadat jako zkratka levý Alt+94 (na numerické klávesnici), případně pravý Alt+3 (objeví se po zadání dalšího znaku)).
Desetinná čísla se oddělují tečkou.
Pro zadávání čísel lze využít vědecký formát pomocí písmene E (např. 1.69759e-6).
Ukončování řádku středníkem ;
Uskutečnění příkazu pomocí tlačítka Enter jistě nemusím vysvětlovat.



Příklad 1
A=1;
B=2;
C=A+B


Jak si lze všimnout, na konci řádku zadávám vždy středník, pokud ho nenapíši, vypíše se v Command Window příslušná hodnota, tzn. pro A se vypíše A=1, pro C=A+B se vypíše C=3.

Pokud jste zkusili Příklad 1, všimli jste se, že se všechna písmenka zapisují se svou přidělenou hodnotou do okna Workspace. Toto okno bych přirovnal k našemu mozku, poněvadž je to paměť na všechny údaje přiřazující některému z písmenek jeho hodnotu, a jsou to právě ty, které jsme zadali v Command Window. Ve Workspace můžeme poklepáním na jednotlivé konstanty poklepat a změnit jejich hodnotu. To, co jsme doposud udělali je zaznamenáno v Command History, odtud můžeme znovu zavolat příkaz, který jsme před tím už zadali.

Chceme-li písmenu A přiřadit matici, využijeme hranaté závorky - A=[1 2;3 4]. Způsob zadávání matice je po řádcích, kdy číslice v řádcích matice oddělujeme mezerou nebo čárkou, jednotlivé řádky potom středníkem. (Hranatou závorku lze zadat pomocí pravého Alt + F a Alt + G .) Vynásobíme-li matici A hodnotou B=2, vynásobí se každá hodnota v matici právě dvojkou. Násobíme-li dvě matice jako v Příkladu 3, jedná se o skalární součin (viz matice D), chceme-li ovšem násobit hodnoty v matici jednotlivě hodnotami z druhé matice, musíme před násobení napsat tečku, to lze vidět v Příkladu 4



Příklad 2
A=[1 2;3 4];
B=2;
C=A*B

Výsledek
C=[2 4;6 8]

Příklad 3
A=[1 2;3 4];
C=[2 4;6 8];
D=A*C

Výsledek
D=[14 20;30 44]



Pro dělení matic platí stejné pravidlo, pokud dělíme pouze lomítkem, dělíme matice, pokud dělíme s tečkou před lomítkem, dělíme jednotlivé hodnoty v matici. Umocňování matice je obdobné, chceme-li umocnit všechna čísla v matici, musíme zkrátka před znakem pro umocňování napsat tečku.


Příklad 4
A=[1 2;3 4];
C=[2 4;6 8];
D=A.*C

Výsledek
D=[2 8;18 32]


Příklad 5
A=[1 2;3 4];
C=[2 4;6 8];
E=A/C

Výsledek
E=[0.5 0;0 0.5]


Příklad 6
A=[1 2;3 4];
C=[2 4;6 8];
E=A./C

Výsledek
E=[0.5 0.5;0.5 0.5]


Příklad 7
A=[1 2;3 4];
F=A.^2;

Výsledek
F=[1 4;9 16]


Pro transponování matice lze dobře využít apostrofu ' (zadání Alt+39) jak lze vidět v případě Příkladu 8.


Příklad 8
A=[1 2;3 4];
G=A';

Výsledek
G=[1 3;2 4]


Pokud se rozhodnete přiřadit písmenku A hodnoty od 1 do 20, není nic jednoduššího, než napsat A=1:20, máte-li požadavek na to, že se má jednat o řadu čísel po 0,5, vložíte tuto délku intervalu mezi 1 a 20, takže tedy
A=1:0.5:20;

V tomto zadání jsou všechny hodnoty v prvním řádku, A je chápána jako jednořádková matice, vhodnou úpravou lze mít všechna data v jednom sloupečku, stačí využít apostrof.
A=(1:0.5:20)';

Myslím, že to je to nejdůležitější k tomu, abyste mohli začít využívat předdefinované funkce, ale ještě před tím doporučuji vyčistit Command Window pomocí příkazu clc a vyčistit pamět zadáním příkazu clear.


clc - vyčistí oblast Command Window
clear - vymaže pamět Workspace