- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下面的代码。当我取消注释 temperature(i,j) = anode_temperature
时,我会出现 SegFault。
forall(i=0:Cells(1), j=0:Cells(2), j >= nint(upperBoundary(i * delta(1)) / delta(2)))
phi(i,j) = Anode_Voltage
! temperature(i,j) = anode_temperature
end forall
但是,我可以使用下面的代码访问每个元素。
do i = 0,Cells(1)
do j = 0,Cells(2)
temperature(i,j) = anode_temperature
write(*,*) i,j,temperature(i,j)
enddo
enddo
这是一个独立的程序。由于有人提到他们使用了 ifort,我正在使用 ifort 14。
program Main
implicit none
REAL, PARAMETER :: Pi = 3.14159265359
integer,parameter :: ND = 2
real, parameter :: RL = 1.0E-6 !Boundary radius
real, parameter :: HN = 5.0E-6 !Length of included needle
real, parameter :: HL = 2.0E-6 !Tip height
real, parameter :: LTT = 3E-6 !Tip-to-tip distance
real, parameter :: RU = 0.5E-6 !Boundary radius
real, parameter :: HU = 1.5E-6 !feature height
real, parameter :: zLen = HN + HL + LTT + HU
real,parameter,dimension(ND) :: Length = (/ 20E-6, zLen /) !computational domain size (r,z)
! Grid Spacing
real, parameter, dimension(ND) :: delta = (/ 1.0E-8 , 1.0E-8 /)
integer, PARAMETER, dimension(ND) :: cells = Length / delta
real,parameter :: VApplied = -150
REAL, PARAMETER :: cathode_temperature = 1473.14 !Cathode Temperature [K]
REAL, parameter :: anode_temperature = 973.14 !Anode Temperature [K]
real :: Cathode_Voltage, Anode_Voltage
REAL, dimension(0:cells(1), 0:cells(2)) :: phi
REAL, dimension(0:cells(1), 0:cells(2)) :: temperature !grid-wise gas temperature
integer:: i,j
phi = 0.0
temperature = 0.0
Cathode_Voltage = VApplied
Anode_Voltage = 0
forall(i=0:Cells(1), j=0:Cells(2), j <= nint(lowerBoundary(i * delta(1)) / delta(2)))
phi(i,j) = Cathode_Voltage
temperature(i,j) = cathode_temperature
end forall
forall(i=0:Cells(1), j=0:Cells(2), j >= nint(upperBoundary(i * delta(1)) / delta(2)))
phi(i,j) = Anode_Voltage
temperature(i,j) = anode_temperature
end forall
!forall(i=0:Cells(1), j=0:Cells(2), (j > nint(lowerBoundary(i * delta(1)) / delta(2))) .and. (j < nint(upperBoundary(i * delta(1)) / delta(2))))
! phi(i,j) = Cathode_Voltage + (Anode_Voltage - Cathode_Voltage) * ((delta(2) * j - lowerBoundary(i * delta(1)) ) / ( upperBoundary(i * delta(1)) - lowerBoundary(i * delta(1)) ))
! temperature(i,j) = cathode_temperature + (anode_temperature - cathode_temperature) * ((delta(2) * j - lowerBoundary(i * delta(1)) ) / ( upperBoundary(i * delta(1)) - lowerBoundary(i * delta(1)) ))
!end forall
contains
pure function LowerRegion(r) result(k)
implicit none
real,intent(in) :: r
integer :: k
if (r < 0) then
k = 0
elseif (r < RL) then
k = 1
elseif (r >= RL) then
k = 2
elseif (r > R) then
k = 3
endif
end function LowerRegion
pure function UpperRegion(r) result(k)
implicit none
real,intent(in) :: r
integer :: k
if (r < 0) then
k = 0
elseif (r < RU) then
k = 1
elseif (r >= RU) then
k = 2
elseif (r > R) then
k = 3
endif
end function UpperRegion
!!!!!!!!!!!! Define geometry for regions radially !!!!!!!!!!!!!!!!!!
pure function lowerBoundary(r) result(z)
implicit none
real,intent(in) :: r
real :: z
if (LowerRegion(r) == 1) then
z = HN + HL * (1.0 - (r / RL))
elseif (LowerRegion(r) == 2) then
z = 0.0
endif
!end function lowerBoundary_Scalar
end function lowerBoundary
pure function upperBoundary(r) result(z)
implicit none
real,intent(in) :: r
real :: z
if (UpperRegion(r) == 1) then
z = zLen - HU * (1.0 - (r / RU))
elseif (UpperRegion(r) == 2) then
z = zLen
end if
end function upperBoundary
end program Main
最佳答案
正如@haraldkl 所建议的那样,存在一个编译器错误。 forall
循环和 -g
编译器标志(或更具体地说是 -O0
标志这会自动产生)的组合。这是我在英特尔论坛上发的帖子。
https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/593599
关于segmentation-fault - 二维数组上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32592905/
这是一个类作业,用于将有序插入到已排序的链表中。我已经避免访问空指针,并且添加了一些调试输出行以将段错误缩小到 while 循环本身的条件语句。 我可以将一个节点添加到空列表并将具有较小键的节点添加到
一个小型测试程序在 64 位 Linux 上使用 gfortran (4.4.5) 返回段错误。 n=2_8**22_8 时不存在故障。 gdb 指示在循环的第一次迭代期间函数 mylen 中发生段错
我正在使用 Spring-WS,当我通过 webServiceTemplate 中的 marshalSendAndReceive 调用 Web 服务时,我收到错误代码为 500 的 SOAP 错误。不
我有一个具有此方法的单例数据管理器: -(NSArray*)fetchItems { NSEntityDescription *entity = [NSEntityDescription
我有一个调用 Web 服务的 Java 应用程序 (A)。 1)然后我有另一个使用 A jar 的应用程序 (B)。调用成功,返回需要的数据。 2)然后我有一个也使用A jar 的网络应用程序。在这种
我正在 Java 应用程序中对第三方网络服务进行 SOAP 网络服务调用。用于查找 Web 服务、传输数据和发出 SOAP 请求的 Java 类是使用来自 WSDL 的 Apache CXF 库生成的
我正在尝试学习 SOAP 协议(protocol)。因此,在使用以下命令借助 wsimport 生成 net.webservicex 代码后 C:\Program Files\Java\jdk1.8.
我正在构建一个基于配备 arm64 CPU 的 UltraScale+ FPGA 的数据采集系统。数据通过 DMA 传输到 RAM。驱动程序中的 DMA 缓冲区保留如下: virt_buf[i] =
我使用 QtDesigner 创建了两个对话框“listdialog.ui”和“editdialog.ui”,已发布使用Qt5.3.1,然后添加到项目“phone book.pro”“带有源代码”使用
有谁知道空中交通管制系统是如何实现软件容错的? 一些 URL 会很有帮助。 最佳答案 Lockheed 不久前发表了一些关于此的文章。看看here . 许多系统都使用 Ada,它明确支持验证命题和其他
我认为阅读内存应该不会引起任何问题,例如 char *d=""; char *d2="test"; memcmp(d,d2,10); memcmp() 永远 会失败吗? 最佳答案 您的假设是不正确的,
这个程序在我的 UNIX 机器上导致了段错误。我将原因缩小到 memset() 的第二次调用。 为什么会出现这种行为?第一个“ block ”代码与第二个几乎相同,不是吗?为什么 第一次 调用 mem
我很困惑进程在使用虚拟内存时如何可能出现段错误。据我了解,“虚拟”内存允许进程访问所有可用内存,然后将其映射到“实际”硬件内存。通过这种转换,进程怎么可能尝试访问不允许访问的内存部分? 最佳答案 听起
Tritwise操作(向右旋转和疯狂操作)无法正确运行,并在Malbolge编译器/解释器中引发分段错误。 在看到有关Coding Challenges和Code Golf的惊人答案之后,我决定开始在
这是我的代码 #include #include #include /************************************************** a is a poin
我有下面的代码。当我取消注释 temperature(i,j) = anode_temperature 时,我会出现 SegFault。 forall(i=0:Cells(1), j=0:Cells(
我是 C 编程新手,我的代码中出现了段错误。该程序使用返回函数来询问用户他们的银行帐户中有多少钱。稍后我将添加代码来计算利息。感谢您为我查看此内容,因为我很难找出为什么会出现此错误。 #include
为了测试,我编写了一个代码来计算 #include int main(void) { int p, i, primes[50], index; boo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
考虑 const a = [1,2,3] console.log(a[5]) // returns undefined 我是一名 C 和 Fortran 程序员,我预计会发生段错误。这里的内存是如何管
我是一名优秀的程序员,十分优秀!