1***********************************************************************
2*     FORWARD LEGENDRE TRANSFORMATION (MIDDLE LEVEL)
3***********************************************************************
4*     Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved.
5*-----------------------------------------------------------------------
6      SUBROUTINE SHLFWM(MM,JM,M,ISW,WM,SM,SD,XC,PM,WY,WX,R,Z)
7
8      REAL SM(M:MM),WM(-JM:JM)
9      REAL SD(0:MM+1)
10      REAL XC(0:JM)
11      REAL PM(0:MM+1,0:JM)
12      REAL WY(0:JM,2),WX(0:JM,2)
13      REAL R((MM+1)*(MM+1)),Z(JM,0:JM,4)
14
15      IF((ISW.EQ.-1).AND.(M.EQ.0)) THEN
16        DO 10 N=M,MM
17          SM(N)=0
18   10   CONTINUE
19      ELSE
20        CALL SHLY2X(JM,M,ISW,WM,WX,WY,Z)
21        IF((ISW.EQ.0).AND.(M.NE.0)) THEN
22          DO 20 J=0,JM
23            WX(J,1)=WX(J,1)*XC(J)
24            WX(J,2)=WX(J,2)*XC(J)
25   20     CONTINUE
26        ELSE IF((ISW.EQ.1).AND.(M.EQ.0)) THEN
27          DO 30 J=0,JM
28            WX(J,1)=WX(J,1)/XC(J)
29            WX(J,2)=WX(J,2)/XC(J)
30   30     CONTINUE
31        END IF
32        DO 40 N=M,MM+1
33          CALL SHLFWL(MM,JM,N,M,WX,SD(N),PM)
34   40   CONTINUE
35        CALL SHLSDS(MM,M,ISW,SD,SM,R)
36      END IF
37
38      END
39