rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
comsol_get_init_values.m
1 function init_values = comsol_get_init_values(model,detailed_data)
2 %function init_values = comsol_get_init_values(model,detailed_data)
3 %
4 % function extracting the init_values from a comsol model. After an
5 % time-dependend simulation, these values have to be added to the solution.
6 % This is due to the way COMSOL assembles the matrices!
7 %
8 % Oliver Zeeb, 2013
9 
10 %disp('comsol_get_init_values --> my_init_values!!! decomp_mode sauber implementieren!!!');
11 if model.use_comsol
12  switch model.decomp_mode
13  case 0
14  init_values = mphgetu(detailed_data.comsol_model,'solnum',1);
15  init_values = init_values(detailed_data.ind_vectors.com_DOF_ind);
16  case 1
17  init_values = mphgetu(detailed_data.comsol_model,'solnum',1);
18  init_values = {init_values(detailed_data.ind_vectors.com_DOF_ind)};
19  %cut off the DBC_DOFs and put everything in a cell
20  case 2
21  init_values = 1;
22  end
23 else %~model.use_comsol
24  switch model.decomp_mode
25  case 0
26  disp('decomp_mode 0 not yet implemented');
27  keyboard;
28  case 1
29  model.decomp_mode = 1;
30  [L_I_comp, ~, b_comp] = model.operators_ptr(model,detailed_data);
31  model.decomp_mode = 2;
32  [L_I_coeff, ~, b_coeff] = model.operators_ptr(model,detailed_data);
33  L_I = lincomb_sequence(L_I_comp, L_I_coeff);
34  b = lincomb_sequence(b_comp, b_coeff);
35  init_values = detailed_data.ind_vectors.Null*(L_I \ b) ;
36  if model.comsol_get_eliminated_data
37  init_values = init_values(detailed_data.ind_vectors.com_DOF_ind);
38  end
39  init_values = {init_values};
40  case 2
41  init_values = 0;
42  end
43 end