Skip to content

Commit ae40b55

Browse files
authored
Merge pull request #197 from Bruno02468/main
Lower DARPACK for small models
2 parents 87aa848 + 151e10d commit ae40b55

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

Source/LK4/EIG_LANCZOS_ARPACK.f90

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)