Changeset 5086 for LMDZ6/branches/Amaury_dev/libf/misc
- Timestamp:
- Jul 19, 2024, 7:54:50 PM (12 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/misc
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/misc/arth_m.F90
r2232 r5086 34 34 do k=2,n 35 35 arth_r(k)=arth_r(k-1)+increment 36 end do36 END DO 37 37 else 38 38 do k=2,NPAR2_ARTH 39 39 arth_r(k)=arth_r(k-1)+increment 40 end do40 END DO 41 41 temp=increment*NPAR2_ARTH 42 42 k=NPAR2_ARTH … … 47 47 temp=temp+temp 48 48 k=k2 49 end do49 END DO 50 50 end if 51 51 … … 68 68 do k=2,n 69 69 arth_i(k)=arth_i(k-1)+increment 70 end do70 END DO 71 71 else 72 72 do k=2,NPAR2_ARTH 73 73 arth_i(k)=arth_i(k-1)+increment 74 end do74 END DO 75 75 temp=increment*NPAR2_ARTH 76 76 k=NPAR2_ARTH … … 81 81 temp=temp+temp 82 82 k=k2 83 end do83 END DO 84 84 end if 85 85 -
LMDZ6/branches/Amaury_dev/libf/misc/chfev.F
r5082 r5086 124 124 C EVALUATION LOOP. 125 125 C 126 DO 500I = 1, NE126 DO I = 1, NE 127 127 X = XE(I) - X1 128 128 FE(I) = F1 + X*(D1 + X*(C2 + X*C3)) … … 131 131 IF ( X>XMA ) NEXT(2) = NEXT(2) + 1 132 132 C (NOTE REDUNDANCY--IF EITHER CONDITION IS TRUE, OTHER IS FALSE.) 133 500 CONTINUE133 END DO 134 134 C 135 135 C NORMAL RETURN. -
LMDZ6/branches/Amaury_dev/libf/misc/cray.F
r5081 r5086 36 36 ssum=ssum+sx(ix) 37 37 ix=ix+incx 38 end do38 END DO 39 39 c 40 40 return -
LMDZ6/branches/Amaury_dev/libf/misc/interpolation.F90
r1907 r5086 40 40 ju=jm ! or the upper limit, as appropriate. 41 41 end if 42 end do42 END DO 43 43 ! {ju == jl + 1} 44 44 … … 102 102 inc=inc+inc ! so double the increment 103 103 end if 104 end do! and try again.104 END DO ! and try again. 105 105 else ! Hunt down: 106 106 jhi=jlo … … 115 115 inc=inc+inc ! so double the increment 116 116 end if 117 end do! and try again.117 END DO ! and try again. 118 118 end if 119 119 end if ! Done hunting, value bracketed. … … 132 132 end if 133 133 end if 134 end do134 END DO 135 135 136 136 END SUBROUTINE hunt -
LMDZ6/branches/Amaury_dev/libf/misc/ismax.F
r5082 r5086 12 12 ismax=1 13 13 sxmax=sx(1) 14 do 10i=1,n-114 do i=1,n-1 15 15 ix=ix+incx 16 16 if(sx(ix)>sxmax) then … … 18 18 ismax=i+1 19 19 endif 20 10 continue 20 END DO 21 21 c 22 22 return -
LMDZ6/branches/Amaury_dev/libf/misc/new_unit_m.F90
r1907 r5086 19 19 if (exist .and. .not. opened) exit 20 20 unit = unit + 1 21 end do21 END DO 22 22 23 23 end subroutine new_unit -
LMDZ6/branches/Amaury_dev/libf/misc/pchdf.F
r5082 r5086 76 76 C COMPUTE COEFFICIENTS OF INTERPOLATING POLYNOMIAL. 77 77 C 78 DO 10J = 2, K-179 DO 9I = 1, K-J78 DO J = 2, K-1 79 DO I = 1, K-J 80 80 S(I) = (S(I+1)-S(I))/(X(I+J)-X(I)) 81 9 CONTINUE82 10 CONTINUE81 END DO 82 END DO 83 83 C 84 84 C EVALUATE DERIVATIVE AT X(K). 85 85 C 86 86 VALUE = S(1) 87 DO 20I = 2, K-187 DO I = 2, K-1 88 88 VALUE = S(I) + VALUE*(X(K)-X(I)) 89 20 CONTINUE89 END DO 90 90 C 91 91 C NORMAL RETURN. -
LMDZ6/branches/Amaury_dev/libf/misc/pchfe.F
r5082 r5086 145 145 IF ( N<2 ) GO TO 5001 146 146 IF ( INCFD<1 ) GO TO 5002 147 DO 1I = 2, N147 DO I = 2, N 148 148 IF ( X(I)<=X(I-1) ) GO TO 5003 149 1 CONTINUE149 END DO 150 150 C 151 151 C FUNCTION DEFINITION IS OK, GO ON. … … 168 168 C LOCATE ALL POINTS IN INTERVAL. 169 169 C 170 DO 20J = JFIRST, NE170 DO J = JFIRST, NE 171 171 IF (XE(J) >= X(IR)) GO TO 30 172 20 CONTINUE172 END DO 173 173 J = NE + 1 174 174 GO TO 40 … … 228 228 C 229 229 C FIRST, LOCATE FIRST POINT TO LEFT OF X(IR-1). 230 DO 44I = JFIRST, J-1230 DO I = JFIRST, J-1 231 231 IF (XE(I) < X(IR-1)) GO TO 45 232 44 CONTINUE232 END DO 233 233 C NOTE-- CANNOT DROP THROUGH HERE UNLESS THERE IS AN ERROR 234 234 C IN CHFEV. … … 240 240 C 241 241 C NOW FIND OUT HOW FAR TO BACK UP IN THE X-ARRAY. 242 DO 46I = 1, IR-1242 DO I = 1, IR-1 243 243 IF (XE(J) < X(I)) GO TO 47 244 46 CONTINUE244 END DO 245 245 C NB-- CAN NEVER DROP THROUGH HERE, SINCE XE(J).LT.X(IR-1). 246 246 C -
LMDZ6/branches/Amaury_dev/libf/misc/pchsp.F
r5082 r5086 164 164 IF ( N<2 ) GO TO 5001 165 165 IF ( INCFD<1 ) GO TO 5002 166 DO 1J = 2, N166 DO J = 2, N 167 167 IF ( X(J)<=X(J-1) ) GO TO 5003 168 1 CONTINUE168 END DO 169 169 C 170 170 IBEG = IC(1) … … 181 181 C COMPUTE FIRST DIFFERENCES OF X SEQUENCE AND STORE IN WK(1,.). ALSO, 182 182 C COMPUTE FIRST DIVIDED DIFFERENCE OF DATA AND STORE IN WK(2,.). 183 DO 5J=2,N183 DO J=2,N 184 184 WK(1,J) = X(J) - X(J-1) 185 185 WK(2,J) = (F(1,J) - F(1,J-1))/WK(1,J) 186 5 CONTINUE186 END DO 187 187 C 188 188 C SET TO DEFAULT BOUNDARY CONDITIONS IF N IS TOO SMALL. … … 197 197 ELSE IF (IBEG > 2) THEN 198 198 C PICK UP FIRST IBEG POINTS, IN REVERSE ORDER. 199 DO 10J = 1, IBEG199 DO J = 1, IBEG 200 200 INDEX = IBEG-J+1 201 201 C INDEX RUNS FROM IBEG DOWN TO 1. 202 202 XTEMP(J) = X(INDEX) 203 203 IF (J < IBEG) STEMP(J) = WK(2,INDEX) 204 10 CONTINUE204 END DO 205 205 C -------------------------------- 206 206 D(1,1) = PCHDF (IBEG, XTEMP, STEMP, IERR) … … 214 214 ELSE IF (IEND > 2) THEN 215 215 C PICK UP LAST IEND POINTS. 216 DO 15J = 1, IEND216 DO J = 1, IEND 217 217 INDEX = N-IEND+J 218 218 C INDEX RUNS FROM N+1-IEND UP TO N. 219 219 XTEMP(J) = X(INDEX) 220 220 IF (J < IEND) STEMP(J) = WK(2,INDEX+1) 221 15 CONTINUE221 END DO 222 222 C -------------------------------- 223 223 D(1,N) = PCHDF (IEND, XTEMP, STEMP, IERR) … … 267 267 NM1 = N-1 268 268 IF (NM1 > 1) THEN 269 DO 20J=2,NM1269 DO J=2,NM1 270 270 IF (WK(2,J-1) == ZERO) GO TO 5008 271 271 G = -WK(1,J+1)/WK(2,J-1) … … 273 273 * + THREE*(WK(1,J)*WK(2,J+1) + WK(1,J+1)*WK(2,J)) 274 274 WK(2,J) = G*WK(1,J-1) + TWO*(WK(1,J) + WK(1,J+1)) 275 20 CONTINUE275 END DO 276 276 ENDIF 277 277 C … … 324 324 C 325 325 30 CONTINUE 326 DO 40J=NM1,1,-1326 DO J=NM1,1,-1 327 327 IF (WK(2,J) == ZERO) GO TO 5008 328 328 D(1,J) = (D(1,J) - WK(1,J)*D(1,J+1))/WK(2,J) 329 40 CONTINUE329 END DO 330 330 C --------------------( END CODING FROM CUBSPL )-------------------- 331 331 C -
LMDZ6/branches/Amaury_dev/libf/misc/ran1.F
r5082 r5086 21 21 IX1=MOD(IA1*IX1+IC1,M1) 22 22 IX3=MOD(IX1,M3) 23 DO 11J=1,9723 DO J=1,97 24 24 IX1=MOD(IA1*IX1+IC1,M1) 25 25 IX2=MOD(IA2*IX2+IC2,M2) 26 26 R(J)=(REAL(IX1)+REAL(IX2)*RM2)*RM1 27 11 CONTINUE 27 END DO 28 28 IDUM=1 29 29 ENDIF -
LMDZ6/branches/Amaury_dev/libf/misc/regr1_step_av_m.F90
r3435 r5086 73 73 is = is + 1 74 74 left_edge = xs(is) 75 end do75 END DO 76 76 ! 1 <= is <= ns 77 77 vt(it) = (vt(it) + (xt(it + 1) - left_edge) * vs(is)) & … … 79 79 if (xs(is + 1) == xt(it + 1)) is = is + 1 80 80 ! 1 <= is <= ns .or. it == nt 81 end do81 END DO 82 82 83 83 end function regr11_step_av … … 133 133 is = is + 1 134 134 left_edge = xs(is) 135 end do135 END DO 136 136 ! 1 <= is <= ns 137 137 vt(it, :) = (vt(it, :) + (xt(it + 1) - left_edge) * vs(is, :)) & … … 139 139 if (xs(is + 1) == xt(it + 1)) is = is + 1 140 140 ! 1 <= is <= ns .or. it == nt 141 end do141 END DO 142 142 143 143 end function regr12_step_av … … 194 194 is = is + 1 195 195 left_edge = xs(is) 196 end do196 END DO 197 197 ! 1 <= is <= ns 198 198 vt(it, :, :) = (vt(it, :, :) & … … 200 200 if (xs(is + 1) == xt(it + 1)) is = is + 1 201 201 ! 1 <= is <= ns .or. it == nt 202 end do202 END DO 203 203 204 204 end function regr13_step_av … … 256 256 is = is + 1 257 257 left_edge = xs(is) 258 end do258 END DO 259 259 ! 1 <= is <= ns 260 260 vt(it, :, :, :) = (vt(it, :, :, :) + (xt(it + 1) - left_edge) & … … 262 262 if (xs(is + 1) == xt(it + 1)) is = is + 1 263 263 ! 1 <= is <= ns .or. it == nt 264 end do264 END DO 265 265 266 266 end function regr14_step_av -
LMDZ6/branches/Amaury_dev/libf/misc/xermsg.F
r5082 r5086 328 328 IF (LKNTRL > 0) THEN 329 329 WRITE (TEMP, '(''ERROR NUMBER = '', I8)') NERR 330 DO 10I=16,22330 DO I=16,22 331 331 IF (TEMP(I:I) /= ' ') GO TO 20 332 10 CONTINUE332 END DO 333 333 C 334 334 20 CALL XERPRN (' * ', -1, TEMP(1:15) // TEMP(I:23), 72) -
LMDZ6/branches/Amaury_dev/libf/misc/xerprn.F
r5082 r5086 92 92 C 93 93 N = I1MACH(4) 94 DO 10I=1,NUNIT94 DO I=1,NUNIT 95 95 IF (IU(I) == 0) IU(I) = N 96 10 CONTINUE96 END DO 97 97 C 98 98 C LPREF IS THE LENGTH OF THE PREFIX. THE PREFIX IS PLACED AT THE … … 117 117 LENMSG = LEN(MESSG) 118 118 N = LENMSG 119 DO 20I=1,N119 DO I=1,N 120 120 IF (MESSG(LENMSG:LENMSG) /= ' ') GO TO 30 121 121 LENMSG = LENMSG - 1 122 20 CONTINUE122 END DO 123 123 30 CONTINUE 124 124 C … … 127 127 IF (LENMSG == 0) THEN 128 128 CBUFF(LPREF+1:LPREF+1) = ' ' 129 DO 40I=1,NUNIT129 DO I=1,NUNIT 130 130 WRITE(IU(I), '(A)') CBUFF(1:LPREF+1) 131 40 CONTINUE131 END DO 132 132 RETURN 133 133 ENDIF … … 179 179 LPIECE = MIN(LWRAP, LENMSG+1-NEXTC) 180 180 IF (LPIECE < LENMSG+1-NEXTC) THEN 181 DO 52I=LPIECE+1,2,-1181 DO I=LPIECE+1,2,-1 182 182 IF (MESSG(NEXTC+I-1:NEXTC+I-1) == ' ') THEN 183 183 LPIECE = I-1 … … 185 185 GOTO 54 186 186 ENDIF 187 52 CONTINUE187 END DO 188 188 ENDIF 189 189 54 CBUFF(LPREF+1:LPREF+LPIECE) = MESSG(NEXTC:NEXTC+LPIECE-1) … … 202 202 IDELTA = 0 203 203 LPIECE = LWRAP 204 DO 56I=LPIECE+1,2,-1204 DO I=LPIECE+1,2,-1 205 205 IF (MESSG(NEXTC+I-1:NEXTC+I-1) == ' ') THEN 206 206 LPIECE = I-1 … … 208 208 GOTO 58 209 209 ENDIF 210 56 CONTINUE210 END DO 211 211 58 CBUFF(LPREF+1:LPREF+LPIECE) = MESSG(NEXTC:NEXTC+LPIECE-1) 212 212 NEXTC = NEXTC + LPIECE + IDELTA … … 223 223 C PRINT 224 224 C 225 DO 60I=1,NUNIT225 DO I=1,NUNIT 226 226 WRITE(IU(I), '(A)') CBUFF(1:LPREF+LPIECE) 227 60 CONTINUE227 END DO 228 228 C 229 229 IF (NEXTC <= LENMSG) GO TO 50 -
LMDZ6/branches/Amaury_dev/libf/misc/xersve.F
r5082 r5086 81 81 C 82 82 CALL XGETUA (LUN, NUNIT) 83 DO 20KUNIT = 1,NUNIT83 DO KUNIT = 1,NUNIT 84 84 IUNIT = LUN(KUNIT) 85 85 IF (IUNIT==0) IUNIT = I1MACH(4) … … 91 91 C Print body of table. 92 92 C 93 DO 10I = 1,NMSG93 DO I = 1,NMSG 94 94 WRITE (IUNIT,9010) LIBTAB(I), SUBTAB(I), MESTAB(I), 95 95 * NERTAB(I),LEVTAB(I),KOUNT(I) 96 10 CONTINUE96 END DO 97 97 C 98 98 C Print number of other errors. … … 100 100 IF (KOUNTX/=0) WRITE (IUNIT,9020) KOUNTX 101 101 WRITE (IUNIT,9030) 102 20 CONTINUE102 END DO 103 103 C 104 104 C Clear the error tables. … … 117 117 SUB = SUBROU 118 118 MES = MESSG 119 DO 30I = 1,NMSG119 DO I = 1,NMSG 120 120 IF (LIB==LIBTAB(I) .AND. SUB==SUBTAB(I) .AND. 121 121 * MES==MESTAB(I) .AND. NERR==NERTAB(I) .AND. … … 125 125 RETURN 126 126 ENDIF 127 30 CONTINUE127 END DO 128 128 C 129 129 IF (NMSG<LENTAB) THEN -
LMDZ6/branches/Amaury_dev/libf/misc/xgetua.F
r5082 r5086 45 45 C***FIRST EXECUTABLE STATEMENT XGETUA 46 46 N = J4SAVE(5,0,.FALSE.) 47 DO 30I=1,N47 DO I=1,N 48 48 INDEX = I+4 49 49 IF (I==1) INDEX = 3 50 50 IUNITA(I) = J4SAVE(INDEX,0,.FALSE.) 51 30 CONTINUE51 END DO 52 52 RETURN 53 53 END
Note: See TracChangeset
for help on using the changeset viewer.