35 #include "qrm_common.h" 60 character(len=*),
intent(in) :: matfile
62 logical,
optional :: fakec
64 character(len=20) :: rep, field, symm, typ, fmt
65 integer :: m, n, nnz, ival, i, myid, info, nprocs
66 logical :: values, ifakec
67 _qrm_real :: rnds(2), re, im
70 character(len=*),
parameter :: name=
'qrm_read_mat' 74 __qrm_prnt_msg(
'("Reading Matrix: ",a20)')matfile
82 if(
present(fakec))
then 88 open(4,file=matfile, status=
'OLD', action=
'READ', iostat=info)
94 read(4,*)rep,typ,fmt,field,symm
98 if(rep(1:1) .ne.
'%')
exit 106 values = field .ne.
'pattern' 112 call qrm_palloc( qrm_mat%irn, qrm_mat%nz )
113 call qrm_palloc( qrm_mat%jcn, qrm_mat%nz )
114 call qrm_palloc( qrm_mat%val, qrm_mat%nz )
115 __qrm_check_ret(name,
'qrm_palloc',9999)
118 #if defined (cprec) || defined(zprec) 119 if(field .eq.
'complex')
then 120 read(4,*)qrm_mat%irn(i), qrm_mat%jcn(i), re, im
121 qrm_mat%val(i) = cmplx(re,im,kind(_qrm_one))
122 else if((field.eq.
'real') .or. (field.eq.
'integer'))
then 123 read(4,*)qrm_mat%irn(i), qrm_mat%jcn(i), re
125 qrm_mat%val(i) = cmplx(re,re,kind(_qrm_one))
127 qrm_mat%val(i) = cmplx(re,_qrm_rzero,kind(_qrm_one))
130 #elif defined (sprec) || defined(dprec) 131 if(field .eq.
'complex')
then 132 read(4,*)qrm_mat%irn(i), qrm_mat%jcn(i), qrm_mat%val(i), im
133 else if((field.eq.
'real') .or. (field.eq.
'integer'))
then 134 read(4,*)qrm_mat%irn(i), qrm_mat%jcn(i), qrm_mat%val(i)
140 read(4,*)qrm_mat%irn(i),qrm_mat%jcn(i)
142 #if defined (cprec) || defined(zprec) 143 qrm_mat%val = _qrm_one
144 #elif defined (sprec) || defined(dprec) 145 qrm_mat%val = _qrm_one
150 __qrm_prnt_msg(
'("Matrix read.")')
subroutine qrm_err_push(code, sub, ied, aed)
This subroutine pushes an error on top of the stack.
subroutine qrm_err_act_save(err_act)
Saves a copy of the qrm_err_act variable.
This module contains all the error management routines and data.
integer, parameter qrm_abort_
Possible actions to be performed upon detection of an error.
subroutine qrm_err_check()
This subroutine checks the errors stack. If something is found all the entries in the stack are poppe...
This type defines the data structure used to store a matrix.
subroutine _qrm_readmat(matfile, qrm_mat, fakec)
This subroutine reads a Matrix Market matrix from a file and stores it on the host processor...
This module contains the definition of the basic sparse matrix type and of the associated methods...
subroutine qrm_err_act_restore(err_act)
Restores the value of the qrm_err_act variable.