Changeset 5107
- Timestamp:
- Jul 24, 2024, 10:26:10 AM (7 weeks ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf
- Files:
-
- 4 deleted
- 8 edited
- 8 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/filtreg_p.F90
r5106 r5107 6 6 USE parallel_lmdz, ONLY: OMP_CHUNK 7 7 USE mod_filtre_fft 8 USE timer_filtre8 USE lmdz_timer_filtre 9 9 USE lmdz_coefils, ONLY: jfiltnu, jfiltnv, jfiltsu, jfiltsv, sddu, sddv, unsddu, unsddv, modfrstv, modfrstu 10 10 USE lmdz_filtreg, ONLY: matrinvn, matrinvs, matriceun, matriceus, matricevn, matricevs -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/leapfrog_loc.F90
r5106 r5107 12 12 USE Write_Field_p 13 13 USE vampir 14 USE timer_filtre, ONLY: print_filtre_timer14 USE lmdz_timer_filtre, ONLY: print_filtre_timer 15 15 USE infotrac 16 16 USE guide_loc_mod, ONLY: guide_main -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/lmdz_filtreg_p.F90
r5106 r5107 12 12 USE mod_filtre_fft_loc, ONLY: use_filtre_fft, filtre_u_fft, & 13 13 filtre_v_fft, filtre_inv_fft 14 USE timer_filtre, ONLY: init_timer, start_timer, stop_timer14 USE lmdz_timer_filtre, ONLY: init_timer, start_timer, stop_timer 15 15 USE lmdz_coefils, ONLY: jfiltnu, jfiltnv, jfiltsu, jfiltsv, sddu, sddv, unsddu, unsddv, modfrstv, modfrstu 16 16 -
LMDZ6/branches/Amaury_dev/libf/filtrez/eigen.f90
r5105 r5107 1 2 ! $Header$ 1 ! Amaury: code de <=2004 utilisé nulle part, pas de trace dans la recherche TRAC 3 2 4 3 SUBROUTINE eigen( e,d) -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_fft.F90
r5106 r5107 1 MODULE mod_fft1 MODULE lmdz_fft 2 2 3 3 #ifdef FFT_MATHKEISAN 4 USE mod_fft_mathkeisan4 USE lmdz_fft_mathkeisan 5 5 #else 6 6 #ifdef FFT_FFTW 7 USE mod_fft_fftw7 USE lmdz_fft_fftw 8 8 #else 9 9 #ifdef FFT_MKL 10 USE mod_fft_mkl10 USE lmdz_fft_mkl 11 11 #else 12 USE mod_fft_wrapper12 USE lmdz_fft_wrapper 13 13 #endif 14 14 #endif 15 15 #endif 16 16 17 END MODULE mod_fft17 END MODULE lmdz_fft -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_fft_fftw.F90
r5106 r5107 2 2 ! $Id$ 3 3 4 MODULE mod_fft_fftw4 MODULE lmdz_fft_fftw 5 5 6 6 #ifdef FFT_FFTW … … 111 111 #endif 112 112 113 END MODULE mod_fft_fftw113 END MODULE lmdz_fft_fftw -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_fft_mathkeisan.F90
r5106 r5107 1 MODULE mod_fft_mathkeisan1 MODULE lmdz_fft_mathkeisan 2 2 #ifdef FFT_MATHKEISAN 3 3 … … 63 63 #endif 64 64 65 END MODULE mod_fft_mathkeisan65 END MODULE lmdz_fft_mathkeisan 66 66 67 67 -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_fft_mkl.F90
r5106 r5107 1 MODULE mod_fft_mkl1 MODULE lmdz_fft_mkl 2 2 #ifdef FFT_MKL 3 3 4 USE MKL_DFTI4 USE lmdz_mkl_dfti 5 5 6 6 REAL,SAVE :: scale_factor … … 126 126 #endif 127 127 128 END MODULE mod_fft_mkl128 END MODULE lmdz_fft_mkl -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_fft_wrapper.f90
r5106 r5107 1 MODULE mod_fft_wrapper1 MODULE lmdz_fft_wrapper 2 2 3 3 INTEGER,SAVE :: vsize … … 38 38 END SUBROUTINE fft_backward 39 39 40 END MODULE mod_fft_wrapper40 END MODULE lmdz_fft_wrapper -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_filtreg.F90
r5106 r5107 325 325 END SUBROUTINE filtreg 326 326 327 SUBROUTINE inifgn(dv) 328 ! 329 ! ... H.Upadyaya , O.Sharma ... 330 ! 331 USE lmdz_coefils, ONLY: sddv, sddu, unsddu, unsddv, eignfnv, eignfnu 332 IMPLICIT NONE 333 ! 334 include "dimensions.h" 335 include "paramet.h" 336 include "comgeom.h" 337 ! 338 REAL :: vec(iim, iim), vec1(iim, iim) 339 REAL :: dlonu(iim), dlonv(iim) 340 REAL :: du(iim), dv(iim), d(iim) 341 REAL :: pi 342 INTEGER :: i, j, k, imm1, nrot 343 EXTERNAL SSUM 344 REAL :: SSUM 345 ! 346 347 imm1 = iim - 1 348 pi = 2. * ASIN(1.) 349 ! 350 DO i = 1, iim 351 dlonu(i) = xprimu(i) 352 dlonv(i) = xprimv(i) 353 END DO 354 355 DO i = 1, iim 356 sddv(i) = SQRT(dlonv(i)) 357 sddu(i) = SQRT(dlonu(i)) 358 unsddu(i) = 1. / sddu(i) 359 unsddv(i) = 1. / sddv(i) 360 END DO 361 ! 362 DO j = 1, iim 363 DO i = 1, iim 364 vec(i, j) = 0. 365 vec1(i, j) = 0. 366 eignfnv(i, j) = 0. 367 eignfnu(i, j) = 0. 368 END DO 369 END DO 370 ! 371 ! 372 eignfnv(1, 1) = -1. 373 eignfnv(iim, 1) = 1. 374 DO i = 1, imm1 375 eignfnv(i + 1, i + 1) = -1. 376 eignfnv(i, i + 1) = 1. 377 END DO 378 DO j = 1, iim 379 DO i = 1, iim 380 eignfnv(i, j) = eignfnv(i, j) / (sddu(i) * sddv(j)) 381 END DO 382 END DO 383 DO j = 1, iim 384 DO i = 1, iim 385 eignfnu(i, j) = -eignfnv(j, i) 386 END DO 387 END DO 388 ! 389 DO j = 1, iim 390 DO i = 1, iim 391 vec (i, j) = 0.0 392 vec1(i, j) = 0.0 393 DO k = 1, iim 394 vec (i, j) = vec(i, j) + eignfnu(i, k) * eignfnv(k, j) 395 vec1(i, j) = vec1(i, j) + eignfnv(i, k) * eignfnu(k, j) 396 ENDDO 397 ENDDO 398 ENDDO 399 400 ! 401 CALL jacobi(vec, iim, iim, dv, eignfnv, nrot) 402 CALL acc(eignfnv, d, iim) 403 CALL eigen_sort(dv, eignfnv, iim, iim) 404 ! 405 CALL jacobi(vec1, iim, iim, du, eignfnu, nrot) 406 CALL acc(eignfnu, d, iim) 407 CALL eigen_sort(du, eignfnu, iim, iim) 408 409 !c ancienne version avec appels IMSL 410 ! 411 ! CALL MXM(eignfnu,iim,eignfnv,iim,vec,iim) 412 ! CALL MXM(eignfnv,iim,eignfnu,iim,vec1,iim) 413 ! CALL EVCSF(iim,vec,iim,dv,eignfnv,iim) 414 ! CALL acc(eignfnv,d,iim) 415 ! CALL eigen(eignfnv,dv) 416 ! 417 ! CALL EVCSF(iim,vec1,iim,du,eignfnu,iim) 418 ! CALL acc(eignfnu,d,iim) 419 ! CALL eigen(eignfnu,du) 420 421 RETURN 422 END SUBROUTINE inifgn 423 424 SUBROUTINE JACOBI(A, N, NP, D, V, NROT) 425 implicit none 426 ! Arguments: 427 integer, intent(in) :: N 428 integer, intent(in) :: NP 429 integer, intent(out) :: NROT 430 real, intent(inout) :: A(NP, NP) 431 real, intent(out) :: D(NP) 432 real, intent(out) :: V(NP, NP) 433 434 ! local variables: 435 integer :: IP, IQ, I, J 436 real :: SM, TRESH, G, H, T, THETA, C, S, TAU 437 real :: B(N) 438 real :: Z(N) 439 440 DO IP = 1, N 441 DO IQ = 1, N 442 V(IP, IQ) = 0. 443 ENDDO 444 V(IP, IP) = 1. 445 ENDDO 446 DO IP = 1, N 447 B(IP) = A(IP, IP) 448 D(IP) = B(IP) 449 Z(IP) = 0. 450 ENDDO 451 NROT = 0 452 DO I = 1, 50 ! 50? I suspect this should be NP 453 ! but convergence is fast enough anyway 454 SM = 0. 455 DO IP = 1, N - 1 456 DO IQ = IP + 1, N 457 SM = SM + ABS(A(IP, IQ)) 458 ENDDO 459 ENDDO 460 IF(SM==0.)RETURN 461 IF(I<4)THEN 462 TRESH = 0.2 * SM / N**2 463 ELSE 464 TRESH = 0. 465 ENDIF 466 DO IP = 1, N - 1 467 DO IQ = IP + 1, N 468 G = 100. * ABS(A(IP, IQ)) 469 IF((I>4).AND.(ABS(D(IP)) + G==ABS(D(IP))) & 470 .AND.(ABS(D(IQ)) + G==ABS(D(IQ))))THEN 471 A(IP, IQ) = 0. 472 ELSE IF(ABS(A(IP, IQ))>TRESH)THEN 473 H = D(IQ) - D(IP) 474 IF(ABS(H) + G==ABS(H))THEN 475 T = A(IP, IQ) / H 476 ELSE 477 THETA = 0.5 * H / A(IP, IQ) 478 T = 1. / (ABS(THETA) + SQRT(1. + THETA**2)) 479 IF(THETA<0.)T = -T 480 ENDIF 481 C = 1. / SQRT(1 + T**2) 482 S = T * C 483 TAU = S / (1. + C) 484 H = T * A(IP, IQ) 485 Z(IP) = Z(IP) - H 486 Z(IQ) = Z(IQ) + H 487 D(IP) = D(IP) - H 488 D(IQ) = D(IQ) + H 489 A(IP, IQ) = 0. 490 DO J = 1, IP - 1 491 G = A(J, IP) 492 H = A(J, IQ) 493 A(J, IP) = G - S * (H + G * TAU) 494 A(J, IQ) = H + S * (G - H * TAU) 495 ENDDO 496 DO J = IP + 1, IQ - 1 497 G = A(IP, J) 498 H = A(J, IQ) 499 A(IP, J) = G - S * (H + G * TAU) 500 A(J, IQ) = H + S * (G - H * TAU) 501 ENDDO 502 DO J = IQ + 1, N 503 G = A(IP, J) 504 H = A(IQ, J) 505 A(IP, J) = G - S * (H + G * TAU) 506 A(IQ, J) = H + S * (G - H * TAU) 507 ENDDO 508 DO J = 1, N 509 G = V(J, IP) 510 H = V(J, IQ) 511 V(J, IP) = G - S * (H + G * TAU) 512 V(J, IQ) = H + S * (G - H * TAU) 513 ENDDO 514 NROT = NROT + 1 515 ENDIF 516 ENDDO 517 ENDDO 518 DO IP = 1, N 519 B(IP) = B(IP) + Z(IP) 520 D(IP) = B(IP) 521 Z(IP) = 0. 522 ENDDO 523 ENDDO ! of DO I=1,50 524 STOP 'Jacobi: 50 iterations should never happen' 525 526 END SUBROUTINE JACOBI 527 528 SUBROUTINE eigen_sort(d, v, n, np) 529 INTEGER :: n, np 530 REAL :: d(np), v(np, np) 531 INTEGER :: i, j, k 532 REAL :: p 533 534 DO i = 1, n - 1 535 k = i 536 p = d(i) 537 DO j = i + 1, n 538 IF(d(j)>=p) THEN 539 k = j 540 p = d(j) 541 ENDIF 542 ENDDO 543 544 IF(k/=i) THEN 545 d(k) = d(i) 546 d(i) = p 547 DO j = 1, n 548 p = v(j, i) 549 v(j, i) = v(j, k) 550 v(j, k) = p 551 ENDDO 552 ENDIF 553 ENDDO 554 555 RETURN 556 END SUBROUTINE eigen_sort 557 558 SUBROUTINE acc(vec, d, im) 559 implicit none 560 integer :: im 561 real :: vec(im, im), d(im) 562 integer :: i, j 563 real :: sum 564 real, external :: ssum 565 do j = 1, im 566 do i = 1, im 567 d(i) = vec(i, j) * vec(i, j) 568 enddo 569 sum = ssum(im, d, 1) 570 sum = sqrt(sum) 571 do i = 1, im 572 vec(i, j) = vec(i, j) / sum 573 enddo 574 enddo 575 return 576 end subroutine acc 577 578 327 579 SUBROUTINE inifilr 328 580 #ifdef CPP_PARA -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_mkl_dft_type.f90
r5106 r5107 28 28 !***************************************************************************** 29 29 30 MODULE MKL_DFT_TYPE30 MODULE lmdz_mkl_dft_type 31 31 32 32 TYPE, PUBLIC :: DFTI_DESCRIPTOR … … 153 153 154 154 ! DFTI_PRECISION for reduced size of statically linked application. 155 ! Recommended use: modify statement 'USE MKL_DFTI' in your program,155 ! Recommended use: modify statement 'USE lmdz_mkl_dfti' in your program, 156 156 ! so that it reads as either of: 157 ! USE MKL_DFTI, FORGET=>DFTI_SINGLE, DFTI_SINGLE=>DFTI_SINGLE_R158 ! USE MKL_DFTI, FORGET=>DFTI_DOUBLE, DFTI_DOUBLE=>DFTI_DOUBLE_R157 ! USE lmdz_mkl_dfti, FORGET=>DFTI_SINGLE, DFTI_SINGLE=>DFTI_SINGLE_R 158 ! USE lmdz_mkl_dfti, FORGET=>DFTI_DOUBLE, DFTI_DOUBLE=>DFTI_DOUBLE_R 159 159 ! where word 'FORGET' can be any name not used in the program. 160 160 REAL(DFTI_SPKP), PARAMETER :: DFTI_SINGLE_R = 35 … … 225 225 INTEGER, PARAMETER :: DFTI_ERROR_CLASS = 60 226 226 227 END MODULE MKL_DFT_TYPE227 END MODULE lmdz_mkl_dft_type -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_mkl_dfti.f90
r5106 r5107 29 29 30 30 31 MODULE MKL_DFTI32 33 USE MKL_DFT_TYPE31 MODULE lmdz_mkl_dfti 32 33 USE lmdz_mkl_dft_type 34 34 35 35 INTERFACE DftiCreateDescriptor 36 36 37 37 FUNCTION dfti_create_descriptor_1d(desc, precision, domain, dim, length) 38 USE MKL_DFT_TYPE38 USE lmdz_mkl_dft_type 39 39 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_1d 40 40 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_1d … … 47 47 48 48 FUNCTION dfti_create_descriptor_highd(desc, precision, domain, dim,length) 49 USE MKL_DFT_TYPE49 USE lmdz_mkl_dft_type 50 50 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_highd 51 51 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_highd … … 59 59 60 60 FUNCTION dfti_create_descriptor_s_1d(desc, s, dom, one, dim) 61 USE MKL_DFT_TYPE61 USE lmdz_mkl_dft_type 62 62 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_1d 63 63 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_1d … … 71 71 72 72 FUNCTION dfti_create_descriptor_s_md(desc, s, dom, many, dims) 73 USE MKL_DFT_TYPE73 USE lmdz_mkl_dft_type 74 74 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_md 75 75 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_md … … 83 83 84 84 FUNCTION dfti_create_descriptor_d_1d(desc, d, dom, one, dim) 85 USE MKL_DFT_TYPE85 USE lmdz_mkl_dft_type 86 86 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_1d 87 87 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_1d … … 95 95 96 96 FUNCTION dfti_create_descriptor_d_md(desc, d, dom, many, dims) 97 USE MKL_DFT_TYPE97 USE lmdz_mkl_dft_type 98 98 !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_md 99 99 !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_md … … 111 111 112 112 FUNCTION dfti_copy_descriptor_external(desc, new_desc) 113 USE MKL_DFT_TYPE113 USE lmdz_mkl_dft_type 114 114 !DEC$ ATTRIBUTES C :: dfti_copy_descriptor_external 115 115 !DEC$ ATTRIBUTES REFERENCE :: dfti_copy_descriptor_external … … 124 124 125 125 FUNCTION dfti_commit_descriptor_external(desc) 126 USE MKL_DFT_TYPE126 USE lmdz_mkl_dft_type 127 127 !DEC$ ATTRIBUTES C :: dfti_commit_descriptor_external 128 128 !DEC$ ATTRIBUTES REFERENCE :: dfti_commit_descriptor_external … … 136 136 137 137 FUNCTION dfti_set_value_intval(desc, OptName, IntVal) 138 USE MKL_DFT_TYPE138 USE lmdz_mkl_dft_type 139 139 !DEC$ ATTRIBUTES C :: dfti_set_value_intval 140 140 !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intval … … 146 146 147 147 FUNCTION dfti_set_value_sglval(desc, OptName, sglval) 148 USE MKL_DFT_TYPE148 USE lmdz_mkl_dft_type 149 149 !DEC$ ATTRIBUTES C :: dfti_set_value_sglval 150 150 !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_sglval … … 156 156 157 157 FUNCTION dfti_set_value_dblval(desc, OptName, DblVal) 158 USE MKL_DFT_TYPE158 USE lmdz_mkl_dft_type 159 159 !DEC$ ATTRIBUTES C :: dfti_set_value_dblval 160 160 !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_dblval … … 166 166 167 167 FUNCTION dfti_set_value_intvec(desc, OptName, IntVec) 168 USE MKL_DFT_TYPE168 USE lmdz_mkl_dft_type 169 169 !DEC$ ATTRIBUTES C :: dfti_set_value_intvec 170 170 !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intvec … … 176 176 177 177 FUNCTION dfti_set_value_chars(desc, OptName, Chars) 178 USE MKL_DFT_TYPE178 USE lmdz_mkl_dft_type 179 179 !DEC$ ATTRIBUTES C :: dfti_set_value_chars 180 180 !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_chars … … 190 190 191 191 FUNCTION dfti_get_value_intval(desc, OptName, IntVal) 192 USE MKL_DFT_TYPE192 USE lmdz_mkl_dft_type 193 193 !DEC$ ATTRIBUTES C :: dfti_get_value_intval 194 194 !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intval … … 200 200 201 201 FUNCTION dfti_get_value_sglval(desc, OptName, sglval) 202 USE MKL_DFT_TYPE202 USE lmdz_mkl_dft_type 203 203 !DEC$ ATTRIBUTES C :: dfti_get_value_sglval 204 204 !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_sglval … … 210 210 211 211 FUNCTION dfti_get_value_dblval(desc, OptName, DblVal) 212 USE MKL_DFT_TYPE212 USE lmdz_mkl_dft_type 213 213 !DEC$ ATTRIBUTES C :: dfti_get_value_dblval 214 214 !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_dblval … … 220 220 221 221 FUNCTION dfti_get_value_intvec(desc, OptName, IntVec) 222 USE MKL_DFT_TYPE222 USE lmdz_mkl_dft_type 223 223 !DEC$ ATTRIBUTES C :: dfti_get_value_intvec 224 224 !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intvec … … 230 230 231 231 FUNCTION dfti_get_value_chars(desc, OptName, Chars) 232 USE MKL_DFT_TYPE232 USE lmdz_mkl_dft_type 233 233 !DEC$ ATTRIBUTES C :: dfti_get_value_chars 234 234 !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_chars … … 244 244 245 245 FUNCTION dfti_compute_forward_s(desc,sSrcDst) 246 USE MKL_DFT_TYPE246 USE lmdz_mkl_dft_type 247 247 !DEC$ ATTRIBUTES C :: dfti_compute_forward_s 248 248 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_s … … 253 253 254 254 FUNCTION dfti_compute_forward_c(desc,cSrcDst) 255 USE MKL_DFT_TYPE255 USE lmdz_mkl_dft_type 256 256 !DEC$ ATTRIBUTES C :: dfti_compute_forward_c 257 257 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_c … … 262 262 263 263 FUNCTION dfti_compute_forward_ss(desc,sSrcDstRe,sSrcDstIm) 264 USE MKL_DFT_TYPE264 USE lmdz_mkl_dft_type 265 265 !DEC$ ATTRIBUTES C :: dfti_compute_forward_ss 266 266 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ss … … 272 272 273 273 FUNCTION dfti_compute_forward_sc(desc,sSrc,cDst) 274 USE MKL_DFT_TYPE274 USE lmdz_mkl_dft_type 275 275 !DEC$ ATTRIBUTES C :: dfti_compute_forward_sc 276 276 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_sc … … 282 282 283 283 FUNCTION dfti_compute_forward_cc(desc,cSrc,cDst) 284 USE MKL_DFT_TYPE284 USE lmdz_mkl_dft_type 285 285 !DEC$ ATTRIBUTES C :: dfti_compute_forward_cc 286 286 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_cc … … 292 292 293 293 FUNCTION dfti_compute_forward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm) 294 USE MKL_DFT_TYPE294 USE lmdz_mkl_dft_type 295 295 !DEC$ ATTRIBUTES C :: dfti_compute_forward_ssss 296 296 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ssss … … 304 304 305 305 FUNCTION dfti_compute_forward_d(desc,dSrcDst) 306 USE MKL_DFT_TYPE306 USE lmdz_mkl_dft_type 307 307 !DEC$ ATTRIBUTES C :: dfti_compute_forward_d 308 308 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_d … … 313 313 314 314 FUNCTION dfti_compute_forward_z(desc,zSrcDst) 315 USE MKL_DFT_TYPE315 USE lmdz_mkl_dft_type 316 316 !DEC$ ATTRIBUTES C :: dfti_compute_forward_z 317 317 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_z … … 322 322 323 323 FUNCTION dfti_compute_forward_dd(desc,dSrcDstRe,dSrcDstIm) 324 USE MKL_DFT_TYPE324 USE lmdz_mkl_dft_type 325 325 !DEC$ ATTRIBUTES C :: dfti_compute_forward_dd 326 326 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dd … … 332 332 333 333 FUNCTION dfti_compute_forward_dz(desc,dSrc,zDst) 334 USE MKL_DFT_TYPE334 USE lmdz_mkl_dft_type 335 335 !DEC$ ATTRIBUTES C :: dfti_compute_forward_dz 336 336 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dz … … 342 342 343 343 FUNCTION dfti_compute_forward_zz(desc,zSrc,zDst) 344 USE MKL_DFT_TYPE344 USE lmdz_mkl_dft_type 345 345 !DEC$ ATTRIBUTES C :: dfti_compute_forward_zz 346 346 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_zz … … 352 352 353 353 FUNCTION dfti_compute_forward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm) 354 USE MKL_DFT_TYPE354 USE lmdz_mkl_dft_type 355 355 !DEC$ ATTRIBUTES C :: dfti_compute_forward_dddd 356 356 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dddd … … 368 368 369 369 FUNCTION dfti_compute_backward_s(desc,sSrcDst) 370 USE MKL_DFT_TYPE370 USE lmdz_mkl_dft_type 371 371 !DEC$ ATTRIBUTES C :: dfti_compute_backward_s 372 372 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_s … … 377 377 378 378 FUNCTION dfti_compute_backward_c(desc,cSrcDst) 379 USE MKL_DFT_TYPE379 USE lmdz_mkl_dft_type 380 380 !DEC$ ATTRIBUTES C :: dfti_compute_backward_c 381 381 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_c … … 386 386 387 387 FUNCTION dfti_compute_backward_ss(desc,sSrcDstRe,sSrcDstIm) 388 USE MKL_DFT_TYPE388 USE lmdz_mkl_dft_type 389 389 !DEC$ ATTRIBUTES C :: dfti_compute_backward_ss 390 390 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ss … … 396 396 397 397 FUNCTION dfti_compute_backward_cs(desc,cSrc,sDst) 398 USE MKL_DFT_TYPE398 USE lmdz_mkl_dft_type 399 399 !DEC$ ATTRIBUTES C :: dfti_compute_backward_cs 400 400 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cs … … 406 406 407 407 FUNCTION dfti_compute_backward_cc(desc,cSrc,cDst) 408 USE MKL_DFT_TYPE408 USE lmdz_mkl_dft_type 409 409 !DEC$ ATTRIBUTES C :: dfti_compute_backward_cc 410 410 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cc … … 416 416 417 417 FUNCTION dfti_compute_backward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm) 418 USE MKL_DFT_TYPE418 USE lmdz_mkl_dft_type 419 419 !DEC$ ATTRIBUTES C :: dfti_compute_backward_ssss 420 420 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ssss … … 428 428 429 429 FUNCTION dfti_compute_backward_d(desc,dSrcDst) 430 USE MKL_DFT_TYPE430 USE lmdz_mkl_dft_type 431 431 !DEC$ ATTRIBUTES C :: dfti_compute_backward_d 432 432 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_d … … 437 437 438 438 FUNCTION dfti_compute_backward_z(desc,zSrcDst) 439 USE MKL_DFT_TYPE439 USE lmdz_mkl_dft_type 440 440 !DEC$ ATTRIBUTES C :: dfti_compute_backward_z 441 441 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_z … … 446 446 447 447 FUNCTION dfti_compute_backward_dd(desc,dSrcDstRe,dSrcDstIm) 448 USE MKL_DFT_TYPE448 USE lmdz_mkl_dft_type 449 449 !DEC$ ATTRIBUTES C :: dfti_compute_backward_dd 450 450 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dd … … 456 456 457 457 FUNCTION dfti_compute_backward_zd(desc,zSrc,dDst) 458 USE MKL_DFT_TYPE458 USE lmdz_mkl_dft_type 459 459 !DEC$ ATTRIBUTES C :: dfti_compute_backward_zd 460 460 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zd … … 466 466 467 467 FUNCTION dfti_compute_backward_zz(desc,zSrc,zDst) 468 USE MKL_DFT_TYPE468 USE lmdz_mkl_dft_type 469 469 !DEC$ ATTRIBUTES C :: dfti_compute_backward_zz 470 470 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zz … … 476 476 477 477 FUNCTION dfti_compute_backward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm) 478 USE MKL_DFT_TYPE478 USE lmdz_mkl_dft_type 479 479 !DEC$ ATTRIBUTES C :: dfti_compute_backward_dddd 480 480 !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dddd … … 492 492 493 493 FUNCTION dfti_free_descriptor_external(desc) 494 USE MKL_DFT_TYPE494 USE lmdz_mkl_dft_type 495 495 !DEC$ ATTRIBUTES C :: dfti_free_descriptor_external 496 496 !DEC$ ATTRIBUTES REFERENCE :: dfti_free_descriptor_external … … 504 504 505 505 FUNCTION dfti_error_class_external(Status, ErrorClass) 506 USE MKL_DFT_TYPE506 USE lmdz_mkl_dft_type 507 507 !DEC$ ATTRIBUTES C :: dfti_error_class_external 508 508 !DEC$ ATTRIBUTES REFERENCE :: dfti_error_class_external … … 517 517 518 518 FUNCTION dfti_error_message_external(Status) 519 USE MKL_DFT_TYPE519 USE lmdz_mkl_dft_type 520 520 !DEC$ ATTRIBUTES C :: dfti_error_message_external 521 521 !DEC$ ATTRIBUTES REFERENCE :: dfti_error_message_external … … 526 526 END INTERFACE 527 527 528 END MODULE MKL_DFTI528 END MODULE lmdz_mkl_dfti -
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_timer_filtre.f90
r5106 r5107 1 MODULE timer_filtre2 IMPLICIT NONE1 MODULE lmdz_timer_filtre 2 IMPLICIT NONE 3 3 PRIVATE 4 4 REAL :: time … … 7 7 CONTAINS 8 8 9 SUBROUTINE Init_timer 10 time=0 11 Last_time=0 12 END SUBROUTINE Init_timer 13 14 SUBROUTINE Start_timer 15 16 CALL cpu_time(last_time) 9 SUBROUTINE Init_timer 10 time = 0 11 Last_time = 0 12 END SUBROUTINE Init_timer 17 13 18 END SUBROUTINE start_timer 19 20 21 SUBROUTINE stop_timer 22 REAL :: T 23 24 CALL cpu_time(t) 25 Time=Time+t-last_time 26 14 SUBROUTINE Start_timer 15 16 CALL cpu_time(last_time) 17 18 END SUBROUTINE start_timer 19 20 21 SUBROUTINE stop_timer 22 REAL :: T 23 24 CALL cpu_time(t) 25 Time = Time + t - last_time 26 27 27 END SUBROUTINE stop_timer 28 28 29 29 SUBROUTINE Print_filtre_timer 30 PRINT *,"Temps CPU passe dans le filtre :",Time30 PRINT *, "Temps CPU passe dans le filtre :", Time 31 31 END SUBROUTINE Print_filtre_timer 32 32 33 END MODULE timer_filtre33 END MODULE lmdz_timer_filtre -
LMDZ6/branches/Amaury_dev/libf/filtrez/mod_filtre_fft.F90
r5101 r5107 12 12 13 13 SUBROUTINE Init_filtre_fft(coeffu,modfrstu,jfiltnu,jfiltsu,coeffv,modfrstv,jfiltnv,jfiltsv) 14 USE mod_fft14 USE lmdz_fft 15 15 IMPLICIT NONE 16 16 include 'dimensions.h' … … 115 115 116 116 SUBROUTINE Filtre_u_fft(vect_inout,nlat,jj_begin,jj_end,nbniv) 117 USE mod_fft117 USE lmdz_fft 118 118 #ifdef CPP_PARA 119 119 USE parallel_lmdz,ONLY: OMP_CHUNK … … 176 176 177 177 SUBROUTINE Filtre_v_fft(vect_inout,nlat,jj_begin,jj_end,nbniv) 178 USE mod_fft178 USE lmdz_fft 179 179 #ifdef CPP_PARA 180 180 USE parallel_lmdz,ONLY: OMP_CHUNK … … 238 238 239 239 SUBROUTINE Filtre_inv_fft(vect_inout,nlat,jj_begin,jj_end,nbniv) 240 USE mod_fft240 USE lmdz_fft 241 241 #ifdef CPP_PARA 242 242 USE parallel_lmdz,ONLY: OMP_CHUNK -
LMDZ6/branches/Amaury_dev/libf/filtrez/mod_filtre_fft_loc.F90
r5101 r5107 9 9 10 10 SUBROUTINE Init_filtre_fft(coeffu,modfrstu,jfiltnu,jfiltsu,coeffv,modfrstv,jfiltnv,jfiltsv) 11 USE mod_fft11 USE lmdz_fft 12 12 IMPLICIT NONE 13 13 include 'dimensions.h' … … 105 105 106 106 SUBROUTINE Filtre_u_fft(vect_inout,jjb,jje,jj_begin,jj_end,nbniv) 107 USE mod_fft107 USE lmdz_fft 108 108 #ifdef CPP_PARA 109 109 USE parallel_lmdz,ONLY: OMP_CHUNK … … 185 185 186 186 SUBROUTINE Filtre_v_fft(vect_inout,jjb,jje,jj_begin,jj_end,nbniv) 187 USE mod_fft187 USE lmdz_fft 188 188 #ifdef CPP_PARA 189 189 USE parallel_lmdz,ONLY: OMP_CHUNK … … 248 248 249 249 SUBROUTINE Filtre_inv_fft(vect_inout,jjb,jje,jj_begin,jj_end,nbniv) 250 USE mod_fft250 USE lmdz_fft 251 251 #ifdef CPP_PARA 252 252 USE parallel_lmdz,ONLY: OMP_CHUNK -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dq.F90
r5103 r5107 278 278 #else 279 279 280 #define plusqueun281 #ifdef plusqueun280 #define CFL_plus_grand_que_un 281 #ifdef CFL_plus_grand_que_un 282 282 ! Schema avec advection sur plus qu'une maille. 283 283 zzm=masse(ig,k)/ztimestep
Note: See TracChangeset
for help on using the changeset viewer.