1 function [u,index_n]=Phasen_lokal_old(u,epsilon,alpha,index,dx,dt)
3 % Loest mikroskopische Modell u_t+f(u)_x = epsilon u_{xx} + alpha*epsilon^2 u_{xxx}
4 % fuer einen Zeitschritt.
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: u Lsg nach Zeitschritt dt
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
23 u(1) = uc(1); % OE: Intervall so gross, dass linker bzw. rechter Rand
const. (inflow/outflow)
26 u(i)=REGULARlok(uc,i,beta,gamma,dx,dt);
37 for i=1:length(index)-1;
38 if index(i+1)-index(i)==0
39 error(
'Index kommt doppelt vor');
40 elseif index(i+1)-index(i)>1 % Zusaetzliche Abfrage, dass mind 5 aufeinanderfolgende Werte
45 Ie = [Ie,length(index)];
48 ni = Ie(i)-Ia(i)+1; % Anzahl aufeinanderfolgender Stuetzstellen
50 error('Zu wenig aufeinanderfolgende Stuetzstellen.')
53 % Mikroproblem auf Intervall loesen
54 uc = u(index(Ia(i)):index(Ie(i)));
55 u_local = zeros(ni,1);
57 u_local(k)=REGULARlok(uc,k,beta,gamma,dx,dt);
60 u_local(end-1:end)=[];
62 I = [I,index(Ia(i)+2):index(Ie(i)-2)];