rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
comsol_operators_output_default.m
1 function v = comsol_operators_output_default(model,model_data)
2 %function v = comsol_operators_output_default(model,model_data)
3 %
4 % This function returns the output defined in the COMSOL model as for
5 % example a line integral (in comsol_model.result.numerical. ...).
6 %
7 % PLEASE WRITE AN OWN OUTPUT FUNCTION FOR EVERY MODEL THAT SUPPORTS THE
8 % THE FIELD model.use_comsol=0/1;
9 % See for example the functions used for the ThermalBlock models!
10 %
11 %This function is for linear output functionals with no explicit mu-dependency
12 %and therefor no affine decomposition!!!
13 %
14 % Oliver Zeeb, 2012.
15 
16 switch model.decomp_mode
17  case 0
18  error('not yet implemented')
19  % is this case needed???
20 
21  case 1 %model_data is detailed_data
22  %store original solution:
23  u_save = model_data.comsol_model.sol(model.comsol_tags.sol).getU;
24  %calculate the output for every basis function:
25  v_comp = zeros(size(model_data.RB,2),1);
26  for k = 1:size(model_data.RB,2)
27  model_data.comsol_model.sol(model.comsol_tags.sol).setU(model_data.RB(:,k));
28  model_data.comsol_model.sol(model.comsol_tags.sol).createSolution;
29  v_comp(k) = model_data.comsol_model.result.numerical(model.comsol_tags.output).getReal();
30  end
31  v{1} = v_comp;
32  %reset to original solution:
33  model_data.comsol_model.sol(model.comsol_tags.sol).setU(u_save);
34  model_data.comsol_model.sol(model.comsol_tags.sol).updateSolution;
35 
36  case 2
37  v(1) = 1;
38 end
39