1 function A_comp = fem_matrix_volume_part_assembly(...
2 A_int_kernel,model,df_info);
3 %
function A_comp = fem_matrix_volume_part_assembly(...
4 % A_int_kernel,model,df_info);
6 % auxiliary
function assembling the volume integral components of
8 % note: cell-array valued kernels can be integrated.
10 % B. Haasdonk 29.1.2011
12 A_comp = spalloc(df_info.ndofs,df_info.ndofs,1);
13 for i = 1:df_info.nlagrange_nodes
14 for j = 1:df_info.nlagrange_nodes
15 gids_i = df_info.global_dof_index(1:df_info.grid.nelements,i);
16 gids_j = df_info.global_dof_index(1:df_info.grid.nelements,j);
17 f = @(x) A_int_kernel(x,model,df_info,i,j);
18 res = triaquadrature(model.qdeg,f);
20 res = res .* df_info.detDF; % due to transformation formula
21 A_tmp = sparse(gids_i,gids_j,res,df_info.ndofs,df_info.ndofs);
22 A_comp = A_comp + A_tmp;
28 % for first time: initialize A_comp
29 A_comp = cell(1,length(res));
31 A_comp{q} = spalloc(df_info.ndofs,df_info.ndofs,1);
35 res{q} = res{q} .* df_info.detDF; % due to transformation formula
36 A_tmp = sparse(gids_i,gids_j,res{q},df_info.ndofs,df_info.ndofs);
37 A_comp{q} = A_comp{q} + A_tmp;
43 if ~isempty(df_info.dirichlet_gids)
45 A_comp(df_info.dirichlet_gids,:) = 0;
46 %A_comp(:,df_info.dirichlet_gids) = 0;
48 for q = 1:length(A_comp)
49 A_comp{q}(df_info.dirichlet_gids,:) = 0;
50 %A_comp{q}(:,df_info.dirichlet_gids) = 0;