SUBROUTINE POS3D1 (LP,L,MP,M,N,A,B,C,LDIMF,MDIMF,F,XRT,YRT,T,D, 1 WX,WY,C1,C2,BB) DIMENSION A(1) ,B(1) ,C(1) , 1 F(LDIMF,MDIMF,1) ,XRT(1) ,YRT(1) , 2 T(1) ,D(1) ,WX(1) ,WY(1) , 3 BB(1) PI = PIMACH(DUM) LR = L MR = M NR = N C C GENERATE TRANSFORM ROOTS C LRDEL = ((LP-1)*(LP-3)*(LP-5))/3 SCALX = LR+LRDEL DX = PI/(2.*SCALX) GO TO (108,103,101,102,101),LP 101 DI = 0.5 SCALX = 2.*SCALX GO TO 104 102 DI = 1.0 GO TO 104 103 DI = 0.0 104 DO 105 I=1,LR XRT(I) = -4.*C1*(SIN((FLOAT(I)-DI)*DX))**2 105 CONTINUE SCALX = 2.*SCALX GO TO (112,106,110,107,111),LP 106 CALL SINTI (LR,WX) GO TO 112 107 CALL COSTI (LR,WX) GO TO 112 108 XRT(1) = 0. XRT(LR) = -4.*C1 DO 109 I=3,LR,2 XRT(I-1) = -4.*C1*(SIN(FLOAT((I-1))*DX))**2 XRT(I) = XRT(I-1) 109 CONTINUE CALL RFFTI (LR,WX) GO TO 112 110 CALL SINQI (LR,WX) GO TO 112 111 CALL COSQI (LR,WX) 112 CONTINUE MRDEL = ((MP-1)*(MP-3)*(MP-5))/3 SCALY = MR+MRDEL DY = PI/(2.*SCALY) GO TO (120,115,113,114,113),MP 113 DJ = 0.5 SCALY = 2.*SCALY GO TO 116 114 DJ = 1.0 GO TO 116 115 DJ = 0.0 116 DO 117 J=1,MR YRT(J) = -4.*C2*(SIN((FLOAT(J)-DJ)*DY))**2 117 CONTINUE SCALY = 2.*SCALY GO TO (124,118,122,119,123),MP 118 CALL SINTI (MR,WY) GO TO 124 119 CALL COSTI (MR,WY) GO TO 124 120 YRT(1) = 0. YRT(MR) = -4.*C2 DO 121 J=3,MR,2 YRT(J-1) = -4.*C2*(SIN(FLOAT((J-1))*DY))**2 YRT(J) = YRT(J-1) 121 CONTINUE CALL RFFTI (MR,WY) GO TO 124 122 CALL SINQI (MR,WY) GO TO 124 123 CALL COSQI (MR,WY) 124 CONTINUE IFWRD = 1 IS = 1 125 CONTINUE C C TRANSFORM X C DO 141 J=1,MR DO 140 K=1,NR DO 126 I=1,LR T(I) = F(I,J,K) 126 CONTINUE GO TO (127,130,131,134,135),LP 127 GO TO (128,129),IFWRD 128 CALL RFFTF (LR,T,WX) GO TO 138 129 CALL RFFTB (LR,T,WX) GO TO 138 130 CALL SINT (LR,T,WX) GO TO 138 131 GO TO (132,133),IFWRD 132 CALL SINQF (LR,T,WX) GO TO 138 133 CALL SINQB (LR,T,WX) GO TO 138 134 CALL COST (LR,T,WX) GO TO 138 135 GO TO (136,137),IFWRD 136 CALL COSQF (LR,T,WX) GO TO 138 137 CALL COSQB (LR,T,WX) 138 CONTINUE DO 139 I=1,LR F(I,J,K) = T(I) 139 CONTINUE 140 CONTINUE 141 CONTINUE GO TO (142,164),IFWRD C C TRANSFORM Y C 142 CONTINUE DO 158 I=1,LR DO 157 K=1,NR DO 143 J=1,MR T(J) = F(I,J,K) 143 CONTINUE GO TO (144,147,148,151,152),MP 144 GO TO (145,146),IFWRD 145 CALL RFFTF (MR,T,WY) GO TO 155 146 CALL RFFTB (MR,T,WY) GO TO 155 147 CALL SINT (MR,T,WY) GO TO 155 148 GO TO (149,150),IFWRD 149 CALL SINQF (MR,T,WY) GO TO 155 150 CALL SINQB (MR,T,WY) GO TO 155 151 CALL COST (MR,T,WY) GO TO 155 152 GO TO (153,154),IFWRD 153 CALL COSQF (MR,T,WY) GO TO 155 154 CALL COSQB (MR,T,WY) 155 CONTINUE DO 156 J=1,MR F(I,J,K) = T(J) 156 CONTINUE 157 CONTINUE 158 CONTINUE GO TO (159,125),IFWRD 159 CONTINUE C C SOLVE TRIDIAGONAL SYSTEMS IN Z C DO 163 I=1,LR DO 162 J=1,MR DO 160 K=1,NR BB(K) = B(K)+XRT(I)+YRT(J) T(K) = F(I,J,K) 160 CONTINUE CALL TRID (NR,A,BB,C,T,D) DO 161 K=1,NR F(I,J,K) = T(K) 161 CONTINUE 162 CONTINUE 163 CONTINUE IFWRD = 2 IS = -1 GO TO 142 164 CONTINUE DO 167 I=1,LR DO 166 J=1,MR DO 165 K=1,NR F(I,J,K) = F(I,J,K)/(SCALX*SCALY) 165 CONTINUE 166 CONTINUE 167 CONTINUE RETURN END .