8 include
'cmumps_struc.h'
9 TYPE (cmumps_struc) mumps_par_save, mumps_par_restore
13 mumps_par_save%COMM = mpi_comm_world
16 mumps_par_save%JOB = -1
17 mumps_par_save%SYM = 0
18 mumps_par_save%PAR = 1
19 CALL cmumps(mumps_par_save)
20 IF (mumps_par_save%INFOG(1).LT.0)
THEN
21 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
22 &
" mumps_par_save%INFOG(1)= ", mumps_par_save%INFOG(1),
23 &
" mumps_par_save%INFOG(2)= ", mumps_par_save%INFOG(2)
27 IF ( mumps_par_save%MYID .eq. 0 )
THEN
28 READ(5,*) mumps_par_save%N
29 READ(5,*) mumps_par_save%NZ
30 ALLOCATE( mumps_par_save%IRN ( mumps_par_save%NZ ) )
31 ALLOCATE( mumps_par_save%JCN ( mumps_par_save%NZ ) )
32 ALLOCATE( mumps_par_save%A( mumps_par_save%NZ ) )
33 DO i = 1, mumps_par_save%NZ
34 READ(5,*) mumps_par_save%IRN(i),mumps_par_save%JCN(i)
35 & ,mumps_par_save%A(i)
39 mumps_par_save%ICNTL(22)=1
41 mumps_par_save%JOB = 4
42 CALL cmumps(mumps_par_save)
43 IF (mumps_par_save%INFOG(1).LT.0)
THEN
44 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
45 &
" mumps_par_save%INFOG(1)= ", mumps_par_save%INFOG(1),
46 &
" mumps_par_save%INFOG(2)= ", mumps_par_save%INFOG(2)
50 mumps_par_save%JOB = 7
51 mumps_par_save%SAVE_DIR=
"/tmp"
52 mumps_par_save%SAVE_PREFIX=
"mumps_simpletest_save"
53 CALL cmumps(mumps_par_save)
54 IF (mumps_par_save%INFOG(1).LT.0)
THEN
55 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
56 &
" mumps_par_save%INFOG(1)= ", mumps_par_save%INFOG(1),
57 &
" mumps_par_save%INFOG(2)= ", mumps_par_save%INFOG(2)
61 IF ( mumps_par_save%MYID .eq. 0 )
THEN
62 DEALLOCATE( mumps_par_save%IRN )
63 DEALLOCATE( mumps_par_save%JCN )
64 DEALLOCATE( mumps_par_save%A )
67 mumps_par_save%JOB = -2
68 CALL cmumps(mumps_par_save)
72 mumps_par_restore%COMM = mpi_comm_world
75 mumps_par_restore%JOB = -1
76 mumps_par_restore%SYM = 0
77 mumps_par_restore%PAR = 1
78 CALL cmumps(mumps_par_restore)
79 IF (mumps_par_restore%INFOG(1).LT.0)
THEN
80 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
81 &
" mumps_par_restore%INFOG(1)= ",
82 & mumps_par_restore%INFOG(1),
83 &
" mumps_par_restore%INFOG(2)= ",
84 & mumps_par_restore%INFOG(2)
88 mumps_par_restore%JOB = 8
89 mumps_par_restore%SAVE_DIR=
"/tmp"
90 mumps_par_restore%SAVE_PREFIX=
"mumps_simpletest_save"
91 CALL cmumps(mumps_par_restore)
92 IF (mumps_par_restore%INFOG(1).LT.0)
THEN
93 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
94 &
" mumps_par_restore%INFOG(1)= ",
95 & mumps_par_restore%INFOG(1),
96 &
" mumps_par_restore%INFOG(2)= ",
97 & mumps_par_restore%INFOG(2)
101 IF ( mumps_par_restore%MYID .eq. 0 )
THEN
102 ALLOCATE( mumps_par_restore%RHS ( mumps_par_restore%N ) )
103 DO i = 1, mumps_par_restore%N
104 READ(5,*) mumps_par_restore%RHS(i)
108 mumps_par_restore%JOB = 3
109 CALL cmumps(mumps_par_restore)
110 IF (mumps_par_restore%INFOG(1).LT.0)
THEN
111 WRITE(6,
'(A,A,I6,A,I9)')
" ERROR RETURN: ",
112 &
" mumps_par_restore%INFOG(1)= ",
113 & mumps_par_restore%INFOG(1),
114 &
" mumps_par_restore%INFOG(2)= ",
115 & mumps_par_restore%INFOG(2)
119 IF ( mumps_par_restore%MYID .eq. 0 )
THEN
120 WRITE( 6, * )
' Solution is ',
121 & (mumps_par_restore%RHS(i),i=1,mumps_par_restore%N)
124 IF ( mumps_par_restore%MYID .eq. 0 )
THEN
125 DEALLOCATE( mumps_par_restore%RHS )
130 mumps_par_restore%JOB = -3
131 CALL cmumps(mumps_par_restore)
133 mumps_par_restore%JOB = -2
134 CALL cmumps(mumps_par_restore)
program mumps_test_save_restore
subroutine mpi_finalize(ierr)
subroutine mpi_init(ierr)