rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
test_lokal.m
Go to the documentation of this file.
1 function [u,dx,fehler]=test_lokal(Time,ul,ur,alpha,n_x)
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 % %
4 % 1D, skalare Erhaltungsgleichung %
5 % %
6 % mikroskopisches Modell (lokale Regularisierung) %
7 % u_t+f(u)_x = epsilon u_{xx} + alpha*epsilon^2 u_{xxx} %
8 % mit f(u) = u^3 %
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 %
11 % Input: Time Endzeit Mikroproblem, z.B.: 2.24*10^(-5)
12 % ul linker Zustand, z.B.: 4
13 % ur rechter Zustand, z.B.: -2
14 % alpha Parameter, z.B.: 4
15 % n_x Anzahl Ortsschritte, z.B.: 300
16 %
17 % Output: u Lsg
18 % dx Ortsschrittweite
19 % fehler Fehler zw. lokaler und globaler Lsg
20 %
21 % Bsp: [u,dx,fehler]=test_lokal(2.24*10^(-5),4,-2,4,300)
22 
23 %close all
24 clc
25 
26 epsilon = 10^(-5); % Regularisierungsparameter
27 dx=2*epsilon/5; % Ortsschrittweite
28 x = (-40*dx:dx:-40*dx+(n_x-1)*dx); % Gitter
29 w = max(abs(ul),abs(ur));
30 dt = 0.06*min([dx/(3*w^2), dx^2/(2*epsilon), dx^3/(3*alpha*epsilon^2)]); % Zeitschrittweite %% fuer
31  % ul<-4 vorne 0.06 durch 0.01 ersetzen!!!
32 n_t=round(Time/dt); % Anzahl Zeitschritte
33 
34 u = zeros(length(x),1); % initialisieren
35 for i=1:length(x)
36  if x(i)<0
37  u(i) = ul;
38  else
39  u(i) = ur;
40  end
41 end
42 
43 
44 % Loesen des Mikroproblems - Lsg zum Zeitpunkt T
45 for j=1:n_t % ueber Zeit
46  [u]=Phasen_lokal(u,epsilon,alpha,[],dx,dt);
47 end
48 
49 u_sicher = u;
50 
51 % Indices, auf denen Lsg lokal berechnet werden soll
52 i1=(15:1:20);
53 i2=(150:1:170);
54 i3=(190:1:200);
55 index=[i1,i2,i3];
56 
57 % Auslesen der u-Daten an den Index-Stellen
58 [u_index]=u_index_aus(u_sicher,index);
59 
60 % lokale Loesung zum Zeitpunkt T+dt
61 [u,index_n]=Phasen_lokal(u_index,epsilon,alpha,index,dx,dt);
62 X = x(index_n);
63 
64 % Kontrolle/ global Loesung zum Zeitpunkt T+dt
65 [u_kontrolle]=Phasen_lokal(u_sicher,epsilon,alpha,[],dx,dt);
66 
67 % Fehler zwischen globaler und lokaler Loesung
68 fehler = max(abs(u_kontrolle(index_n)-u));
69 
70 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
71 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
72 % PLOT
73 
74 figure % Plot zu u-Werten
75 hold on
76 plot(x,u_kontrolle,'LineWidth',2)
77 plot(X,u,'ro')
78 title('u')
79 legend('globale Lsg bei T+dt','lokale Lsg bei T+dt')
80 xlabel('x')
81 
82 % Bestimmung mittlerer Zustand um und Geschwindigkeit
83 %[um,v]=HMM_UM_GESCHW(u_kontrolle,dx,n_x,ul);
function [ u , dx , fehler ] = test_lokal(Time, ul, ur, alpha, n_x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1D, skalare Erhaltungsgl...
Definition: test_lokal.m:17