Line data Source code
1 : MODULE m_writeout
2 : CONTAINS
3 :
4 0 : SUBROUTINE diag_writeout(smat,hmat)
5 : USE m_types_mat
6 : USE m_judft
7 : USE m_io_matrix
8 : USE m_types_mpimat
9 : #ifdef CPP_MPI
10 : USE mpi
11 : #endif
12 : IMPLICIT NONE
13 : CLASS(t_mat),INTENT(INOUT) :: hmat,smat
14 : !small subroutine that does only wite the matrix to a file
15 : INTEGER:: i,ii,irank,ierr,matsize
16 : CHARACTER(len=20)::filename
17 : #ifdef CPP_MPI
18 0 : CALL MPI_COMM_RANK(MPI_COMM_WORLD,irank,ierr)
19 : #else
20 : irank=0
21 : #endif
22 :
23 : SELECT TYPE(hmat)
24 : TYPE is (t_mpimat)
25 0 : matsize=hmat%global_size1
26 : CLASS default
27 0 : matsize=hmat%matsize1
28 : END SELECT
29 : !First write binary file
30 : #ifdef CPP_HDF
31 0 : i=open_matrix(hmat%l_real,matsize,2,2,"hs_mat")
32 : #else
33 : i=open_matrix(hmat%l_real,hmat%matsize1,1,2,"hs_mat")
34 : #endif
35 0 : CALL write_matrix(hmat,1,i)
36 0 : CALL write_matrix(smat,2,i)
37 0 : CALL close_matrix(i)
38 :
39 : !Now the formatted matrix
40 0 : WRITE(filename,"(a,i0)") "hmat",irank
41 0 : OPEN(999,file=TRIM(filename))
42 0 : WRITE(filename,"(a,i0)") "smat",irank
43 0 : OPEN(998,file=TRIM(filename))
44 0 : DO i=1,hmat%matsize2
45 0 : DO ii=1,hmat%matsize1
46 0 : IF (hmat%l_real) THEN
47 0 : WRITE(999,"(2i6,f15.6)") ii,i,hmat%data_r(ii,i)
48 0 : WRITE(998,"(2i6,f15.6)") ii,i,smat%data_r(ii,i)
49 : ELSE
50 0 : WRITE(999,"(2i6,2f15.6)") ii,i,hmat%data_c(ii,i)
51 0 : WRITE(998,"(2i6,2f15.6)") ii,i,smat%data_c(ii,i)
52 : ENDIF
53 : END DO
54 : ENDDO
55 0 : CLOSE(999)
56 0 : CLOSE(998)
57 : #ifdef CPP_MPI
58 0 : CALL MPI_BARRIER(MPI_COMM_WORLD,ierr)
59 : #endif
60 0 : CALL judft_error("STOP in eigen_diag:debug_diag")
61 0 : END SUBROUTINE diag_writeout
62 0 : END MODULE m_writeout
|