rbmatlab 0.10.01
datafunc/reaction.m
00001 function reaction = reaction(model, X, Y, U)
00002 %function reaction = reaction(model, X, Y, U)
00003 % 
00004 % function computing the reaction term of a advection-diffusion-reaction
00005 % problem, e.g. in case of a given geometry_transformation.
00006 
00007 
00008 if isequal(model.geometry_transformation, 'spline')
00009   p_mu    = spline_select(model);
00010   [ breaks, coeffs, pieces, order ] = unmkpp(p_mu);
00011   p_mu_d  = mkpp(breaks, coeffs(:,1:order-1) .* repmat((order-1:-1:1),pieces,1));
00012   [ breaks, coeffs, pieces, order ] = unmkpp(p_mu_d);
00013   if order == 1
00014     p_mu_dd = mkpp(breaks, zeros(size(coeffs)));
00015   else
00016     p_mu_dd = mkpp(breaks, coeffs(:,1:order-1) .* repmat((order-1:-1:1),pieces,1));
00017   end
00018 
00019   div = 1 + ppval(p_mu, X);
00020   rec = 2 .* (ppval(p_mu_d,X) ./ div).^2 - ppval(p_mu_dd, X) ./ div;
00021 
00022   reaction = model.k .* rec .* U;
00023 end
00024 
00025 if isequal(model.name_flux, 'transport')
00026   reaction = model.transport_source .* U;
00027 end;
00028 
00029 %| \docupdate 
All Classes Namespaces Files Functions Variables