vvt 发表于 2020-5-11 19:28 谢谢您!已经解决了 |
necrohan 发表于 2020-5-11 14:04 感谢!已经解决了! |
[Fortran] 纯文本查看 复制代码 SUBROUTINE UEXTERNALDB(LOP,LRESTART,TIME,DTIME,KSTEP,KINC) C INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2) C integer, parameter :: n = 24 real :: SPZFS(n),QW(n),FS(n),TDL(n),BDL(n),LDL(n) common SPZFS,QW,FS,TDL,BDL,LDL integer :: i !计数器 if( LOP .eq. 0) then C 读数据 open(107,file='D:\Desktop\read\weatherdata.csv',status='old') do i=1,n read(107,*) SPZFS(n),QW(n),FS(n),TDL(n),BDL(n),LDL(n) end do close(107) end if RETURN END SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS, 1 JLTYP,TEMP,PRESS,SNAME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION FLUX(2), TIME(2), COORDS(3) CHARACTER*80 SNAME integer, parameter :: n = 24 real :: SPZFS(n),QW(n),FS(n),TDL(n),BDL(n),LDL(n) common SPZFS,QW,FS,TDL,BDL,LDL IF (SNAME .EQ. 'ASSEMBLY_SURF-4') THEN flux(1)=0.5*SPZFS(KINC+1) END IF RETURN END |
cyzhang 发表于 2020-5-11 10:35 1. 没有program也可以使用module,并不影响。 2. module没有限制不能使用read操作。 3. 多个subroutine可以 use 同一个module,或者不同module,都可以。 4. module可以只用来共享数据,也可以执行读取操作。 |
read(107,*) SPZFS(n),QW(n),FS(n),TDL(n),BDL(n),LDL(n) 把这里的n都改成i。 |
vvt 发表于 2020-5-11 08:17 您好!我参考http://bbs.fcode.cn/thread-1878-1-2.html 这个帖子中fcode大神的回复写了如下的代码,希望实现subroutine中读取如2楼中所示的数据,在program中调用其第一列数据,但是运行后结果是 1.58329436E+32 ,不知问题出在哪里,您能否给指点一二? [Fortran] 纯文本查看 复制代码 Module var_mod integer, parameter ::n = 24 real SPZFS(n),QW(n),FS(n),TDL(n),BDL(n),LDL(n) End Module var_mod subroutine test use var_mod implicit none integer ::i open(107,file='D:\Desktop\read\weatherdata.csv',status='old') do i=1,n read(107,*) SPZFS(i),QW(i),FS(i),TDL(i),BDL(i),LDL(i) end do close(107) end subroutine test program main use var_mod implicit none call test write(*,*)SPZFS(n) end |
vvt 发表于 2020-5-11 08:17 感谢您的回复! 能否请您帮忙看一下我的代码是否有语法错误?之前用common的方法,实现了读取txt的数据,并在两个subroutine中使用;这一次读取csv的数据后,使用common语句在另一个subroutine中却没有成功使用这些数据。 再次感谢! |
Transpose 发表于 2020-5-11 07:27 感谢您的回复! 我现在做的是abaqus这个软件的二次开发,只能对这些subroutine中的特定函数进行定义,即没有program,只有若干单独的subroutine,计算时在软件中勾选上该文件即可在计算中调用,实现二次开发。 所以,如果想用module的话,我必须写在subroutine中,但好像module中不能进行read操作。 请问:1.我可以在一个subroutine中使用module,然后在另一个subroutine中调用这个module吗? 2.如果1可行,那么我如何在subroutine的module中实现读取csv中的数据呢? 再次感谢! |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-12-23 21:27