rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
stokes_infsup_constant.m
1 function beta = stokes_infsup_constant(model, model_data)
2 %function beta = stokes_infsup_constant(model, model_data)
3 %
4 
5 old_decomp_mode = model.decomp_mode;
6 model.decomp_mode = 0;
7 
8 % assembly required matrix
9 S = Fem.Assembly.stokes_fd_nl_operator(model, model_data);
10 
11 model.decomp_mode = old_decomp_mode;
12 
13 % get inner prodcut
14 K = getMatrix(model.get_inner_product_matrix(model_data));
15 dir_gids = model_data.bc_info.dirichlet_gids;
16 
17 if ~isempty(dir_gids)
18  K(dir_gids, :) = [];
19  K(:, dir_gids) = [];
20  S(dir_gids, :) = [];
21  S(:, dir_gids) = [];
22 end
23 
24 K = 0.5*(K + K');
25 
26 % compute constant using eigs
27 fun = @(X) S \ (K * (S' \ X));
28 
29 opts = [];
30 opts.tol = 1e-9;
31 opts.issym = 1;
32 
33 beta = sqrt(eigs(fun, size(S, 1), K, 1, 'SM', opts));
34 
35 end