主题:开个贴回答Fotran 的问题
trimtrim
[专家分:1640] 发布于 2010-03-31 10:15:00
开个贴试着回答Fortran的问题。有问题的请跟贴。
有两种问题不想回答:
1. Fortran文件读取方面的问题。
2. Fortran程序调试或者找程序中的错误。
回复列表 (共83个回复)
21 楼
trimtrim [专家分:1640] 发布于 2010-04-02 11:09:00
1
22 楼
trimtrim [专家分:1640] 发布于 2010-04-02 11:13:00
回19楼,没有明白原始位置是什么意思。是不是原始数组?
尝试解答一下(以下面程序为例):
A1: 待排序数组;
A2: 记录排序后数组的索引;
A2 : sort the array index in A1 before sort...
write(*,*) A1; ! get the array before sort
write(*,*) A1(A2): !get the array after sort.
不知道是否是你想要的。
SUBROUTINE I4SORTP (N,X,P, ORDER)
IMPLICIT NONE
INTEGER(KIND=4) ,INTENT(IN )::N;
INTEGER(KIND=4),DIMENSION(1:N),INTENT(IN )::X;
INTEGER(KIND=4),DIMENSION(1:N),INTENT( OUT)::P;
INTEGER(KIND=4) ,OPTIONAL ::ORDER;
!---------------------------------------------------------------------------------------------------------------------
!OPTIONAL ARGUMENT
!---------------------------------------------------------------------------------------------------------------------
INTEGER(KIND=4) ::iOrder,i,pLOC(1),maskVal;
IF( PRESENT(ORDER) == .FALSE.) THEN
iOrder = -1;
ELSE
iOrder = order;
ENDIF
if( iOrder == -1)THEN
pLOC = MINLOC(X);
P(1) = pLOC(1);
maskVal =X(pLoc(1));
ELSE
pLOC = MAXLOC(X);
P(1) = pLOC(1);
maskVal =X(pLoc(1));
ENDIF
DO I=2,N
if( iOrder == -1)THEN
pLOC = MINLOC(X,X > maskVal);
ELSE
pLOC = MAXLOC(X,X < maskVal);
ENDIF
P(i) = pLOC(1);
maskVal = X(pLOC(1));
ENDDO
END SUBROUTINE
PROGRAM MAIN
INTEGER ::A1(4),A2(4);
LOGICAL ::in(4);
A1 =(/1,3,2,4/);
CALL I4SORTP(4,A1,A2);
WRITE(*,*) A1;
WRITE(*,*) A1(A2);
END
23 楼
msh1206 [专家分:100] 发布于 2010-04-03 08:58:00
首先感谢楼主,原始位置就是数组原来的位置,比方说A=(/1.2,6.6,4.2,7.3,2.5/)排完序后想输出B=(/1.2,2.5,4.2,6.6,7.3/)和I=(/1,5,3,2,4/),I(i)记录B(i)在原来数组中的位置,谢谢啦
24 楼
trimtrim [专家分:1640] 发布于 2010-04-03 10:28:00
回23楼。 在22楼已经给出了程序(稍微改下就行):
A= A1;
B= A1(A2)
I= A2
25 楼
msh1206 [专家分:100] 发布于 2010-04-03 11:28:00
感谢楼主啊,呵呵
26 楼
allocate [专家分:540] 发布于 2010-04-03 17:00:00
今天纯属蛋疼,把C和Fortran混编的程序用gdb载入进来想看看可以调试否,结果发现直接到gfortran的lib里去了,貌似不大好使,不知道对于混编的情况,怎么载入程序才可以调试啊?
27 楼
ogions [专家分:40] 发布于 2010-04-03 17:12:00
请问一下:Fortran程序可以定时运行不?类似计划任务。
28 楼
trimtrim [专家分:1640] 发布于 2010-04-03 17:48:00
回26楼,gdb没用过,只用过ns 2008 的IDE.
29 楼
trimtrim [专家分:1640] 发布于 2010-04-03 17:50:00
回27楼,把fortran程序编译成可执行文件,然后再计划任务里执行?
30 楼
ogions [专家分:40] 发布于 2010-04-04 11:27:00
不好意思,没有说清楚,我想问的是:比如一个fortran程序打开在那里,让其中的子程序每隔1小时运行一次,运行完了这个程序依然不关闭,到下一个小时再运行。
我来回复