rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
dom_dec_compute_projection_error.m
1 function proj_err = dom_dec_compute_projection_error(...
2  detailed_data,XN,K,base_sim_data)
3 %function proj_err = dom_dec_compute_projection_error(...
4 % detailed_data,XN,K,base_sim_data)
5 %
6 % if XN is a cell: K is assumed to be a cell and the projections
7 % on the subdomains are computed
8 
9 % IM, 06.03.2012
10 
11 proj_err = 0;
12 
13 if iscell(XN)
14 
15  ehPROJ = cell(1,2);
16  for i = 1:2
17 
18  uh = base_sim_data.uh.dofs(detailed_data.masks{i});
19 
20  if ~isempty(XN{i})
21  ehPROJ{i} = uh - XN{i} * (XN{i}' * K{i} * uh);
22  else
23  ehPROJ{i} = uh;
24  end;
25 
26  norm = ehPROJ{i}' * K{i} * ehPROJ{i};
27  if (norm < 0)
28  norm = 0;
29  end;
30 
31  proj_err = proj_err + norm;
32 
33  end;
34 
35  proj_err = sqrt(proj_err);
36 
37 else
38 
39  if ~isempty(XN)
40  ehPROJ = base_sim_data.uh.dofs - XN * (XN' * K * ...
41  base_sim_data.uh.dofs);
42  else
43  ehPROJ = base_sim_data.uh.dofs;
44  end;
45 
46  proj_err = ehPROJ' * K * ehPROJ;
47 
48  if proj_err < 0
49  proj_err = 0;
50  end;
51 
52  proj_err = sqrt(proj_err);
53 
54 end;