我有一个旧的fortran代码,我试图破译并了解正在发生的事情,以便可以对其进行修改。不幸的是,我在fortran中还是个新手,所以我很难弄清这个说法。
C 15/04/97 IBM VERSION ECIS96 CALC-000
SUBROUTINE CALC(W,NW,DW,IDMX) CALC-001
C MAIN SUBROUTINE OF THE PROGRAMME CALC-002
C W,NW,DW ARE THE WORKING SPACE IN EQUIVALENCE BY CALL,STARTING AS CALC-003
C REAL*8. THEY ARE RESPECTIVELY REAL, INTEGER AND DOUBLE PRECISION. CALC-004
C IDMX IS THE LENGTH OF DW. CALC-005
C CALC-006
C ADDRESSES IN THE WORKING FIELD DEFINED HERE (FOR OTHERS, SEE CALX) CALC-007
C IN COMMON /DECOU/ CALC-008
C 34- NT HERE, ALSO REDUCED NUCLEAR MATRIX ELEMENTS CALC-009
C 35- NIVQ TABLE OF MULTIPOLES CALC-010
C 36- NIVY TABLE OF FORM FACTOR IDENTIFICATION IVY (FOR COMPUTATION)CALC-011
C 37- NIVZ TABLE OF FORM FACTOR IDENTIFICATION IVZ (FOR USE) CALC-012
C 38- NCOI ADDRESS OF THE TABLE FOR DISCRETISATION OF CONTINUUM CALC-013
C 39- MIPI SAME AS NIPI FOR THE DISCRETISATION OF CONTINUUM CALC-014
C 40- NXD ADDRESS OF WEIGHTS AND STEPS OF CONTINUUM CALC-015
C 41- MWV SAME AS NWV FOR THE DISCRETISATION OF CONTINUUM CALC-016
C 42- NIXT TRANSMISSION COEFFICIENTS OF UNCOUPLED STATES CALC-017
C 43- NTY TEMPORARY RESULTS OF COMPOUND NUCLEUS FOR INTERPOLATION CALC-018
C 44- NTX PARTIAL REACTION CROSS SECTIONS AND COMPOUND NUCLEUS CALC-019
C 45- NRY COMPOUND NUCLEUS COEFFICIENTS CALC-020
C 46- NRCO STRENGTH OF COULOMB CENTRAL POTENTIALS FOR CORRECTIONS CALC-021
C 47- NRDO STRENGTH OF COULOMB TRANSITION POTENTIALS FOR CORRECTIONSCALC-022
C 48- NVC1 REAL POTENTIALS CALC-023
C 49- NVC2 IMAGINARY POTENTIALS CALC-024
C 50- NNC FIRST FREE ADDRESS AFTER COMPUTATION OF POTENTIALS CALC-025
C 51- NCX FIRST FREE ADDRESS FOR COMPUTATION OF POTENTIALS CALC-026
C OTHER INTEGER DATA OF COMMON /DECOU/ CALC-027
C 52- IDMT TOTAL WORKING FIELD LENGTH AS SINGLE PRECISION CALC-028
C 53-98 SEE CALX CALC-029
C 99- KXT NUMBER OF PENETRABILITIES FOR UNCOUPLED STATES CALC-030
C100- NRZ NUMBER OF RESULTS TO SAVE FOR MINIMUM CHI2 CALC-031
C101- NTZ NUMBER OF MEMRIES TO INITIALISE TO ZERO FOR SCATTERING CALC-032
C MATRIX AND COMPOUND NUCLEUS RESULTS CALC-033
C102- LMAX3 EFFECTIVE NUMBER OF COULOMB FUNCTIONS CALC-034
C103- IPM NUMBER PF J VALUES USED FOR SCATTERING MATRIX (IN CAL1) CALC-035
C104- IPK NUMBER PF J VALUES USED FOR COMPOUND NUCLEUS (IN CAL1) CALC-036
C105-110 SEE CALX CALC-037
C CALC-038
C IN COMMON /DBLPR/ CHI2,CHI2M: CHI-SQUARE AND MINIMUM CHI-SQUARE CALC-039
C CM,CHB: NUCLEAR MASS AND H BAR CALC-040
C CK,CMB,CCZ: DERIVED CONSTANTS CALC-041
C XE,XM,XN: RELATIVISTIC ENERGY AND MASS (COLF) CALC-042
C XZ: CONVERSION FACTOR TO MILLIBARNS CALC-043
C FOR COMMONS /POTE1/ AND /POTE2/ SEE REDM CALC-044
C FOR COMMON /NCOMP/ SEE CALX, LECT AND COLF CALC-045
C CALC-046
C*some information on logical variables that is unimportant to this*
DOUBLE PRECISION CHI2,CHI2M,CM,CK,CHB,CMB,CZ,CCZ,XE,XM,XN,XZ,DW(1)CALC-095
LOGICAL LO(250) CALC-096
DIMENSION W(1),NW(1) CALC-097
COMMON /DECOU/ NJIT,NIPP,NIPI,NWV,NIPH,NSCN,NPAR,NNIV,NFIS,NGAM,NPCALC-098
1OT,NBETA,NFM,NTGX,NDONN,NRC,NIW,NDE,NISE,NNVI,NNWI,NCC,MCC,NXA,NAMCALC-099
21,NFAC,NFAM,NPAD,NFG,NXG,NSM,NRES,NXX,NT,NIVQ,NIVY,NIVZ,NCOI,MIPI,CALC-100
3NXD,MWV,NIXT,NTY,NTX,NRY,NRCO,NRDO,NVC1,NVC2,NNC,NCX,IDMT,NCOLL,NJCALC-101
4MAX,ITERM,NPP,JDM,JIT,NSEC,LMD,MCM(2),NCOLS,NCOLT,KMAX,KMIN,NVA,NBCALC-102
5ET,NBT1,LMX,LMAX1,NLT,ISM,IQM,IQMAX,MS1,MS2,NCT(6),KBA,KAB,KBC,KCCCALC-103
6,NJC,JTX,JTH,NCOLR,NREC,NTOT,NFA,LMAX2,KE,ITEMM,NPLACE,KXT,NRZ,NTZCALC-104
7,LMAX3,IPM,IPK,H,BJM,EITER,ACONV,CONJ,ASPIN CALC-105
COMMON /DBLPR/ CHI2,CHI2M,CM,CK,CHB,CMB,CCZ,XE,XM,XN,XZ CALC-106
COMMON /POTE1/ ITX(16),IMAX,INTC,INLS,INVC,INVD,ITXM CALC-107
COMMON /POTE2/ ITY(8),INVT,INTV,INSL,NPX CALC-108
COMMON /NCOMP/ NSP(3),NFISS,NRD,NCONT,NCOJ,ACN1,ACN2,NCONS,NIE,NCOCALC-109
1LX,NDP,NDQ,AZ(6),BZ1,BZ2,BZ3,TG0,BN,FNUG,EGD,GGD,TG1,SGSQ CALC-110
如果有帮助,这就是调用函数的方式。
C 18/12/87 IBM VERSION CONVEX ECIS88 ECIS-000
REAL*8 W(600000) ECIS-001
COMMON W ECIS-002
CALL CALC(W,W,W,600000) ECIS-003
STOP ECIS-004
END ECIS-005
我已经了解了行的延续,对于CALC-099到CALC-105的行,第一个非空白数字只是对延续进行计数,因为编译器跳至第7列进行延续。
我不明白类型是如何确定的。这是在第一次分配时自动确定的事情,我对通用块的工作原理的理解使这似乎不太可能。这是命名中的东西吗,第一个字符是否以某种方式确定了它?
另外,维度语句在这里做什么?如果数组的长度为600,000,为什么维度语句将其长度“设置”为1,还是正在做我没看到的事情?
您的问题的两个部分都令现代人感到震惊。
首先,隐式键入。变量,除非它们具有显式类型,否则采用隐式类型。变量开头I
-N
是INTEGER
,其他变量是REAL
。IMPLICIT
但是,该语句将覆盖此内容,因此请注意这一点(永远不要低估程序员可以做什么)。另外,请注意,这IMPLICIT NONE
是该标准的更高版本。
其次,在子程序DIMENSION(1)
(或等效程序)中是的替代方法DIMENSION(*)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句