grasp icon indicating copy to clipboard operation
grasp copied to clipboard

Difference in allowed ICCUT values: rangular vs rangular_mpi

Open jongrumer opened this issue 6 years ago • 2 comments

For Breit-Wigner SCF/CI+RMBPT calculations, there's a difference between allowed ICCUT values (zero-order space block sizes) in rangular and rangular_mpi. The latter does not accept ICCUT blocks of size 1, while the first serial version does. Why zero-order blocks of unit size wouldn't be ok seems weird, and I guess this was fixed/realized at some point, but only implemented in the serial version - maybe related to the EAL modifications?

I'm not sure if I can just comment out the ICCUT <= 1 if statement in the MPI code, like it is done in the serial, or if doing so would also affect rmcdhf. I'll do some testing.

Maybe @gaigalas @tspejo or @bieronjacek knows the answer to this directly?

The relevant code sections are in getinf.f90. The serial version looks:

 44 !   Determine the physical effects specifications
 45 !
 46 !     Commenting out the EAL option
 47 !     IF (NDEF .NE. 0) THEN
 48 !        WRITE  (istde,*) 'Generate MCP coefficients only for'
 49 !    & , ' diagonal matrix elements? '
 50 !        WRITE (istde,*) '(This is appropriate to (E)AL calculation):'
 51 !        DIAG = GETYN ()
 52 !     ELSE
 53 !        DIAG = .FALSE.
 54 !     ENDIF
 55       DIAG = .FALSE.
 56       IF (DIAG) THEN
 57          LFORDR = .FALSE.
 58          do i = 1,100
 59             ICCUT(i) = 0
 60          end do
 61       ELSE
 62          IF (NDEF .NE. 0) THEN
 63 !            WRITE (istde,*) 'Treat contributions of some CSFs', &
 64 !                            ' as first-order perturbations?'
 65 !            LFORDR = GETYN ()
 66             LFORDR = .TRUE.
 67          ELSE
 68             LFORDR = .FALSE.
 69          ENDIF
 70          IF (LFORDR) THEN
 71             WRITE (istde,*) 'The contribution of CSFs 1 -- ICCUT will',&
 72                             ' be treated variationally;'
 73             WRITE (istde,*) 'the remainder perturbatively; enter ICCUT:'
 74             do i = 1,nblock
 75                write(istde,*) 'Give ICCUT for block',i
 76                READ *, ICCUT(i)
 77                write(739,*) ICCUT(i), '! ICCUT FOR BLOCK',i
 78 !    1          READ *, ICCUT(i)
 79 !               IF ((ICCUT(i).LE.1).OR.(ICCUT(i).GE.ncfblk(i))) THEN
 80 !                  WRITE (istde,*) 'GETINF: ICCUT must be greater than 1', &
 81 !                                  ' and less than ',ncfblk(i)
 82 !                  WRITE (istde,*) ' please reenter ICCUT:'
 83 !                  GOTO 1
 84 !               ENDIF
 85             end do
 86          ENDIF
 87       ENDIF

and the corresponding section in the the mpi version:

 42 !   Determine the physical effects specifications
 43 !
 44       DIAG = .FALSE.
 45       IF (DIAG) THEN
 46          LFORDR = .FALSE.
 47          do i = 1,100
 48             ICCUT(i) = 0
 49          end do
 50       ELSE
 51          IF (NDEF /= 0) THEN
 52             LFORDR = .TRUE.
 53          ELSE
 54             LFORDR = .FALSE.
 55          ENDIF
 56          IF (LFORDR) THEN
 57             WRITE (istde,*) 'The contribution of CSFs 1 -- ICCUT will',&
 58                             ' be treated variationally;'
 59             WRITE (istde,*) 'the remainder perturbatively; enter ICCUT:'
 60             do i = 1,nblock
 61               write(istde,*) 'Give ICCUT for block',i
 62     1         READ *, ICCUT(i)
 63               IF ((ICCUT(i) <= 1).OR.(ICCUT(i) >= ncfblk(i))) THEN
 64                 WRITE (istde,*) 'GETINF: ICCUT must be greater than 1',&
 65                                 ' and less than ',ncfblk(i)
 66                 WRITE (istde,*) ' please reenter ICCUT:'
 67                 GOTO 1
 68               ENDIF
 69             end do
 70          ENDIF
 71       ENDIF

jongrumer avatar Apr 24 '19 22:04 jongrumer

Dear Jon,

Sorry if I missed modifying the MPI version but, on the other hand, sometimes when I sent the Masterfile to Lund, changes got lost. GitHub would have prevented such situations.

ICCUT <= 1 should be allowed. ICCUT =1 gives you the EAL calculation with no off-diagonal matrix elements. The MPI version should be the same as non-MPI.

Charlotte

-------------------------------%0D%0ACharlotte.F.Fischer%40Comcast.Net%0D%0A401 King Farm Blvd%2C %23402%0D%0ARockville%2C MD 20850%0D%0A%0D%0APhone%3A 301-963-4134

On April 24, 2019 at 3:14 PM Jon Grumer [email protected] wrote:

For Breit-Wigner SCF/CI+RMBPT calculations, there's a difference between allowed ICCUT values (zero-order space block sizes) in RANGULAR and RANGULAR_MPI. The latter does not accept ICCUT blocks of size 1, while the first serial version does. Why zero-order blocks of unit size wouldn't be ok seems weird, and I guess this was fixed/realized at some point, but only implemented in the serial version. I'm not sure if I can just comment out the ICCUT <= 1 if statement in the MPI code, like it is done in the serial, or if doing so would also affect RMCDHF. I'll do some testing. Maybe @gaigalas https://github.com/gaigalas @tspejo https://github.com/tspejo or @bieronjacek https://github.com/bieronjacek knows?

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/compas/grasp/issues/16 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADDK3SEX4OGKJ45WQFAEX4TPSDLTBANCNFSM4HIIJR4A .

cffischer avatar Apr 25 '19 00:04 cffischer

Ok great! I'll fix it then! Thanks Charlotte! :)

jongrumer avatar Apr 25 '19 23:04 jongrumer