| [n,b,x,nelt,ia,ja,a,isym,rwork,iwork]=ssmmti(n,b,x,nelt,ia,ja,a,isym,rwork,iwork); |
function [n,b,x,nelt,ia,ja,a,isym,rwork,iwork]=ssmmti(n,b,x,nelt,ia,ja,a,isym,rwork,iwork);
%***BEGIN PROLOGUE SSMMTI
%***PURPOSE SLAP MSOLVE for LDU Factorization of Normal Equations.
% This routine acts as an interface between the SLAP generic
% MMTSLV calling convention and the routine that actually
% -1
% computes [(LDU)*(LDU)'] B = X.
%***LIBRARY SLATEC (SLAP)
%***CATEGORY D2E
%***TYPE SINGLE PRECISION (SSMMTI-S, DSMMTI-D)
%***KEYWORDS ITERATIVE PRECONDITION, LINEAR SYSTEM SOLVE, SLAP, SPARSE
%***AUTHOR Greenbaum, Anne, (Courant Institute)
% Seager, Mark K., (LLNL)
% Lawrence Livermore National Laboratory
% PO BOX 808, L-60
% Livermore, CA 94550 (510) 423-3141
% seager@llnl.gov
%***DESCRIPTION
% It is assumed that RWORK and IWORK have initialized with
% the information required for SSMMI2:
% IWORK(1) = Starting location of IL in IWORK.
% IWORK(2) = Starting location of JL in IWORK.
% IWORK(3) = Starting location of IU in IWORK.
% IWORK(4) = Starting location of JU in IWORK.
% IWORK(5) = Starting location of L in RWORK.
% IWORK(6) = Starting location of DINV in RWORK.
% IWORK(7) = Starting location of U in RWORK.
% See the DESCRIPTION of SSMMI2 for details.
%***REFERENCES (NONE)
%***ROUTINES CALLED SSMMI2
%***REVISION HISTORY (YYMMDD)
% 871119 DATE WRITTEN
% 881213 Previous REVISION DATE
% 890915 Made changes requested at July 1989 CML Meeting. (MKS)
% 890922 Numerous changes to prologue to make closer to SLATEC
% standard. (FNF)
% 890929 Numerous changes to reduce SP/DP differences. (FNF)
% 910411 Prologue converted to Version 4.0 format. (BAB)
% 920511 Added complete declaration section. (WRB)
% 921113 Corrected C***CATEGORY line. (FNF)
% 930701 Updated CATEGORY section. (FNF, WRB)
%***end PROLOGUE SSMMTI
% .. Scalar Arguments ..
% .. Array Arguments ..
persistent locdin locil lociu locjl locju locl locu ;
rwork_shape=size(rwork);rwork=reshape(rwork,1,[]);
% .. Local Scalars ..
if isempty(locdin), locdin=0; end;
if isempty(locil), locil=0; end;
if isempty(lociu), lociu=0; end;
if isempty(locjl), locjl=0; end;
if isempty(locju), locju=0; end;
if isempty(locl), locl=0; end;
if isempty(locu), locu=0; end;
% .. External Subroutines ..
%***FIRST EXECUTABLE STATEMENT SSMMTI
%
% Pull out the locations of the arrays holding the ILU
% factorization.
%
locil = fix(iwork(1));
locjl = fix(iwork(2));
lociu = fix(iwork(3));
locju = fix(iwork(4));
locl = fix(iwork(5));
locdin = fix(iwork(6));
locu = fix(iwork(7));
%
[n,b,x,dumvar4,dumvar5,dumvar6,dumvar7,dumvar8,dumvar9,dumvar10]=ssmmi2(n,b,x,iwork(sub2ind(size(iwork),max(locil,1)):end),iwork(sub2ind(size(iwork),max(locjl,1)):end),rwork(sub2ind(size(rwork),max(locl,1)):end),rwork(locdin:locdin+n-1),iwork(sub2ind(size(iwork),max(lociu,1)):end),iwork(sub2ind(size(iwork),max(locju,1)):end),rwork(locu:locu+n-1)); dumvar4i=find((iwork(sub2ind(size(iwork),max(locil,1)):end))~=(dumvar4));dumvar5i=find((iwork(sub2ind(size(iwork),max(locjl,1)):end))~=(dumvar5));dumvar6i=find((rwork(sub2ind(size(rwork),max(locl,1)):end))~=(dumvar6));dumvar7i=find((rwork(locdin:locdin+n-1))~=(dumvar7));dumvar8i=find((iwork(sub2ind(size(iwork),max(lociu,1)):end))~=(dumvar8));dumvar9i=find((iwork(sub2ind(size(iwork),max(locju,1)):end))~=(dumvar9));dumvar10i=find((rwork(locu:locu+n-1))~=(dumvar10)); iwork(locil-1+dumvar4i)=dumvar4(dumvar4i); iwork(locjl-1+dumvar5i)=dumvar5(dumvar5i); rwork(locl-1+dumvar6i)=dumvar6(dumvar6i); rwork(locdin-1+dumvar7i)=dumvar7(dumvar7i); iwork(lociu-1+dumvar8i)=dumvar8(dumvar8i); iwork(locju-1+dumvar9i)=dumvar9(dumvar9i); rwork(locu-1+dumvar10i)=dumvar10(dumvar10i);
%
%------------- LAST LINE OF SSMMTI FOLLOWS ----------------------------
rwork_shape=zeros(rwork_shape);rwork_shape(:)=rwork(1:numel(rwork_shape));rwork=rwork_shape;
end
%DECK SSMTV
|
|