rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
test.m
1 function [fehler]=test(Tmicro,Ul,tau,n_x)
2 %
3 % function [fehler]=test(T,Ul,tau,n_x)
4 %
5 % Bsp: [fehler]=test(3*10^(-3),0.75,10,300)
6 %
7 % Input: T Endzeit fuer mikroskopische Problem
8 % Ul linker Anfangszustand
9 % tau Parameter
10 % n_x Anzahl mikroskopischer Ortsschritte
11 % Gitterpunkte einschliesslich Randpunkte
12 % Output: fehler Fehler zwischen globaler und lokaler Loesung
13 
14 
15 
16 close all;
17 
18 Time=3; % Endzeit fuer HMM-Berechnung
19 
20 % Regularisierungsparameter und Ortsskalierung
21 epsilon = 0.00001;
22 
23 % Intervall = x in [0, epsilon*1.5*n_x];
24 
25 M = 2; % water/oil viscosity ratio
26 
27 %%%%%%%%%%%%%%% makroskopische Ortsschrittweite %%%%%%%%%%%%%%%%%%%%%%%
28 DX=0.02;
29 
30 %%%%%%%%%%% Anzahl der Schritte auf mikroskopischer Skala %%%%%%%%%%%%%
31 n = n_x-2;
32 
33 %%%%%%%%%%%%%%%%%%%%%%%% Anfangsdaten %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34 [U,Ur,xfront,lR,rR,X,N_X]=HMM_AB_U0_BL(DX,Ul);
35 
36 %%%%%%%%%%%%%%%%%%%%%%%%% Schrittweiten %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37 [DT,N_T,dx,dt,LAMBDA]=HMM_CFL_BL(DX,Time,epsilon,M);
38 n_t=round(Tmicro/dt)-1; % Anzahl mikroskopischer Zeitschritte
39 
40 %%% Diskretisierungsmatrix A in IR^{(nx-2)x(nx-2)}
41 a = 2+dx^2/(epsilon^2*tau);
42 c = epsilon^2*tau/(dx^2);
43 A = c*(diag(a*ones(1,n))+diag(-ones(1,n-1),1)+diag(-ones(1,n-1),-1));
44 
45 %%% Inverse der Tridiagonalmatrix A
46 %[T]=INVERSE_TRIDIAG(A);
47 T = inv(A);
48 
49 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 
52  % 1.Schritt: stueckweise konstante Rekonstruktion von u=RU
53  [u,x,s]=HMM_REKONSTRUKTION(U,xfront,X,dx,n_x);
54 
55  disp(u)
56 % keyboard;
57 
58  % 2.Schritt: Loesung des mikroskopischen Modells mit den Anfangsdaten u=RU
59  % auf dem mikroskopischen Gitter -> gibt Loesung u zurueck
60 
61  for iter=1:n_t % global Loesung zum Zeitpunkt T-dt
62  [u_new,w]=HMM_MIKRO_teil(T,u,epsilon,tau,dx,dt,n_x,M);
63  u_test = u + dt*w';
64  if ~isequal(u_new,u_test)
65  error('timestepping inconsistent');
66  end;
67  u = u_new;
68  end
69  u_sicher = u;
70 
71  i1=(15:1:20);
72  i2=(150:1:170);
73  i3=(190:1:210);
74  i4=(230:1:235);
75  index=[i1,i2,i3,i4];
76 
77  % lokale Loesung zum Zeitpunkt T
78  [u,w,index_n]=HMM_MIKRO_teil(T,u_sicher,epsilon,tau,dx,dt,n_x,M,index);
79  X = x(index_n);
80 
81  % kontrolle/ global Loesung zum Zeitpunkt T
82  [u_kontrolle,w_k]=HMM_MIKRO_teil(T,u_sicher,epsilon,tau,dx,dt,n_x,M);
83 
84  % Fehler zwischen globaler und lokaler Loesung
85  fehler = max(abs(u_kontrolle(index_n)-u));
86 
87 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
88 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
89 % PLOT
90 
91 figure % Plot zu u-Werten
92 plot(x,u_sicher,'g','LineWidth',2)
93 hold on
94 plot(x,u_kontrolle,'LineWidth',2)
95 plot(X,u,'ro')
96 title('u')
97 legend('globale Lsg bei T-dt','globale Lsg bei T','lokale Lsg bei T')
98 xlabel('x')
99 
100 figure % Plot zu w-Werten
101 plot(x,w_k*dt)
102 hold on
103 plot(X,w*dt,'ro')
104 title('w')
105 xlabel('x')