rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
stokes_rb_reconstruction.m
1 function rb_sim_data = stokes_rb_reconstruction(model, detailed_data, rb_sim_data)
2 %function rb_sim_data = stokes_rb_reconstruction(model, detailed_data, rb_sim_data)
3 %
4 % detailed reconstruction for stokes & lin_stat problems.
5 
6 
7 if ~isfield(rb_sim_data,'uh')
8  rb_sim_data.uh = Fem.DiscFunc([], detailed_data.df_info);
9 end;
10 
11 if get_rb_size(model, detailed_data) == 0
12  return
13 end
14 
15 uh = detailed_data.RB(:,1:length(rb_sim_data.uN)) * rb_sim_data.uN;
16 
17 if model.has_dirichlet_values
18 
19  dir_comp = detailed_data.bc_info.dirichlet_dof_vector_components;
20 
21  if iscell(dir_comp)
22  old_decomp_mode = model.decomp_mode;
23  model.decomp_mode = 2;
24  dir_coeff = model.dirichlet_values([], [], [], [], model);
25  model.decomp_mode = old_decomp_mode;
26 
27  r_dir = lincomb_sequence(dir_comp, dir_coeff);
28  else
29  r_dir = dir_comp;
30  end
31 
32  uh = uh + repmat(r_dir, 1, size(uh, 2));
33 end
34 
35 rb_sim_data.uh.dofs = uh;
36 end