program conquistador ************************************************************************* * PhaseII slave process. This program is run on remote processors to * * solve the Lippmann-Schwinger equation and do the Coulomb matching. * ************************************************************************* include '/usr/local/include/fpvm3.h' implicit real*8 (a-h, o-z) integer info, nproc, nhost, mytid, bufid, consti real*8 k0 , ko , ko2 , kk real*8 Mnuc , Mnuc2 , MN , Mp , Mp2 complex*16 zf dimension tr(12),ti(12) dimension ur(43,43,8) , ui(43,43,8) dimension den(194) , gp(96) , wt(96) , sigbrn(361) dimension scoul(100) dimension nifty(20), constr(10), consti(10) c common /nlspfl/ ur, ui common /switch/ nifty common /ranges/ rcoul, rcut common /params/ hbarc, pi, Mp, MN, nz, na, nes, nwaves common /kinemt/ El , Ecm , k0, pl , s , Mp2 , Mnuc , Mnuc2 common /Rcomn/ rr , ri , rrb , rib common /spins/ nspina , nspinb , nspinc , nspind , nspine common /Tcoul/ Trc , Tic , Tr3c , Ti3c , Tr5c , Ti5c, xgam common /Tcomn/ tr , ti ************************************************************************* call pvmfmytid( mytid ) ********** ^^^--Determine slave I.D. and enroll program in PVM call pvmfparent( mtid ) ********** ^^^--Determine Master Process I.D. number. call pvmfrecv( mtid, 1, info ) **********^^^^--Receive input parameters and data from master call pvmfunpack(INTEGER4, consti(1), 5, 1, info) call pvmfunpack(REAL8, constr(1), 6, 1, info) call pvmfunpack(INTEGER4, nifty(1), 20, 1, info) call pvmfunpack(REAL8, den(1), 194, 1, info) call pvmfunpack(REAL8, scoul(1), 100, 1, info) newdim = consti(5) call pvmfunpack(REAL8, ur(1,1,1), newdim, 1, info) call pvmfunpack(REAL8, ui(1,1,1), newdim, 1, info) ldum = consti(1) psfac = constr(1) n2 = consti(2) aovera = constr(2) n1 = consti(3) xgam = constr(3) ldmax = consti(4) k0 = constr(4) rcut = constr(5) hbarc = constr(6) ld = ldum l = ldum - 1 ********** ^Initialize variables ***************************** c ---------- do loop over 2 - 6 spin states(if necessary)-------- c *** nspinm = 8 do 410 nspin = 1,nspinm n = nspin if (n .eq. 3 .OR. n .eq. 5) go to 410 c *********** tvm 9/2/92 TS-mixing ******************************* if (n .eq. 1 .or. n .eq. 7) go to 410 nspine = nspin c *** set spin indices needed for 1/2 x 1/2 if (nifty(6) .eq. 8) then nspina = nspin - 1 nspinb = nspin nspinc = nspina + 2 * (5 - nspin) nspind = nspinc + 1 endif c *** special storage r0(11)-nspin=5 unreachable with our l sum scheme c *** store in ro(00)-nspin=2 for ldum=1(l=0) 228 if (nspin .eq. 2 $ .AND. $ nifty(6) .ne. 3 $ .AND. $ nifty(6) .ne. 8 ) go to 380 c write(6,2211) n c write(6,1979) ur(n1,n1,n), ui(n1,n1,n) c *** c *** nmax = n2 c *** Set up the f-matrix *** ******************* New T-Mat 8/1/92 tvm ***************** ************************************************************** c *** Here we begin the solution of the LS equation **** c *** See Paper T. Mefford, R. Landau, K. Amos, and L. Berge, c *** Phys Rev. C 50, 1648, (1994). *************************************************************** call Fmatrx( den , n1 , nmax , nspin , ldum, psfac) c *** Calculate the on-shell T matrix from inverse of f * u *** call Tmatrx ( psfac , n1 , n2 , nmax , nspin ) *^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ******************** New T-Mat 7/27/92 tvm ********************* tr(nspina) = rr ti(nspina) = ri tr(nspinb) = rrb ti(nspinb) = rib *________________________________________________________________ c *** calculation of t-matrix (on - shell), c *** t normalized to exp(i del)*sin(del) 2424 continue c **** ***************************************** ******* c **** This subroutine performs the Coulomb matching ******* c **** See paper Lu, Mefford, Song, and Landau, ******* c **** Phys Rev. C 50, 3037, (1994). ******* c **** ***************************************** ******* call coulomb1(scoul, sigl, aovera, ld, nspin, ldmax) 340 continue 380 continue 410 continue c *** End of do loop over spin *** c ****** Prepare to send results, the T-matrix values, to the Master *** call pvmfinitsend(PVMRAW, bufid) call pvmfpack( REAL8,tr(1), 8, 1, info) call pvmfpack( REAL8, ti(1), 8, 1, info) call pvmfsend( mtid, ld, info) c ******* Here the slave program is withdrawn from the PVM process *** call pvmfexit(info) return end