File: insmem.f

package info (click to toggle)
aces3 3.0.6-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 82,460 kB
  • sloc: fortran: 225,647; ansic: 20,413; cpp: 4,349; makefile: 953; sh: 137
file content (39 lines) | stat: -rw-r--r-- 1,155 bytes parent folder | download | duplicates (21)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

C THIS ROUTINE SHOULD BE CALLED WHEN THERE IS INSUFFICIENT CORE TO
C CONTINUE THE CALCULATION.  PRINTS OUT A FATAL ERROR MESSAGE AND
C CALLS THE CRAPS EXIT HANDLER.
C
C INPUT:
C    ROUTINE - ROUTINE FROM WHICH INSMEM IS CALLED [CHARACTER*(*)]
C    INEED   - AMOUNT OF MEMORY REQUIRED.
C    IAVAIL  - AMOUNT OF MEMORY AVAILABLE.

      SUBROUTINE INSMEM(ROUTINE,INEED,IAVAIL)
      INTEGER INEED,IAVAIL
      CHARACTER*(*) ROUTINE

      double precision dneed, davail
      character*2 units(6)
      data units /' B','kB','MB','GB','TB','PB'/
      COMMON /MACHSP/ IINTLN,IFLTLN,IINTFP,IALONE,IBITWD

      dneed = 1.d0*ineed*iintln
      i = 1
      do while (dneed.gt.1000.d0)
         i = i+1
         dneed = dneed/1024.d0
      end do
      davail = 1.d0*iavail*iintln
      j = 1
      do while (davail.gt.1000.d0)
         j = j+1
         davail = davail/1024.d0
      end do

      WRITE(*,100) ROUTINE(1:linblnk(ROUTINE)),
     &             dneed,units(i),davail,units(j)
100   FORMAT(T3,'@',A,': Insufficient memory available.',/,
     &       T3,'  needed: ',F5.1,1x,A,', available: ',F5.1,1x,A,'.')
      CALL ERREX
      RETURN
      END