Changeset 5159 for LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_filtreg.F90
- Timestamp:
- Aug 2, 2024, 9:58:25 PM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/filtrez/lmdz_filtreg.F90
r5158 r5159 2 2 3 3 MODULE lmdz_filtreg 4 USE lmdz_paramet 4 5 IMPLICIT NONE; PRIVATE 5 6 PUBLIC matriceun, matriceus, matricevn, matricevs, matrinvn, matrinvs, & … … 13 14 SUBROUTINE filtreg(champ, nlat, nbniv, ifiltre, iaire, & 14 15 griscal, iter) 16 USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm 15 17 USE lmdz_coefils, ONLY: jfiltnu, jfiltnv, jfiltsu, jfiltsv, sddu, sddv, unsddu, unsddv, modfrstv, modfrstu 16 18 17 19 !======================================================================= 18 ! 20 19 21 ! Auteur: P. Le Van 07/10/97 20 22 ! ------ 21 ! 23 22 24 ! Objet: filtre matriciel longitudinal ,avec les matrices precalculees 23 25 ! pour l'operateur Filtre . 24 26 ! ------ 25 ! 27 26 28 ! Arguments: 27 29 ! ---------- 28 ! 30 29 31 ! nblat nombre de latitudes a filtrer 30 32 ! nbniv nombre de niveaux verticaux a filtrer … … 35 37 ! +2 Filtre directe 36 38 ! -2 Filtre inverse 37 ! 39 38 40 ! iaire 1 si champ intensif 39 41 ! 2 si champ extensif (pondere par les aires) 40 ! 42 41 43 ! iter 1 filtre simple 42 ! 44 43 45 !======================================================================= 44 ! 45 ! 46 47 46 48 ! Variable Intensive 47 49 ! ifiltre = 1 filtre directe 48 50 ! ifiltre =-1 filtre inverse 49 ! 51 50 52 ! Variable Extensive 51 53 ! ifiltre = 2 filtre directe 52 54 ! ifiltre =-2 filtre inverse 55 53 56 ! 54 ! 55 INCLUDE "dimensions.h" 56 INCLUDE "paramet.h" 57 58 57 59 58 60 INTEGER :: nlat, nbniv, ifiltre, iter … … 326 328 327 329 SUBROUTINE inifgn(dv) 328 ! 330 329 331 ! ... H.Upadyaya , O.Sharma ... 330 ! 332 331 333 USE lmdz_coefils, ONLY: sddv, sddu, unsddu, unsddv, eignfnv, eignfnu 332 334 USE lmdz_ssum_scopy, ONLY: ssum 333 335 USE lmdz_comgeom 334 336 337 USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm 338 USE lmdz_paramet 335 339 IMPLICIT NONE 336 340 337 INCLUDE "dimensions.h" 338 INCLUDE "paramet.h" 341 342 339 343 340 344 REAL :: vec(iim, iim), vec1(iim, iim) … … 347 351 imm1 = iim - 1 348 352 pi = 2. * ASIN(1.) 349 ! 353 350 354 DO i = 1, iim 351 355 dlonu(i) = xprimu(i) … … 359 363 unsddv(i) = 1. / sddv(i) 360 364 END DO 361 ! 365 362 366 DO j = 1, iim 363 367 DO i = 1, iim … … 368 372 END DO 369 373 END DO 370 ! 371 ! 374 375 372 376 eignfnv(1, 1) = -1. 373 377 eignfnv(iim, 1) = 1. … … 386 390 END DO 387 391 END DO 388 ! 392 389 393 DO j = 1, iim 390 394 DO i = 1, iim … … 398 402 ENDDO 399 403 400 ! 404 401 405 CALL jacobi(vec, iim, iim, dv, eignfnv, nrot) 402 406 CALL acc(eignfnv, d, iim) 403 407 CALL eigen_sort(dv, eignfnv, iim, iim) 404 ! 408 405 409 CALL jacobi(vec1, iim, iim, du, eignfnu, nrot) 406 410 CALL acc(eignfnu, d, iim) … … 408 412 409 413 !c ancienne version avec appels IMSL 410 ! 414 411 415 ! CALL MXM(eignfnu,iim,eignfnv,iim,vec,iim) 412 416 ! CALL MXM(eignfnv,iim,eignfnu,iim,vec1,iim) … … 414 418 ! CALL acc(eignfnv,d,iim) 415 419 ! CALL eigen(eignfnv,dv) 416 ! 420 417 421 ! CALL EVCSF(iim,vec1,iim,du,eignfnu,iim) 418 422 ! CALL acc(eignfnu,d,iim) … … 587 591 USE lmdz_coefils, ONLY: modfrstv, modfrstu, jfiltnu, jfiltnv, coefilu, coefilv, & 588 592 coefilu2, coefilv2, eignfnv, eignfnu, jfiltsu, jfiltsv 593 USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm 589 594 USE lmdz_comgeom 595 USE lmdz_paramet 590 596 591 597 ! ... H. Upfiltreg_modadhyaya, O.Sharma ... … … 595 601 ! Correction le 28/10/97 P. Le Van . 596 602 ! ------------------------------------------------------------------- 597 INCLUDE "dimensions.h"598 INCLUDE "paramet.h"599 603 600 604 REAL dlonu(iim), dlatu(jjm)
Note: See TracChangeset
for help on using the changeset viewer.