例如:SIN(X),LOG(X) 2. 用户自定义函数(user-defined function) 用户定义函数由程序员定义 用来标准内部函数无法解决的特定需求 通用格式: FUNCTION name(parameter_list)... !在声明部分必须声明name的类型 ... !部分 ... name=expr RETURN END FUNCTION [name] 在函数中,函数名必须出现赋值...
DEC$ ATTRIBUTES DLLEXPORT::ARRAYSUMDOUBLE PRECISION::RESDOUBLE PRECISION,DIMENSION(10)::AINTEGER::IRES=0DOI=1,10,1RES=RES+A(I)END DO! 返回ARRAYSUM=RESEND FUNCTIONARRAYSUM 简要说明一下,SUBROUTINE是子程序,它没有返回值,可以有参数;对应的,FUNCTION是函数,它有返回值,可以有参数。上面的这几个函数和...
real, external :: function_name一般自定义函数也是放在主程序之后。 **形式: ** functionfunction_name(parameter1, parameter2)implicitnonereal:: parameter1, parameter2!声明函数参数类型,这是必需的real::function_name!声明函数返回值类型,这是必需的…… …… function_name=….!返回值的表达式returnend 也...
一般数组array(:)在子程序的传递中很直接,只要声明一致即可,如 program main implicit none real(kind=8),dimension(:) :: array_main(3) call sub(array_main) write(*,*) array_main end program main subroutine sub(array) implicit none real(kind=8),dimension(:) :: array(3) array(:) = 3.0d...
计算机内存是一维的,在存储多维数组时,有些语言按行优先原则,有些语言按列优先原则。Fortran语言就属于按列优先原则。 Fortran语言用reshape函数描述一个二维数组,比如下面的二维数组 用reshape可表示为: A = reshape((/ 1,5,2,6 /), (/2,2/))!注意列优先原则 ...
float *c_function(int cnt) { float *a; a = malloc(sizeof(float) * cnt); /* * 操作 array a. */ return a; } 而且如果在程序执行过程中,如果不再需要这个 array a 了,还可以随时释放a所占用的存储空间。而 Fortran 在一般情况下是不行的,因此在一般的 Fortran 程序中,常见所有需要用的 array...
function sum2(a) result(b) bind(c, name='sum2') use iso_c_binding !fortran自带的 implicit none real(c_double), intent(in) :: a real(c_double) :: b b = a + 2.d0 end function sum2 ! 多维数组函数 subroutine double_array(x,N) bind(C, name="double_array") ...
检查环境变量设置: 变量:path 值:c:\MSDEV\bin; %path% 变量:lib 值:c:\MSDEV\lib;%lib% 变量:include 值:c:\MSDEV\include;%include% 7.Error, cannot find shape function d2c8 in SHAP Library shap 段写错了,在库中找不到所写的单元类型。 8.les.gio file expected ! 需要上传FEPG 原始文件,如...
7.Error, cannot find shape function d2c8 in SHAP Library shap段写错了,在库中找不到所写的单元类型。 8.les.gio file expected! 需要上传FEPG原始文件,如GCN、GIO、PDE等。 9.FEPG翻译时无相应。 PDE中参数可能写错,将%1写成1%等。 10.编译找不到相应的文件 ...
[1]); return ans; } Fortran 代码: program main use, intrinsic :: iso_c_binding, only: c_int interface integer(c_int) function max(two_int) bind(c, name='max') import :: c_int integer(c_int), intent(in) :: two_int(*) end function max end interface print *, max([1, 2]...