rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
gen_model_data.m
1 function model_data = gen_model_data(dmodel)
2 % function model_data = gen_model_data(model)
3 % method which produces all `H`-dependent data, that is required for a detailed
4 % simulations and is independent of the parameter `\mu`.
5 %
6 % Generated fields of model_data:
7 % W : inner product weighting matrix
8 
9 ddescr = dmodel.descr;
10 
11 grid = construct_grid(ddescr);
12 model_data.grid = grid;
13 
14 model_data.W = ddescr.inner_product_matrix_algorithm(ddescr, model_data);
15 
16 [model_data.gEI, model_data.gn_inner_edges, model_data.gn_boundary_edges, ...
17  i_ints_bigger, b_ints] ...
18  = compute_edge_indices(grid);
19 model_data.gn_edges = model_data.gn_inner_edges + model_data.gn_boundary_edges;
20 
21 dWdiag = zeros(1, model_data.gn_edges);
22 relevant_edges = [i_ints_bigger; find(b_ints)];
23 %dWdiag(model_data.gEI(relevant_edges)) = 1/2.*grid.DS(relevant_edges).*grid.EL(relevant_edges);
24 dWdiag(model_data.gEI(relevant_edges)) = grid.EL(relevant_edges);
25 model_data.diamondW = spdiags(dWdiag(:), 0, model_data.gn_edges, model_data.gn_edges);
26 model_data.diamondWinv = spdiags(1./dWdiag(:), 0, model_data.gn_edges, model_data.gn_edges);
27 
28 tmppar.local_mass_matrix = @fv_local_mass_matrix_rect;
29 tmppar.element_quadrature = @cubequadrature;
30 tmppar.evaluate_basis = @fv_evaluate_basis;
31 tmppar.pdeg = 0;
32 model_data.opdata = [];
33 model_data.opdata.S_upper = grid.A .* ...
34  l2project(@(elemin, loc, grid) ddescr.two_phase.upper_source(elemin, loc, grid), ...
35  2, model_data.grid, tmppar);
36 model_data.opdata.S_lower = grid.A .* ...
37  l2project(@(elemin, loc, grid) ddescr.two_phase.lower_source(elemin, loc, grid), ...
38  2, model_data.grid, tmppar);
39 
40 
function [ gEI , in_edges , b_edges , i_ints_bigger , b_ints ] = compute_edge_indices(gridbase grid)
edge index matrix. This matrix maps each edge specified by the tuple (element_id, local_edge_id) to a...
function res = cubequadrature(poldeg, func, varargin)
integration of function func over reference cube == unit cube. by Gaussian quadrature exactly integra...