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`.
6 % Generated fields of model_data:
7 % W : inner product weighting matrix
11 grid = construct_grid(ddescr);
12 model_data.grid = grid;
14 model_data.W = ddescr.inner_product_matrix_algorithm(ddescr, model_data);
16 [model_data.gEI, model_data.gn_inner_edges, model_data.gn_boundary_edges, ...
17 i_ints_bigger, b_ints] ...
19 model_data.gn_edges = model_data.gn_inner_edges + model_data.gn_boundary_edges;
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);
28 tmppar.local_mass_matrix = @fv_local_mass_matrix_rect;
30 tmppar.evaluate_basis = @fv_evaluate_basis;
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);
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...