47 character(*),
optional,
intent(in) :: string
48 integer,
optional,
intent(in) :: error
53 character(1024) :: errorstring
57 call mpi_comm_rank(
comm, myrank,ierr)
58 if(ierr/=mpi_success)
write(*,*)
"parallel_abort: ierr=", ierr
60 inquire(11,opened=lopen)
62 if(
present(string))
then
63 write(*,
'(i4,2a)') myrank,
': ABORT: ',string
64 if(lopen)
write(11,
'(i4,2a)') myrank,
': ABORT: ',string
67 if(
present(error))
then
68 if(error /= mpi_success)
then
70 call mpi_error_string(error, errorstring, sl, ierr)
71 if(ierr/=mpi_success)
write(*,*)
"parallel_abort: ierr=", ierr
72 write(*,
'(i4,2a)') myrank,
': MPI ERROR: ', errorstring(1:sl)
73 if(lopen)
write(11,
'(i4,2a)') myrank,
': MPI ERROR: ', errorstring
75 do i=1,200;
inquire(i,opened=lopen);
if(lopen)
close(i); enddo;
76 call mpi_abort(
comm, error,ierr)
77 if(ierr/=mpi_success)
write(*,*)
"parallel_abort: ierr=", ierr
79 do i=1,200;
inquire(i,opened=lopen);
if(lopen)
close(i); enddo;
80 call mpi_abort(
comm, 0,ierr)
81 if(ierr/=mpi_success)
write(*,*)
"parallel_abort: ierr=", ierr
92 subroutine abort(string, line, file, errno)
97 character(*),
optional,
intent(in) :: string
99 integer,
optional,
intent(in) :: line
101 character(*),
optional,
intent(in) :: file
103 integer,
optional,
intent(in) :: errno
105 character(50) :: lineNumber
108 character(MPI_MAX_ERROR_STRING) :: errorstring
112 integer :: stringLengh
117 call mpi_comm_rank(
comm, myrank,ierr)
121 write(*,
'(i2,a)', advance=
'no') myrank,
" "
124 if(.not.
present(errno))
then
125 write(*,
'(a)', advance=
'no' )
" ERROR "
129 if(
present(file))
then
130 write(*,
'(a)',advance=
'no' ) file
132 if(
present(line))
then
133 Write(linenumber,
'(i10)') line
134 write(*,
'(2a)', advance=
'no')
":", trim(adjustl(linenumber))
137 write(*,
'(a)', advance=
'no')
" "
141 if(.not.
present(file) .and.
present(line))
then
142 Write(linenumber,
'(i10)') line
143 write(*,
'(2a)', advance=
'no')
"Line:", trim(adjustl(linenumber))
144 write(*,
'(a)', advance=
'no')
" "
148 if(
present(string))
then
149 write(*,
'(a)', advance=
'no') string
153 if(
present(errno) .and. errno /= mpi_success)
then
154 call mpi_error_string(errno, errorstring, stringlengh, ierr)
155 write(*,
'(2a)', advance=
'no')
'MPI ERROR: ', errorstring(1:stringlengh)
168 subroutine warn(string, line, file)
173 character(*),
optional,
intent(in) :: string
175 integer,
optional,
intent(in) :: line
177 character(*),
optional,
intent(in) :: file
179 character(50) :: lineNumber
186 call mpi_comm_rank(
comm, myrank,ierr)
190 write(*,
'(i2,a)', advance=
'no') myrank,
" "
192 write(*,
'(a)', advance=
'no' )
" WARN "
195 if(
present(file))
then
196 write(*,
'(a)',advance=
'no' ) file
198 if(
present(line))
then
199 Write(linenumber,
'(i10)') line
200 write(*,
'(2a)', advance=
'no')
":", trim(adjustl(linenumber))
203 write(*,
'(a)', advance=
'no')
" "
207 if(.not.
present(file) .and.
present(line))
then
208 Write(linenumber,
'(i10)') line
209 write(*,
'(2a)', advance=
'no')
"Line:", trim(adjustl(linenumber))
210 write(*,
'(a)', advance=
'no')
" "
214 if(
present(string))
then
215 write(*,
'(a)', advance=
'no') string