1 function [u,w,index_n]=HMM_MIKRO_teil(T,u,epsilon,tau,dx,dt,n_x,M,index)
3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4 %%% Berechnung der Loesung des mirkoskopischen Modells %%%
5 %%% fuer einen Zeitschritt %%%
6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 % Input: T Inverse Matrix von A
11 % u stueckweise konstante Rekonstruktion, AB
12 % epsilon,tau (Regularisierungs-) Parameter
13 % dx, n_x mikroskopische Ortsschrittweite, Anzahl
14 % mikroskopischer Ortsschritte
16 % dt, nt mikroskopische Zeitsschritte, Anzahl
17 % mikroskopischer Zeitschritte
18 % ul, ur linker bzw. rechter Zustand
19 % Output: u Loesung des mirkoskopischen Modells auf dem mikro-
31 for i=1:length(index)-1;
32 if index(i+1)-index(i)==0
33 error('Index kommt doppelt vor');
34 elseif index(i+1)-index(i)>1 % Zusaetzliche Abfrage, dass mind 3 aufeinanderfolgende Werte
39 Ie = [Ie,length(index)];
42 ni = Ie(i)-Ia(i)+1; % Anzahl aufeinanderfolgender Stuetzstellen
44 error('Zu wenig aufeinanderfolgende Stuetzstellen.')
46 % Diskretisierungsmatrix A in IR^{(ni-2)x(ni-2)}
48 a = 2+dx^2/(epsilon^2*tau);
49 c = epsilon^2*tau/(dx^2);
50 A = c*(diag(a*ones(1,n))+diag(-ones(1,n-1),1)+diag(-ones(1,n-1),-1));
51 A(1,1)=A(1,1)-1; % evtl. BESSERE Randbedg. einfuegen!!!!!
56 b(k) = epsilon*(BL_D(u(index(Ia(i))+k-1))*(u(index(Ia(i))+k)-u(index(Ia(i))+k-1))-BL_D(u(index(Ia(i))+k-2))*(u(index(Ia(i))+k-1)-u(index(Ia(i))+k-2)))/(dx^2)-(BL_f(u(index(Ia(i))+k-1),M)-BL_f(u(index(Ia(i))+k-2),M))/dx;
60 %%% Loesen des LGS Aw=b
63 %%% Bestimmung der Loesung u mit Hilfe von w=u_t und oben berechnetem w
64 u_local = u(index(Ia(i))+1:index(Ie(i))-1)+dt*w
';
66 I = [I,index(Ia(i)+1):index(Ie(i)-1)];
78 b(i) = epsilon*(BL_D(u(i))*(u(i+1)-u(i))-BL_D(u(i-1))*(u(i)-u(i-1)))/(dx^2)-(BL_f(u(i),M)-BL_f(u(i-1),M))/dx;
83 %%% Loesen des LGS Aw=b
85 % Hinzunahme der RB w_1=0, w_nx=0
87 %%% Bestimmung der Loesung u mit Hilfe von w=u_t und oben berechnetem w