[644] | 1 | c $Header$ |
---|
| 2 | c |
---|
| 3 | SUBROUTINE condsurf( jour, jourvrai, lmt_bils ) |
---|
| 4 | IMPLICIT none |
---|
| 5 | c |
---|
| 6 | c I. Musat 05.2005 |
---|
| 7 | c |
---|
| 8 | c Lire chaque jour le bilan de chaleur au sol issu |
---|
| 9 | c d'un run atmospherique afin de l'utiliser dans |
---|
| 10 | c dans un run "slab" ocean |
---|
| 11 | c ----------------------------------------- |
---|
| 12 | c jour : input , numero du jour a lire |
---|
| 13 | c jourvrai : input , vrai jour de la simulation |
---|
| 14 | c |
---|
| 15 | c lmt_bils: bilan chaleur au sol (a utiliser pour "slab-ocean") |
---|
| 16 | c |
---|
| 17 | #include "netcdf.inc" |
---|
| 18 | INTEGER nid, nvarid |
---|
| 19 | INTEGER debut(2) |
---|
| 20 | INTEGER epais(2) |
---|
| 21 | c |
---|
| 22 | #include "dimensions.h" |
---|
| 23 | #include "dimphy.h" |
---|
| 24 | #include "indicesol.h" |
---|
| 25 | #include "temps.h" |
---|
| 26 | #include "clesphys.h" |
---|
| 27 | c |
---|
| 28 | INTEGER nannemax |
---|
| 29 | PARAMETER ( nannemax = 60 ) |
---|
| 30 | c |
---|
[688] | 31 | INTEGER jour, jourvrai |
---|
[644] | 32 | REAL lmt_bils(klon) !bilan chaleur au sol |
---|
| 33 | c |
---|
| 34 | c Variables locales: |
---|
| 35 | INTEGER ig, i, kt, ierr |
---|
| 36 | LOGICAL ok |
---|
| 37 | INTEGER anneelim,anneemax |
---|
| 38 | CHARACTER*20 fich |
---|
| 39 | cc |
---|
| 40 | cc ..................................................................... |
---|
| 41 | cc |
---|
| 42 | cc Pour lire le fichier limit correspondant vraiment a l'annee de la |
---|
| 43 | cc simulation en cours , il suffit de mettre ok_limitvrai = .TRUE. |
---|
| 44 | cc |
---|
| 45 | cc ...................................................................... |
---|
| 46 | c |
---|
| 47 | c |
---|
| 48 | IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN |
---|
| 49 | PRINT*,'Le jour demande n est pas correct: ', jour |
---|
| 50 | CALL ABORT |
---|
| 51 | ENDIF |
---|
| 52 | c |
---|
| 53 | anneelim = annee_ref |
---|
| 54 | anneemax = annee_ref + nannemax |
---|
| 55 | c |
---|
| 56 | c |
---|
| 57 | IF( ok_limitvrai ) THEN |
---|
| 58 | DO kt = 1, nannemax |
---|
| 59 | IF(jourvrai.LE. (kt-1)*360 + 359 ) THEN |
---|
| 60 | WRITE(fich,'("limit",i4,".nc")') anneelim |
---|
| 61 | c PRINT *,' Fichier Limite ',fich |
---|
| 62 | GO TO 100 |
---|
| 63 | ENDIF |
---|
| 64 | anneelim = anneelim + 1 |
---|
| 65 | ENDDO |
---|
| 66 | |
---|
| 67 | PRINT *,' PBS ! Le jour a lire sur le fichier limit ne se ' |
---|
| 68 | PRINT *,' trouve pas sur les ',nannemax,' annees a partir de ' |
---|
| 69 | PRINT *,' l annee de debut', annee_ref |
---|
| 70 | CALL EXIT(1) |
---|
| 71 | c |
---|
| 72 | 100 CONTINUE |
---|
| 73 | c |
---|
| 74 | ELSE |
---|
| 75 | |
---|
| 76 | WRITE(fich,'("limitNEW.nc")') |
---|
| 77 | c PRINT *,' Fichier Limite ',fich |
---|
| 78 | ENDIF |
---|
| 79 | c |
---|
| 80 | c Ouvrir le fichier en format NetCDF: |
---|
| 81 | c |
---|
| 82 | ierr = NF_OPEN (fich, NF_NOWRITE,nid) |
---|
| 83 | IF (ierr.NE.NF_NOERR) THEN |
---|
| 84 | WRITE(6,*)' Pb d''ouverture du fichier ', fich |
---|
| 85 | WRITE(6,*)' Le fichier limit ',fich,' (avec 4 chiffres , pour' |
---|
| 86 | WRITE(6,*)' l an 2000 ) , n existe pas ! ' |
---|
| 87 | WRITE(6,*)' ierr = ', ierr |
---|
| 88 | CALL EXIT(1) |
---|
| 89 | ENDIF |
---|
| 90 | c DO k = 1, jour |
---|
| 91 | c La tranche de donnees a lire: |
---|
| 92 | c |
---|
| 93 | debut(1) = 1 |
---|
[688] | 94 | debut(2) = jourvrai |
---|
[644] | 95 | epais(1) = klon |
---|
| 96 | epais(2) = 1 |
---|
| 97 | c |
---|
| 98 | c Bilan flux de chaleur au sol: |
---|
| 99 | c |
---|
| 100 | ierr = NF_INQ_VARID (nid, "BILS", nvarid) |
---|
| 101 | IF (ierr .NE. NF_NOERR) THEN |
---|
| 102 | PRINT*, "condsurf: Le champ <BILS> est absent" |
---|
| 103 | CALL abort |
---|
| 104 | ENDIF |
---|
[688] | 105 | PRINT*,'debut,epais',debut,epais,'jour,jourvrai',jour,jourvrai |
---|
[644] | 106 | #ifdef NC_DOUBLE |
---|
| 107 | ierr = NF_GET_VARA_DOUBLE(nid, nvarid,debut,epais,lmt_bils) |
---|
| 108 | #else |
---|
| 109 | ierr = NF_GET_VARA_REAL(nid, nvarid,debut,epais,lmt_bils) |
---|
| 110 | #endif |
---|
| 111 | IF (ierr .NE. NF_NOERR) THEN |
---|
| 112 | PRINT*, "condsurf: Lecture echouee pour <BILS>" |
---|
| 113 | CALL abort |
---|
| 114 | ENDIF |
---|
| 115 | c ENDDO !k = 1, jour |
---|
| 116 | c |
---|
| 117 | c Fermer le fichier: |
---|
| 118 | c |
---|
| 119 | ierr = NF_CLOSE(nid) |
---|
| 120 | c |
---|
| 121 | c |
---|
| 122 | c PRINT*, 'lmt_bils est lu pour jour: ', jour |
---|
| 123 | c |
---|
| 124 | RETURN |
---|
| 125 | END |
---|