The source code is split into many files, so that each file contains only one subroutine or function for easy identification.
absorb.f angel.f angin.f angnp.f antibb.f bele.f bplist.f bresdc.f bwdist.f chains.f cmass.f coll.f coltim.f delten.f diffra.f emuls.f enlk.f flavor.f gamcon.f hit34.f imsed.f imspin.f initev.f iqqrnd.f isocgk.f jetcon.f kfindb.f kmass.f kqqret.f kresb.f kresm.f lddec.f lmass.f lusysj.f makjet.f mbafnd.f mbtage.f mesmes.f mesres.f mlt810.f mmefnd.f ndmed.f nghbor.f paulin.f piweg.f pspsv.f qdrot.f reject.f resdec.f rlu.f rrrr.f scattr.f string.f strist.f timelf.f torsts.f twodec.f
angel.f angin.f angnp.f lusysj.f plu.f relham.f rsign.f ulangl.f
cross1.f diffra.fbecause T3E Fortran 90 complier seems not to support function statements.
tblfit(plab,a,b,en,c,d)=a+b*plab**en+c*(log(plab))**2+ a d*log(plab)Routine tblfit is added to define the function.
real*4 integer*4 double precisionwill cause program crash or uncertain behavor. All these declarations are changed to
real integerThere are minor changes of 1d0 -> 1.0 in routines
lurobo.f trobo.f
$input n1 = 32 iz1 = 16 n2 = 32 iz2 = 16 header = 'rqmd' ref = 'cld' elgev = 100. b = 0. iseed = -100 nruns = 10 switch = F F F F F T F T F F F F T F F F T F F F F F T F $endThe way it is handled on the Cray T3E is to replace
The conversions is down in getinp.f before and after namelist read, so that the rest of RQMD doesn't know these changes in the namelist.
At end of each event, RQMD writes out namelist output which includes ref. On Cray T3E, jef is written out instead.
character*4 mype,dpet3e external dpet3e mype=dpet3e() c open (unit=5,file='file5',status='old') c open (unit=6,file='file6',status='old',form='formatted') c open (unit=7,form='unformatted',file='file7', c a status='unknown') c open (unit=8,file='file8',status='unknown') c open (unit=9,file='file9',status='old',form='formatted') c open (unit=10,file='file10',status='unknown') c open (unit=11,form='unformatted',file='file11', c a status='unknown') c open (unit=12,form='unformatted',file='file12', c a status='unknown') c open (unit=13,file='file13',status='unknown') c open (unit=14,file='file14',status='old') c open (unit=15,file='file15',status='unknown') open (unit=5,file=mype//'file5',status='old') open (unit=6,file=mype//'file6',status='old',form='formatted') open (unit=7,form='unformatted',file=mype//'file7', a status='unknown') open (unit=8,file=mype//'file8',status='unknown') open (unit=9,file=mype//'file9',status='old',form='formatted') open (unit=10,file=mype//'file10',status='unknown') open (unit=11,form='unformatted',file=mype//'file11', a status='unknown') open (unit=12,form='unformatted',file=mype//'file12', a status='unknown') open (unit=13,file=mype//'file13',status='unknown') open (unit=14,file=mype//'file14',status='old') open (unit=15,file=mype//'file15',status='unknown')What is commented out above is stardard RQMD. Routine dpet3e returns the sub-directory name as "xxx/", where xxx is the processor number. e.g., 000 for processor 0, 031 for processor 31.
dpet3e in turns calls ipet3e, which gives the processor number.
qsub script_fileA sample script is
# # Embedded flags (default options) for qsub: # #QSUB -s /bin/csh #QSUB -r rqmd #QSUB -eo -o /u/gc5/fqwang/rqmd2.3/wrk/rqmd.out #QSUB -l mpp_p=16 #Maximum PEs Needed (Required). #QSUB -mb -me # set echo # # setup rqmd files # cp /u5/fqwang/rqmd2.3/nml/SS200cld_b0.nml $BIG/file5 chdir $BIG cp /u/gc5/fqwang/rqmd2.3/bin/rqmd . touch file6 file9 file14 /u/gc5/fqwang/rqmd2.3/bin/cp_file.ksh 16 rm file5 file6 file9 file14 # # execute # ja mpprun -n 16 ./rqmd ja -s # # merge output files, # move the merged files to storage area, # and clean up house. # ls -sR /u/gc5/fqwang/rqmd2.3/bin/merge_file.ksh 16 ls -s file* /u/gc5/fqwang/rqmd2.3/bin/put_file.csh /usr/tmp/fqwang SS200cldbub_b0.nml rm -rf * # exit 0For explanation of embedded flags, see Cray T3E Web Page and qsub man page.
The script does several tasks:
fqwang@lbl.gov