📄 getmatvec.f
字号:
Subroutine getmatvec( ncols, nrows, nelmts, indx, rowp, matvals, & invec )! ----------------------------------------------------------------------! --- 'getmatvec' makes the data of the CRS matrix and the input vector.! The number of non-zero elements/row may randomly vary by 20%.! ---------------------------------------------------------------------- Use numerics Use ran_module Implicit None Integer :: ncols, nrows, nelmts Integer :: indx(nelmts), rowp(nrows) Real(l_) :: matvals(nelmts), invec(ncols) Real(l_), Allocatable :: varelts(:) Integer :: felprow, i, mdim, nvarelts! ----------------------------------------------------------------------) Allocate ( varelts(nelmts) ) felprow = Int( (0.80*nelmts)/nrows ) + 1 nvarelts = felprow/2 + 1 x1 = 1 x2 = 2003 Call rinit Call ranfil( varelts, nelmts )! ----------------------------------------------------------------------! --- Generate the rowpointers subject to a variability of 20% in the! number of elements per row.! ---------------------------------------------------------------------- rowp(1) = 1 Do i = 2, nrows rowp(i) = rowp(i-1) + Int( felprow + & nvarelts*(varelts(i) - 0.5d0) ) + 1 End Do! ----------------------------------------------------------------------! --- Be sure that the last rowpointers is <= nelmts.! ---------------------------------------------------------------------- rowp(nrows) = Min( rowp(nrows), nelmts )! ----------------------------------------------------------------------! --- Generate the index array 'indx'.! ---------------------------------------------------------------------- Call random_number( varelts ) indx = Int( ncols*varelts ) + 1! ----------------------------------------------------------------------! --- Generate the matrix array 'matvals' and input vector 'invec'.! ---------------------------------------------------------------------- matvals = 1.0_l_ invec = 1.0_l_ Deallocate( varelts )! ---------------------------------------------------------------------- End Subroutine getmatvec
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -