rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
dune_lin_evol_rb_operators.m
1 function [LL_I, LL_E, bb, K_II, K_IE, K_EE, m_I, m_E, m ] = ...
2  dune_lin_evol_rb_operators(model, detailed_data)
3 
4  decomp_mode = model.decomp_mode;
5 
6  if decomp_mode == 2
7  dLL_I = model.coeff_ops.LL_I_ptr(model.mu);
8  dLL_E = model.coeff_ops.LL_E_ptr(model.mu);
9  dbb = model.coeff_ops.bb_ptr(model.mu);
10 % model.mexptr('set_mu', model.mu);
11 % foo = model.mexptr('rb_operators', decomp_mode);
12 % disp('start');
13 % dLL_I == foo{1}
14 % dLL_E == foo{2}
15 % dbb == foo{3}
16 % kron(dLL_I,dLL_E) == foo{6}
17 % kron(dLL_E,dbb) == foo{8}
18 % kron(dbb,dbb) == foo{9}
19  LL_I = [1, dLL_I];
20  LL_E = [1, dLL_E];
21  bb = dbb;
22  K_II = [1, dLL_I, dLL_I, kron(dLL_I,dLL_I) ];
23  K_EE = [1, dLL_E, dLL_E, kron(dLL_E,dLL_E) ];
24  K_IE = [1, dLL_I, dLL_E, kron(dLL_I,dLL_E) ];
25  m_I = [dbb, kron(dLL_I,dbb) ];
26  m_E = [dbb, kron(dLL_E,dbb) ];
27  m = kron(dbb,dbb);
28  else
29  foo = model.mexptr('rb_operators', decomp_mode);
30  dLL_I = foo{1};
31  dLL_E = foo{2};
32  dbb = foo{3};
33  dK_II = foo{4};
34  dK_EE = foo{5};
35  dK_IE = foo{6};
36  dm_I = foo{7};
37  dm_E = foo{8};
38  dm = foo{9};
39 
40  if decomp_mode == 1
41 
42  func2 = @(X) model.dt * X;
43  func2t = @(X) model.dt * X';
44  func3 = @(X) model.dt.^2 * X;
45 
46  identity = speye(size(dLL_I{1}));
47 
48  LL_I = [{identity}; ...
49  cellfun(func2 , dLL_I, 'UniformOutput', false)];
50 
51  LL_E = [{identity}; ...
52  cellfun(func2 , dLL_E, 'UniformOutput', false)];
53 
54  bb = cellfun(func2 , dbb , 'UniformOutput', false);
55 
56  K_II = [{identity}; ...
57  cellfun(func2t, dLL_I, 'UniformOutput', false); ...
58  cellfun(func2 , dLL_I, 'UniformOutput', false); ...
59  cellfun(func3 , dK_II, 'UniformOutput', false)];
60 
61  K_EE = [{identity}; ...
62  cellfun(func2t, dLL_E, 'UniformOutput', false); ...
63  cellfun(func2 , dLL_E, 'UniformOutput', false); ...
64  cellfun(func3 , dK_EE, 'UniformOutput', false)];
65 
66  K_IE = [{identity}; ...
67  cellfun(func2t, dLL_I, 'UniformOutput', false); ...
68  cellfun(func2 , dLL_E, 'UniformOutput', false); ...
69  cellfun(func3 , dK_IE, 'UniformOutput', false)];
70 
71  m_I = [bb; ...
72  cellfun(func3 , dm_I , 'UniformOutput', false)];
73 
74  m_E = [bb; ...
75  cellfun(func3 , dm_E , 'UniformOutput', false)];
76 
77  m = cellfun(func3 , dm , 'UniformOutput', false);
78 
79  else % decomp_mode == 0
80  LL_I = 1 + model.dt * dLL_I;
81  LL_E = 1 + model.dt * dLL_E;
82  bb = model.dt * dbb;
83  K_II = 1 + model.dt * dLL_I' + model.dt * dLL_I + model.dt^2 * dK_II;
84  K_EE = 1 + model.dt * dLL_E' + model.dt * dLL_E + model.dt^2 * dK_EE;
85  K_IE = 1 + model.dt * dLL_I' + model.dt * dLL_E + model.dt^2 * dK_IE;
86  m_I = model.dt * dbb + model.dt^2 * dm_I;
87  m_E = model.dt * dbb + model.dt^2 * dm_E;
88  m = model.dt^2 * dm;
89  end
90  end
91 
92 %| \docupdate