问题标签 [derived-types]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
170 浏览

fortran - 带有 mpi 的 Fortran90 派生类型,对齐问题?

我遇到了以下基本代码的问题:

我在调试器 (DDT) 中的派生类型 Bcast(使用 intelMPI 和 openMPI)处遇到段错误,据说这可能是对齐问题......

我已经看到了这个帖子,问题似乎是一样的,但我仍然没有解决方案......

感谢您的帮助!

0 投票
2 回答
50 浏览

mysql - 新表(带有derived_data)或SQL 查询?

从最佳实践的角度来看,是在我的数据库中使用来自其他表的 derived_data 字段创建一个新表,还是每次都使用 SQL 查询计算它更好?

详细信息:更准确地说,我有一个表格ORDERS(id_order,date,time,sum),我想跟踪每日利润并在管理员每次从下拉菜单中选择它时预览它们。我应该在他每次请求时进行 SQL 查询,还是创建一个PROFITS(date,day_profit)带有从其他表中获取其值的 derived_data 字段的新表?

0 投票
1 回答
87 浏览

debugging - Gfortran 表现出一种奇怪的行为,这是一个错误吗?

我注意到 gfortran 有一个奇怪的行为,我使用的版本是

GNU Fortran (MacPorts gcc5 5.2.0_0) 5.2.0

我的操作系统是 OS X YOSEMITE 10.10.3 (14D136)

我运行以下代码

输出符合预期

但是,改变我在子例程中定义虚拟参数的方式

为虚拟参数引入一个类而不是类型,我有以下输出

这是一个错误吗?或者我错过了什么?

请注意,它适用于 ifort 版本 Intel(R) 64,版本 15.0.3.187 Build 20150408

0 投票
2 回答
194 浏览

fortran - 为什么这个示例代码(f90、MPI、派生类型)会导致无效的读/写(valgrind 或 dmalloc)?

这是有罪的代码(它与我问的另一个问题有关,这里):

使用 intelMPI 版本 4.0 或 5.0 编译时,我在发送时使用 valgrind 或 dmalloc 收到无效的读/写错误。使用openMPI,这个最小示例还不是很清楚,但是我在从中提取它的大代码中遇到了类似的通信问题。

感谢您的帮助!

0 投票
1 回答
436 浏览

fortran - 如何使用 MPI 发送正确数量的派生类型对象?

对 MPI 有一些经验,但对派生类型等一些更高级的方面没有经验,这与我的问题有关。

我正在处理的代码有几个尺寸为 的数组(-1:nx+2,-1:ny+2,-1:nz+2)。为了清楚起见,每个进程都有自己的nxny和值nz。数组之间有重叠。例如,在一个 proc 上将表示与在它“下方”的 proc 上x(:,:,-1:2)相同的信息。x(:,:,nz-1:nz+2)

cell_zface已定义派生类型:

现在,这个派生类型在多个MPI_SENDRECV调用中成功使用。例如

据我了解,这个调用是在 procs 之间发送和接收数组的两个“水平”切片(即 xy 切片)。

我想做一些不同的事情,即发送四个“水平”切片。所以我尝试

附带接收。

最后,我的问题:代码运行,但错误。AFAICT,这仅发送两个水平切片,即使我使用“2”而不是“1”作为计数参数。我可以通过两次调用来解决这个问题mpi_send

附带接收,但这肯定不漂亮。

mpi_send那么,即使我将 count 参数设置为“2” ,为什么只发送两个水平切片?有没有一种干净的方式来做我想做的事情?

0 投票
1 回答
97 浏览

oop - Fortran 动态字段引用?

是否可以动态引用 Fortran 中的派生类型字段?我想实现一些可以在 Matlab 中完成的效果:

请参阅这些链接(对于 Matlab 示例):http: //blogs.mathworks.com/loren/2005/12/13/use-dynamic-field-references/ http://www.mathworks.com/help/matlab/matlab_prog /generate-field-names-from-variables.html

谢谢!

0 投票
1 回答
614 浏览

stored-procedures - Fortran 将过程保存为派生类型中的属性

是否可以将过程存储为派生类型的属性?我在想一些事情:

但这没有成功编译。显示几个错误,包括:

1) 过程指针组件中的语法错误

2) (1) 处的“操作员”不是“type_a”结构的成员

以及一些不成功的使用语句。有没有办法正确地做到这一点?任何帮助是极大的赞赏。

更新:

我已经修改procedure,pointerprocedure(),pointer,现在错误是

1) FUNCTION 属性与 'operator' 中的 SUBROUTINE 属性冲突

2) 无法将 UNKNOWN 转换为 INTEGER(4)

两者都指行x = A%operator(y,z)

0 投票
1 回答
147 浏览

arrays - 定义派生类型数组

我正在尝试使用参数声明初始化派生类型。当我编译时,我收到以下错误

(1) 处的 INTEGER(4) 数组构造函数中的元素是 CHARACTER(1)。

用户定义的种类值ipdp位于fasst_global. 他们是:

我尝试过使用1_ip而不是1作为第一个元素,它没有任何区别。我究竟做错了什么?

0 投票
1 回答
144 浏览

arrays - 试图在处理器之间传递 MPI 派生类型(并且失败)

我正在尝试将客户的 Fortran 代码与 MPI 并行化。 f是尺寸为 的 4 字节实数数组f(dimx,dimy,dimz,dimf)。我需要各种进程来处理数组第一维的不同部分。(我宁愿从最后一个开始,但这不取决于我。)所以我定义了一个mpi_x_inteface像这样的派生类型

我的意图是单个 mpi_x_interface 将在某个给定的第一个索引“i”处包含“f”中的所有数据。也就是说,对于给定的 i,它应该包含f(i,:,:,:). (注意在游戏的这个阶段,所有的 proc 都有一个完整的副本f。我打算最终f在 proc 之间拆分,除了我希望 proc 0 有一个完整的副本以用于收集。)

ptsinproc是一个数组,包含每个 proc 处理的“i”索引的数量。 x_slab_displs是每个 proc 从数组开头的位移。对于我正在测试的两个 proc,它们是 ptsinproc=(/61,60/), x_slab_displs=(/0,61/). myminpt是一个简单的整数,给出每个过程中处理的最小索引。

所以现在我想将所有内容收集f到 proc 0 中并运行

我最多可以发送一个这样的“板”。如果我尝试将整个 60 个“slabs”从 proc 1 发送到 proc 0,由于“无效的内存引用”而出现 seg 错误。顺便说一句,即使我发送了单个平板,数据也会出现在错误的位置。

我已经检查了所有明显的东西,比如确定 myrank 和 ptsinproc 和 x_slab_dislps 是它们在所有 proc 上应该是什么。我研究了“大小”和“程度”等之间的区别,但无济于事。我无计可施。我只是不明白我做错了什么。有人可能还记得几个月前我问了一个类似(但不同!)的问题。我承认我只是不明白。感谢您的耐心。

0 投票
1 回答
828 浏览

initialization - Fortran 指向派生类型和默认初始化的指针

Fortran 2003 派生类型有一个很好的默认初始化特性。

那么默认情况下,任何声明的类型 (TTest) 的变量都将具有初始化的组件 b 和 p2 。

考虑以下代码:

是否可以保证 varptr 和 varalloc 的所有元素在分配后都会初始化 b 和 p2 成员?