Fortran Coder

标题: 自定义类型 [打印本页]

作者: hanshikai    时间: 2014-5-22 17:14
标题: 自定义类型
[
[Fortran] 纯文本查看 复制代码
PROGRAM AA
IMPLICIT NONE

TYPE::ND !自定义类型:节点
INTEGER ::ID !节点编号
REAL ::X,Y !节点坐标
ENDTYPE

TYPE::EL !自定义类型:单元
INTEGER::ID !单元编号
! TYPE(ND%X)::N1
! TYPE(ND)::N1,N2
TYPE(ND)::N !组成单元的节点,为ND类型,将包含三个数据,读取时,只用到X,Y这两个
! TYPE(ND)%ID::N !不能这样定义
ENDTYPE


TYPE(ND)::ALLND(1,1)
TYPE(EL)::ALLEL(1,1)

OPEN(11,FILE="T.DAT")
READ(11,*) ALLND%ID, ALLND%X, ALLND%Y
!READ(11,*) ALLEL
!READ(11,*) ALLEL%NUM,ALLEL%ND%X,ALLEL%ND%Y
READ(11,*)ALLEL%ID, ALLEL%N%X, ALLEL%N%Y
!READ(11,*)ALLEL
PRINT*,ALLND
PRINT*,ALLEL

END


数据:
第一行:6 0.33 0.12
第二行:3 5 7

运行的结果是第二行出来四个数,我期望的是3个,在第一个后面多出一个0

[被我注释掉的都是验证过不能用的]

T.DAT

18 Bytes, 下载次数: 1

type.f90

632 Bytes, 下载次数: 0


作者: fcode    时间: 2014-5-22 17:21
           6  0.3300000      0.1200000
           3           0   5.000000       7.000000
请按任意键继续. . .

你希望的是什么样子?
作者: hanshikai    时间: 2014-5-22 17:22
上面注释有错啊.
[Fortran] 纯文本查看 复制代码
TYPE(ND)::N !组成单元的节点,为ND类型,将包含三个数据,读取时,只用到X,Y这两个 

应该是用到两个ND的ID,EL的定义有问题

不过这个应该不是最后输出错误的原因
作者: hanshikai    时间: 2014-5-22 17:26
fcode 发表于 2014-5-22 17:21
6  0.3300000      0.1200000
           3           0   5.000000       7.000000
请按任意键 ...

第二行 3 5 7
作者: fcode    时间: 2014-5-22 17:28
PRINT*,ALLEL
改为
PRINT*,ALLEL%ID, ALLEL%N%X, ALLEL%N%Y
作者: hanshikai    时间: 2014-5-22 17:30
fcode 发表于 2014-5-22 17:28
PRINT*,ALLEL
改为
PRINT*,ALLEL%ID, ALLEL%N%X, ALLEL%N%Y

ALLE是包含四个元素的,因此直接输出会有四个
got it !




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2