- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这有点多余,我提前道歉,我已经查看了其他引用 Metis 与 Fortran 代码的帖子。另外我是个菜鸟,所以请用小词慢慢说! :p
我正在尝试使用 Metis 5.1.0 在我编写的 Fortran 代码中对网格进行分区。我想知道通过调用 c 库来编译 fortran 代码的基础知识?我怎么做?这是在编译时完成的还是我需要在代码中包含某种包含语句?目前,当我尝试编译时,我有以下相关片段:
程序的顶部(我是否需要包含或使用语句?)
PROGRAM ONEDGRIDGEN
IMPLICIT NONE
!include 'meshpart.c'
!use 'meshpart.c'
<小时/>
makefile(我确信其中有错误)
CC = gcc
FC = gfortran
FCFLAG1 = -g -fbacktrace -ffree-line-length-0 -fdefault-real-8
FCFLAG2 =
CCFLAG =
OBJ = 1Dgridgen_Mod
OBJ2 = meshpart
1Dgridgen: ${OBJ}.f95
${FC} -o ${OBJ} ${OBJ}.f95 ${OBJ2}.c ${FCFLAG1}
<小时/>
调用metis分区相关的子程序(使用直接调用)
SUBROUTINE METIS_CALL(ne,nn,eptr,eind)
use iso_c_binding
IMPLICIT NONE
integer(c_int),INTENT(IN):: ne,nn
integer(c_int)::nparts,objval,ncommon
integer(c_int),dimension(0:((nn)*2-1)),INTENT(IN)::eind
integer(c_int),dimension(nn),INTENT(IN)::eptr
integer(c_int),dimension(:),allocatable::epart,npart
integer,pointer::vwgt=>null(), vsize=>null(), options=>null()
real(kind=8),pointer::tpwgts=>null()
ALLOCATE(epart(ne),npart(nn))
ncommon = 1
write(*,*) 'How many domains do you wish to have?'
read(*,*) nparts
CALL METIS_PartMeshDual(ne,nn,eptr,eind,vwgt,vsize,ncommon,nparts,tpwgts,options,objval,epart,npart)
write(*,*) 'epart', epart
write(*,*) 'npart', npart
END SUBROUTINE METIS_CALL
<小时/>
当我尝试编译时出现以下错误
gfortran -o 1Dgridgen_Mod 1Dgridgen_Mod.f95 meshpart.c -g -fbacktrace -ffree-line-length-0 -fdefault-real-8
cc1: warning: command line option "-fbacktrace" is valid for Fortran but not for C
cc1: warning: command line option "-ffree-line-length-0" is valid for Fortran but not for C
cc1: warning: command line option "-fdefault-real-8" is valid for Fortran but not for C
In file included from meshpart.c:15:
metislib.h:17:19: error: GKlib.h: No such file or directory
metislib.h:24:19: error: metis.h: No such file or directory
metislib.h:25:20: error: rename.h: No such file or directory
metislib.h:26:24: error: gklib_defs.h: No such file or directory
metislib.h:28:18: error: defs.h: No such file or directory
metislib.h:29:20: error: struct.h: No such file or directory
metislib.h:30:20: error: macros.h: No such file or directory
metislib.h:31:19: error: proto.h: No such file or directory
meshpart.c:22: error: expected ')' before '*' token
meshpart.c:90: error: expected ')' before '*' token
meshpart.c:179: error: expected ')' before 'nrows'
make: *** [1Dgridgen] Error 1
<小时/>
我可以看到我的 make 文件是错误的,但我想知道为什么当我引用 metis 需要的 c 库时,为什么它会给我 c 库的错误,当我的代码和所有内容都“生活”在同一个中时文件夹作为metis库meshpart.c。正确安装的metis是否没有正确链接或引用其库和必要组件?
感谢任何人可以提供的帮助!再次感谢您的耐心等待,我知道这是一个非常基本的问题。
最佳答案
什么是meshpart.c?您应该能够直接从 Fortran 调用 METIS。 METIS 还有一个可以直接划分网格的例程。这是一个例子:
program test
implicit none
integer, parameter :: nels=2, nnds=6, npel=4
integer :: eptr(nels+1), nodes(nels*npel), epart(nels), npart(nnds), n
integer, pointer :: vwgt=>null(), vsize=>null(), mopts=>null()
real(8), pointer :: tpwgts=>null()
eptr=(/0,4,8/)
nodes=(/0,1,2,3,1,4,5,2/) ! Element 1 has nodes 0 1 2 3
! Element 2 has nodes 1 4 5 2
call METIS_PartMeshNodal(nels,nnds,eptr,nodes,vwgt,vsize,2,tpwgts,mopts,n,epart,npart)
print*, npart; print*, epart
end program test
这是输出:
[stali@submit libmetis]$ gfortran test.f90 libmetis.a
[stali@submit libmetis]$ ./a.out
0 0 1 0 1 1
0 1
希望有帮助。
关于c - 在 Fortran 代码中使用 Metis 库...基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006253/
这C program电话 METIS划分网格。 编辑: New version考虑到 WeatherVane 和 PaulOgilvie 的评论的 C 程序。 在我的 GNU/Linux 上,我得到了
METIS图划分算法用于对大图进行划分。我有一张图,它实际上是一片森林。我想知道 METIS 在这种情况下如何进行分区? 最佳答案 嗯,的确,METIS 可以划分大图,但这并不意味着它不能管理较小的图
我正在尝试安装 Metis。由于我在公共(public)服务器上工作,我无法以 root 用户身份安装它。所以我在我的帐户/home/jd/metis 中安装了 metis。 当我尝试执行某事时,我得
我正在使用 Metis ,一个图分区 API。我有一个来自节点的完整网格,并想对该网格进行分区。在此分区之后,cfd-solver 将在多个 gpu 上并行运行。问题是:我需要一个来自 metis 的
围绕 Medoids 的分区(PAM;k-means 的强大版本)与矩阵的 METIS 分区有很大不同吗?我的意思是,它们当然是不同的方法,但是输出会有很大不同吗? 我不了解Metis,只知道它是一种
我正在使用 Metis for Python,它是 Metis(图形分区软件)的 Python 包装器。我已经安装了所有东西,并且似乎工作正常,但是我不明白如何构建要输入的图表。 有一个在线示例:ht
我有 METIS 输入文件,其中包含图形的边权重。我想用 METIS 对图进行分区,这样 METIS 摘要报告中的切边是 METIS 的可能性最小的。可以是rb、kway或其他算法或选项。 那么什么选
我正在尝试使用 METIS作为我为有限元计算编写的 Fortran 程序的一部分的网格划分库。 METIS 是用 C 编写的,但它应该与 Fortran 90 一起工作得很好。但我总是遇到段错误。 一
我想在 windows7 上为 python 安装 METIS。我使用: pip install metis 我得到了这个结果: Requirement already satisfied: meti
我是 jQuery 的新手,我想获得一些这方面的帮助。 我正在尝试测试主题模板,但以下 jQuery 代码给我带来了麻烦(此代码是默认代码): (functi
我的侧边栏无法使用。 无塌陷 不调整大小 因为 Uncaught TypeError: undefined is not a function sb-admin-2.js:3(anonymous fu
如果这有点多余,我提前道歉,我已经查看了其他引用 Metis 与 Fortran 代码的帖子。另外我是个菜鸟,所以请用小词慢慢说! :p 我正在尝试使用 Metis 5.1.0 在我编写的 Fortr
我正在尝试实现一个侧边栏(利用 sb-admin-2 中的侧边栏)当我使用侧边栏作为 main.html 的一部分时,切换工作得很好。但是,当我通过 iron:router 实现相同的功能时将侧边栏设
我目前正在使用 METIS 的 python 中运行源代码。我想使用 Jetbrains PyCharm、conda 解释器来运行它,这些都安装在 Windows 10 上。虽然我已经使用 conda
我试图在编译 Cython 源文件期间链接 metis 库,但我遇到了困难,因为我在编译的共享对象文件中得到 undefined symbol 。 我想知道是否有人有使用 distutils 链接外部
两个多星期以来,我一直在努力调用 METIS 之一。从我的 fortran 代码用 C 语言编写的库。而且,不幸的是,没有你的帮助,这似乎不是一个快乐的结局。我发现了一些关于 direct calli
我是一名优秀的程序员,十分优秀!