-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathToolbox.f90
55 lines (36 loc) · 1.24 KB
/
Toolbox.f90
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
MODULE Toolbox
IMPLICIT NONE
CONTAINS
SUBROUTINE CheckFileOpen(ios,fileName,openUnit)
IMPLICIT NONE
INTEGER, INTENT(IN) :: ios, openUnit
CHARACTER(*), INTENT(IN) :: fileName
IF (ios < 0) then
WRITE(*,*) "END-OF-FILE OR END-OF-RECORD OCCURED OPENING", trim(adjustl(fileName)), "ON UNIT", openUnit
ELSE IF (ios > 0) then
WRITE(*,*) "ERROR CONDITION OCCURED OPENING", trim(adjustl(fileName)) ,"ON UNIT", openUnit
ENDIF
END SUBROUTINE CheckFileOpen
!*
SUBROUTINE CheckFileClose(ios,fileName,unit)
IMPLICIT NONE
INTEGER, INTENT(IN) :: ios, unit
CHARACTER(*), INTENT(IN) :: fileName
IF (ios < 0) then
WRITE(*,*) "END-OF-FILE OR END-OF-RECORD OCCURED CLOSING", trim(adjustl(fileName)), "ON UNIT", unit
ELSE IF (ios > 0) then
WRITE(*,*) "ERROR CONDITION OCCURED CLOSING", trim(adjustl(fileName)) ,"ON UNIT", unit
ENDIF
ENDSUBROUTINE CheckFileClose
!*
PURE REAL(8) FUNCTION CleanTrigArgument(x) result(x_clean); IMPLICIT NONE
real(8), intent(in) :: x
IF (abs(x - 1.0D0) < 1.0D-7) THEN
x_clean = 1.0D0
ELSE IF (abs(x+1.0D0) < 1.0D-7) THEN
x_clean = -1.0D0
ELSE
x_clean = x
ENDIF
END FUNCTION CleanTrigArgument
END MODULE Toolbox