V3FIT
analysum2.f
1  SUBROUTINE analysum2 (grpmn, bvec, slp, tlp, slm, tlm,
2  1 m, n, l, ivacskip, ndim)
3  USE vacmod
4  USE parallel_include_module
5  USE timer_sub
6  IMPLICIT NONE
7 C-----------------------------------------------
8 C D u m m y A r g u m e n t s
9 C-----------------------------------------------
10  INTEGER, INTENT(in) :: m, n, l, ivacskip, ndim
11  REAL(dp), INTENT(inout) :: grpmn(0:mf,-nf:nf,ndim,nuv3)
12  REAL(dp), INTENT(inout) :: bvec(0:mf,-nf:nf,ndim)
13  REAL(dp), DIMENSION(nuv3), INTENT(in) ::
14  1 slp, tlp, slm, tlm
15 C-----------------------------------------------
16 C L o c a l V a r i a b l e s
17 C-----------------------------------------------
18  INTEGER :: i
19  REAL(dp) :: sinp, sinm, cosp, cosm, temp, ton, toff
20 C-----------------------------------------------
21  CALL second0(ton)
22 
23  IF (n .LT. 0) stop 'error calling analysum2!'
24 
25  DO i = nuv3min, nuv3max
26  sinp = sinu1(i,m)*cosv1(i,n)*cmns(l,m,n)
27  temp = -cosu1(i,m)*sinv1(i,n)*cmns(l,m,n)
28  sinm = sinp - temp !SIN(mu + |n|v) * cmns (l,m,|n|)
29  sinp = sinp + temp !SIN(mu - |n|v) * cmns (l,m,|n|)
30  bvec(m,n,1) = bvec(m,n,1) + tlp(i)*bexni(i)*sinp
31  bvec(m,-n,1) = bvec(m,-n,1) + tlm(i)*bexni(i)*sinm
32 
33  IF (ivacskip .EQ. 0) THEN
34  grpmn(m,n,1,i) = grpmn(m,n,1,i) + slp(i)*sinp
35  grpmn(m,-n,1,i) = grpmn(m,-n,1,i) + slm(i)*sinm
36  END IF
37 
38 
39  IF (lasym) THEN
40  cosp = cosu1(i,m)*cosv1(i,n)*cmns(l,m,n)
41  temp = sinu1(i,m)*sinv1(i,n)*cmns(l,m,n)
42  cosm = cosp - temp !COS(mu + |n|v) * cmns (l,m,|n|)
43  cosp = cosp + temp !COS(mu - |n|v) * cmns (l,m,|n|)
44  bvec(m,n,2) = bvec(m,n,2) + tlp(i)*bexni(i)*cosp
45  bvec(m,-n,2) = bvec(m,-n,2) + tlm(i)*bexni(i)*cosm
46 
47  IF (ivacskip .EQ. 0) THEN
48  grpmn(m,n,2,i) = grpmn(m,n,2,i) + slp(i)*cosp
49  grpmn(m,-n,2,i) = grpmn(m,-n,2,i) + slm(i)*cosm
50  END IF
51  END IF
52  END DO
53 
54  CALL second0(toff)
55  timer_vac(tasum2) = timer_vac(tasum2) + (toff-ton)
56 
57  END SUBROUTINE analysum2