rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
reaction.m
1 function reaction = reaction(model, X, Y, U)
2 %function reaction = reaction(model, X, Y, U)
3 %
4 % function computing the reaction term of a advection-diffusion-reaction
5 % problem, e.g. in case of a given geometry_transformation.
6 
7 
8 if isequal(model.geometry_transformation, 'spline')
9  p_mu = spline_select(model);
10  [ breaks, coeffs, pieces, order ] = unmkpp(p_mu);
11  p_mu_d = mkpp(breaks, coeffs(:,1:order-1) .* repmat((order-1:-1:1),pieces,1));
12  [ breaks, coeffs, pieces, order ] = unmkpp(p_mu_d);
13  if order == 1
14  p_mu_dd = mkpp(breaks, zeros(size(coeffs)));
15  else
16  p_mu_dd = mkpp(breaks, coeffs(:,1:order-1) .* repmat((order-1:-1:1),pieces,1));
17  end
18 
19  div = 1 + ppval(p_mu, X);
20  rec = 2 .* (ppval(p_mu_d,X) ./ div).^2 - ppval(p_mu_dd, X) ./ div;
21 
22  reaction = model.k .* rec .* U;
23 end
24 
25 if isequal(model.name_flux, 'transport')
26  reaction = model.transport_source .* U;
27 end;
28 
29 %| \docupdate