LOGICAL FUNCTION INITLA(CONTIN, FINAL, POSDOT, POSNU, W, IW) USE Numeric_Kinds_Module ! ! $RCSfile: initla.f,v $ $Revision: 1.3 $ ! $Date: 89/07/28 09:57:16 $ ! $State: Stable $ ! ! ! ********************************************************************** ! ! PURPOSE - ! ! INITIALIZES PARAMETERS USED IN CONNECTION WITH THE LANCZOS ! STEPS. NORMALIZES THE STATRINGVECTOR (UNLESS THE M-SCALAR ! PRODUCT IS TOO SMALL). ! ! ! OUTPUT PARAMETERS - ! ! CONTIN = USED TO DECIDE IF AN OTHER LANCZOS STEP SHOULD BE ! TAKEN. ! FINAL = TRUE IF THE LAST STEP HAS BEEN TAKEN. ! POSDOT = TRUE IF THE M-SCALAR PRODUCT IS GREATER THAN ! TOLPDM. ! POSNU = TRUE IF IT EXISTS A NU-EIGENVALUE GREATER THAN ! TOLZNU. ! ! 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) CK, CL, COEFF, DOT, FACTOR, SRELPR, RDUMP, SECOND, ST, TIME, TIMTQL, TLDL, TOLBPI, TOLLDL, TOLPDM, TOLS1I, & TOLZBT, TOLZNU, TOPINV, TOPM, TPRED, TSAVE, TVECOP, W(1), WRR INTEGER ACTION, CNEG, CONV, COUNT, CPOS, DUMMY, ERRNO, FREE, IDUMP, ITERNO, IW(1), MV, MXNEW, MXOLD, MXRST, N, & NBADMU, NIL, NMXRST, NOACTN, NOR, OLCPOS, P, PFCONV, REST, RNEW, ROLD, SAVE, SAVFRE, SCPX, SOLCPX, TCONV, V, & WRI, X LOGICAL CONTIN, F, FINAL, MEQI, MULVEC, OPM, POSDOT, POSNU, SCPROD, T, UPDATE, USEMX, WRL, ZERBET COMMON /STLMAC/ NOACTN, FREE, SAVE, SAVFRE COMMON /STLMCT/ N, ITERNO, TCONV, CNEG, CPOS, OLCPOS, RNEW, ROLD, REST, P, USEMX, ZERBET COMMON /STLMER/ RDUMP, ERRNO, IDUMP(2) COMMON /STLMID/ NIL, MV, V, MXNEW, MXOLD, MXRST, SCPX, SOLCPX, X COMMON /STLMMI/ MEQI COMMON /STLMOP/ TLDL, TOPINV, TOPM, TIMTQL, TVECOP, TPRED, TSAVE, COEFF(4), CK, CL, CONV, PFCONV, UPDATE COMMON /STLMST/ TIME(24), COUNT(24), NBADMU, NMXRST, DUMMY COMMON /STLMTF/ T, F COMMON /STLMTL/ SRELPR, TOLBPI, TOLS1I, FACTOR, TOLPDM, TOLZBT, TOLZNU, TOLLDL(3) COMMON /STLMWR/ WRR(5), WRI(5), WRL(5) ! DATA NOR / 7 / ! ST = SECOND(DUMMY) COUNT(NOR) = COUNT(NOR) + 1 INITLA = T ! ! ******************************************************** ! COMPUTE STARTINGVECTOR(T) * M * STARTINGVECTOR AND CHECK ! IF IT IS GREAT ENOUGH. ! ******************************************************** IF(MEQI) GOTO 10 IF(.NOT. OPM(MV + 1, V + 1, W, IW)) GOTO 8888 10 IF(.NOT. SCPROD(MV + 1, V + 1, DOT, W, IW, NOACTN, 1)) GOTO 8888 ! POSDOT = DOT > TOLPDM WRL(2) = POSDOT RDUMP = DOT ! IF(.NOT. POSDOT) GOTO 30 ! *********************************** ! NORMALIZE V (AND MV IF IT IS USED). ! *********************************** DOT = 1.0D0 / SQRT(DOT) ACTION = SAVFRE IF(MEQI) ACTION = SAVE IF(.NOT. MULVEC(V + 1, V + 1, DOT, W, IW, ACTION, 1)) GOTO 8888 IF(MEQI) GOTO 20 IF(.NOT. MULVEC(MV + 1, MV + 1, DOT, W, IW, SAVE, 1)) GOTO 8888 ! ! ************************** ! MAKE SOME INITIALIZATIONS. ! ************************** 20 PFCONV = 0 CONTIN = T FINAL = F ZERBET = F POSNU = F P = 0 CNEG = 0 GOTO 9999 ! 30 IF(.NOT. MEQI) CALL FREEID(MV + 1) GOTO 9999 ! 8888 INITLA = F CALL ERROR(NOR, NOR) ! 9999 TIME(NOR) = TIME(NOR) + SECOND(DUMMY) - ST RETURN END