22 mc = sys.Model.Config;
24 geo = fe_pos.Geometry;
25 fe_press = mc.PressureFEM;
26 pgeo = fe_press.Geometry;
34 columns_sarco_link = 53:56:56*this.nfibres;
38 if ~isempty(this.lambda_dot_pos)
43 num_elements = geo.NumElements;
44 num_gausspoints = fe_pos.GaussPointsPerElem;
46 dofsperelem_displ = geo.DofsPerElement;
47 dofsperelem_press = pgeo.DofsPerElement;
50 isize = num_elements*num_gausspoints*(...
52 (3*(3*dofsperelem_displ + dofsperelem_press)));
53 i = zeros(isize,1,
" int32 ");
54 j = zeros(isize,1,
" int32 ");
57 for m = 1:num_elements
58 elemidx_u = sys.idx_u_elems_local(:,:,m);
59 elemidx_v = elemidx_u + dofs_pos;
60 elemidx_p_glob = sys.idx_p_elems_local(:,m)+2*dofs_pos;
62 one = ones(size(inew),
" int32 ");
63 for gp = 1:num_gausspoints
64 for k = 1:dofsperelem_displ
66 step = 3*3*dofsperelem_displ;
68 i(curoff+(1:step)) = [inew; inew; inew];
69 j(curoff+(1:step)) = [one*elemidx_u(1,k)
72 curoff = curoff + step;
90 step = 3*dofsperelem_displ;
91 for k = 1:dofsperelem_press
92 i(curoff + (1:step)) = inew;
93 j(curoff + (1:step)) = one*elemidx_p_glob(k);
94 curoff = curoff + step;
98 for k = 1:this.nfibres
99 iS = [iS; elemidx_v(:)-dofs_pos];
100 jS = [jS; ones(3*dofsperelem_displ,1)*columns_sarco_link(k)];
104 if ~isempty(this.lambda_dot_pos)
105 k = find(this.lambda_dot_pos(1,:) == m & this.lambda_dot_pos(2,:) == gp);
107 ildot = [ildot; k*ones(6*dofsperelem_displ,1)];
108 jldot = [jldot; elemidx_u(:); elemidx_v(:)];
113 SPK = sparse(
double(i),
double(j),ones(size(i)),3*N,6*N+pgeo.NumNodes);
117 SPK(:,sys.idx_uv_bc_glob) = [];
118 SPK([sys.idx_u_bc_local; sys.idx_expl_v_bc_local],:) = [];
123 SPalpha = sparse(
double(iS),
double(jS),ones(size(iS)),3*N,this.nfibres*56);
125 SPalpha([sys.idx_u_bc_local sys.idx_v_bc_local],:) = [];
130 if ~isempty(this.lambda_dot_pos)
131 SPLamDot = sparse(ildot,
double(jldot),
true(size(ildot)),this.nfibres,6*N);
132 SPLamDot(:,sys.idx_uv_bc_glob) = [];
function [ SPK , SPg , SPalpha , SPLamDot ] = computeSparsityPattern()
Computes all sorts of patterns simultaneously.