@@ -96,7 +96,7 @@ SUBROUTINE EIG_LANCZOS_ARPACK
9696 INTEGER (LONG) :: NUM_EST_EIGENS ! Number of estimated eigens in the freq interval (EIG_FRQ2 - EIG_FRQ1)
9797 INTEGER (LONG) :: NUM_KMSM_DIAG_0 ! Number of zero diagonal terms in KMSM
9898 INTEGER (LONG), PARAMETER :: SUBR_BEGEND = EIG_LANCZOS_ARPACK_BEGEND
99- INTEGER (LONG) :: MIN_NCV, MAX_NCV
99+ INTEGER (LONG) :: MIN_NCV, MAX_NCV, LNONZEROS
100100
101101 REAL (DOUBLE) :: EPS1 ! A small number to compare zero to
102102
@@ -295,10 +295,24 @@ SUBROUTINE EIG_LANCZOS_ARPACK
295295
296296! Check that user did not ask for more than NDOFL-1 eigens (Lanczos can't be used to find all). If request is > NDOFL-1, decrease
297297! request to NDOFL-1 and give warning
298+ IF (SOL_NAME(1 :8 ) == ' BUCKLING' ) THEN
299+ LNONZEROS = NDOFL - NUM_KLLD_DIAG_ZEROS
300+ ELSE
301+ LNONZEROS = NDOFL - NUM_MLL_DIAG_ZEROS
302+ ENDIF
303+
298304
299305 IF (NUM_EST_EIGENS > 0 ) THEN
300306 NEV = NUM_EST_EIGENS + EIG_LANCZOS_NEV_DELT
301307 ELSE
308+ ! prevent the addition of DARPACK from crashing ARPACK
309+ IF ((EIG_N2 + DARPACK) > (LNONZEROS - 4 )) THEN
310+ WRITE (ERR,9775 ) NDOFL, DARPACK
311+ IF (SUPWARN == ' N' ) THEN
312+ WRITE (F06,9775 ) NDOFL, DARPACK
313+ ENDIF
314+ DARPACK = 0
315+ END IF
302316 NEV = EIG_N2 + DARPACK
303317 ENDIF
304318 IF (DEBUG(185 ) == 0 ) THEN ! If 0, only find finite eigens within the range requested
@@ -325,7 +339,7 @@ SUBROUTINE EIG_LANCZOS_ARPACK
325339 ENDIF
326340
327341 MIN_NCV = NEV + 2
328- MAX_NCV = NDOFL - NUM_MLL_DIAG_ZEROS - 2
342+ MAX_NCV = LNONZEROS - 2
329343
330344 ! sanity check on feasible NCV range
331345 IF (MIN_NCV > MAX_NCV) THEN
@@ -547,6 +561,9 @@ SUBROUTINE EIG_LANCZOS_ARPACK
547561 ' BEYOND THIS NUMBER' &
548562 ,/ ,14x ,' (NOTE: USE OF BULK DATA PARAM ART_MASS WITH SMALL VALUE MAY ALLOW MGIV TO FIND MORE EIGENVALUES)' )
549563
564+ 9775 FORMAT (' *WARNING : DUE TO THE SIZE OF THE PROBLEM (NDOFL=' ,I0,' ), PARAMETER DARPACK' ,/ ,15X ,&
565+ ' WAS SET TO ZERO TO PREVENT ARPACK FROM CRASHING. ORIGINAL VALUE: ' ,I0)
566+
550567 9776 FORMAT (' *ERROR 9776: TOO MANY EIGENVALUES REQUESTED FOR THIS PROBLEM SIZE: NDOFL=' ,I0,' , NEV=' ,I0,' .' )
551568
552569 9777 FORMAT (' *ERROR 9777: UNABLE TO DETERMINE KRYLOV SUBSPACE SIZE NCV. NDOFL=' ,I0,' , NEV=' ,I0,' .' ,/ ,15X ,&
0 commit comments