36 USE spmd_mod, ONLY : spmd_barrier
37 USE nodal_arrays_mod
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "com04_c.inc"
46#include "scr07_c.inc"
47#include "task_c.inc"
48#include "units_c.inc"
49
50
51
52
53 INTEGER, INTENT(IN) :: NCYCLE
54 TYPE(nodal_arrays_), INTENT(IN) :: NODES
55
56
57
58
59
60
61
62
63
64
65 LOGICAL :: BOOL_NAN,MY_ISNAN
66 INTEGER :: N
67
68
69
70
71
72
73
74
75
76
77
78
79
80 bool_nan = .false.
81 DO n=1,numnod
83 WRITE(iout,1000) ispmd,ncycle
84 WRITE(iout,1001) n,nodes%ITAB(n)
85 WRITE(iout,1002) nodes%A(1,n),nodes%A(2,n),nodes%A(3,n)
86
87 WRITE(istdo,1000) ispmd,ncycle
88 WRITE(istdo,1001) n,nodes%ITAB(n)
89 WRITE(istdo,1002) nodes%A(1,n),nodes%A(2,n),nodes%A(3,n)
90
91
92 bool_nan = .true.
93 ENDIF
94
96 WRITE(iout,1003) ispmd,ncycle
97 WRITE(iout,1001) n,nodes%ITAB(n)
98 WRITE(iout,1004) nodes%AR(1,n),nodes%AR(2,n),nodes%AR(3,n)
99
100 WRITE(istdo,1003) ispmd,ncycle
101 WRITE(istdo,1001) n,nodes%ITAB(n)
102 WRITE(istdo,1004) nodes%AR(1,n),nodes%AR(2,n),nodes%AR(3,n)
103
104 bool_nan = .true.
105 ENDIF
106 ENDDO
107
108 CALL spmd_barrier()
109
110 IF(bool_nan) THEN
111 WRITE(iout,1005)
112 WRITE(istdo,1005)
113 mstop=1
114
115
116 ENDIF
117
118 1000 FORMAT(3x,'NaN detected on A array on processor ID',i10,' at cycle',i10)
119 1001 FORMAT(3x,'Local node ID: ',i10,' Global node ID:',i10 )
120 1002 FORMAT(3x,'A values: ',1pe10.3,1pe10.3,1pe10.3)
121 1003 FORMAT(3x,'NaN detected on AR array on processor ID',i10,' at cycle',i10)
122 1004 FORMAT(3x,'AR values: ',1pe10.3,1pe10.3,1pe10.3)
123 1005 FORMAT(/,3x,'********************* NaN ********************* ',/,
124 . 3x,'******** I"m going to kill the run now ******** ',/,
125 . 3x,'********************* NaN ********************* ',/)
126
127
128
129 RETURN
logical function my_isnan(x)