SUBROUTINE LogProp(jthenergy, working, dworking, ncall, smx_time, mcall, & sge_time, ovrfile, refj, prty, nrho) !cccccccccccccccccccccccccccccccccccccccccccccccccccccccc ! modification of main_logder to treat photodissociation ! M. Braunstein, Spring 1991 !cccccccccccccccccccccccccccccccccccccccccccccccccccccc ! ! working is the file Rvwxyz in the working subdirectory into which the ! R matrix will be put. ! dworking is the file REvwxyz in the working subdirectory, etc. ! version. ! ! Changed number of Sfelevl_logder from elvl_unit to elev_unit. ! Modified CALL to propph1() on 9/15/97 to conform to updates in that ! routine: ipiv,ui,work now passed as arguments. !< molecular problem (Gauss_Legendre qu ! =2 => coulomb problem (Gauss_Laguerre quad ! CSTEST LOGICAL , usually false. true tests basis for mega=1 ! LMATCH LOGICAL , is set equal to true to WRITE out information ! for the FEM_to_ABM or DVR_to_ABM transformation. !----------------------------------------------------------------------- OPEN(Unit=In_Unit,File=InputDIR(1:LEN(TRIM(InputDIR)))//InputFile,status='old') READ(In_Unit, NML=options, IOSTAT=IERR) IF(IERR==-1)THEN CALL NameList_Default(Out_Unit, 'Options') scheme=1 cstest=.False. lsfunc=.True. lmatelm=.True. loverlap=.True. lsample=.False. cray=.False. lmatch=.False. lplot=.False. lenlvls=.False. lmesher=.True. laph3d=.False. sfuntype='ABM' ELSEIF(IERR/=0)THEN WRITE(Out_Unit,*)'ERROR with Namelist Options' WRITE(Msg_Unit,*)'ERROR with Namelist Options' STOP 'LogProp: Options' ENDIF WRITE(Out_Unit,NML=options) CLOSE(Unit=In_Unit) !----------------------------------------------------------------------- ! Read in the masses (carbon 12 mass units) for each atom. !----------------------------------------------------------------------- OPEN(Unit=In_Unit,File=InputDIR(1:LEN(TRIM(InputDIR)))//InputFile,status='old') READ(In_Unit, NML=AtomicMasses, IOSTAT=IERR) ! Atomic Masses IF(IERR==-1)THEN REWIND In_Unit READ(In_Unit, NML=Atoms, IOSTAT=IERR) IF(Prt_Masses)THEN WRITE(Out_Unit,NML=Atoms) WRITE(Msg_Unit,NML=Atoms) WRITE(Out_Unit,*) ENDIF DO I=1,3 CALL AtomicWeights(AtomicSymbol(I), MassNumber(I), AtomicNumber(I), Mass(I), Abundance(I), AtomicWeight(I), Notes(I)) IF(Prt_Masses)THEN WRITE(Out_Unit, '(A,I3)')'Atomic Number = ', AtomicNumber(I) WRITE(Out_Unit, '(A,A3)')'Atomic Symbol = ', TRIM(AtomicSymbol(I)) WRITE(Out_Unit, '(A,I3)')'Mass Number = ' , MassNumber(I) WRITE(Out_Unit, '(A,1PES23.15)')'Relative Atomic Mass = ' , Mass(I) WRITE(Out_Unit, '(A,1PES23.15)')'Isotopic Composition = ' , Abundance(I) WRITE(Out_Unit, '(A,1PES23.15)')'Standard Atomic Weight = ', AtomicWeight(I) WRITE(Out_Unit, '(A,A)')'Notes = ', TRIM(Notes(I)) WRITE(Out_Unit,*) ENDIF ENDDO ELSEIF (IERR/=0)THEN WRITE(Msg_Unit,*)' Missing a necessary namelist: Atoms or AtomicMasses' ENDIF WRITE(Out_Unit,NML=AtomicMasses) CLOSE(In_Unit) !---------------------------------------------------------------------- ! Specify the following: ! JTOT total angular momentum ! IPAR parity (IPAR=0=even-parity, IPAR=1=odd-parity) ! NSYMC is true only if the diatom in that channel is homonuclear. ! NSYMC can be true for only one arrangement channel. ! NPAR true means use parity decoupling for the 3-body system, ! false means no parity decoupling ! JEVEN true is even parity states of the asymptotic diatoms ! false is odd parity states of the asymptotic diatoms !---------------------------------------------------------------------- OPEN(Unit=In_Unit,File=InputDIR(1:LEN(TRIM(InputDIR)))//InputFile,status='old') JRef=0 MegaMax=0 MegaCoup=0 READ(In_Unit, NML=momentum, IOSTAT=IERR) IF(IERR/=0)THEN WRITE(Out_Unit,*)'ERROR with Namelist momentum' WRITE(Msg_Unit,*)'ERROR with Namelist momentum' STOP 'LogProp: Momentum' ENDIF WRITE(Out_Unit,NML=momentum) CLOSE(Unit=In_Unit,status='keep') IF(megamax/=maxmega)THEN WRITE(Msg_Unit,*)' Warning: megamax/=maxmega.' WRITE(Msg_Unit,*)' megamax,maxmega=',megamax,maxmega STOP 'logprop' ENDIF IF(jref/=refj)THEN WRITE(Msg_Unit,*)' Warning: jref/=refj' WRITE(Msg_Unit,*)' jref,refj=',jref,refj STOP 'logprop' ENDIF IF(parity/=prty)THEN WRITE(Msg_Unit,*)' Warning: parity/=prty' WRITE(Msg_Unit,*)' parity,prty=',parity,prty STOP 'logprop' ENDIF IF(megacoup/=coupmega)THEN WRITE(Msg_Unit,*)' Warning: megacoup/=coupmega' WRITE(Msg_Unit,*)' megacoup,coupmega=',megacoup,coupmega STOP 'logprop' ENDIF IF(megacoupminmega=',lammin,minmega WRITE(Out_Unit,*)' Warning, lammin>minmega=',lammin,minmega ENDIF IF(megacoupmegamax) GOTO 210 IF(lammax>jtot) GOTO 220 ! ndim=0 DO i=lammin,lammax nlam(i)=lam_n(i) ndim=max(nlam(i),ndim) ENDDO !Neigmin_sum=MAX(ndim,Neigmin_Sum) IF(Neigmin_Sum