LOGICAL FUNCTION OPINV(ID1, ID2, W, IW) USE Numeric_Kinds_Module ! ! $RCSfile: opinv.f,v $ $Revision: 1.3 $ ! $Date: 89/07/28 09:57:27 $ ! $State: Stable $ ! ! ! ********************************************************************** ! ! PURPOSE - ! ! DRIVER ROUTINE FOR THE SOLVER ROUTINE. SOLVES ! (LDL(T))*VEC(ID)=VEC(ID2). ! ! INPUT PARAMETERS - ! ! ID1 = IDENTIFIER OF THE RESULTING VECTOR. ! ID2 = IDENTIFIER OF THE INCOMING VECTOR. ! ! PLEASE SEE THE PROGRAMMERS GUIDE FOR INFORMATION ABOUT ! PARAMETERS NOT EXPLAINED ABOVE, AND FOR MORE DETAILS ABOUT ! THE FUNCTION OF THE ROUTINE. ! ! ! ********************************************************************** ! REAL(Kind=WP_Kind) SECOND, SMALL, ST, TIME, W(1) INTEGER AD1, AD2, ADDRSS, COUNT, D, DAFILE, DUMMY, FREE, ID1, ID2, IW(1), K, KFILE, LEN, LP, M, MAXL, N, NBADMU, & NMXRST, NOACTN, NOR, NREAD, NWRITE, READID, READK, SAEVAL, SAVE, SAVFRE, VER, WRITID LOGICAL ALLOC, DIAGM, F, MEQI, T COMMON /STLMAC/ NOACTN, FREE, SAVE, SAVFRE COMMON /STLMAD/ ADDRSS, DAFILE, KFILE, LP, MAXL, NREAD, NWRITE COMMON /STLMDS/ K, M, D, DIAGM COMMON /STLMIO/ SAEVAL, READID, WRITID, READK, N COMMON /STLMMI/ MEQI COMMON /STLMST/ TIME(24), COUNT(24), NBADMU, NMXRST, DUMMY COMMON /STLMTF/ T, F COMMON /STLMVR/ SMALL, VER ! DATA NOR / 13 / ! ST = SECOND(DUMMY) COUNT(NOR) = COUNT(NOR) + 1 OPINV = T ! IF(VER == 3) GOTO 10 IF(.NOT. ALLOC(ID1, ID2, AD1, AD2, NOACTN, W, IW(ADDRSS))) GOTO 8888 ! IF(VER == 2) GOTO 20 CALL SOLVE(W(AD1), W(AD2), W(K), IW(D), N) GOTO 9999 ! 10 CALL SOL3(ID1, ID2, W, IW, N, LEN) 20 IF(VER == 2) CALL SOL2(W(AD1), W(AD2), W, IW, N, LEN) IF(.NOT. LEN > 0) GOTO 9999 CALL ERROR(102, LEN) CALL ERROR(102, 102) ! 8888 OPINV = F CALL ERROR(NOR, NOR) ! 9999 TIME(NOR) = TIME(NOR) + SECOND(DUMMY) - ST RETURN END