我正在寻找一个库来处理fortran 90/95中的稀疏矩阵.我只需要非常基本的操作,如矩阵向量乘法.你建议我用什么?
我已经搜索过了一个扩展名(?)到BLAS,称为"稀疏blas",在爆炸技术论坛规范的第3章中有记录:
http://www.netlib.org/blas/blast-forum/ ,
看起来很理想 根据该文档,库应该有一个fortran 95接口.但是,我无法在任何可以下载的地方找到该规范的实际实现.我有点认为fortran 95稀疏blas规范并没有在任何地方真正实现?反正不是开源的.
我还找到了一个名为sparsekit的库:
http://people.sc.fsu.edu/~jburkardt/f_src/sparsekit/sparsekit.html
任何人都有这两个中的任何一个的经验,或任何其他稀疏矩阵库为fortran 90/95?我想建议使用哪一个,以及从哪里获取它(在sparsekit的情况下,源代码可通过上面的链接获得).对于稀疏矩阵,有没有类似"标准"的东西,比如BLAS用于密集矩阵?
干杯,
阿恩
我正在玩f2py.我对numpy内在类型与fortran 90类型有点混淆.在与python进行交互时,似乎我只能在fortran 90中使用单精度实数.让我用一个例子来说明:
假设我有这个fortran 90模块test.f90,用f2py编译并在python中导入:
module test
implicit none
integer, parameter :: sp = selected_real_kind(6,37) ! single precision
integer, parameter :: dp = selected_real_kind(15,307) ! double precision
real(sp) :: r_sp = 1.0
real(dp) :: r_dp = 1.0_dp
end module
Run Code Online (Sandbox Code Playgroud)
我这样编译:
f2py -c -m test test.f90
然后,在python中:
>>> import test
>>> test.test.r_sp
array(1.0, dtype=float32)
>>> test.test.r_dp
array(1.0)
Run Code Online (Sandbox Code Playgroud)
IOW,似乎f2py不接受双精度.当从python传递输入到fortran 90子例程时,这变得更加成问题.假设我将模块扩展到:
module test
implicit none
integer, parameter :: sp = selected_real_kind(6,37) ! single precision
integer, parameter :: dp = selected_real_kind(15,307) ! double precision …
Run Code Online (Sandbox Code Playgroud) 我正在用matplotlib.pyplot.contourf()函数生成一个字段轮廓图.调用函数的参数是:
contourf(xvec,xvec,w,levels,cmap=matplotlib.cm.jet)
Run Code Online (Sandbox Code Playgroud)
哪里
xvec = numpy.linspace(-3.,3.,50)
levels = numpy.linspace(-0.01,0.25,100)
Run Code Online (Sandbox Code Playgroud)
而w是我的数据.
结果图在屏幕上看起来相当不错,但是当我使用对matplotlib.pyplot.savefig()的调用保存到pdf时,生成的pdf有很多别名(我认为就是这样).对savefig的调用很简单savefig('filename.pdf')
.我尝试过使用dpi参数,但没有运气.打电话matplotlib.get_backend()
吐出'TkAgg'.
我将附加一个保存为pdf的图形,与保存为png的图形(类似于屏幕上的图像)相比,以演示该问题:
png wihtout别名:https://dl.dropbox.com/u/6042643/wigner_g0.17.png
带别名的pdf:https://dl.dropbox.com/u/6042643/wigner_g0.17.pdf
如果我有任何其他细节可以帮助您给出答案,请告诉我.我应该提一下,保存为.eps会产生与保存到pdf类似的糟糕结果.但pdf表明问题更加清晰.我的目标是最终获得生产质量.我可以将其附在乳胶文件上,作为科学论文发表.如果我能找到一种能产生令人满意的结果的方法,我会很乐意在一种格式下保存,然后转换它.
最好,
阿恩