初始化数组A,数组长度10SUBROUTINEINITARRAY(A)!DEC$ ATTRIBUTES DLLEXPORT::INITARRAYINTEGER::IDOUBLE PRECISION,DIMENSION(10)::ADOI=1,10,1A(I)=IEND DOEND SUBROUTINEINITARRAY! 数组A的所有元素相加并返回DOUBLE PRECISIONFUNCTIONARRAYSUM(A)!DEC$ ATTRIBUTES DLLEXPORT::ARRAYSUMDOUBLE PRECISION::RESDOUBLE PRE...
当然,我用的组里的Fortran程序也不可避免会用到。传统的(也是我们组程序的)做法是,在主调函数(caller function)里定义好数组,做好内存分配,然后把数组名字和数组长度都作为实参,传递给被调函数(called function, Fortran里叫subroutine、子程序)。示例程序中,sub77就是这么做的,这被称为adjustable-size array,符合...
本程序采用Module将代码块进行封装,程序中用到的变量、function、subroutine,整理到Module中,用的时候只需要Use一下就可,如行48。程序中一些语法、注意的细节将会在以后专门设立一个Fortran的栏目中进行讲解。 木木最开始用的编译器是VS+IVF,后来发现VS占用系统资源很多,卸载也很麻烦,用起来不顺手,现在我用的是Simply...
(:) end subroutine set_pos pure real(rk) function length(point) result(ans) class(point_t), intent(in) :: point ans = norm2(point%pos(:)) end function length end module geometry program main use geometry, only: point_t, rk type(point_t) :: x - 29 - call x%set_pos([1.0_...
书写: [形容词][返回类型] Function 名称([虚参1,虚参2...]) [虚参的声明] [局部变量的定义] 函数内部实现 名称=返回值 [return]!//尾部可忽略 End [Function [名称]] 调用:返回变量=名称([实参1,实参2...]) 典型子例程的书写和调用: !//书写: [形容词] Subroutine 名称([虚参1,虚参2...]...
感谢神奇的互联网!目前已解决如何调用fortran中的function了,但是subroutine的还没有解决参考资料如下:【1】https://www.bilibili.com/video/BV1x441117A4/?spm_id_from=333.337.search-card.all.click&vd_source=9d4132e2c24d27d9821ec037910c102a【2】https://zhua
为了确定变量的精度,可以在申明变量的时候在括号中定义。Fortran提供了内置function:selected real kind用于确定变量的精度。对于大部分CPU: 通过以下案例,可以比较定义和不定义精度对数值的影响: 输出结果: 可以如果不在声明变量的时候定义精度,变量的结果会发生改变。
4 subroutine mexFunction(OutSum,OutVar,InSum,InVar)!函数接口名称必须为mexFunction, 5 6 7 !OutSum:输出参数个数 8 9 10 !OutVar:输出参数数组指针 11 12 13 !InSum:输入参数个数 14 15 16 !InVar:输入参数数组指针 17 18 19 !参数顺序不能随意更改 ...
subroutine ExecFunc(f) implicit none real,external ::f !声明参数f是个函数 write(*,*) f(1.0) !执行输入函数f return end real function func(num) implicit none real ::num func = num*2 return end 关键字Intrinsic表明所声明的sin是fortran的库存函数,而不是一个变量...
重载需要有不同的签名(不同类型的虚参),且签名应该都是function或都是subroutine。 最后,还值得注意的是,还有一种额外的类型重载机制,使用了所谓的“泛型类型绑定过程(generic type-bound procedures)”。这是非常有益的,尤其是当模块所在的位置存在唯一的修改器时(仅导入选定的实体)。一个很容易发生的错误是忘记in...