1 function [uinc,index_n]=Phasen_lokal_space(u,epsilon,alpha,index,dx,dt)
3 % Loest mikroskopische Modell u_t+f(u)_x = epsilon u_{xx} + alpha*epsilon^2 u_{xxx}
4 % als increment, wird spaeter mit dt multipliziert
6 % Input: u Lsg. vor Zeitschritt
7 % epsilon Regularisierungsparameter
9 % index Indexmenge, fuer lokale Lsg, [] ergibt globale
10 % dx,dt Ortsschrittweite bzw. Zeitschrittweite
12 % Output: dt_u diskrete Ableitung fuer u
13 % index_n neue Indexmenge, nimmt von jedem Miniintervall 2
17 beta = 2*epsilon/dx; % Verhaeltnisse
18 gamma = 3*alpha*(epsilon/dx)^2;
20 if isempty(index) % globale Lsg
21 uinc = zeros(size(u));
24 % uinc(1) = uc(1); % OE: Intervall so gross, dass linker bzw. rechter Rand
const. (inflow/outflow)
25 uinc(1) = 0; % OE: Intervall so gross, dass linker bzw. rechter Rand
const. (inflow/outflow)
28 uinc(i)= REGULARlok_space(uc,i,beta,gamma,dx,dt);
30 % u(n_x-1) = uc(n_x-1);
41 for i=1:length(index)-1;
42 if index(i+1)-index(i)==0
43 error(
'Index kommt doppelt vor');
44 elseif index(i+1)-index(i)>1 % Zusaetzliche Abfrage, dass mind 5 aufeinanderfolgende Werte
49 Ie = [Ie,length(index)];
52 ni = Ie(i)-Ia(i)+1; % Anzahl aufeinanderfolgender Stuetzstellen
54 error('Zu wenig aufeinanderfolgende Stuetzstellen.')
57 % Mikroproblem auf Intervall loesen
58 uc = u(index(Ia(i)):index(Ie(i)));
59 u_local = zeros(ni,1);
61 u_local(k)=REGULARlok(uc,k,beta,gamma,dx,dt);
64 u_local(end-1:end)=[];
66 I = [I,index(Ia(i)+2):index(Ie(i)-2)];