OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
zsimpletest_save_restore.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
6 IMPLICIT NONE
7 include 'mpif.h'
8 include 'zmumps_struc.h'
9 TYPE (zmumps_struc) mumps_par_save, mumps_par_restore
10 INTEGER ierr, i
11 CALL mpi_init(ierr)
12C Define a communicator for the package.
13 mumps_par_save%COMM = mpi_comm_world
14C Initialize an instance of the package
15C for L U factorization (sym = 0, with working host)
16 mumps_par_save%JOB = -1
17 mumps_par_save%SYM = 0
18 mumps_par_save%PAR = 1
19 CALL zmumps(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)
24 GOTO 500
25 END IF
26C Define problem on the host (processor 0)
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)
36 END DO
37 END IF
38C Activate OOC
39 mumps_par_save%ICNTL(22)=1
40C Call package for factorization
41 mumps_par_save%JOB = 4
42 CALL zmumps(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)
47 GOTO 500
48 END IF
49C Call package for save
50 mumps_par_save%JOB = 7
51 mumps_par_save%SAVE_DIR="/tmp"
52 mumps_par_save%SAVE_PREFIX="mumps_simpletest_save"
53 CALL zmumps(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)
58 GOTO 500
59 END IF
60C Deallocate user data
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 )
65 END IF
66C Destroy the instance (deallocate internal data structures)
67 mumps_par_save%JOB = -2
68 CALL zmumps(mumps_par_save)
69C Now mumps_par_save has be destroyed
70C We use a new instance mumps_par_restore to finish the computation
71C Define a communicator for the package on the new instace.
72 mumps_par_restore%COMM = mpi_comm_world
73C Initialize a new instance of the package
74C for L U factorization (sym = 0, with working host)
75 mumps_par_restore%JOB = -1
76 mumps_par_restore%SYM = 0
77 mumps_par_restore%PAR = 1
78 CALL zmumps(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)
85 GOTO 500
86 END IF
87C Call package for restore with OOC feature
88 mumps_par_restore%JOB = 8
89 mumps_par_restore%SAVE_DIR="/tmp"
90 mumps_par_restore%SAVE_PREFIX="mumps_simpletest_save"
91 CALL zmumps(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)
98 GOTO 500
99 END IF
100C Define rhs on the host (processor 0)
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)
105 END DO
106 END IF
107C Call package for solution
108 mumps_par_restore%JOB = 3
109 CALL zmumps(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)
116 GOTO 500
117 END IF
118C Solution has been assembled on the host
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)
122 END IF
123C Deallocate user data
124 IF ( mumps_par_restore%MYID .eq. 0 )THEN
125 DEALLOCATE( mumps_par_restore%RHS )
126 END IF
127C Delete the saved files
128C Note mumps_par_restore%ICNTL(34) is kept to default (0) to suppress
129C also the OOC files.
130 mumps_par_restore%JOB = -3
131 CALL zmumps(mumps_par_restore)
132C Destroy the instance (deallocate internal data structures)
133 mumps_par_restore%JOB = -2
134 CALL zmumps(mumps_par_restore)
135 500 CALL mpi_finalize(ierr)
136 stop
137 END
subroutine mpi_finalize(ierr)
Definition mpi.f:288
subroutine mpi_init(ierr)
Definition mpi.f:342
subroutine zmumps(id)
program mumps_test_save_restore