5 %
function applying an FV-space-discretization operator starting from old
6 % values U corresponding to the geometry given in grid producing a
7 % new vector of elementwise scalars NU but only on for the
8 % subelements with numbers given in NU_ind. If NU_ind is empty, all
9 % new values NU are determined, i.e. length(NU) = length(U) =
12 % By this, the operator evaluation can be performed in a localized
13 % way, i.e. used for empirical interpolation in rb_nonlin_evol_simulation
15 % usual timestepping can be performed afterwards by (NU = Id - deltat *
18 % required fields of model:
19 % verbose : a verbosity level
20 % convective_discretization: if set to 'explicit', this operator discretizes
21 % the convective part of the scheme
22 % diffusive_discretization : if set to 'explicit', this operator discretizes
23 % the diffusive part of the scheme
24 % reaction_discretization : if set to 'explicit', this operator discretizes
25 % the reaction term of the scheme
27 % optional fields of model_data:
28 % implicit_operator : cached operator
29 % implicit_constant : cached affine shift vector
31 % Martin Drohmann 9.12.2007 based on fv_conv_explicit_space by Bernard
34 weights.diff_weight = model.fv_impl_diff_weight;
35 weights.conv_weight = model.fv_impl_conv_weight;
36 weights.react_weight = model.fv_impl_react_weight;
38 if isfield(model,
'model_type') ...
39 && isequal(model.model_type,
'implicit_nonaffine_linear')
40 if isfield(model_data, 'implicit_operator') && isfield(model_data, 'implicit_constant')
41 L_I = model_data.implicit_operator;
42 b_I = model_data.implicit_constant;
44 [L_I, b_I] = model.operators_diff_implicit(model, model_data, NU_ind);