OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mpi.f
Go to the documentation of this file.
1C
2C This file is part of MUMPS 5.5.1, released
3C on Tue Jul 12 13:17:24 UTC 2022
4C
5C
6C Copyright 1991-2022 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria,
7C Mumps Technologies, University of Bordeaux.
8C
9C This version of MUMPS is provided to you free of charge. It is
10C released under the CeCILL-C license
11C (see doc/CeCILL-C_V1-en.txt, doc/CeCILL-C_V1-fr.txt, and
12C https://cecill.info/licences/Licence_CeCILL-C_V1-en.html)
13C
14C*******************************************************************
15C
16C This file contains stub MPI/BLACS/ScaLAPACK library functions for
17C linking/running MUMPS on a platform where MPI is not installed.
18C
19C*******************************************************************
20C
21C MPI
22C
23C******************************************************************
24 SUBROUTINE mpi_bsend( BUF, CNT, DATATYPE, DEST, TAG, COMM,
25 & IERR )
26 IMPLICIT NONE
27 include 'mpif.h'
28 INTEGER CNT, DATATYPE, DEST, TAG, COMM, IERR
29 INTEGER BUF(*)
30 WRITE(*,*) 'Error. MPI_BSEND should not be called.'
31 stop
32 ierr = 0
33 RETURN
34 END SUBROUTINE mpi_bsend
35C***********************************************************************
36 SUBROUTINE mpi_buffer_attach(BUF, CNT, IERR )
37 IMPLICIT NONE
38 include 'mpif.h'
39 INTEGER CNT, IERR
40 INTEGER BUF(*)
41 ierr = 0
42 RETURN
43 END SUBROUTINE mpi_buffer_attach
44C***********************************************************************
45 SUBROUTINE mpi_buffer_detach(BUF, CNT, IERR )
46 IMPLICIT NONE
47 include 'mpif.h'
48 INTEGER CNT, IERR
49 INTEGER BUF(*)
50 ierr = 0
51 RETURN
52 END SUBROUTINE mpi_buffer_detach
53 SUBROUTINE mpi_gather( SENDBUF, CNT,
54 & DATATYPE, RECVBUF, RECCNT, RECTYPE,
55 & ROOT, COMM, IERR )
56 IMPLICIT NONE
57 INTEGER CNT, DATATYPE, RECCNT, RECTYPE, ROOT, COMM, IERR
58 INTEGER SENDBUF(*), RECVBUF(*)
59 IF ( reccnt .NE. cnt ) THEN
60 WRITE(*,*) 'ERROR in MPI_GATHER, RECCNT != CNT'
61 stop
62 ELSE
63 CALL mumps_copy( cnt, sendbuf, recvbuf, datatype, ierr )
64 IF ( ierr .NE. 0 ) THEN
65 WRITE(*,*) 'ERROR in MPI_GATHER, DATATYPE=',datatype
66 stop
67 END IF
68 END IF
69 ierr = 0
70 RETURN
71 END SUBROUTINE mpi_gather
72C***********************************************************************
73 SUBROUTINE mpi_gatherv( SENDBUF, CNT,
74 & DATATYPE, RECVBUF, RECCNT, DISPLS, RECTYPE,
75 & ROOT, COMM, IERR )
76 IMPLICIT NONE
77 INTEGER CNT, DATATYPE, RECTYPE, ROOT, COMM, IERR
78 INTEGER RECCNT(1)
79 INTEGER SENDBUF(*), RECVBUF(*)
80 INTEGER DISPLS(*)
81C
82C Note that DISPLS is ignored in this version. One may
83C want to copy in reception buffer with a shift DISPLS(1).
84C This requires passing the offset DISPLS(1) to
85C "MUMPS_COPY_DATATYPE" routines.
86C
87 IF ( reccnt(1) .NE. cnt ) THEN
88 WRITE(*,*) 'ERROR in MPI_GATHERV, RECCNT(1) != CNT'
89 stop
90 ELSE
91 CALL mumps_copy( cnt, sendbuf, recvbuf, datatype, ierr )
92 IF ( ierr .NE. 0 ) THEN
93 WRITE(*,*) 'ERROR in MPI_GATHERV, DATATYPE=',datatype
94 stop
95 END IF
96 END IF
97 ierr = 0
98 RETURN
99 END SUBROUTINE mpi_gatherv
100C***********************************************************************
101 SUBROUTINE mpi_allreduce( SENDBUF, RECVBUF, CNT, DATATYPE,
102 & OPERATION, COMM, IERR )
103 IMPLICIT NONE
104 INTEGER CNT, DATATYPE, OPERATION, COMM, IERR
105 INTEGER SENDBUF(*), RECVBUF(*)
106 LOGICAL, EXTERNAL :: MUMPS_IS_IN_PLACE
107 IF (.NOT. mumps_is_in_place(sendbuf, cnt)) THEN
108 CALL mumps_copy( cnt, sendbuf, recvbuf, datatype, ierr )
109 IF ( ierr .NE. 0 ) THEN
110 WRITE(*,*) 'ERROR in MPI_ALLREDUCE, DATATYPE=',datatype
111 stop
112 END IF
113 ENDIF
114 ierr = 0
115 RETURN
116 END SUBROUTINE mpi_allreduce
117C***********************************************************************
118 SUBROUTINE mpi_reduce( SENDBUF, RECVBUF, CNT, DATATYPE, OP,
119 & ROOT, COMM, IERR )
120 IMPLICIT NONE
121 INTEGER CNT, DATATYPE, OP, ROOT, COMM, IERR
122 INTEGER SENDBUF(*), RECVBUF(*)
123 LOGICAL, EXTERNAL :: MUMPS_IS_IN_PLACE
124 IF (.NOT. MUMPS_IS_IN_PLACE(SENDBUF, CNT)) THEN
125 CALL mumps_copy( cnt, sendbuf, recvbuf, datatype, ierr )
126 IF ( ierr .NE. 0 ) THEN
127 WRITE(*,*) 'ERROR in MPI_REDUCE, DATATYPE=',datatype
128 stop
129 END IF
130 ENDIF
131 ierr = 0
132 RETURN
133 END SUBROUTINE mpi_reduce
134C***********************************************************************
135 SUBROUTINE mpi_reduce_scatter( SENDBUF, RECVBUF, RCVCNT,
136 & DATATYPE, OP, COMM, IERR )
137 IMPLICIT NONE
138 INTEGER RCVCNT, DATATYPE, OP, COMM, IERR
139 INTEGER SENDBUF(*), RECVBUF(*)
140 LOGICAL, EXTERNAL :: MUMPS_IS_IN_PLACE
141 IF (.NOT. mumps_is_in_place(sendbuf, rcvcnt)) THEN
142 CALL mumps_copy( rcvcnt, sendbuf, recvbuf, datatype, ierr )
143 IF ( ierr .NE. 0 ) THEN
144 WRITE(*,*) 'ERROR in MPI_REDUCE_SCATTER, DATATYPE=',datatype
145 stop
146 END IF
147 ENDIF
148 ierr = 0
149 RETURN
150 END SUBROUTINE mpi_reduce_scatter
151C***********************************************************************
152 SUBROUTINE mpi_abort( COMM, IERRCODE, IERR )
153 IMPLICIT NONE
154 INTEGER COMM, IERRCODE, IERR
155 WRITE(*,*) "** MPI_ABORT called"
156 stop
157 END SUBROUTINE mpi_abort
158C***********************************************************************
159 SUBROUTINE mpi_alltoall( SENDBUF, SENDCNT, SENDTYPE,
160 & RECVBUF, RECVCNT, RECVTYPE, COMM, IERR )
161 IMPLICIT NONE
162 INTEGER SENDCNT, SENDTYPE, RECVCNT, RECVTYPE, COMM, IERR
163 INTEGER SENDBUF(*), RECVBUF(*)
164 IF ( recvcnt .NE. sendcnt ) THEN
165 WRITE(*,*) 'ERROR in MPI_ALLTOALL, RECVCNT != SENDCNT'
166 stop
167 ELSE IF ( recvtype .NE. sendtype ) THEN
168 WRITE(*,*) 'ERROR in MPI_ALLTOALL, RECVTYPE != SENDTYPE'
169 stop
170 ELSE
171 CALL mumps_copy( sendcnt, sendbuf, recvbuf, sendtype, ierr )
172 IF ( ierr .NE. 0 ) THEN
173 WRITE(*,*) 'ERROR in MPI_ALLTOALL, SENDTYPE=',sendtype
174 stop
175 END IF
176 END IF
177 ierr = 0
178 RETURN
179 END SUBROUTINE mpi_alltoall
180C***********************************************************************
181 SUBROUTINE mpi_attr_put( COMM, KEY, VAL, IERR )
182 IMPLICIT NONE
183 INTEGER COMM, KEY, VAL, IERR
184 RETURN
185 END SUBROUTINE mpi_attr_put
186C***********************************************************************
187 SUBROUTINE mpi_barrier( COMM, IERR )
188 IMPLICIT NONE
189 include 'mpif.h'
190 INTEGER COMM, IERR
191 ierr = 0
192 RETURN
193 END SUBROUTINE mpi_barrier
194C***********************************************************************
195 SUBROUTINE mpi_get_processor_name( NAME, RESULTLEN, IERROR)
196 CHARACTER (LEN=*) NAME
197 INTEGER RESULTLEN,IERROR
198 resultlen = 1
199 ierror = 0
200 name = 'X'
201 RETURN
202 END SUBROUTINE mpi_get_processor_name
203C***********************************************************************
204 SUBROUTINE mpi_bcast( BUFFER, CNT, DATATYPE, ROOT, COMM, IERR )
205 IMPLICIT NONE
206 include 'mpif.h'
207 INTEGER CNT, DATATYPE, ROOT, COMM, IERR
208 INTEGER BUFFER( * )
209 ierr = 0
210 RETURN
211 END SUBROUTINE mpi_bcast
212C***********************************************************************
213 SUBROUTINE mpi_cancel( IREQ, IERR )
214 IMPLICIT NONE
215 include 'mpif.h'
216 INTEGER IREQ, IERR
217 ierr = 0
218 RETURN
219 END SUBROUTINE mpi_cancel
220C***********************************************************************
221 SUBROUTINE mpi_comm_create( COMM, GROUP, COMM2, IERR )
222 IMPLICIT NONE
223 include 'mpif.h'
224 INTEGER COMM, GROUP, COMM2, IERR
225 ierr = 0
226 RETURN
227 END SUBROUTINE mpi_comm_create
228C***********************************************************************
229 SUBROUTINE mpi_comm_dup( COMM, COMM2, IERR )
230 IMPLICIT NONE
231 include 'mpif.h'
232 INTEGER COMM, COMM2, IERR
233 ierr = 0
234 RETURN
235 END SUBROUTINE mpi_comm_dup
236C***********************************************************************
237 SUBROUTINE mpi_comm_free( COMM, IERR )
238 IMPLICIT NONE
239 include 'mpif.h'
240 INTEGER COMM, IERR
241 ierr = 0
242 RETURN
243 END SUBROUTINE mpi_comm_free
244C***********************************************************************
245 SUBROUTINE mpi_comm_group( COMM, GROUP, IERR )
246 IMPLICIT NONE
247 include 'mpif.h'
248 INTEGER COMM, GROUP, IERR
249 ierr = 0
250 RETURN
251 END SUBROUTINE mpi_comm_group
252C***********************************************************************
253 SUBROUTINE mpi_comm_rank( COMM, RANK, IERR )
254 IMPLICIT NONE
255 include 'mpif.h'
256 INTEGER COMM, RANK, IERR
257 rank = 0
258 ierr = 0
259 RETURN
260 END SUBROUTINE mpi_comm_rank
261C***********************************************************************
262 SUBROUTINE mpi_comm_size( COMM, SIZE, IERR )
263 IMPLICIT NONE
264 include 'mpif.h'
265 INTEGER COMM, SIZE, IERR
266 SIZE = 1
267 ierr = 0
268 RETURN
269 END SUBROUTINE mpi_comm_size
270C***********************************************************************
271 SUBROUTINE mpi_comm_split( COMM, COLOR, KEY, COMM2, IERR )
272 IMPLICIT NONE
273 include 'mpif.h'
274 INTEGER COMM, COLOR, KEY, COMM2, IERR
275 ierr = 0
276 RETURN
277 END SUBROUTINE mpi_comm_split
278C***********************************************************************
279c SUBROUTINE MPI_ERRHANDLER_SET( COMM, ERRHANDLER, IERR )
280c IMPLICIT NONE
281c INCLUDE 'mpif.h'
282c INTEGER COMM, ERRHANDLER, IERR
283c IERR = 0
284c RETURN
285c END SUBROUTINE MPI_ERRHANDLER_SET
286C***********************************************************************
287 SUBROUTINE mpi_finalize( IERR )
288 IMPLICIT NONE
289 include 'mpif.h'
290 INTEGER IERR
291 IERR = 0
292 return
293 END SUBROUTINE mpi_finalize
294C***********************************************************************
295 SUBROUTINE mpi_get_count( STATUS, DATATYPE, CNT, IERR )
296 IMPLICIT NONE
297 include 'mpif.h'
298 INTEGER DATATYPE, CNT, IERR
299 INTEGER STATUS( MPI_STATUS_SIZE )
300 WRITE(*,*) 'Error. MPI_GET_CNT should not be called.'
301 stop
302 ierr = 0
303 RETURN
304 END SUBROUTINE mpi_get_count
305C***********************************************************************
306 SUBROUTINE mpi_group_free( GROUP, IERR )
307 IMPLICIT NONE
308 include 'mpif.h'
309 INTEGER GROUP, IERR
310 ierr = 0
311 RETURN
312 END SUBROUTINE mpi_group_free
313C***********************************************************************
314 SUBROUTINE mpi_group_range_excl( GROUP, N, RANGES, GROUP2, IERR )
315 IMPLICIT NONE
316 include 'mpif.h'
317 INTEGER GROUP, N, GROUP2, IERR
318 INTEGER RANGES(*)
319 ierr = 0
320 RETURN
321 END SUBROUTINE mpi_group_range_excl
322C***********************************************************************
323 SUBROUTINE mpi_group_size( GROUP, SIZE, IERR )
324 IMPLICIT NONE
325 include 'mpif.h'
326 INTEGER GROUP, SIZE, IERR
327 SIZE = 1 ! Or should it be zero ?
328 ierr = 0
329 RETURN
330 END SUBROUTINE mpi_group_size
331C***********************************************************************
332 SUBROUTINE mpi_init_thread(MPI_THREAD_REQ, THREAD_SUPPORT, IERR)
333 IMPLICIT NONE
334 include 'mpif.h'
335 INTEGER IERR, MPI_THREAD_REQ, THREAD_SUPPORT
336 ierr = 0
337 thread_support=mpi_thread_req
338 RETURN
339 END SUBROUTINE mpi_init_thread
340C***********************************************************************
341 SUBROUTINE mpi_init(IERR)
342 IMPLICIT NONE
343 include 'mpif.h'
344 INTEGER IERR
345 ierr = 0
346 RETURN
347 END SUBROUTINE mpi_init
348C***********************************************************************
349 SUBROUTINE mpi_initialized( FLAG, IERR )
350 IMPLICIT NONE
351 include 'mpif.h'
352 LOGICAL FLAG
353 INTEGER IERR
354 flag = .true.
355 ierr = 0
356 RETURN
357 END SUBROUTINE mpi_initialized
358C***********************************************************************
359 SUBROUTINE mpi_iprobe( SOURCE, TAG, COMM, FLAG, STATUS, IERR )
360 IMPLICIT NONE
361 include 'mpif.h'
362 INTEGER SOURCE, TAG, COMM, IERR
363 INTEGER STATUS(MPI_STATUS_SIZE)
364 LOGICAL FLAG
365 flag = .false.
366 ierr = 0
367 RETURN
368 END SUBROUTINE mpi_iprobe
369C***********************************************************************
370 SUBROUTINE mpi_irecv( BUF, CNT, DATATYPE, SOURCE, TAG, COMM,
371 & IREQ, IERR )
372 IMPLICIT NONE
373 include 'mpif.h'
374 INTEGER CNT, DATATYPE, SOURCE, TAG, COMM, IREQ, IERR
375 INTEGER BUF(*)
376 ierr = 0
377 RETURN
378 END SUBROUTINE mpi_irecv
379C***********************************************************************
380 SUBROUTINE mpi_isend( BUF, CNT, DATATYPE, DEST, TAG, COMM,
381 & IREQ, IERR )
382 IMPLICIT NONE
383 include 'mpif.h'
384 INTEGER CNT, DATATYPE, DEST, TAG, COMM, IERR, IREQ
385 INTEGER BUF(*)
386 WRITE(*,*) 'Error. MPI_ISEND should not be called.'
387 stop
388 ierr = 0
389 RETURN
390 END SUBROUTINE mpi_isend
391C***********************************************************************
392 SUBROUTINE mpi_type_commit( NEWTYP, IERR_MPI )
393 IMPLICIT NONE
394 INTEGER NEWTYP, IERR_MPI
395 RETURN
396 END SUBROUTINE mpi_type_commit
397C***********************************************************************
398 SUBROUTINE mpi_type_free( NEWTYP, IERR_MPI )
399 IMPLICIT NONE
400 INTEGER NEWTYP, IERR_MPI
401 RETURN
402 END SUBROUTINE mpi_type_free
403C***********************************************************************
404 SUBROUTINE mpi_type_contiguous( LENGTH, DATATYPE, NEWTYPE,
405 & IERR_MPI )
406 IMPLICIT NONE
407 INTEGER LENGTH, DATATYPE, NEWTYPE, IERR_MPI
408 RETURN
409 END SUBROUTINE mpi_type_contiguous
410C***********************************************************************
411 SUBROUTINE mpi_op_create( FUNC, COMMUTE, OP, IERR )
412 IMPLICIT NONE
413 EXTERNAL func
414 LOGICAL COMMUTE
415 INTEGER OP, IERR
416 op = 0
417 RETURN
418 END SUBROUTINE mpi_op_create
419C***********************************************************************
420 SUBROUTINE mpi_op_free( OP, IERR )
421 IMPLICIT NONE
422 INTEGER OP, IERR
423 RETURN
424 END SUBROUTINE mpi_op_free
425C***********************************************************************
426 SUBROUTINE mpi_pack( INBUF, INCNT, DATATYPE, OUTBUF, OUTCNT,
427 & POSITION, COMM, IERR )
428 IMPLICIT NONE
429 include 'mpif.h'
430 INTEGER INCNT, DATATYPE, OUTCNT, POSITION, COMM, IERR
431 INTEGER INBUF(*), OUTBUF(*)
432 WRITE(*,*) 'Error. MPI_PACKED should not be called.'
433 stop
434 ierr = 0
435 RETURN
436 END SUBROUTINE mpi_pack
437C***********************************************************************
438 SUBROUTINE mpi_pack_size( INCNT, DATATYPE, COMM, SIZE, IERR )
439 IMPLICIT NONE
440 include 'mpif.h'
441 INTEGER INCNT, DATATYPE, COMM, SIZE, IERR
442 WRITE(*,*) 'Error. MPI_PACK_SIZE should not be called.'
443 stop
444 ierr = 0
445 RETURN
446 END SUBROUTINE mpi_pack_size
447C***********************************************************************
448 SUBROUTINE mpi_probe( SOURCE, TAG, COMM, STATUS, IERR )
449 IMPLICIT NONE
450 include 'mpif.h'
451 INTEGER SOURCE, TAG, COMM, IERR
452 INTEGER STATUS( MPI_STATUS_SIZE )
453 WRITE(*,*) 'Error. MPI_PROBE should not be called.'
454 stop
455 ierr = 0
456 RETURN
457 END SUBROUTINE mpi_probe
458C***********************************************************************
459 SUBROUTINE mpi_recv( BUF, CNT, DATATYPE, SOURCE, TAG, COMM,
460 & STATUS, IERR )
461 IMPLICIT NONE
462 include 'mpif.h'
463 INTEGER CNT, DATATYPE, SOURCE, TAG, COMM, IERR
464 INTEGER BUF(*), STATUS(MPI_STATUS_SIZE)
465 WRITE(*,*) 'Error. MPI_RECV should not be called.'
466 stop
467 ierr = 0
468 RETURN
469 END SUBROUTINE mpi_recv
470C***********************************************************************
471 SUBROUTINE mpi_request_free( IREQ, IERR )
472 IMPLICIT NONE
473 include 'mpif.h'
474 INTEGER IREQ, IERR
475 ierr = 0
476 RETURN
477 END SUBROUTINE mpi_request_free
478C***********************************************************************
479 SUBROUTINE mpi_send( BUF, CNT, DATATYPE, DEST, TAG, COMM, IERR )
480 IMPLICIT NONE
481 include 'mpif.h'
482 INTEGER CNT, DATATYPE, DEST, TAG, COMM, IERR
483 INTEGER BUF(*)
484 WRITE(*,*) 'Error. MPI_SEND should not be called.'
485 stop
486 ierr = 0
487 RETURN
488 END SUBROUTINE mpi_send
489C***********************************************************************
490 SUBROUTINE mpi_ssend( BUF, CNT, DATATYPE, DEST, TAG, COMM, IERR)
491 IMPLICIT NONE
492 include 'mpif.h'
493 INTEGER CNT, DATATYPE, DEST, TAG, COMM, IERR
494 INTEGER BUF(*)
495 WRITE(*,*) 'Error. MPI_SSEND should not be called.'
496 stop
497 ierr = 0
498 RETURN
499 END SUBROUTINE mpi_ssend
500C***********************************************************************
501 SUBROUTINE mpi_test( IREQ, FLAG, STATUS, IERR )
502 IMPLICIT NONE
503 include 'mpif.h'
504 INTEGER IREQ, IERR
505 INTEGER STATUS( MPI_STATUS_SIZE )
506 LOGICAL FLAG
507 flag = .false.
508 ierr = 0
509 RETURN
510 END SUBROUTINE mpi_test
511C***********************************************************************
512 SUBROUTINE mpi_unpack( INBUF, INSIZE, POSITION, OUTBUF, OUTCNT,
513 & DATATYPE, COMM, IERR )
514 IMPLICIT NONE
515 include 'mpif.h'
516 INTEGER INSIZE, POSITION, OUTCNT, DATATYPE, COMM, IERR
517 INTEGER INBUF(*), OUTBUF(*)
518 WRITE(*,*) 'Error. MPI_UNPACK should not be called.'
519 stop
520 ierr = 0
521 RETURN
522 END SUBROUTINE mpi_unpack
523C***********************************************************************
524 SUBROUTINE mpi_wait( IREQ, STATUS, IERR )
525 IMPLICIT NONE
526 include 'mpif.h'
527 INTEGER IREQ, IERR
528 INTEGER STATUS( MPI_STATUS_SIZE )
529 WRITE(*,*) 'Error. MPI_WAIT should not be called.'
530 stop
531 ierr = 0
532 RETURN
533 END SUBROUTINE mpi_wait
534C***********************************************************************
535 SUBROUTINE mpi_waitall( CNT, ARRAY_OF_REQUESTS, STATUS, IERR )
536 IMPLICIT NONE
537 include 'mpif.h'
538 INTEGER CNT, IERR
539 INTEGER STATUS( MPI_STATUS_SIZE )
540 INTEGER ARRAY_OF_REQUESTS( CNT )
541 WRITE(*,*) 'Error. MPI_WAITALL should not be called.'
542 stop
543 ierr = 0
544 RETURN
545 END SUBROUTINE mpi_waitall
546C***********************************************************************
547 SUBROUTINE mpi_waitany( CNT, ARRAY_OF_REQUESTS, INDEX, STATUS,
548 & IERR )
549 IMPLICIT NONE
550 include 'mpif.h'
551 INTEGER CNT, INDEX, IERR
552 INTEGER STATUS( MPI_STATUS_SIZE )
553 INTEGER ARRAY_OF_REQUESTS( CNT )
554 WRITE(*,*) 'Error. MPI_WAITANY should not be called.'
555 stop
556 ierr = 0
557 RETURN
558 END SUBROUTINE mpi_waitany
559C***********************************************************************
560 DOUBLE PRECISION FUNCTION mpi_wtime( )
561C elapsed time
562 DOUBLE PRECISION val
563C write(*,*) 'Entering MPI_WTIME'
564 CALL mumps_elapse( val )
565 mpi_wtime = val
566C write(*,*) 'Exiting MPI_WTIME'
567 RETURN
568 END FUNCTION mpi_wtime
569
570
571C***********************************************************************
572C
573C Utilities to copy data
574C
575C***********************************************************************
576
577 SUBROUTINE mumps_copy( CNT, SENDBUF, RECVBUF, DATATYPE, IERR )
578 IMPLICIT NONE
579 include 'mpif.h'
580 INTEGER CNT, DATATYPE, IERR
581 INTEGER SENDBUF(*), RECVBUF(*)
582 IF ( DATATYPE .EQ. MPI_INTEGER ) THEN
583 CALL mumps_copy_integer( sendbuf, recvbuf, cnt )
584 ELSEIF ( datatype .EQ. mpi_logical ) THEN
585 CALL mumps_copy_logical( sendbuf, recvbuf, cnt )
586 ELSE IF ( datatype .EQ. mpi_real ) THEN
587 CALL mumps_copy_real( sendbuf, recvbuf, cnt )
588 ELSE IF ( datatype .EQ. mpi_double_precision .OR.
589 & datatype .EQ. mpi_real8 ) THEN
590 CALL mumps_copy_double_precision( sendbuf, recvbuf, cnt )
591 ELSE IF ( datatype .EQ. mpi_complex ) THEN
592 CALL mumps_copy_complex( sendbuf, recvbuf, cnt )
593 ELSE IF ( datatype .EQ. mpi_double_complex ) THEN
594 CALL mumps_copy_double_complex( sendbuf, recvbuf, cnt )
595 ELSE IF ( datatype .EQ. mpi_2double_precision) THEN
596 CALL mumps_copy_2double_precision( sendbuf, recvbuf, cnt )
597 ELSE IF ( datatype .EQ. mpi_2integer) THEN
598 CALL mumps_copy_2integer( sendbuf, recvbuf, cnt )
599 ELSE IF ( datatype .EQ. mpi_integer8) THEN
600 CALL mumps_copy_integer8( sendbuf, recvbuf, cnt )
601 ELSE
602 ierr=1
603 RETURN
604 END IF
605 ierr=0
606 RETURN
607 END SUBROUTINE mumps_copy
608
609 SUBROUTINE mumps_copy_integer( S, R, N )
610 IMPLICIT NONE
611 INTEGER N
612 INTEGER S(N),R(N)
613 INTEGER I
614 DO i = 1, n
615 r(i) = s(i)
616 END DO
617 RETURN
618 END SUBROUTINE mumps_copy_integer
619 SUBROUTINE mumps_copy_integer8( S, R, N )
620 IMPLICIT NONE
621 INTEGER N
622 INTEGER(8) S(N),R(N)
623 INTEGER I
624 DO I = 1, n
625 r(i) = s(i)
626 END DO
627 RETURN
628 END SUBROUTINE mumps_copy_integer8
629 SUBROUTINE mumps_copy_logical( S, R, N )
630 IMPLICIT NONE
631 INTEGER N
632 LOGICAL S(N),R(N)
633 INTEGER I
634 DO i = 1, n
635 r(i) = s(i)
636 END DO
637 RETURN
638 END
639 SUBROUTINE mumps_copy_2integer( S, R, N )
640 IMPLICIT NONE
641 INTEGER N
642 INTEGER S(N+N),R(N+N)
643 INTEGER I
644 DO i = 1, n+n
645 r(i) = s(i)
646 END DO
647 RETURN
648 END SUBROUTINE mumps_copy_2integer
649 SUBROUTINE mumps_copy_real( S, R, N )
650 IMPLICIT NONE
651 INTEGER N
652 REAL S(N),R(N)
653 INTEGER I
654 DO i = 1, n
655 r(i) = s(i)
656 END DO
657 RETURN
658 END
659 SUBROUTINE mumps_copy_2double_precision( S, R, N )
660 IMPLICIT NONE
661 INTEGER N
662 DOUBLE PRECISION S(N+N),R(N+N)
663 INTEGER I
664 DO i = 1, n+n
665 r(i) = s(i)
666 END DO
667 RETURN
668 END SUBROUTINE mumps_copy_2double_precision
669 SUBROUTINE mumps_copy_double_precision( S, R, N )
670 IMPLICIT NONE
671 INTEGER N
672 DOUBLE PRECISION S(N),R(N)
673 INTEGER I
674 DO i = 1, n
675 r(i) = s(i)
676 END DO
677 RETURN
678 END
679 SUBROUTINE mumps_copy_complex( S, R, N )
680 IMPLICIT NONE
681 INTEGER N
682 COMPLEX S(N),R(N)
683 INTEGER I
684 DO i = 1, n
685 r(i) = s(i)
686 END DO
687 RETURN
688 END SUBROUTINE mumps_copy_complex
689 SUBROUTINE mumps_copy_double_complex( S, R, N )
690 IMPLICIT NONE
691 INTEGER N
692C DOUBLE COMPLEX S(N),R(N)
693 COMPLEX(kind=kind(0.0D0)) :: S(N),R(N)
694 INTEGER I
695 DO i = 1, n
696 r(i) = s(i)
697 END DO
698 RETURN
699 END
700 LOGICAL FUNCTION mumps_is_in_place( SENDBUF, CNT )
701 INTEGER sendbuf(*), cnt
702 include 'mpif.h'
703 INTEGER :: i
704C Check address using C code
705 mumps_is_in_place = .false.
706 IF ( cnt .GT. 0 ) THEN
707 CALL mumps_checkaddrequal(sendbuf(1), mpi_in_place, i)
708 IF (i .EQ. 1) THEN
709 mumps_is_in_place = .true.
710 ENDIF
711 ENDIF
712C Begin old code which requires the MPI_IN_PLACE
713C variable to have the F2003 attribute VOLATILE
714C IF ( CNT .GT. 0 ) THEN
715C MPI_IN_PLACE = -1
716C IF (SENDBUF(1) .EQ. MPI_IN_PLACE) THEN
717C MPI_IN_PLACE = -9876543
718C IF (MUMPS_CHECK_EQUAL(SENDBUF(1), MPI_IN_PLACE)) THEN
719C MUMPS_IS_IN_PLACE = .TRUE.
720C ENDIF
721C ENDIF
722C ENDIF
723C End old code
724 RETURN
725 END FUNCTION mumps_is_in_place
726C Begin old code
727C LOGICAL FUNCTION MUMPS_CHECK_EQUAL(I,J)
728C INTEGER :: I,J
729C IF (I.EQ.J) THEN
730C MUMPS_CHECK_EQUAL = .TRUE.
731C ELSE
732C MUMPS_CHECK_EQUAL = .FALSE.
733C ENDIF
734C END FUNCTION MUMPS_CHECK_EQUAL
735C End old code
736
737
738
739C***********************************************************************
740C
741C BLACS
742C
743C***********************************************************************
744 SUBROUTINE blacs_gridinit( CNTXT, C, NPROW, NPCOL )
745 IMPLICIT NONE
746 INTEGER CNTXT, NPROW, NPCOL
747 CHARACTER C
748 WRITE(*,*) 'Error. BLACS_GRIDINIT should not be called.'
749 STOP
750 RETURN
751 END SUBROUTINE blacs_gridinit
752C***********************************************************************
753 SUBROUTINE blacs_gridinfo( CNTXT, NPROW, NPCOL, MYROW, MYCOL )
754 IMPLICIT NONE
755 INTEGER CNTXT, NPROW, NPCOL, MYROW, MYCOL
756 WRITE(*,*) 'Error. BLACS_GRIDINFO should not be called.'
757 STOP
758 RETURN
759 END SUBROUTINE blacs_gridinfo
760C***********************************************************************
761 SUBROUTINE blacs_gridexit( CNTXT )
762 IMPLICIT NONE
763 INTEGER CNTXT
764 WRITE(*,*) 'Error. BLACS_GRIDEXIT should not be called.'
765 stop
766 RETURN
767 END SUBROUTINE blacs_gridexit
768
769
770C***********************************************************************
771C
772C ScaLAPACK
773C
774C***********************************************************************
775 SUBROUTINE descinit( DESC, M, N, MB, NB, IRSRC, ICSRC,
776 & ICTXT, LLD, INFO )
777 IMPLICIT NONE
778 INTEGER ICSRC, ICTXT, INFO, IRSRC, LLD, M, MB, N, NB
779 INTEGER DESC( * )
780 WRITE(*,*) 'Error. DESCINIT should not be called.'
781 stop
782 RETURN
783 END SUBROUTINE descinit
784C***********************************************************************
785 INTEGER FUNCTION numroc( N, NB, IPROC, ISRCPROC, NPROCS )
786 INTEGER n, nb, iproc, isrcproc, nprocs
787C Can be called
788 if ( nprocs .ne. 1 ) then
789 write(*,*) 'Error. Last parameter from NUMROC should be 1'
790 stop
791 endif
792 IF ( iproc .ne. 0 ) THEN
793 WRITE(*,*) 'Error. IPROC should be 0 in NUMROC.'
794 stop
795 ENDIF
796 numroc = n
797 RETURN
798 END FUNCTION numroc
799C***********************************************************************
800 SUBROUTINE pcpotrf( UPLO, N, A, IA, JA, DESCA, INFO )
801 IMPLICIT NONE
802 CHARACTER UPLO
803 INTEGER IA, INFO, JA, N
804 INTEGER DESCA( * )
805 COMPLEX A( * )
806 WRITE(*,*) 'Error. PCPOTRF should not be called.'
807 stop
808 RETURN
809 END SUBROUTINE pcpotrf
810C***********************************************************************
811 SUBROUTINE pcgetrf( M, N, A, IA, JA, DESCA, IPIV, INFO )
812 IMPLICIT NONE
813 INTEGER IA, INFO, JA, M, N
814 INTEGER DESCA( * ), IPIV( * )
815 COMPLEX A( * )
816 WRITE(*,*) 'Error. PCGETRF should not be called.'
817 stop
818 RETURN
819 END SUBROUTINE pcgetrf
820C***********************************************************************
821 SUBROUTINE pctrtrs( UPLO, TRANS, DIAG, N, NRHS, A, IA, JA, DESCA,
822 & B, IB, JB, DESCB, INFO )
823 IMPLICIT NONE
824 CHARACTER DIAG, TRANS, UPLO
825 INTEGER IA, IB, INFO, JA, JB, N, NRHS
826 INTEGER DESCA( * ), DESCB( * )
827 COMPLEX A( * ), B( * )
828 WRITE(*,*) 'Error. PCTRTRS should not be called.'
829 stop
830 RETURN
831 END SUBROUTINE pctrtrs
832C***********************************************************************
833 SUBROUTINE pzpotrf( UPLO, N, A, IA, JA, DESCA, INFO )
834 IMPLICIT NONE
835 CHARACTER UPLO
836 INTEGER IA, INFO, JA, N
837 INTEGER DESCA( * )
838C DOUBLE COMPLEX A( * )
839 COMPLEX(kind=kind(0.0D0)) :: A( * )
840 WRITE(*,*) 'Error. PZPOTRF should not be called.'
841 stop
842 RETURN
843 END SUBROUTINE pzpotrf
844C***********************************************************************
845 SUBROUTINE pzgetrf( M, N, A, IA, JA, DESCA, IPIV, INFO )
846 IMPLICIT NONE
847 INTEGER IA, INFO, JA, M, N
848 INTEGER DESCA( * ), IPIV( * )
849C DOUBLE COMPLEX A( * )
850 COMPLEX(kind=kind(0.0D0)) :: A( * )
851 WRITE(*,*) 'Error. PZGETRF should not be called.'
852 stop
853 RETURN
854 END SUBROUTINE pzgetrf
855C***********************************************************************
856 SUBROUTINE pztrtrs( UPLO, TRANS, DIAG, N, NRHS, A, IA, JA, DESCA,
857 & B, IB, JB, DESCB, INFO )
858 IMPLICIT NONE
859 CHARACTER DIAG, TRANS, UPLO
860 INTEGER IA, IB, INFO, JA, JB, N, NRHS
861 INTEGER DESCA( * ), DESCB( * )
862C DOUBLE COMPLEX A( * ), B( * )
863 COMPLEX(kind=kind(0.0D0)) :: A( * ), B( * )
864 WRITE(*,*) 'Error. PZTRTRS should not be called.'
865 stop
866 RETURN
867 END SUBROUTINE pztrtrs
868C***********************************************************************
869 SUBROUTINE pspotrf( UPLO, N, A, IA, JA, DESCA, INFO )
870 IMPLICIT NONE
871 CHARACTER UPLO
872 INTEGER IA, INFO, JA, N
873 INTEGER DESCA( * )
874 REAL A( * )
875 WRITE(*,*) 'Error. PSPOTRF should not be called.'
876 stop
877 RETURN
878 END SUBROUTINE pspotrf
879C***********************************************************************
880 SUBROUTINE psgetrf( M, N, A, IA, JA, DESCA, IPIV, INFO )
881 IMPLICIT NONE
882 INTEGER IA, INFO, JA, M, N
883 INTEGER DESCA( * ), IPIV( * )
884 REAL A( * )
885 WRITE(*,*) 'Error. PSGETRF should not be called.'
886 stop
887 RETURN
888 END SUBROUTINE psgetrf
889C***********************************************************************
890 SUBROUTINE pstrtrs( UPLO, TRANS, DIAG, N, NRHS, A, IA, JA, DESCA,
891 & B, IB, JB, DESCB, INFO )
892 IMPLICIT NONE
893 CHARACTER DIAG, TRANS, UPLO
894 INTEGER IA, IB, INFO, JA, JB, N, NRHS
895 INTEGER DESCA( * ), DESCB( * )
896 REAL A( * ), B( * )
897 WRITE(*,*) 'Error. PSTRTRS should not be called.'
898 stop
899 RETURN
900 END SUBROUTINE pstrtrs
901C***********************************************************************
902 SUBROUTINE pdpotrf( UPLO, N, A, IA, JA, DESCA, INFO )
903 IMPLICIT NONE
904 CHARACTER UPLO
905 INTEGER IA, INFO, JA, N
906 INTEGER DESCA( * )
907 DOUBLE PRECISION A( * )
908 WRITE(*,*) 'Error. PDPOTRF should not be called.'
909 stop
910 RETURN
911 END SUBROUTINE pdpotrf
912C***********************************************************************
913 SUBROUTINE pdgetrf( M, N, A, IA, JA, DESCA, IPIV, INFO )
914 IMPLICIT NONE
915 INTEGER IA, INFO, JA, M, N
916 INTEGER DESCA( * ), IPIV( * )
917 DOUBLE PRECISION A( * )
918 WRITE(*,*) 'Error. PDGETRF should not be called.'
919 stop
920 RETURN
921 END SUBROUTINE pdgetrf
922C***********************************************************************
923 SUBROUTINE pdtrtrs( UPLO, TRANS, DIAG, N, NRHS, A, IA, JA, DESCA,
924 & B, IB, JB, DESCB, INFO )
925 IMPLICIT NONE
926 CHARACTER DIAG, TRANS, UPLO
927 INTEGER IA, IB, INFO, JA, JB, N, NRHS
928 INTEGER DESCA( * ), DESCB( * )
929 DOUBLE PRECISION A( * ), B( * )
930 WRITE(*,*) 'Error. PDTRTRS should not be called.'
931 stop
932 RETURN
933 END SUBROUTINE pdtrtrs
934C***********************************************************************
935 SUBROUTINE infog2l( GRINDX, GCINDX, DESC, NPROW, NPCOL, MYROW,
936 & MYCOL, LRINDX, LCINDX, RSRC, CSRC )
937 IMPLICIT NONE
938 INTEGER CSRC, GCINDX, GRINDX, LRINDX, LCINDX, MYCOL,
939 & myrow, npcol, nprow, rsrc
940 INTEGER DESC( * )
941 WRITE(*,*) 'Error. INFOG2L should not be called.'
942 stop
943 RETURN
944 END SUBROUTINE infog2l
945C***********************************************************************
946 INTEGER FUNCTION indxg2p( INDXGLOB, NB, IPROC, ISRCPROC, NPROCS )
947 INTEGER indxglob, iproc, isrcproc, nb, nprocs
948 indxg2p = 0
949 WRITE(*,*) 'Error. INFOG2L should not be called.'
950 stop
951 RETURN
952 END FUNCTION indxg2p
953C***********************************************************************
954 SUBROUTINE pcscal(N, ALPHA, X, IX, JX, DESCX, INCX)
955 IMPLICIT NONE
956 INTEGER INCX, N, IX, JX
957 COMPLEX ALPHA
958 COMPLEX X( * )
959 INTEGER DESCX( * )
960 WRITE(*,*) 'Error. PCSCAL should not be called.'
961 stop
962 RETURN
963 END SUBROUTINE pcscal
964C***********************************************************************
965 SUBROUTINE pzscal(N, ALPHA, X, IX, JX, DESCX, INCX)
966 IMPLICIT NONE
967 INTEGER INCX, N, IX, JX
968C DOUBLE COMPLEX ALPHA
969C DOUBLE COMPLEX X( * )
970 COMPLEX(kind=kind(0.0D0)) :: ALPHA, X( * )
971 INTEGER DESCX( * )
972 WRITE(*,*) 'Error. PZSCAL should not be called.'
973 stop
974 RETURN
975 END SUBROUTINE pzscal
976C***********************************************************************
977 SUBROUTINE pdscal(N, ALPHA, X, IX, JX, DESCX, INCX)
978 IMPLICIT NONE
979 INTEGER INCX, N, IX, JX
980 DOUBLE PRECISION ALPHA
981 DOUBLE PRECISION X( * )
982 INTEGER DESCX( * )
983 WRITE(*,*) 'Error. PDSCAL should not be called.'
984 stop
985 RETURN
986 END SUBROUTINE pdscal
987C***********************************************************************
988 SUBROUTINE psscal(N, ALPHA, X, IX, JX, DESCX, INCX)
989 IMPLICIT NONE
990 INTEGER INCX, N, IX, JX
991 REAL ALPHA
992 REAL X( * )
993 INTEGER DESCX( * )
994 WRITE(*,*) 'Error. PSSCAL should not be called.'
995 stop
996 RETURN
997 END SUBROUTINE psscal
998C***********************************************************************
999 SUBROUTINE pzdot
1000 & ( n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy )
1001 IMPLICIT NONE
1002 INTEGER N, IX, JX, IY, JY, INCX, INCY
1003 INTEGER DESCX(*), DESCY(*)
1004C DOUBLE COMPLEX X(*), Y(*)
1005 COMPLEX(kind=kind(0.0D0)) :: X(*), Y(*)
1006 DOUBLE PRECISION DOT
1007 dot = 0.0d0
1008 WRITE(*,*) 'Error. PZDOT should not be called.'
1009 stop
1010 RETURN
1011 END SUBROUTINE pzdot
1012C***********************************************************************
1013 SUBROUTINE pcdot
1014 & ( n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy )
1015 IMPLICIT NONE
1016 INTEGER N, IX, JX, IY, JY, INCX, INCY
1017 INTEGER DESCX(*), DESCY(*)
1018 COMPLEX X(*), Y(*)
1019 REAL DOT
1020 DOT = 0.0e0
1021 WRITE(*,*) 'Error. PCDOT should not be called.'
1022 stop
1023 RETURN
1024 END SUBROUTINE pcdot
1025C***********************************************************************
1026 SUBROUTINE pddot
1027 & ( n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy )
1028 IMPLICIT NONE
1029 INTEGER N, IX, JX, IY, JY, INCX, INCY
1030 INTEGER DESCX(*), DESCY(*)
1031 DOUBLE PRECISION X(*), Y(*), DOT
1032 dot = 0.0d0
1033 WRITE(*,*) 'Error. PDDOT should not be called.'
1034 stop
1035 RETURN
1036 END SUBROUTINE pddot
1037C***********************************************************************
1038 SUBROUTINE psdot
1039 & ( n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy )
1040 IMPLICIT NONE
1041 INTEGER N, IX, JX, IY, JY, INCX, INCY
1042 INTEGER DESCX(*), DESCY(*)
1043 REAL X(*), Y(*), DOT
1044 dot = 0.0e0
1045 WRITE(*,*) 'Error. PSDOT should not be called.'
1046 stop
1047 RETURN
1048 END SUBROUTINE psdot
1049C***********************************************************************
1050 SUBROUTINE zgebs2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1051 IMPLICIT NONE
1052 INTEGER CONTXT, M, N, LDA
1053C DOUBLE COMPLEX A(*)
1054 COMPLEX(kind=kind(0.0D0)) :: A(*)
1055 CHARACTER SCOPE, TOP
1056 WRITE(*,*) 'Error. ZGEBS2D should not be called.'
1057 stop
1058 RETURN
1059 END SUBROUTINE zgebs2d
1060C***********************************************************************
1061 SUBROUTINE cgebs2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1062 IMPLICIT NONE
1063 INTEGER CONTXT, M, N, LDA
1064 COMPLEX A(*)
1065 CHARACTER SCOPE, TOP
1066 WRITE(*,*) 'Error. CGEBS2D should not be called.'
1067 stop
1068 RETURN
1069 END SUBROUTINE cgebs2d
1070C***********************************************************************
1071 SUBROUTINE sgebs2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1072 IMPLICIT NONE
1073 INTEGER CONTXT, M, N, LDA
1074 REAL A(*)
1075 CHARACTER SCOPE, TOP
1076 WRITE(*,*) 'Error. SGEBS2D should not be called.'
1077 stop
1078 RETURN
1079 END SUBROUTINE sgebs2d
1080C***********************************************************************
1081 SUBROUTINE dgebs2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1082 IMPLICIT NONE
1083 INTEGER CONTXT, M, N, LDA
1084 DOUBLE PRECISION A(*)
1085 CHARACTER SCOPE, TOP
1086 WRITE(*,*) 'Error. DGEBS2D should not be called.'
1087 stop
1088 RETURN
1089 END SUBROUTINE dgebs2d
1090C***********************************************************************
1091 SUBROUTINE zgebr2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1092 IMPLICIT NONE
1093 INTEGER CONTXT, M, N, LDA
1094C DOUBLE COMPLEX A(*)
1095 COMPLEX(kind=kind(0.0D0)) :: A(*)
1096 CHARACTER SCOPE, TOP
1097 WRITE(*,*) 'Error. ZGEBR2D should not be called.'
1098 stop
1099 RETURN
1100 END SUBROUTINE zgebr2d
1101C***********************************************************************
1102 SUBROUTINE cgebr2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1103 IMPLICIT NONE
1104 INTEGER CONTXT, M, N, LDA
1105 COMPLEX A(*)
1106 CHARACTER SCOPE, TOP
1107 WRITE(*,*) 'Error. CGEBR2D should not be called.'
1108 stop
1109 RETURN
1110 END SUBROUTINE cgebr2d
1111C***********************************************************************
1112 SUBROUTINE sgebr2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1113 IMPLICIT NONE
1114 INTEGER CONTXT, M, N, LDA
1115 REAL A(*)
1116 CHARACTER SCOPE, TOP
1117 WRITE(*,*) 'Error. SGEBR2D should not be called.'
1118 stop
1119 RETURN
1120 END SUBROUTINE sgebr2d
1121C***********************************************************************
1122 SUBROUTINE dgebr2d( CONTXT, SCOPE, TOP, M, N, A, LDA )
1123 IMPLICIT NONE
1124 INTEGER CONTXT, M, N, LDA
1125 DOUBLE PRECISION A(*)
1126 CHARACTER SCOPE, TOP
1127 WRITE(*,*) 'Error. DGEBR2D should not be called.'
1128 stop
1129 RETURN
1130 END SUBROUTINE dgebr2d
1131C***********************************************************************
1132 SUBROUTINE pcgetrs( TRANS, N, NRHS, A, IA, JA, DESCA, IPIV, B,
1133 & IB, JB, DESCB, INFO )
1134 IMPLICIT NONE
1135 CHARACTER TRANS
1136 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1137 INTEGER DESCA( * ), DESCB( * ), IPIV( * )
1138 COMPLEX A( * ), B( * )
1139 WRITE(*,*) 'Error. PCGETRS should not be called.'
1140 stop
1141 RETURN
1142 END SUBROUTINE pcgetrs
1143C***********************************************************************
1144 SUBROUTINE pzgetrs( TRANS, N, NRHS, A, IA, JA, DESCA, IPIV, B,
1145 & IB, JB, DESCB, INFO )
1146 IMPLICIT NONE
1147 CHARACTER TRANS
1148 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1149 INTEGER DESCA( * ), DESCB( * ), IPIV( * )
1150c DOUBLE COMPLEX A( * ), B( * )
1151 COMPLEX(kind=kind(0.0D0)) :: A( * ), B( * )
1152 WRITE(*,*) 'Error. PZGETRS should not be called.'
1153 stop
1154 RETURN
1155 END SUBROUTINE pzgetrs
1156C***********************************************************************
1157 SUBROUTINE psgetrs( TRANS, N, NRHS, A, IA, JA, DESCA, IPIV, B,
1158 & IB, JB, DESCB, INFO )
1159 IMPLICIT NONE
1160 CHARACTER TRANS
1161 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1162 INTEGER DESCA( * ), DESCB( * ), IPIV( * )
1163 REAL A( * ), B( * )
1164 WRITE(*,*) 'Error. PSGETRS should not be called.'
1165 stop
1166 RETURN
1167 END SUBROUTINE psgetrs
1168C***********************************************************************
1169 SUBROUTINE pdgetrs( TRANS, N, NRHS, A, IA, JA, DESCA, IPIV, B,
1170 & IB, JB, DESCB, INFO )
1171 IMPLICIT NONE
1172 CHARACTER TRANS
1173 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1174 INTEGER DESCA( * ), DESCB( * ), IPIV( * )
1175 DOUBLE PRECISION A( * ), B( * )
1176 WRITE(*,*) 'Error. PDGETRS should not be called.'
1177 stop
1178 RETURN
1179 END SUBROUTINE pdgetrs
1180C***********************************************************************
1181 SUBROUTINE pcpotrs( UPLO, N, NRHS, A, IA, JA, DESCA, B, IB, JB,
1182 & DESCB, INFO )
1183 IMPLICIT NONE
1184 CHARACTER UPLO
1185 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1186 INTEGER DESCA( * ), DESCB( * )
1187 COMPLEX A( * ), B( * )
1188 WRITE(*,*) 'Error. PCPOTRS should not be called.'
1189 stop
1190 RETURN
1191 END SUBROUTINE pcpotrs
1192C***********************************************************************
1193 SUBROUTINE pzpotrs( UPLO, N, NRHS, A, IA, JA, DESCA, B, IB, JB,
1194 & DESCB, INFO )
1195 IMPLICIT NONE
1196 CHARACTER UPLO
1197 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1198 INTEGER DESCA( * ), DESCB( * )
1199c DOUBLE COMPLEX A( * ), B( * )
1200 COMPLEX(kind=kind(0.0D0)) :: A( * ), B( * )
1201 WRITE(*,*) 'Error. PZPOTRS should not be called.'
1202 stop
1203 RETURN
1204 END SUBROUTINE pzpotrs
1205C***********************************************************************
1206 SUBROUTINE pspotrs( UPLO, N, NRHS, A, IA, JA, DESCA, B, IB, JB,
1207 & DESCB, INFO )
1208 IMPLICIT NONE
1209 CHARACTER UPLO
1210 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1211 INTEGER DESCA( * ), DESCB( * )
1212 REAL A( * ), B( * )
1213 WRITE(*,*) 'Error. PSPOTRS should not be called.'
1214 stop
1215 RETURN
1216 END SUBROUTINE pspotrs
1217C***********************************************************************
1218 SUBROUTINE pdpotrs( UPLO, N, NRHS, A, IA, JA, DESCA, B, IB, JB,
1219 & DESCB, INFO )
1220 IMPLICIT NONE
1221 CHARACTER UPLO
1222 INTEGER IA, IB, INFO, JA, JB, N, NRHS
1223 INTEGER DESCA( * ), DESCB( * )
1224 DOUBLE PRECISION A( * ), B( * )
1225 WRITE(*,*) 'Error. PDPOTRS should not be called.'
1226 stop
1227 RETURN
1228 END SUBROUTINE pdpotrs
1229C***********************************************************************
1230 SUBROUTINE pscnrm2( N, NORM2, X, IX, JX, DESCX, INCX )
1231 IMPLICIT NONE
1232 INTEGER N, IX, JX, INCX
1233 INTEGER DESCX(*)
1234 REAL NORM2
1235 COMPLEX X( * )
1236 WRITE(*,*) 'Error. PCNRM2 should not be called.'
1237 stop
1238 RETURN
1239 END SUBROUTINE pscnrm2
1240C***********************************************************************
1241 SUBROUTINE pdznrm2( N, NORM2, X, IX, JX, DESCX, INCX )
1242 IMPLICIT NONE
1243 INTEGER N, IX, JX, INCX
1244 INTEGER DESCX(*)
1245 DOUBLE PRECISION NORM2
1246C DOUBLE COMPLEX X( * )
1247 COMPLEX(kind=kind(0.0D0)) :: X( * )
1248 WRITE(*,*) 'Error. PZNRM2 should not be called.'
1249 stop
1250 RETURN
1251 END SUBROUTINE pdznrm2
1252C***********************************************************************
1253 SUBROUTINE psnrm2( N, NORM2, X, IX, JX, DESCX, INCX )
1254 IMPLICIT NONE
1255 INTEGER N, IX, JX, INCX
1256 INTEGER DESCX(*)
1257 REAL NORM2, X( * )
1258 WRITE(*,*) 'Error. PSNRM2 should not be called.'
1259 stop
1260 RETURN
1261 END SUBROUTINE psnrm2
1262C***********************************************************************
1263 SUBROUTINE pdnrm2( N, NORM2, X, IX, JX, DESCX, INCX )
1264 IMPLICIT NONE
1265 INTEGER N, IX, JX, INCX
1266 INTEGER DESCX(*)
1267 DOUBLE PRECISION NORM2, X( * )
1268 WRITE(*,*) 'Error. PDNRM2 should not be called.'
1269 stop
1270 RETURN
1271 END SUBROUTINE pdnrm2
1272C***********************************************************************
1273 REAL function pclange( norm, m, n, a, ia, ja,
1274 & desca, work )
1275 CHARACTER norm
1276 INTEGER ia, ja, m, n
1277 INTEGER desca( * )
1278 COMPLEX a( * ), work( * )
1279 pclange = 0.0e0
1280 WRITE(*,*) 'Error. PCLANGE should not be called.'
1281 stop
1282 RETURN
1283 END FUNCTION pclange
1284C***********************************************************************
1285 DOUBLE PRECISION FUNCTION pzlange( NORM, M, N, A, IA, JA,
1286 & DESCA, WORK )
1287 CHARACTER norm
1288 INTEGER ia, ja, m, n
1289 INTEGER desca( * )
1290 REAL a( * ), work( * )
1291 pzlange = 0.0d0
1292 WRITE(*,*) 'Error. PZLANGE should not be called.'
1293 stop
1294 RETURN
1295 END FUNCTION pzlange
1296C***********************************************************************
1297 REAL function pslange( norm, m, n, a, ia, ja,
1298 & desca, work )
1299 CHARACTER norm
1300 INTEGER ia, ja, m, n
1301 INTEGER desca( * )
1302 REAL a( * ), work( * )
1303 pslange = 0.0e0
1304 WRITE(*,*) 'Error. PSLANGE should not be called.'
1305 stop
1306 RETURN
1307 END FUNCTION pslange
1308C***********************************************************************
1309 DOUBLE PRECISION FUNCTION pdlange( NORM, M, N, A, IA, JA,
1310 & DESCA, WORK )
1311 CHARACTER norm
1312 INTEGER ia, ja, m, n
1313 INTEGER desca( * )
1314 DOUBLE PRECISION a( * ), work( * )
1315 pdlange = 0.0d0
1316 WRITE(*,*) 'Error. PDLANGE should not be called.'
1317 stop
1318 RETURN
1319 END FUNCTION pdlange
1320C***********************************************************************
1321 SUBROUTINE pcgecon( NORM, N, A, IA, JA, DESCA, ANORM,
1322 & RCOND, WORK, LWORK, IWORK, LIWORK, INFO )
1323 IMPLICIT NONE
1324
1325 CHARACTER NORM
1326 INTEGER IA, INFO, JA, LIWORK, LWORK, N
1327 REAL ANORM, RCOND
1328 INTEGER DESCA( * ), IWORK( * )
1329 COMPLEX A( * ), WORK( * )
1330 WRITE(*,*) 'Error. PCGECON should not be called.'
1331 stop
1332 RETURN
1333 END SUBROUTINE pcgecon
1334C***********************************************************************
1335 SUBROUTINE pzgecon( NORM, N, A, IA, JA, DESCA, ANORM,
1336 & RCOND, WORK, LWORK, IWORK, LIWORK, INFO )
1337 IMPLICIT NONE
1338
1339 CHARACTER NORM
1340 INTEGER IA, INFO, JA, LIWORK, LWORK, N
1341 DOUBLE PRECISION ANORM, RCOND
1342 INTEGER DESCA( * ), IWORK( * )
1343C DOUBLE COMPLEX A( * ), WORK( * )
1344 COMPLEX(kind=kind(0.0D0)) :: A( * ), WORK( * )
1345 WRITE(*,*) 'Error. PZGECON should not be called.'
1346 stop
1347 RETURN
1348 END SUBROUTINE pzgecon
1349C***********************************************************************
1350 SUBROUTINE psgecon( NORM, N, A, IA, JA, DESCA, ANORM,
1351 & RCOND, WORK, LWORK, IWORK, LIWORK, INFO )
1352 IMPLICIT NONE
1353
1354 CHARACTER NORM
1355 INTEGER IA, INFO, JA, LIWORK, LWORK, N
1356 REAL ANORM, RCOND
1357 INTEGER DESCA( * ), IWORK( * )
1358 REAL A( * ), WORK( * )
1359 WRITE(*,*) 'Error. PSGECON should not be called.'
1360 stop
1361 RETURN
1362 END SUBROUTINE psgecon
1363C***********************************************************************
1364 SUBROUTINE pdgecon( NORM, N, A, IA, JA, DESCA, ANORM,
1365 & RCOND, WORK, LWORK, IWORK, LIWORK, INFO )
1366 IMPLICIT NONE
1367
1368 CHARACTER NORM
1369 INTEGER IA, INFO, JA, LIWORK, LWORK, N
1370 DOUBLE PRECISION ANORM, RCOND
1371 INTEGER DESCA( * ), IWORK( * )
1372 DOUBLE PRECISION A( * ), WORK( * )
1373 WRITE(*,*) 'Error. PDGECON should not be called.'
1374 stop
1375 RETURN
1376 END SUBROUTINE pdgecon
1377C***********************************************************************
1378 SUBROUTINE pcgeqpf( M, N, A, IA, JA, DESCA, IPIV, TAU,
1379 & WORK, LWORK, INFO )
1380 IMPLICIT NONE
1381 INTEGER IA, JA, INFO, LWORK, M, N
1382 INTEGER DESCA( * ), IPIV( * )
1383 COMPLEX A( * ), TAU( * ), WORK( * )
1384 WRITE(*,*) 'Error. PCGEQPF should not be called.'
1385 stop
1386 RETURN
1387 END SUBROUTINE pcgeqpf
1388C***********************************************************************
1389 SUBROUTINE pzgeqpf( M, N, A, IA, JA, DESCA, IPIV, TAU,
1390 & WORK, LWORK, INFO )
1391 IMPLICIT NONE
1392 INTEGER IA, JA, INFO, LWORK, M, N
1393 INTEGER DESCA( * ), IPIV( * )
1394C DOUBLE COMPLEX A( * ), TAU( * ), WORK( * )
1395 COMPLEX(kind=kind(0.0D0)) :: A( * ), TAU( * ), WORK( * )
1396 WRITE(*,*) 'Error. PZGEQPF should not be called.'
1397 stop
1398 RETURN
1399 END SUBROUTINE pzgeqpf
1400C***********************************************************************
1401 SUBROUTINE psgeqpf( M, N, A, IA, JA, DESCA, IPIV, TAU,
1402 & WORK, LWORK, INFO )
1403 IMPLICIT NONE
1404 INTEGER IA, JA, INFO, LWORK, M, N
1405 INTEGER DESCA( * ), IPIV( * )
1406 REAL A( * ), TAU( * ), WORK( * )
1407 WRITE(*,*) 'Error. PSGEQPF should not be called.'
1408 stop
1409 RETURN
1410 END SUBROUTINE psgeqpf
1411C***********************************************************************
1412 SUBROUTINE pdgeqpf( M, N, A, IA, JA, DESCA, IPIV, TAU,
1413 & WORK, LWORK, INFO )
1414 IMPLICIT NONE
1415 INTEGER IA, JA, INFO, LWORK, M, N
1416 INTEGER DESCA( * ), IPIV( * )
1417 DOUBLE PRECISION A( * ), TAU( * ), WORK( * )
1418 WRITE(*,*) 'Error. PDGEQPF should not be called.'
1419 stop
1420 RETURN
1421 END SUBROUTINE pdgeqpf
1422C***********************************************************************
1423 SUBROUTINE pcaxpy(N, A, X, IX, JX, DESCX, INCX, Y, IY, JY,
1424 & DESCY, INCY)
1425 IMPLICIT NONE
1426 INTEGER N, IX, IY, JX, JY, INCX, INCY
1427 INTEGER DESCX(*), DESCY(*)
1428 COMPLEX A(*),X(*),Y(*)
1429 WRITE(*,*) 'Error. PCAXPY should not be called.'
1430 stop
1431 RETURN
1432 END SUBROUTINE pcaxpy
1433C***********************************************************************
1434 SUBROUTINE pzaxpy(N, A, X, IX, JX, DESCX, INCX, Y, IY, JY,
1435 & DESCY, INCY)
1436 IMPLICIT NONE
1437 INTEGER N, IX, IY, JX, JY, INCX, INCY
1438 INTEGER DESCX(*), DESCY(*)
1439C DOUBLE COMPLEX A(*),X(*),Y(*)
1440 COMPLEX(kind=kind(0.0D0)) :: A(*),X(*),Y(*)
1441 WRITE(*,*) 'Error. PZAXPY should not be called.'
1442 stop
1443 RETURN
1444 END SUBROUTINE pzaxpy
1445C***********************************************************************
1446 SUBROUTINE psaxpy(N, A, X, IX, JX, DESCX, INCX, Y, IY, JY,
1447 & DESCY, INCY)
1448 IMPLICIT NONE
1449 INTEGER N, IX, IY, JX, JY, INCX, INCY
1450 INTEGER DESCX(*), DESCY(*)
1451 REAL A(*),X(*),Y(*)
1452 WRITE(*,*) 'Error. PSAXPY should not be called.'
1453 stop
1454 RETURN
1455 END SUBROUTINE psaxpy
1456C***********************************************************************
1457 SUBROUTINE pdaxpy(N, A, X, IX, JX, DESCX, INCX, Y, IY, JY,
1458 & DESCY, INCY)
1459 IMPLICIT NONE
1460 INTEGER N, IX, IY, JX, JY, INCX, INCY
1461 INTEGER DESCX(*), DESCY(*)
1462 DOUBLE PRECISION A(*),X(*),Y(*)
1463 WRITE(*,*) 'Error. PDAXPY should not be called.'
1464 stop
1465 RETURN
1466 END SUBROUTINE pdaxpy
1467C***********************************************************************
1468 SUBROUTINE pctrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
1469 $ JA, DESCA, B, IB, JB, DESCB )
1470 IMPLICIT NONE
1471 CHARACTER SIDE, UPLO, TRANSA, DIAG
1472 INTEGER M, N, IA, JA, IB, JB
1473 COMPLEX ALPHA
1474 INTEGER DESCA( * ), DESCB( * )
1475 COMPLEX A( * ), B( * )
1476 WRITE(*,*) 'Error. PCTRSM should not be called.'
1477 stop
1478 RETURN
1479 END SUBROUTINE pctrsm
1480C***********************************************************************
1481 SUBROUTINE pztrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
1482 $ JA, DESCA, B, IB, JB, DESCB )
1483 IMPLICIT NONE
1484 CHARACTER SIDE, UPLO, TRANSA, DIAG
1485 INTEGER M, N, IA, JA, IB, JB
1486C DOUBLE COMPLEX ALPHA
1487 COMPLEX(kind=kind(0.0D0)) :: ALPHA
1488 INTEGER DESCA( * ), DESCB( * )
1489C DOUBLE COMPLEX A( * ), B( * )
1490 COMPLEX(kind=kind(0.0D0)) :: A( * ), B( * )
1491 WRITE(*,*) 'Error. PZTRSM should not be called.'
1492 stop
1493 RETURN
1494 END SUBROUTINE pztrsm
1495C***********************************************************************
1496 SUBROUTINE pstrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
1497 $ JA, DESCA, B, IB, JB, DESCB )
1498 IMPLICIT NONE
1499 CHARACTER SIDE, UPLO, TRANSA, DIAG
1500 INTEGER M, N, IA, JA, IB, JB
1501 REAL ALPHA
1502 INTEGER DESCA( * ), DESCB( * )
1503 REAL A( * ), B( * )
1504 WRITE(*,*) 'Error. PSTRSM should not be called.'
1505 stop
1506 RETURN
1507 END SUBROUTINE pstrsm
1508C***********************************************************************
1509 SUBROUTINE pdtrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, IA,
1510 $ JA, DESCA, B, IB, JB, DESCB )
1511 IMPLICIT NONE
1512 CHARACTER SIDE, UPLO, TRANSA, DIAG
1513 INTEGER M, N, IA, JA, IB, JB
1514 DOUBLE PRECISION ALPHA
1515 INTEGER DESCA( * ), DESCB( * )
1516 DOUBLE PRECISION A( * ), B( * )
1517 WRITE(*,*) 'Error. PDTRSM should not be called.'
1518 stop
1519 RETURN
1520 END SUBROUTINE pdtrsm
1521C***********************************************************************
1522 SUBROUTINE pcunmqr( SIDE, TRANS, M, N, K, A, IA, JA,
1523 & DESCA, TAU, C, IC, JC, DESCC, WORK,
1524 & LWORK, INFO )
1525 IMPLICIT NONE
1526 CHARACTER SIDE, TRANS
1527 INTEGER IA, IC, INFO, JA, JC, K, LWORK, M, N
1528 INTEGER DESCA( * ), DESCC( * )
1529 COMPLEX A( * ), C( * ), TAU( * ), WORK( * )
1530 WRITE(*,*) 'Error. PCUNMQR should not be called.'
1531 stop
1532 RETURN
1533 END SUBROUTINE pcunmqr
1534C***********************************************************************
1535 SUBROUTINE pzunmqr( SIDE, TRANS, M, N, K, A, IA, JA,
1536 & DESCA, TAU, C, IC, JC, DESCC, WORK,
1537 & LWORK, INFO )
1538 IMPLICIT NONE
1539 CHARACTER SIDE, TRANS
1540 INTEGER IA, IC, INFO, JA, JC, K, LWORK, M, N
1541 INTEGER DESCA( * ), DESCC( * )
1542C DOUBLE COMPLEX A( * ), C( * ), TAU( * ), WORK( * )
1543 COMPLEX(kind=kind(0.0D0)) :: A( * ), C( * ), TAU( * ), WORK( * )
1544 WRITE(*,*) 'Error. PZUNMQR should not be called.'
1545 stop
1546 RETURN
1547 END SUBROUTINE pzunmqr
1548C***********************************************************************
1549 SUBROUTINE psormqr( SIDE, TRANS, M, N, K, A, IA, JA,
1550 & DESCA, TAU, C, IC, JC, DESCC, WORK,
1551 & LWORK, INFO )
1552 IMPLICIT NONE
1553 CHARACTER SIDE, TRANS
1554 INTEGER IA, IC, INFO, JA, JC, K, LWORK, M, N
1555 INTEGER DESCA( * ), DESCC( * )
1556 REAL A( * ), C( * ), TAU( * ), WORK( * )
1557 WRITE(*,*) 'Error. PSORMQR should not be called.'
1558 stop
1559 RETURN
1560 END SUBROUTINE psormqr
1561C***********************************************************************
1562 SUBROUTINE pdormqr( SIDE, TRANS, M, N, K, A, IA, JA,
1563 & DESCA, TAU, C, IC, JC, DESCC, WORK,
1564 & LWORK, INFO )
1565 IMPLICIT NONE
1566 CHARACTER SIDE, TRANS
1567 INTEGER IA, IC, INFO, JA, JC, K, LWORK, M, N
1568 INTEGER DESCA( * ), DESCC( * )
1569 DOUBLE PRECISION A( * ), C( * ), TAU( * ), WORK( * )
1570 WRITE(*,*) 'Error. PDORMQR should not be called.'
1571 stop
1572 RETURN
1573 END SUBROUTINE pdormqr
1574C***********************************************************************
1575 SUBROUTINE chk1mat( MA, MAPOS0, NA, NAPOS0, IA, JA, DESCA,
1576 & DESCAPOS0, INFO )
1577 IMPLICIT NONE
1578 INTEGER DESCAPOS0, IA, INFO, JA, MA, MAPOS0, NA, NAPOS0
1579 INTEGER DESCA( * )
1580 WRITE(*,*) 'Error. CHK1MAT should not be called.'
1581 STOP
1582 RETURN
1583 END SUBROUTINE chk1mat
1584C***********************************************************************
1585 SUBROUTINE pchk2mat( MA, MAPOS0, NA, NAPOS0, IA, JA, DESCA,
1586 & DESCAPOS0, MB, MBPOS0, NB, NBPOS0, IB, JB,
1587 & DESCB, DESCBPOS0, NEXTRA, EX, EXPOS, INFO )
1588 IMPLICIT NONE
1589 INTEGER DESCAPOS0, DESCBPOS0, IA, IB, INFO, JA, JB, MA,
1590 & mapos0, mb, mbpos0, na, napos0, nb, nbpos0,
1591 & nextra
1592 INTEGER DESCA( * ), DESCB( * ), EX( NEXTRA ),
1593 & EXPOS( NEXTRA )
1594 WRITE(*,*) 'Error. PCHK2MAT should not be called.'
1595 stop
1596 RETURN
1597 END SUBROUTINE pchk2mat
1598C***********************************************************************
1599 SUBROUTINE pxerbla( CONTXT, SRNAME, INFO )
1600 IMPLICIT NONE
1601 INTEGER CONTXT, INFO
1602 CHARACTER SRNAME
1603 WRITE(*,*) 'Error. PXERBLA should not be called.'
1604 stop
1605 RETURN
1606 END SUBROUTINE pxerbla
1607C***********************************************************************
1608 SUBROUTINE descset( DESC, M, N, MB, NB, IRSRC, ICSRC, ICTXT,
1609 & LLD )
1610 IMPLICIT NONE
1611 INTEGER ICSRC, ICTXT, IRSRC, LLD, M, MB, N, NB
1612 INTEGER DESC( * )
1613 WRITE(*,*) 'Error. DESCSET should not be called.'
1614 stop
1615 RETURN
1616 END SUBROUTINE descset
1617
if(complex_arithmetic) id
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
void mumps_elapse(double *val)
Definition elapse.c:34
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
Definition mpi.f:461
subroutine pdgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
Definition mpi.f:1171
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
Definition mpi.f:382
subroutine mpi_type_free(newtyp, ierr_mpi)
Definition mpi.f:399
subroutine mpi_buffer_attach(buf, cnt, ierr)
Definition mpi.f:37
subroutine cgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1062
subroutine mumps_copy_double_precision(s, r, n)
Definition mpi.f:670
subroutine sgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1072
subroutine pzgeqpf(m, n, a, ia, ja, desca, ipiv, tau, work, lwork, info)
Definition mpi.f:1391
subroutine mpi_test(ireq, flag, status, ierr)
Definition mpi.f:502
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
Definition mpi.f:745
subroutine pdgetrf(m, n, a, ia, ja, desca, ipiv, info)
Definition mpi.f:914
subroutine mumps_copy_double_complex(s, r, n)
Definition mpi.f:690
subroutine mpi_iprobe(source, tag, comm, flag, status, ierr)
Definition mpi.f:360
subroutine mpi_wait(ireq, status, ierr)
Definition mpi.f:525
subroutine dgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1082
subroutine pdnrm2(n, norm2, x, ix, jx, descx, incx)
Definition mpi.f:1264
subroutine mpi_reduce(sendbuf, recvbuf, cnt, datatype, op, root, comm, ierr)
Definition mpi.f:120
subroutine pdaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1459
subroutine mumps_copy_integer8(s, r, n)
Definition mpi.f:620
subroutine mpi_finalize(ierr)
Definition mpi.f:288
subroutine pspotrf(uplo, n, a, ia, ja, desca, info)
Definition mpi.f:870
subroutine pspotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:1208
subroutine pdtrtrs(uplo, trans, diag, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:925
subroutine mpi_attr_put(comm, key, val, ierr)
Definition mpi.f:182
subroutine mpi_get_count(status, datatype, cnt, ierr)
Definition mpi.f:296
subroutine mumps_copy_2double_precision(s, r, n)
Definition mpi.f:660
subroutine mumps_copy(cnt, sendbuf, recvbuf, datatype, ierr)
Definition mpi.f:578
subroutine mpi_waitall(cnt, array_of_requests, status, ierr)
Definition mpi.f:536
subroutine pdscal(n, alpha, x, ix, jx, descx, incx)
Definition mpi.f:978
integer function indxg2p(indxglob, nb, iproc, isrcproc, nprocs)
Definition mpi.f:947
subroutine pcpotrf(uplo, n, a, ia, ja, desca, info)
Definition mpi.f:801
subroutine zgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1092
subroutine mpi_type_contiguous(length, datatype, newtype, ierr_mpi)
Definition mpi.f:406
subroutine pdgecon(norm, n, a, ia, ja, desca, anorm, rcond, work, lwork, iwork, liwork, info)
Definition mpi.f:1366
subroutine pcscal(n, alpha, x, ix, jx, descx, incx)
Definition mpi.f:955
subroutine mpi_comm_split(comm, color, key, comm2, ierr)
Definition mpi.f:272
double precision function mpi_wtime()
Definition mpi.f:561
subroutine mpi_comm_group(comm, group, ierr)
Definition mpi.f:246
subroutine chk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, info)
Definition mpi.f:1577
subroutine zgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1051
subroutine mpi_group_free(group, ierr)
Definition mpi.f:307
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
Definition mpi.f:480
subroutine mumps_copy_complex(s, r, n)
Definition mpi.f:680
subroutine mumps_copy_integer(s, r, n)
Definition mpi.f:610
subroutine mumps_copy_logical(s, r, n)
Definition mpi.f:630
subroutine mpi_ssend(buf, cnt, datatype, dest, tag, comm, ierr)
Definition mpi.f:491
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)
Definition mpi.f:103
subroutine pscnrm2(n, norm2, x, ix, jx, descx, incx)
Definition mpi.f:1231
subroutine mpi_probe(source, tag, comm, status, ierr)
Definition mpi.f:449
subroutine mpi_init_thread(mpi_thread_req, thread_support, ierr)
Definition mpi.f:333
subroutine pzscal(n, alpha, x, ix, jx, descx, incx)
Definition mpi.f:966
subroutine mpi_get_processor_name(name, resultlen, ierror)
Definition mpi.f:196
subroutine mpi_comm_dup(comm, comm2, ierr)
Definition mpi.f:230
subroutine mpi_alltoall(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, comm, ierr)
Definition mpi.f:161
subroutine mpi_reduce_scatter(sendbuf, recvbuf, rcvcnt, datatype, op, comm, ierr)
Definition mpi.f:137
subroutine mpi_buffer_detach(buf, cnt, ierr)
Definition mpi.f:46
subroutine pzpotrf(uplo, n, a, ia, ja, desca, info)
Definition mpi.f:834
subroutine pdormqr(side, trans, m, n, k, a, ia, ja, desca, tau, c, ic, jc, descc, work, lwork, info)
Definition mpi.f:1565
subroutine pzgetrf(m, n, a, ia, ja, desca, ipiv, info)
Definition mpi.f:846
subroutine pxerbla(contxt, srname, info)
Definition mpi.f:1600
subroutine mpi_barrier(comm, ierr)
Definition mpi.f:188
subroutine mpi_comm_size(comm, size, ierr)
Definition mpi.f:263
subroutine pztrsm(side, uplo, transa, diag, m, n, alpha, a, ia, ja, desca, b, ib, jb, descb)
Definition mpi.f:1483
subroutine psnrm2(n, norm2, x, ix, jx, descx, incx)
Definition mpi.f:1254
subroutine mpi_waitany(cnt, array_of_requests, index, status, ierr)
Definition mpi.f:549
subroutine pdpotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:1220
subroutine mpi_bcast(buffer, cnt, datatype, root, comm, ierr)
Definition mpi.f:205
subroutine pstrtrs(uplo, trans, diag, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:892
subroutine pdpotrf(uplo, n, a, ia, ja, desca, info)
Definition mpi.f:903
subroutine descset(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld)
Definition mpi.f:1610
subroutine dgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1123
subroutine pstrsm(side, uplo, transa, diag, m, n, alpha, a, ia, ja, desca, b, ib, jb, descb)
Definition mpi.f:1498
subroutine psgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
Definition mpi.f:1159
subroutine mpi_group_range_excl(group, n, ranges, group2, ierr)
Definition mpi.f:315
subroutine mpi_group_size(group, size, ierr)
Definition mpi.f:324
subroutine pzpotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:1195
subroutine mpi_init(ierr)
Definition mpi.f:342
subroutine mpi_gather(sendbuf, cnt, datatype, recvbuf, reccnt, rectype, root, comm, ierr)
Definition mpi.f:56
subroutine pcgecon(norm, n, a, ia, ja, desca, anorm, rcond, work, lwork, iwork, liwork, info)
Definition mpi.f:1323
real function pslange(norm, m, n, a, ia, ja, desca, work)
Definition mpi.f:1299
subroutine sgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1113
subroutine mpi_pack(inbuf, incnt, datatype, outbuf, outcnt, position, comm, ierr)
Definition mpi.f:428
subroutine mpi_request_free(ireq, ierr)
Definition mpi.f:472
subroutine pcgeqpf(m, n, a, ia, ja, desca, ipiv, tau, work, lwork, info)
Definition mpi.f:1380
subroutine pcdot(n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1015
subroutine pchk2mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, mb, mbpos0, nb, nbpos0, ib, jb, descb, descbpos0, nextra, ex, expos, info)
Definition mpi.f:1588
subroutine pdtrsm(side, uplo, transa, diag, m, n, alpha, a, ia, ja, desca, b, ib, jb, descb)
Definition mpi.f:1511
subroutine cgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1103
subroutine pztrtrs(uplo, trans, diag, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:858
subroutine pzgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
Definition mpi.f:1146
subroutine pdznrm2(n, norm2, x, ix, jx, descx, incx)
Definition mpi.f:1242
subroutine mpi_pack_size(incnt, datatype, comm, size, ierr)
Definition mpi.f:439
subroutine mpi_bsend(buf, cnt, datatype, dest, tag, comm, ierr)
Definition mpi.f:26
subroutine mpi_cancel(ireq, ierr)
Definition mpi.f:214
subroutine mpi_comm_free(comm, ierr)
Definition mpi.f:238
subroutine psgetrf(m, n, a, ia, ja, desca, ipiv, info)
Definition mpi.f:881
subroutine pcgetrf(m, n, a, ia, ja, desca, ipiv, info)
Definition mpi.f:812
subroutine psscal(n, alpha, x, ix, jx, descx, incx)
Definition mpi.f:989
subroutine psdot(n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1040
subroutine pzaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1436
subroutine infog2l(grindx, gcindx, desc, nprow, npcol, myrow, mycol, lrindx, lcindx, rsrc, csrc)
Definition mpi.f:937
double precision function pzlange(norm, m, n, a, ia, ja, desca, work)
Definition mpi.f:1287
subroutine pcpotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:1183
subroutine mpi_type_commit(newtyp, ierr_mpi)
Definition mpi.f:393
subroutine mpi_gatherv(sendbuf, cnt, datatype, recvbuf, reccnt, displs, rectype, root, comm, ierr)
Definition mpi.f:76
subroutine psgecon(norm, n, a, ia, ja, desca, anorm, rcond, work, lwork, iwork, liwork, info)
Definition mpi.f:1352
subroutine pddot(n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1028
subroutine pdgeqpf(m, n, a, ia, ja, desca, ipiv, tau, work, lwork, info)
Definition mpi.f:1414
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
Definition mpi.f:372
subroutine mpi_unpack(inbuf, insize, position, outbuf, outcnt, datatype, comm, ierr)
Definition mpi.f:514
subroutine descinit(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld, info)
Definition mpi.f:777
subroutine psormqr(side, trans, m, n, k, a, ia, ja, desca, tau, c, ic, jc, descc, work, lwork, info)
Definition mpi.f:1552
subroutine pctrtrs(uplo, trans, diag, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
Definition mpi.f:823
subroutine pzunmqr(side, trans, m, n, k, a, ia, ja, desca, tau, c, ic, jc, descc, work, lwork, info)
Definition mpi.f:1538
subroutine mpi_op_create(func, commute, op, ierr)
Definition mpi.f:412
subroutine mpi_comm_rank(comm, rank, ierr)
Definition mpi.f:254
subroutine mpi_initialized(flag, ierr)
Definition mpi.f:350
subroutine mpi_op_free(op, ierr)
Definition mpi.f:421
subroutine pzgecon(norm, n, a, ia, ja, desca, anorm, rcond, work, lwork, iwork, liwork, info)
Definition mpi.f:1337
real function pclange(norm, m, n, a, ia, ja, desca, work)
Definition mpi.f:1275
subroutine blacs_gridexit(cntxt)
Definition mpi.f:762
subroutine pcaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1425
double precision function pdlange(norm, m, n, a, ia, ja, desca, work)
Definition mpi.f:1311
subroutine mpi_abort(comm, ierrcode, ierr)
Definition mpi.f:153
logical function mumps_is_in_place(sendbuf, cnt)
Definition mpi.f:701
subroutine pcgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
Definition mpi.f:1134
subroutine pzdot(n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1001
subroutine pcunmqr(side, trans, m, n, k, a, ia, ja, desca, tau, c, ic, jc, descc, work, lwork, info)
Definition mpi.f:1525
subroutine psaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
Definition mpi.f:1448
subroutine mumps_copy_2integer(s, r, n)
Definition mpi.f:640
integer function numroc(n, nb, iproc, isrcproc, nprocs)
Definition mpi.f:786
subroutine psgeqpf(m, n, a, ia, ja, desca, ipiv, tau, work, lwork, info)
Definition mpi.f:1403
subroutine mpi_comm_create(comm, group, comm2, ierr)
Definition mpi.f:222
subroutine mumps_copy_real(s, r, n)
Definition mpi.f:650
subroutine pctrsm(side, uplo, transa, diag, m, n, alpha, a, ia, ja, desca, b, ib, jb, descb)
Definition mpi.f:1470