rbmatlab 0.10.01
|
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