Changeset 5084 for LMDZ6/trunk/libf/phylmd
- Timestamp:
- Jul 19, 2024, 6:40:44 PM (12 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 1 deleted
- 62 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/Dust/condsurfc.F
r5075 r5084 4 4 . lmt_omnat) 5 5 USE dimphy 6 USE lmdz_netcdf, ONLY: nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite,nf90_get_var7 6 IMPLICIT none 8 7 ! … … 11 10 ! 12 11 INCLUDE "dimensions.h" 13 12 INCLUDE "netcdf.inc" 13 14 14 REAL lmt_bcff(klon), lmt_bcbb(klon),lmt_bc_penner(klon) 15 15 REAL lmt_omff(klon), lmt_ombb(klon) … … 24 24 INTEGER debut(2),epais(2) 25 25 ! 26 IF (jour <0 .OR. jour>(360-1)) THEN27 IF (jour >(360-1).AND.jour<=367) THEN26 IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN 27 IF (jour.GT.(360-1).AND.jour.LE.367) THEN 28 28 jour=360-1 29 29 print *,'JE: jour changed to jour= ',jour … … 35 35 ! 36 36 ierr = NF_OPEN ("limitcarbon.nc", NF_NOWRITE, nid1) 37 if (ierr /=NF_NOERR) then37 if (ierr.ne.NF_NOERR) then 38 38 write(6,*)' Pb d''ouverture du fichier limitbc.nc' 39 39 write(6,*)' ierr = ', ierr … … 49 49 ! 50 50 ierr = NF_INQ_VARID (nid1, "BCFF", nvarid) 51 ierr = nf90_get_var(nid1, nvarid, lmt_bcff, debut, epais) 51 !nhl #ifdef NC_DOUBLE 52 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcff) 52 53 ! print *,'IERR = ',ierr 53 54 ! print *,'NF_NOERR = ',NF_NOERR 54 55 ! print *,'debut = ',debut 55 56 ! print *,'epais = ',epais 56 IF (ierr /= NF_NOERR) THEN 57 !nhl #else 58 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcff) 59 !nhl #endif 60 IF (ierr .NE. NF_NOERR) THEN 57 61 PRINT*, 'Pb de lecture pour les sources BC' 58 62 CALL exit(1) … … 61 65 ! 62 66 ierr = NF_INQ_VARID (nid1, "BCBB", nvarid) 63 ierr = nf90_get_var(nid1, nvarid, lmt_bcbb, debut, epais) 64 IF (ierr /= NF_NOERR) THEN 67 !nhl #ifdef NC_DOUBLE 68 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbb) 69 !nhl #else 70 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbb) 71 !nhl #endif 72 IF (ierr .NE. NF_NOERR) THEN 65 73 PRINT*, 'Pb de lecture pour les sources BC-biomass' 66 74 CALL exit(1) … … 69 77 ! 70 78 ierr = NF_INQ_VARID (nid1, "BCBL", nvarid) 71 ierr = nf90_get_var(nid1, nvarid, lmt_bcbbl, debut, epais) 72 IF (ierr /= NF_NOERR) THEN 79 !nhl #ifdef NC_DOUBLE 80 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbbl) 81 !nhl #else 82 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbbl) 83 !nhl #endif 84 IF (ierr .NE. NF_NOERR) THEN 73 85 PRINT*, 'Pb de lecture pour les sources BC low' 74 86 CALL exit(1) … … 77 89 ! 78 90 ierr = NF_INQ_VARID (nid1, "BCBH", nvarid) 79 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbh, debut, epais) 80 IF (ierr /= NF_NOERR) THEN 91 !nhl #ifdef NC_DOUBLE 92 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbbh) 93 !nhl #else 94 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbbh) 95 !nhl #endif 96 IF (ierr .NE. NF_NOERR) THEN 81 97 PRINT*, 'Pb de lecture pour les sources BC high' 82 98 CALL exit(1) … … 84 100 ! 85 101 ierr = NF_INQ_VARID (nid1, "TERP", nvarid) 86 ierr = nf90_get_var (nid1, nvarid, lmt_terp, debut, epais) 87 IF (ierr /= NF_NOERR) THEN 102 !nhl #ifdef NC_DOUBLE 103 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_terp) 104 !nhl #else 105 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_terp) 106 !nhl #endif 107 IF (ierr .NE. NF_NOERR) THEN 88 108 PRINT*, 'Pb de lecture pour les sources Terpene' 89 109 CALL exit(1) … … 92 112 ! 93 113 ierr = NF_INQ_VARID (nid1, "BC_penner", nvarid) 94 ierr = nf90_get_var (nid1, nvarid, lmt_bc_penner, debut, epais) 95 IF (ierr /= NF_NOERR) THEN 114 !nhl #ifdef NC_DOUBLE 115 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, 116 . epais, lmt_bc_penner) 117 !nhl #else 118 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, 119 !nhl . lmt_bc_penner) 120 !nhl #endif 121 IF (ierr .NE. NF_NOERR) THEN 96 122 PRINT*, 'Pb de lecture pour les sources BC Penner' 97 123 CALL exit(1) … … 100 126 ! 101 127 ierr = NF_INQ_VARID (nid1, "OMFF", nvarid) 102 ierr = nf90_get_var (nid1, nvarid, lmt_omff, debut, epais) 103 IF (ierr /= NF_NOERR) THEN 128 !nhl #ifdef NC_DOUBLE 129 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_omff) 130 !nhl #else 131 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_omff) 132 !nhl #endif 133 IF (ierr .NE. NF_NOERR) THEN 104 134 PRINT*, 'Pb de lecture pour les sources om-ifossil' 105 135 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/condsurfc_new.F
r5075 r5084 6 6 USE mod_phys_lmdz_para 7 7 USE dimphy 8 USE lmdz_netcdf, ONLY:nf90_get_var,nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite9 8 IMPLICIT none 10 9 c … … 13 12 c 14 13 INCLUDE "dimensions.h" 15 14 INCLUDE "netcdf.inc" 15 16 16 REAL lmt_bcff(klon), lmt_bcnff(klon), lmt_bcba(klon) 17 17 REAL lmt_omff(klon), lmt_omnff(klon), lmt_ombb(klon) … … 36 36 c 37 37 ! IF (jour.LT.0 .OR. jour.GT.(366-1)) THEN 38 IF (jour <0 .OR. jour>366) THEN38 IF (jour.LT.0 .OR. jour.GT.366) THEN 39 39 PRINT*,'Le jour demande n est pas correcte:', jour 40 40 print *,'JE: FORCED TO CONTINUE (emissions have … … 58 58 ! 59 59 ierr = NF_OPEN ("carbon_emissions.nc", NF_NOWRITE, nid1) 60 if (ierr /=NF_NOERR) then60 if (ierr.ne.NF_NOERR) then 61 61 write(6,*)' Pb d''ouverture du fichier limitbc.nc' 62 62 write(6,*)' ierr = ', ierr … … 67 67 ! 68 68 ierr = NF_INQ_VARID (nid1, "BCFF", nvarid) 69 ierr = nf90_get_var (nid1, nvarid, lmt_bcff_glo, debut, epais) 70 IF (ierr /= NF_NOERR) THEN 69 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 70 . lmt_bcff_glo) 71 IF (ierr .NE. NF_NOERR) THEN 71 72 PRINT*, 'Pb de lecture pour les sources BC' 72 73 CALL exit(1) … … 78 79 ! 79 80 ierr = NF_INQ_VARID (nid1, "BCNFF", nvarid) 80 ierr = nf90_get_var (nid1, nvarid, lmt_bcnff_glo, debut, epais) 81 IF (ierr /= NF_NOERR) THEN 81 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 82 . lmt_bcnff_glo) 83 IF (ierr .NE. NF_NOERR) THEN 82 84 PRINT*, 'Pb de lecture pour les sources BC' 83 85 CALL exit(1) … … 87 89 ! 88 90 ierr = NF_INQ_VARID (nid1, "BCBBL", nvarid) 89 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbl_glo, debut, epais) 90 IF (ierr /= NF_NOERR) THEN 91 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 92 . lmt_bcbbl_glo) 93 IF (ierr .NE. NF_NOERR) THEN 91 94 PRINT*, 'Pb de lecture pour les sources BC low' 92 95 CALL exit(1) … … 96 99 ! 97 100 ierr = NF_INQ_VARID (nid1, "BCBBH", nvarid) 98 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbh_glo, debut, epais) 99 IF (ierr /= NF_NOERR) THEN 101 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 102 . lmt_bcbbh_glo) 103 IF (ierr .NE. NF_NOERR) THEN 100 104 PRINT*, 'Pb de lecture pour les sources BC high' 101 105 CALL exit(1) … … 105 109 ! 106 110 ierr = NF_INQ_VARID (nid1, "BCBA", nvarid) 107 ierr = nf90_get_var (nid1, nvarid, lmt_bcba_glo, debut, epais) 108 IF (ierr /= NF_NOERR) THEN 111 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 112 . lmt_bcba_glo) 113 IF (ierr .NE. NF_NOERR) THEN 109 114 PRINT*, 'Pb de lecture pour les sources BC' 110 115 CALL exit(1) … … 120 125 ! 121 126 ierr = NF_INQ_VARID (nid1, "OMFF", nvarid) 122 ierr = nf90_get_var (nid1, nvarid, lmt_omff_glo, debut, epais) 123 IF (ierr /= NF_NOERR) THEN 127 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 128 . lmt_omff_glo) 129 IF (ierr .NE. NF_NOERR) THEN 124 130 PRINT*, 'Pb de lecture pour les sources OM' 125 131 CALL exit(1) … … 129 135 ! 130 136 ierr = NF_INQ_VARID (nid1, "OMNFF", nvarid) 131 ierr = nf90_get_var (nid1, nvarid, lmt_omnff_glo, debut, epais) 132 IF (ierr /= NF_NOERR) THEN 137 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 138 . lmt_omnff_glo) 139 IF (ierr .NE. NF_NOERR) THEN 133 140 PRINT*, 'Pb de lecture pour les sources OM' 134 141 CALL exit(1) … … 138 145 ! 139 146 ierr = NF_INQ_VARID (nid1, "OMBBL", nvarid) 140 ierr = nf90_get_var (nid1, nvarid, lmt_ombbl_glo, debut, epais) 141 IF (ierr /= NF_NOERR) THEN 147 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 148 . lmt_ombbl_glo) 149 IF (ierr .NE. NF_NOERR) THEN 142 150 PRINT*, 'Pb de lecture pour les sources OM low' 143 151 CALL exit(1) … … 147 155 ! 148 156 ierr = NF_INQ_VARID (nid1, "OMBBH", nvarid) 149 ierr = nf90_get_var (nid1, nvarid, lmt_ombbh_glo, debut, epais) 150 IF (ierr /= NF_NOERR) THEN 157 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 158 . lmt_ombbh_glo) 159 IF (ierr .NE. NF_NOERR) THEN 151 160 PRINT*, 'Pb de lecture pour les sources OM high' 152 161 CALL exit(1) … … 156 165 ! 157 166 ierr = NF_INQ_VARID (nid1, "OMBA", nvarid) 158 ierr = nf90_get_var (nid1, nvarid, lmt_omba_glo, debut, epais) 159 IF (ierr /= NF_NOERR) THEN 167 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 168 . lmt_omba_glo) 169 IF (ierr .NE. NF_NOERR) THEN 160 170 PRINT*, 'Pb de lecture pour les sources OM ship' 161 171 CALL exit(1) … … 165 175 ! 166 176 ierr = NF_INQ_VARID (nid1, "TERP", nvarid) 167 ierr = nf90_get_var (nid1, nvarid, lmt_terp_glo, debut, epais) 168 IF (ierr /= NF_NOERR) THEN 177 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 178 . lmt_terp_glo) 179 IF (ierr .NE. NF_NOERR) THEN 169 180 PRINT*, 'Pb de lecture pour les sources Terpene' 170 181 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/condsurfs.F
r5075 r5084 4 4 . lmt_dmsbio, lmt_h2sbio, lmt_dms, lmt_dmsconc) 5 5 USE dimphy 6 USE lmdz_netcdf, ONLY:nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite,nf90_get_var7 6 IMPLICIT none 8 7 c … … 11 10 c 12 11 INCLUDE "dimensions.h" 12 INCLUDE "netcdf.inc" 13 13 c 14 14 REAL lmt_so2h(klon), lmt_so2b(klon), lmt_so2bb(klon) … … 24 24 INTEGER debut(2),epais(2) 25 25 c 26 IF (jour <0 .OR. jour>(360-1)) THEN27 IF ((jour >(360-1)) .AND. (jour<=367)) THEN26 IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN 27 IF ((jour.GT.(360-1)) .AND. (jour.LE.367)) THEN 28 28 jour=360-1 29 29 print *,'JE: jour changed to jour= ',jour … … 35 35 c 36 36 ierr = NF_OPEN ("limitsoufre.nc", NF_NOWRITE, nid) 37 if (ierr /=NF_NOERR) then37 if (ierr.ne.NF_NOERR) then 38 38 write(6,*)' Pb d''ouverture du fichier limitsoufre.nc' 39 39 write(6,*)' ierr = ', ierr … … 48 48 c 49 49 ierr = NF_INQ_VARID (nid, "VOLC", nvarid) 50 ierr = nf90_get_var(nid, nvarid, lmt_so2volc, debut, epais) 51 IF (ierr /= NF_NOERR) THEN 50 cnhl #ifdef NC_DOUBLE 51 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2volc) 52 cnhl #else 53 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2volc) 54 cnhl #endif 55 IF (ierr .NE. NF_NOERR) THEN 52 56 PRINT*, 'Pb de lecture pour les sources so2 volcan' 53 57 CALL exit(1) … … 55 59 c 56 60 ierr = NF_INQ_VARID (nid, "ALTI", nvarid) 57 ierr = nf90_get_var(nid, nvarid, lmt_altvolc, debut, epais) 58 IF (ierr /= NF_NOERR) THEN 61 cnhl #ifdef NC_DOUBLE 62 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_altvolc) 63 cnhl #else 64 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_altvolc) 65 cnhl #endif 66 IF (ierr .NE. NF_NOERR) THEN 59 67 PRINT*, 'Pb de lecture pour les altitudes volcan' 60 68 CALL exit(1) … … 64 72 c 65 73 ierr = NF_INQ_VARID (nid, "SO2ED95L", nvarid) 66 ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais) 67 IF (ierr /= NF_NOERR) THEN 74 cnhl #ifdef NC_DOUBLE 75 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b) 76 cnhl #else 77 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b) 78 cnhl #endif 79 IF (ierr .NE. NF_NOERR) THEN 68 80 PRINT*, 'Pb de lecture pour les sources so2 edgar low' 69 81 CALL exit(1) … … 71 83 c 72 84 ierr = NF_INQ_VARID (nid, "SO2ED95H", nvarid) 73 ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais) 74 IF (ierr /= NF_NOERR) THEN 85 cnhl #ifdef NC_DOUBLE 86 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h) 87 cnhl #else 88 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h) 89 cnhl #endif 90 IF (ierr .NE. NF_NOERR) THEN 75 91 PRINT*, 'Pb de lecture pour les sources so2 edgar high' 76 92 CALL exit(1) … … 80 96 c 81 97 ierr = NF_INQ_VARID (nid, "SO2H", nvarid) 82 ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais) 83 IF (ierr /= NF_NOERR) THEN 98 cnhl #ifdef NC_DOUBLE 99 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h) 100 cnhl #else 101 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h) 102 cnhl #endif 103 IF (ierr .NE. NF_NOERR) THEN 84 104 PRINT*, 'Pb de lecture pour les sources so2 haut' 85 105 CALL exit(1) … … 87 107 c 88 108 ierr = NF_INQ_VARID (nid, "SO2B", nvarid) 89 ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais) 90 IF (ierr /= NF_NOERR) THEN 109 cnhl #ifdef NC_DOUBLE 110 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b) 111 cnhl #else 112 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b) 113 cnhl #endif 114 IF (ierr .NE. NF_NOERR) THEN 91 115 PRINT*, 'Pb de lecture pour les sources so2 bas' 92 116 CALL exit(1) … … 96 120 c 97 121 ierr = NF_INQ_VARID (nid, "SO2BB", nvarid) 98 ierr = nf90_get_var(nid, nvarid, lmt_so2bb, debut, epais) 99 IF (ierr /= NF_NOERR) THEN 122 cnhl #ifdef NC_DOUBLE 123 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2bb) 124 cnhl #else 125 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2bb) 126 cnhl #endif 127 IF (ierr .NE. NF_NOERR) THEN 100 128 PRINT*, 'Pb de lecture pour les sources so2 bb' 101 129 CALL exit(1) … … 103 131 c 104 132 ierr = NF_INQ_VARID (nid, "SO2BA", nvarid) 105 ierr = nf90_get_var(nid, nvarid, lmt_so2ba, debut, epais) 106 IF (ierr /= NF_NOERR) THEN 133 cnhl #ifdef NC_DOUBLE 134 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2ba) 135 cnhl #else 136 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2ba) 137 cnhl #endif 138 IF (ierr .NE. NF_NOERR) THEN 107 139 PRINT*, 'Pb de lecture pour les sources so2 bateau' 108 140 CALL exit(1) … … 110 142 c 111 143 ierr = NF_INQ_VARID (nid, "DMSB", nvarid) 112 ierr = nf90_get_var(nid, nvarid, lmt_dmsbio, debut, epais) 113 IF (ierr /= NF_NOERR) THEN 144 cnhl #ifdef NC_DOUBLE 145 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dmsbio) 146 cnhl #else 147 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsbio) 148 cnhl #endif 149 IF (ierr .NE. NF_NOERR) THEN 114 150 PRINT*, 'Pb de lecture pour les sources dms bio' 115 151 CALL exit(1) … … 117 153 c 118 154 ierr = NF_INQ_VARID (nid, "H2SB", nvarid) 119 ierr = nf90_get_var(nid, nvarid, lmt_h2sbio, debut, epais) 120 IF (ierr /= NF_NOERR) THEN 155 cnhl #ifdef NC_DOUBLE 156 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_h2sbio) 157 cnhl #else 158 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_h2sbio) 159 cnhl #endif 160 IF (ierr .NE. NF_NOERR) THEN 121 161 PRINT*, 'Pb de lecture pour les sources h2s bio' 122 162 CALL exit(1) 123 163 ENDIF 124 164 c 125 IF (flag_dms ==1) THEN165 IF (flag_dms.EQ.1) THEN 126 166 c 127 167 ierr = NF_INQ_VARID (nid, "DMSL", nvarid) 128 ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais) 129 IF (ierr /= NF_NOERR) THEN 168 cnhl #ifdef NC_DOUBLE 169 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms) 170 cnhl #else 171 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms) 172 cnhl #endif 173 IF (ierr .NE. NF_NOERR) THEN 130 174 PRINT*, 'Pb de lecture pour les sources dms liss' 131 175 CALL exit(1) 132 176 ENDIF 133 177 c 134 ELSEIF (flag_dms ==2) THEN178 ELSEIF (flag_dms.EQ.2) THEN 135 179 c 136 180 ierr = NF_INQ_VARID (nid, "DMSW", nvarid) 137 ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais) 138 IF (ierr /= NF_NOERR) THEN 181 cnhl #ifdef NC_DOUBLE 182 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms) 183 cnhl #else 184 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms) 185 cnhl #endif 186 IF (ierr .NE. NF_NOERR) THEN 139 187 PRINT*, 'Pb de lecture pour les sources dms wann' 140 188 CALL exit(1) 141 189 ENDIF 142 190 c 143 ELSEIF (flag_dms ==3) THEN191 ELSEIF (flag_dms.EQ.3) THEN 144 192 c 145 193 ierr = NF_INQ_VARID (nid, "DMSC1", nvarid) 146 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 147 IF (ierr /= NF_NOERR) THEN 194 cnhl #ifdef NC_DOUBLE 195 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 196 cnhl #else 197 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 198 cnhl #endif 199 IF (ierr .NE. NF_NOERR) THEN 148 200 PRINT*, 'Pb de lecture pour les sources dmsconc old' 149 201 CALL exit(1) 150 202 ENDIF 151 203 c 152 ELSEIF (flag_dms ==4) THEN204 ELSEIF (flag_dms.EQ.4) THEN 153 205 c 154 206 ierr = NF_INQ_VARID (nid, "DMSC2", nvarid) 155 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 156 IF (ierr /= NF_NOERR) THEN 207 cnhl #ifdef NC_DOUBLE 208 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 209 cnhl #else 210 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 211 cnhl #endif 212 IF (ierr .NE. NF_NOERR) THEN 157 213 PRINT*, 'Pb de lecture pour les sources dms conc 2' 158 214 CALL exit(1) 159 215 ENDIF 160 216 c 161 ELSEIF (flag_dms ==5) THEN217 ELSEIF (flag_dms.EQ.5) THEN 162 218 c 163 219 ierr = NF_INQ_VARID (nid, "DMSC3", nvarid) 164 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 165 IF (ierr /= NF_NOERR) THEN 220 cnhl #ifdef NC_DOUBLE 221 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 222 cnhl #else 223 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 224 cnhl #endif 225 IF (ierr .NE. NF_NOERR) THEN 166 226 PRINT*, 'Pb de lecture pour les sources dms conc 3' 167 227 CALL exit(1) 168 228 ENDIF 169 229 c 170 ELSEIF (flag_dms ==6) THEN230 ELSEIF (flag_dms.EQ.6) THEN 171 231 c 172 232 ierr = NF_INQ_VARID (nid, "DMSC4", nvarid) 173 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 174 IF (ierr /= NF_NOERR) THEN 233 cnhl #ifdef NC_DOUBLE 234 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 235 cnhl #else 236 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 237 cnhl #endif 238 IF (ierr .NE. NF_NOERR) THEN 175 239 PRINT*, 'Pb de lecture pour les sources dms conc 4' 176 240 CALL exit(1) 177 241 ENDIF 178 242 c 179 ELSEIF (flag_dms ==7) THEN243 ELSEIF (flag_dms.EQ.7) THEN 180 244 c 181 245 ierr = NF_INQ_VARID (nid, "DMSC5", nvarid) 182 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 183 IF (ierr /= NF_NOERR) THEN 246 cnhl #ifdef NC_DOUBLE 247 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 248 cnhl #else 249 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 250 cnhl #endif 251 IF (ierr .NE. NF_NOERR) THEN 184 252 PRINT*, 'Pb de lecture pour les sources dms conc 5' 185 253 CALL exit(1) 186 254 ENDIF 187 255 c 188 ELSEIF (flag_dms ==8) THEN256 ELSEIF (flag_dms.EQ.8) THEN 189 257 c 190 258 ierr = NF_INQ_VARID (nid, "DMSC6", nvarid) 191 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 192 IF (ierr /= NF_NOERR) THEN 259 cnhl #ifdef NC_DOUBLE 260 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 261 cnhl #else 262 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 263 cnhl #endif 264 IF (ierr .NE. NF_NOERR) THEN 193 265 PRINT*, 'Pb de lecture pour les sources dms conc 6' 194 266 CALL exit(1) 195 267 ENDIF 196 268 c 197 ELSEIF (flag_dms ==9) THEN269 ELSEIF (flag_dms.EQ.9) THEN 198 270 c 199 271 ierr = NF_INQ_VARID (nid, "DMSC7", nvarid) 200 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 201 IF (ierr /= NF_NOERR) THEN 272 cnhl #ifdef NC_DOUBLE 273 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 274 cnhl #else 275 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 276 cnhl #endif 277 IF (ierr .NE. NF_NOERR) THEN 202 278 PRINT*, 'Pb de lecture pour les sources dms conc 7' 203 279 CALL exit(1) 204 280 ENDIF 205 281 c 206 ELSEIF (flag_dms ==10) THEN282 ELSEIF (flag_dms.EQ.10) THEN 207 283 c 208 284 ierr = NF_INQ_VARID (nid, "DMSC8", nvarid) 209 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 210 IF (ierr /= NF_NOERR) THEN 285 cnhl #ifdef NC_DOUBLE 286 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 287 cnhl #else 288 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 289 cnhl #endif 290 IF (ierr .NE. NF_NOERR) THEN 211 291 PRINT*, 'Pb de lecture pour les sources dms conc 8' 212 292 CALL exit(1) … … 222 302 ierr = NF_CLOSE(nid) 223 303 c 224 IF (flag_dms <=2) THEN304 IF (flag_dms.LE.2) THEN 225 305 DO i=1, klon 226 306 lmt_dmsconc(i)=0.0 -
LMDZ6/trunk/libf/phylmd/Dust/condsurfs_new.F
r5075 r5084 9 9 USE mod_phys_lmdz_para 10 10 USE dimphy 11 USE lmdz_netcdf, ONLY: nf90_get_var,nf_inq_varid,nf_close,nf_noerr,nf_open,nf_nowrite12 11 IMPLICIT none 13 12 c … … 16 15 c 17 16 INCLUDE "dimensions.h" 17 INCLUDE "netcdf.inc" 18 18 c 19 19 REAL lmt_so2b(klon), lmt_so2h(klon), lmt_so2nff(klon) … … 40 40 INTEGER debut(2),epais(2) 41 41 c 42 IF (jour <0 .OR. jour>(366-1)) THEN42 IF (jour.LT.0 .OR. jour.GT.(366-1)) THEN 43 43 PRINT*,'Le jour demande n est pas correcte:', jour 44 44 print *,'JE: FORCED TO CONTINUE (emissions have … … 62 62 ! 63 63 ierr = NF_OPEN ("sulphur_emissions_antro.nc", NF_NOWRITE, nid) 64 if (ierr /=NF_NOERR) then64 if (ierr.ne.NF_NOERR) then 65 65 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_antro' 66 66 write(6,*)' ierr = ', ierr … … 72 72 ! 73 73 ierr = NF_INQ_VARID (nid, "SO2FF_LOW", nvarid) 74 ierr = nf90_get_var(nid, nvarid, lmt_so2b_glo, debut, epais)75 IF (ierr /=NF_NOERR) THEN74 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais,lmt_so2b_glo) 75 IF (ierr .NE. NF_NOERR) THEN 76 76 PRINT*, 'Pb de lecture pour les sources so2 low' 77 77 print *,'JE klon, jour, debut ,epais ',klon_glo,jour,debut,epais … … 84 84 ! 85 85 ierr = NF_INQ_VARID (nid, "SO2FF_HIGH", nvarid) 86 ierr = nf90_get_var(nid, nvarid, lmt_so2h_glo, debut, epais)87 IF (ierr /=NF_NOERR) THEN86 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais,lmt_so2h_glo) 87 IF (ierr .NE. NF_NOERR) THEN 88 88 PRINT*, 'Pb de lecture pour les sources so2 high' 89 89 CALL exit(1) … … 93 93 ! 94 94 ierr = NF_INQ_VARID (nid, "SO2BBH", nvarid) 95 ierr = nf90_get_var(nid, nvarid, lmt_so2bb_h_glo, debut, epais) 96 IF (ierr /= NF_NOERR) THEN 95 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, 96 . epais, lmt_so2bb_h_glo) 97 IF (ierr .NE. NF_NOERR) THEN 97 98 PRINT*, 'Pb de lecture pour les sources so2 BB high' 98 99 CALL exit(1) … … 102 103 ! 103 104 ierr = NF_INQ_VARID (nid, "SO2BBL", nvarid) 104 ierr = nf90_get_var(nid, nvarid, lmt_so2bb_l_glo, debut, epais) 105 IF (ierr /= NF_NOERR) THEN 105 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, 106 . epais, lmt_so2bb_l_glo) 107 IF (ierr .NE. NF_NOERR) THEN 106 108 PRINT*, 'Pb de lecture pour les sources so2 BB low' 107 109 CALL exit(1) … … 111 113 ! 112 114 ierr = NF_INQ_VARID (nid, "SO2BA", nvarid) 113 ierr = nf90_get_var(nid, nvarid, lmt_so2ba_glo, debut, epais)114 IF (ierr /=NF_NOERR) THEN115 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_so2ba_glo) 116 IF (ierr .NE. NF_NOERR) THEN 115 117 PRINT*, 'Pb de lecture pour les sources so2 ship' 116 118 CALL exit(1) … … 120 122 ! 121 123 ierr = NF_INQ_VARID (nid, "SO2NFF", nvarid) 122 ierr = nf90_get_var(nid, nvarid, lmt_so2nff_glo, debut, epais) 123 IF (ierr /= NF_NOERR) THEN 124 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 125 . lmt_so2nff_glo) 126 IF (ierr .NE. NF_NOERR) THEN 124 127 PRINT*, 'Pb de lecture pour les sources so2 non FF' 125 128 CALL exit(1) … … 132 135 !======================================================================= 133 136 ierr = NF_OPEN ("sulphur_emissions_nat.nc", NF_NOWRITE, nid) 134 if (ierr /=NF_NOERR) then137 if (ierr.ne.NF_NOERR) then 135 138 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_nat' 136 139 write(6,*)' ierr = ', ierr … … 141 144 c 142 145 ierr = NF_INQ_VARID (nid, "DMSB", nvarid) 143 ierr = nf90_get_var(nid, nvarid, lmt_dmsbio_glo, debut, epais)144 IF (ierr /=NF_NOERR) THEN146 ierr = NF_GET_VARA_DOUBLE (nid, nvarid,debut,epais,lmt_dmsbio_glo) 147 IF (ierr .NE. NF_NOERR) THEN 145 148 PRINT*, 'Pb de lecture pour les sources dms bio' 146 149 CALL exit(1) … … 150 153 c 151 154 ierr = NF_INQ_VARID (nid, "H2SB", nvarid) 152 ierr = nf90_get_var(nid, nvarid, lmt_h2sbio_glo, debut, epais)153 IF (ierr /=NF_NOERR) THEN155 ierr = NF_GET_VARA_DOUBLE (nid, nvarid,debut,epais,lmt_h2sbio_glo) 156 IF (ierr .NE. NF_NOERR) THEN 154 157 PRINT*, 'Pb de lecture pour les sources h2s bio' 155 158 CALL exit(1) … … 158 161 c Ocean surface concentration of dms (emissions are computed later) 159 162 c 160 IF (flag_dms ==4) THEN163 IF (flag_dms.EQ.4) THEN 161 164 c 162 165 ierr = NF_INQ_VARID (nid, "DMSC2", nvarid) 163 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc_glo, debut, epais)164 IF (ierr /=NF_NOERR) THEN166 ierr = NF_GET_VARA_DOUBLE (nid,nvarid,debut,epais,lmt_dmsconc_glo) 167 IF (ierr .NE. NF_NOERR) THEN 165 168 PRINT*, 'Pb de lecture pour les sources dms conc 2' 166 169 CALL exit(1) … … 187 190 print *,' Jour = ',jour 188 191 ierr = NF_OPEN ("sulphur_emissions_volc.nc", NF_NOWRITE, nid) 189 if (ierr /=NF_NOERR) then192 if (ierr.ne.NF_NOERR) then 190 193 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_volc' 191 194 write(6,*)' ierr = ', ierr … … 197 200 ! ierr = NF_INQ_VARID (nid, "VOLC", nvarid) 198 201 ierr = NF_INQ_VARID (nid, "flx_volc_cont", nvarid) 199 ierr = nf90_get_var(nid, nvarid, lmt_so2volc_cont_glo, debut, epais) 200 IF (ierr /= NF_NOERR) THEN 202 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 203 . lmt_so2volc_cont_glo) 204 IF (ierr .NE. NF_NOERR) THEN 201 205 PRINT*, 'Pb de lecture pour les sources so2 volcan (cont)' 202 206 CALL exit(1) … … 210 214 ! ierr = NF_INQ_VARID (nid, "ALTI", nvarid) 211 215 ierr = NF_INQ_VARID (nid, "flx_volc_altcont", nvarid) 212 ierr = nf90_get_var(nid, nvarid, lmt_altvolc_cont_glo, debut, epais) 213 IF (ierr /= NF_NOERR) THEN 216 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 217 . lmt_altvolc_cont_glo) 218 IF (ierr .NE. NF_NOERR) THEN 214 219 PRINT*, 'Pb de lecture pour les altitudes volcan (cont)' 215 220 CALL exit(1) … … 219 224 c 220 225 ierr = NF_INQ_VARID (nid, "flx_volc_expl", nvarid) 221 ierr = nf90_get_var(nid, nvarid, lmt_so2volc_expl_glo, debut, epais) 222 IF (ierr /= NF_NOERR) THEN 226 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 227 . lmt_so2volc_expl_glo) 228 IF (ierr .NE. NF_NOERR) THEN 223 229 PRINT*, 'Pb de lecture pour les sources so2 volcan (expl)' 224 230 CALL exit(1) … … 231 237 c 232 238 ierr = NF_INQ_VARID (nid, "flx_volc_altexpl", nvarid) 233 ierr = nf90_get_var(nid, nvarid, lmt_altvolc_expl_glo, debut, epais) 234 IF (ierr /= NF_NOERR) THEN 239 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 240 . lmt_altvolc_expl_glo) 241 IF (ierr .NE. NF_NOERR) THEN 235 242 PRINT*, 'Pb de lecture pour les altitudes volcan' 236 243 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/phys_output_write_spl_mod.F90
r5075 r5084 390 390 USE ioipsl, ONLY: histend, histsync 391 391 USE iophy, ONLY: set_itau_iophy, histwrite_phy 392 USE lmdz_netcdf, ONLY: nf90_fill_real392 USE netcdf, ONLY: nf90_fill_real 393 393 ! ug Pour les sorties XIOS 394 394 USE lmdz_xios, ONLY: xios_update_calendar, using_xios -
LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90
r5075 r5084 1441 1441 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1) 1442 1442 endif 1443 if ( (id_codu <= 0) .or. ( id_fine<=0) ) then1443 if ( (id_codu .le. 0) .or. ( id_fine.le.0) ) then 1444 1444 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1',1) 1445 1445 endif … … 2437 2437 ENDDO 2438 2438 ENDDO 2439 IF (iflag_conv ==2) THEN2439 IF (iflag_conv.EQ.2) THEN 2440 2440 ! Tiedke 2441 2441 CALL cltrac_spl(pdtphys,coefh,yu1,yv1,t_seri,tmp_var, & 2442 2442 aux_var2,paprs,pplay,aux_var3) 2443 2443 2444 ELSE IF (iflag_conv >=3) THEN2444 ELSE IF (iflag_conv.GE.3) THEN 2445 2445 !KE 2446 2446 CALL cltrac(pdtphys, coefh,t_seri,tmp_var,aux_var2,paprs,pplay, & … … 2494 2494 2495 2495 2496 IF (iflag_conv >=3) THEN2496 IF (iflag_conv.GE.3) THEN 2497 2497 2498 2498 IF (logitime) THEN … … 2786 2786 2787 2787 2788 IF (iflag_conv ==2) THEN2788 IF (iflag_conv.EQ.2) THEN 2789 2789 2790 2790 IF (logitime) THEN … … 2839 2839 print *,'iflag_conv bef incloud',iflag_conv 2840 2840 2841 IF (iflag_conv ==2) THEN2841 IF (iflag_conv.EQ.2) THEN 2842 2842 ! Tiedke 2843 2843 CALL incloud_scav(.false.,qmin,qmax,masse,henry,kk,prfl, & … … 2877 2877 ! . his_dhbclsc,his_dhbccon,tr_seri) 2878 2878 2879 IF (iflag_conv ==2) THEN2879 IF (iflag_conv.EQ.2) THEN 2880 2880 ! Tiedke 2881 2881 … … 2991 2991 ! . dtrconv,tr_seri) 2992 2992 ! ------------------------------------------------------------- 2993 IF (iflag_conv ==2) THEN2993 IF (iflag_conv.EQ.2) THEN 2994 2994 ! Tiedke 2995 2995 CALL trconvect(pplay,t_seri,pdtphys,pmfu,pmfd,pen_u,pde_u, & … … 3000 3000 ENDDO 3001 3001 3002 ELSE IF (iflag_conv >=3) THEN3002 ELSE IF (iflag_conv.GE.3) THEN 3003 3003 ! KE 3004 3004 print *,'JE: KE in phytracr_spl' … … 3164 3164 3165 3165 3166 IF (iflag_conv >=3) THEN3166 IF (iflag_conv.GE.3) THEN 3167 3167 IF (logitime) THEN 3168 3168 CALL SYSTEM_CLOCK(COUNT=clock_start) … … 3195 3195 ql_incl = ql_incloud_ref 3196 3196 ! choix du lessivage 3197 IF (iflag_lscav == 3 .OR. iflag_lscav ==4) THEN3197 IF (iflag_lscav .EQ. 3 .OR. iflag_lscav .EQ. 4) THEN 3198 3198 !IF (.false.) THEN ! test #DFB (Binta) sans lsc_scav_spl 3199 3199 print *,'JE iflag_lscav',iflag_lscav … … 3362 3362 CALL satellite_out_spla(jD_cur,jH_cur,pdtphys,rlat,rlon, & 3363 3363 masque_aqua_cur, masque_terra_cur ) 3364 IF (jH_cur-pdtphys/86400. <0.) THEN3364 IF (jH_cur-pdtphys/86400. .LT. 0.) THEN 3365 3365 !new utc day: put in 0 everything 3366 3366 !JE20150518<< … … 3470 3470 ENDDO 3471 3471 3472 IF (jH_cur+pdtphys/86400. >= 1.) THEN3472 IF (jH_cur+pdtphys/86400. .GE. 1.) THEN 3473 3473 ! print *,'last step of the day' 3474 3474 DO i=1,klon 3475 IF (masque_aqua(i) >0) THEN3475 IF (masque_aqua(i).GT. 0) THEN 3476 3476 aod550_aqua(i)=aod550_aqua(i)/masque_aqua(i) 3477 3477 aod670_aqua(i)=aod670_aqua(i)/masque_aqua(i) … … 3506 3506 aod865_dustsco_aqua(i)= -999. 3507 3507 ENDIF 3508 IF (masque_terra(i) >0) THEN3508 IF (masque_terra(i).GT. 0) THEN 3509 3509 aod550_terra(i)=aod550_terra(i)/masque_terra(i) 3510 3510 aod670_terra(i)=aod670_terra(i)/masque_terra(i) … … 3635 3635 fluxss(:)=0.0 3636 3636 DO i=1, klon 3637 IF (iregion_ind(i) >0) THEN ! LAND3637 IF (iregion_ind(i).GT.0) THEN ! LAND 3638 3638 ! SULFUR EMISSIONS 3639 3639 fluxh2sff(i)= (lmt_so2ff_l(i)+lmt_so2ff_h(i))*frach2sofso2* & … … 3656 3656 fluxff(i)=fluxbcff(i)+fluxomff(i) 3657 3657 ENDIF 3658 IF (iregion_bb(i) >0) THEN ! LAND3658 IF (iregion_bb(i).GT.0) THEN ! LAND 3659 3659 ! SULFUR EMISSIONS 3660 3660 fluxso2bb(i) =scale_param_bb(iregion_bb(i)) * fracso2emis * & … … 4515 4515 ENDIF 4516 4516 4517 IF (test_sca ==0 ) THEN4517 IF (test_sca .EQ. 0 ) THEN 4518 4518 ! READ file!! 4519 4519 call read_scalenc(filescaleparams,paramname_ind, & … … 4556 4556 4557 4557 jH_sca=jH_sca+pdtphys/(24.*3600.) 4558 IF (jH_sca >(sca_resol)/24.) THEN4558 IF (jH_sca.GT.(sca_resol)/24.) THEN 4559 4559 test_sca=0 4560 4560 jH_sca=jH_ini … … 4568 4568 USE mod_grid_phy_lmdz 4569 4569 USE mod_phys_lmdz_para 4570 USE lmdz_netcdf, ONLY:nf_open,nf_close,nf_inq_varid,nf_nowrite,nf_noerr,nf90_get_var4571 4570 IMPLICIT NONE 4571 4572 include "netcdf.inc" 4572 4573 4573 4574 CHARACTER*800 filescaleparams … … 4588 4589 !nci=NCOPN(trim(adjustl(filescaleparams)),NCNOWRIT,rcode) 4589 4590 ierr = NF_OPEN (trim(adjustl(filescaleparams)),NF_NOWRITE, nid) 4590 if (ierr ==NF_NOERR) THEN4591 if (ierr .EQ. NF_NOERR) THEN 4591 4592 debutread=step_sca 4592 4593 countread=1 … … 4597 4598 print *,varname 4598 4599 ierr = NF_INQ_VARID (nid,trim(adjustl(varname)), nvarid) 4599 ierr = nf90_get_var (nid, nvarid, auxreal, debutread, countread) 4600 IF (ierr /= NF_NOERR) THEN 4600 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debutread, & 4601 countread, auxreal) 4602 IF (ierr .NE. NF_NOERR) THEN 4601 4603 PRINT*, 'Pb de lecture pour modvalues' 4602 4604 print *,'JE scale_var, step_sca',trim(adjustl(varname)),step_sca -
LMDZ6/trunk/libf/phylmd/Dust/read_dust.F
r5075 r5084 3 3 USE mod_grid_phy_lmdz 4 4 USE mod_phys_lmdz_para 5 USE lmdz_netcdf, ONLY:nf90_get_var6 5 IMPLICIT NONE 7 6 c 8 7 INCLUDE "dimensions.h" 9 8 INCLUDE "paramet.h" 9 INCLUDE "netcdf.inc" 10 10 c 11 11 INTEGER step, nbjour … … 45 45 c 46 46 start(3)=step 47 48 status=nf90_get_var(ncid1,varid1,dust_nc_glo,start,count) 49 47 c 48 #ifdef NC_DOUBLE 49 ! status=NF_GET_VARA_DOUBLE(ncid1,varid1,start,count,dust_nc) 50 status=NF_GET_VARA_DOUBLE(ncid1,varid1,start,count,dust_nc_glo) 51 #else 52 ! status=NF_GET_VARA_REAL(ncid1,varid1,start,count,dust_nc) 53 status=NF_GET_VARA_REAL(ncid1,varid1,start,count,dust_nc_glo) 54 #endif 55 c 50 56 ! call correctbid(iim,jjp1,dust_nc) 51 57 call correctbid(nbp_lon,nbp_lat,dust_nc_glo) -
LMDZ6/trunk/libf/phylmd/Dust/read_surface.F90
r5075 r5084 10 10 USE mod_phys_lmdz_para 11 11 USE iophy 12 USE lmdz_netcdf, ONLY:nf_inq_varid,nf_noerr,nf90_get_var 12 ! USE netcdf 13 13 IMPLICIT NONE 14 14 15 INCLUDE "netcdf.inc" 15 16 INCLUDE "dimensions.h" 16 17 INCLUDE "paramet.h" … … 64 65 ! print *,'stat,i',status,i,outcycle,aux4s 65 66 ! print *,'ifclause',status.NE. NF_NOERR ,outcycle == .false. 66 IF ((.not.(status /=NF_NOERR) ).and.( .not. outcycle )) THEN67 IF ((.not.(status.NE. NF_NOERR) ).and.( .not. outcycle )) THEN 67 68 outcycle=.true. 68 69 latstr=aux4s … … 74 75 varid=NCVID(ncid,latstr,rcode) 75 76 76 status=nf90_get_var(ncid,varid,lats_glo,startj,endj) 77 #ifdef NC_DOUBLE 78 status=NF_GET_VARA_DOUBLE(ncid,varid,startj,endj,lats_glo) 79 #else 80 status=NF_GET_VARA_REAL(ncid,varid,startj,endj,lats_glo) 81 #endif 77 82 ! print *,latstr,varid,status,jjp1,rcode 78 83 ! IF (status .NE. NF_NOERR) print*,'NOOOOOOO' … … 108 113 ! Lecture 109 114 ! ----------------------- 110 status=nf90_get_var(ncid,varid,tmp_dyn_glo,start,count) 115 #ifdef NC_DOUBLE 116 status=NF_GET_VARA_DOUBLE(ncid,varid,start,count,tmp_dyn_glo) 117 #else 118 status=NF_GET_VARA_REAL(ncid,varid,start,count,tmp_dyn_glo) 119 #endif 111 120 112 121 ! call dump2d(iip1,jjp1,tmp_dyn,'tmp_dyn ') -
LMDZ6/trunk/libf/phylmd/Dust/read_vent.F
r5075 r5084 3 3 USE mod_grid_phy_lmdz 4 4 USE mod_phys_lmdz_para 5 USE lmdz_netcdf, ONLY: nf90_get_var6 5 ! USE write_field_phy 7 6 IMPLICIT NONE … … 9 8 c INCLUDE "dimphy.h" 10 9 INCLUDE "paramet.h" 10 INCLUDE "netcdf.inc" 11 11 c 12 12 INTEGER step, nbjour … … 51 51 c 52 52 start(3)=step 53 54 status=nf90_get_var(ncidu1,varidu1,u10m_nc_glo,start,count) 55 56 status=nf90_get_var(ncidv1,varidv1,v10m_nc_glo,start,count) 57 53 c 54 #ifdef NC_DOUBLE 55 ! status=NF_GET_VARA_DOUBLE(ncidu1,varidu1,start,count,u10m_nc) 56 status=NF_GET_VARA_DOUBLE(ncidu1,varidu1,start,count,u10m_nc_glo) 57 #else 58 ! status=NF_GET_VARA_REAL(ncidu1,varidu1,start,count,u10m_nc) 59 status=NF_GET_VARA_REAL(ncidu1,varidu1,start,count,u10m_nc_glo) 60 #endif 61 ! print *,status 62 c 63 #ifdef NC_DOUBLE 64 ! status=NF_GET_VARA_DOUBLE(ncidv1,varidv1,start,count,v10m_nc) 65 status=NF_GET_VARA_DOUBLE(ncidv1,varidv1,start,count,v10m_nc_glo) 66 #else 67 ! status=NF_GET_VARA_REAL(ncidv1,varidv1,start,count,v10m_nc) 68 status=NF_GET_VARA_REAL(ncidv1,varidv1,start,count,v10m_nc_glo) 69 #endif 70 c 58 71 59 72 ! print *,'beforebidcor u10m_nc', u10m_nc(1,jjp1) … … 118 131 do l=1,nl 119 132 do i=2,iim-1 120 if(abs(x(i,l)) >1.e10) then133 if(abs(x(i,l)).gt.1.e10) then 121 134 zz=0.5*(x(i-1,l)+x(i+1,l)) 122 135 c print*,'correction ',i,l,x(i,l),zz -
LMDZ6/trunk/libf/phylmd/StratAer/interp_sulf_input.F90
r5075 r5084 6 6 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 7 7 nf95_inq_varid, nf95_inquire_dimension, nf95_open 8 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite8 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 9 9 10 10 USE mod_grid_phy_lmdz -
LMDZ6/trunk/libf/phylmd/StratAer/stratH2O_methox.F90
r5075 r5084 8 8 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 9 9 nf95_inq_varid, nf95_inquire_dimension, nf95_open 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 12 12 USE mod_grid_phy_lmdz … … 79 79 ! 80 80 81 IF (debutphy .OR. mth_cur /=mth_pre) THEN81 IF (debutphy .OR. mth_cur .NE. mth_pre) THEN 82 82 83 83 !--preparation of global fields -
LMDZ6/trunk/libf/phylmd/condsurf.F90
r5075 r5084 7 7 USE indice_sol_mod 8 8 USE time_phylmdz_mod, ONLY: annee_ref 9 USE lmdz_netcdf, ONLY: nf90_get_var,nf_open,nf_inq_varid,nf_noerr,nf_close,nf_nowrite10 9 IMPLICIT NONE 11 10 … … 21 20 ! lmt_bils: bilan chaleur au sol (a utiliser pour "slab-ocean") 22 21 22 include "netcdf.inc" 23 23 INTEGER nid, nvarid 24 24 INTEGER debut(2) … … 110 110 END IF 111 111 PRINT *, 'debut,epais', debut, epais, 'jour,jourvrai', jour, jourvrai 112 ierr = nf90_get_var(nid, nvarid, lmt_bils_glo, debut, epais) 112 #ifdef NC_DOUBLE 113 ierr = nf_get_vara_double(nid, nvarid, debut, epais, lmt_bils_glo) 114 #else 115 ierr = nf_get_vara_real(nid, nvarid, debut, epais, lmt_bils_glo) 116 #endif 113 117 IF (ierr/=nf_noerr) THEN 114 118 CALL abort_physic('condsurf', 'Lecture echouee pour <BILS>', 1) -
LMDZ6/trunk/libf/phylmd/create_etat0_unstruct_mod.F90
r5075 r5084 23 23 SUBROUTINE init_create_etat0_unstruct 24 24 USE lmdz_xios 25 USE lmdz_netcdf, ONLY: NF90_NOWRITE,nf90_close,nf90_noerr,nf90_open25 USE netcdf 26 26 USE mod_phys_lmdz_para 27 27 IMPLICIT NONE … … 126 126 CALL xios_recv_field("qs",qsol_mpi) 127 127 CALL xios_recv_field("mask",zmasq_mpi) 128 IF (landice_opt <2) CALL xios_recv_field("landice",lic_mpi)128 IF (landice_opt .LT. 2) CALL xios_recv_field("landice",lic_mpi) 129 129 ENDIF 130 130 CALL scatter_omp(tsol_mpi,tsol) 131 131 CALL scatter_omp(qsol_mpi,qsol) 132 132 CALL scatter_omp(zmasq_mpi,zmasq) 133 IF (landice_opt <2) CALL scatter_omp(lic_mpi,lic)133 IF (landice_opt .LT. 2) CALL scatter_omp(lic_mpi,lic) 134 134 135 135 radsol(:) = 0.0 … … 143 143 144 144 pctsrf(:,:) = 0 145 IF (landice_opt <2) THEN145 IF (landice_opt .LT. 2) THEN 146 146 pctsrf(:,is_lic)=lic 147 147 WHERE(pctsrf(:,is_lic)<EPSFRA) pctsrf(:,is_lic)=0. … … 180 180 !--- The ocean and sea-ice fractions are not changed. 181 181 !--- This option is only available if landice_opt<2. 182 IF (landice_opt <2) THEN182 IF (landice_opt .LT. 2) THEN 183 183 no_ter_antartique=.FALSE. 184 184 CALL getin_p('no_ter_antartique',no_ter_antartique) -
LMDZ6/trunk/libf/phylmd/dyn1d/1DUTILS.h
r5075 r5084 673 673 USE logic_mod, ONLY: fxyhypb, ysinus 674 674 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, itau_dyn 675 USE lmdz_netcdf, ONLY:nf_open,nf_write,nf_noerr676 675 677 676 IMPLICIT NONE … … 683 682 include "dimensions.h" 684 683 !!#include "control.h" 684 include "netcdf.inc" 685 685 686 686 ! Arguments: … … 820 820 USE logic_mod, ONLY: fxyhypb, ysinus 821 821 USE temps_mod, ONLY: annee_ref,day_end,day_ref,itau_dyn,itaufin 822 USE lmdz_netcdf, ONLY:nf_open,nf_write,nf_noerr823 822 824 823 IMPLICIT NONE … … 830 829 include "dimensions.h" 831 830 !!#include "control.h" 831 include "netcdf.inc" 832 832 833 833 ! Arguments: -
LMDZ6/trunk/libf/phylmd/dyn1d/1D_decl_cases.h
r5075 r5084 1 INCLUDE "netcdf.inc" 1 2 2 3 ! Declarations specifiques au cas Toga -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_amma_read.F90
r5075 r5084 1 1 MODULE mod_1D_amma_read 2 USE lmdz_netcdf, ONLY: nf90_get_var,nf_open,nf_noerr,nf_open,nf_nowrite,& 3 nf_inq_dimid,nf_inq_dimlen,nf_strerror,nf_inq_varid 2 4 3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5 4 !Declarations specifiques au cas AMMA … … 7 6 ! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp) 8 7 integer nlev_amma, nt_amma 8 9 9 10 10 integer year_ini_amma, day_ini_amma, mth_ini_amma … … 59 59 implicit none 60 60 61 INCLUDE "netcdf.inc" 62 61 63 INTEGER nid,rid,ierr 62 64 … … 65 67 ierr = NF_OPEN(fich_amma,NF_NOWRITE,nid) 66 68 print*,'fich_amma,NF_NOWRITE,nid ',fich_amma,NF_NOWRITE,nid 67 if (ierr /=NF_NOERR) then69 if (ierr.NE.NF_NOERR) then 68 70 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 69 71 write(*,*) NF_STRERROR(ierr) … … 72 74 !....................................................................... 73 75 ierr=NF_INQ_DIMID(nid,'lev',rid) 74 IF (ierr /=NF_NOERR) THEN76 IF (ierr.NE.NF_NOERR) THEN 75 77 print*, 'Oh probleme lecture dimension zz' 76 78 ENDIF … … 81 83 print*,'nid,rid',nid,rid 82 84 nt_amma=0 83 IF (ierr /=NF_NOERR) THEN85 IF (ierr.NE.NF_NOERR) THEN 84 86 stop 'probleme lecture dimension sens' 85 87 ENDIF … … 170 172 171 173 174 END MODULE mod_1D_amma_read 172 175 !===================================================================== 173 176 subroutine read_amma(nid,nlevel,ntime & … … 177 180 !program reading forcings of the AMMA case study 178 181 implicit none 182 INCLUDE "netcdf.inc" 179 183 180 184 integer ntime,nlevel … … 264 268 ! call catchaxis(nid,ntime,nlevel,time,z,ierr) 265 269 266 ierr = nf90_get_var(nid,var3didin(1),zz) 270 #ifdef NC_DOUBLE 271 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(1),zz) 272 #else 273 ierr = NF_GET_VAR_REAL(nid,var3didin(1),zz) 274 #endif 267 275 if(ierr/=NF_NOERR) then 268 276 write(*,*) NF_STRERROR(ierr) … … 271 279 ! write(*,*)'lecture z ok',zz 272 280 273 ierr = nf90_get_var(nid,var3didin(2),temp) 281 #ifdef NC_DOUBLE 282 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(2),temp) 283 #else 284 ierr = NF_GET_VAR_REAL(nid,var3didin(2),temp) 285 #endif 274 286 if(ierr/=NF_NOERR) then 275 287 write(*,*) NF_STRERROR(ierr) … … 278 290 ! write(*,*)'lecture th ok',temp 279 291 280 ierr = nf90_get_var(nid,var3didin(3),qv) 292 #ifdef NC_DOUBLE 293 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(3),qv) 294 #else 295 ierr = NF_GET_VAR_REAL(nid,var3didin(3),qv) 296 #endif 281 297 if(ierr/=NF_NOERR) then 282 298 write(*,*) NF_STRERROR(ierr) … … 285 301 ! write(*,*)'lecture qv ok',qv 286 302 287 ierr = nf90_get_var(nid,var3didin(4),u) 303 #ifdef NC_DOUBLE 304 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(4),u) 305 #else 306 ierr = NF_GET_VAR_REAL(nid,var3didin(4),u) 307 #endif 288 308 if(ierr/=NF_NOERR) then 289 309 write(*,*) NF_STRERROR(ierr) … … 292 312 ! write(*,*)'lecture u ok',u 293 313 294 ierr = nf90_get_var(nid,var3didin(5),v) 314 #ifdef NC_DOUBLE 315 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(5),v) 316 #else 317 ierr = NF_GET_VAR_REAL(nid,var3didin(5),v) 318 #endif 295 319 if(ierr/=NF_NOERR) then 296 320 write(*,*) NF_STRERROR(ierr) … … 299 323 ! write(*,*)'lecture v ok',v 300 324 301 ierr = nf90_get_var(nid,var3didin(6),dw) 325 #ifdef NC_DOUBLE 326 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(6),dw) 327 #else 328 ierr = NF_GET_VAR_REAL(nid,var3didin(6),dw) 329 #endif 302 330 if(ierr/=NF_NOERR) then 303 331 write(*,*) NF_STRERROR(ierr) … … 306 334 ! write(*,*)'lecture w ok',dw 307 335 308 ierr = nf90_get_var(nid,var3didin(7),dt) 336 #ifdef NC_DOUBLE 337 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(7),dt) 338 #else 339 ierr = NF_GET_VAR_REAL(nid,var3didin(7),dt) 340 #endif 309 341 if(ierr/=NF_NOERR) then 310 342 write(*,*) NF_STRERROR(ierr) … … 313 345 ! write(*,*)'lecture dt ok',dt 314 346 315 ierr = nf90_get_var(nid,var3didin(8),dq) 347 #ifdef NC_DOUBLE 348 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(8),dq) 349 #else 350 ierr = NF_GET_VAR_REAL(nid,var3didin(8),dq) 351 #endif 316 352 if(ierr/=NF_NOERR) then 317 353 write(*,*) NF_STRERROR(ierr) … … 320 356 ! write(*,*)'lecture dq ok',dq 321 357 322 ierr = nf90_get_var(nid,var3didin(9),sens) 358 #ifdef NC_DOUBLE 359 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(9),sens) 360 #else 361 ierr = NF_GET_VAR_REAL(nid,var3didin(9),sens) 362 #endif 323 363 if(ierr/=NF_NOERR) then 324 364 write(*,*) NF_STRERROR(ierr) … … 327 367 ! write(*,*)'lecture sens ok',sens 328 368 329 ierr = nf90_get_var(nid,var3didin(10),flat) 369 #ifdef NC_DOUBLE 370 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(10),flat) 371 #else 372 ierr = NF_GET_VAR_REAL(nid,var3didin(10),flat) 373 #endif 330 374 if(ierr/=NF_NOERR) then 331 375 write(*,*) NF_STRERROR(ierr) … … 334 378 ! write(*,*)'lecture flat ok',flat 335 379 336 ierr = nf90_get_var(nid,var3didin(11),pp) 380 #ifdef NC_DOUBLE 381 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(11),pp) 382 #else 383 ierr = NF_GET_VAR_REAL(nid,var3didin(11),pp) 384 #endif 337 385 if(ierr/=NF_NOERR) then 338 386 write(*,*) NF_STRERROR(ierr) … … 381 429 382 430 383 if (forcing_type ==6) then431 if (forcing_type.eq.6) then 384 432 ! Check that initial day of the simulation consistent with AMMA case: 385 if (annee_ref /=2006) then433 if (annee_ref.ne.2006) then 386 434 print*,'Pour AMMA, annee_ref doit etre 2006' 387 435 print*,'Changer annee_ref dans run.def' 388 436 stop 389 437 endif 390 if (annee_ref ==2006 .and. day1<day_ini_amma) then391 print*,'AMMA a d �but�le 10 juillet 2006',day1,day_ini_amma438 if (annee_ref.eq.2006 .and. day1.lt.day_ini_amma) then 439 print*,'AMMA a débuté le 10 juillet 2006',day1,day_ini_amma 392 440 print*,'Changer dayref dans run.def' 393 441 stop 394 442 endif 395 if (annee_ref ==2006 .and. day1>day_ini_amma+1) then443 if (annee_ref.eq.2006 .and. day1.gt.day_ini_amma+1) then 396 444 print*,'AMMA a fini le 11 juillet' 397 445 print*,'Changer dayref ou nday dans run.def' … … 416 464 417 465 it_amma1=INT(timeit/dt_amma)+1 418 IF (it_amma1 ==nt_amma) THEN466 IF (it_amma1 .EQ. nt_amma) THEN 419 467 it_amma2=it_amma1 420 468 ELSE … … 424 472 time_amma2=(it_amma2-1)*dt_amma 425 473 426 if (it_amma1 >nt_amma) then474 if (it_amma1 .gt. nt_amma) then 427 475 write(*,*) 'PB-stop: day, it_amma1, it_amma2, timeit: ' & 428 476 & ,day,day_ini_amma,it_amma1,it_amma2,timeit/86400. … … 431 479 432 480 ! time interpolation: 433 IF (it_amma1 ==it_amma2) THEN481 IF (it_amma1 .EQ. it_amma2) THEN 434 482 frac=0. 435 483 ELSE … … 455 503 END 456 504 457 END MODULE mod_1D_amma_read -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read.F90
r5075 r5084 1 ! 2 ! $Id$ 3 ! 1 4 MODULE mod_1D_cases_read 2 USE lmdz_netcdf, ONLY: nf_noerr,nf_strerror,nf_inq_varid,nf_inq_dimlen,nf_inq_dimid,&3 nf_nowrite,nf_open,nf90_get_var4 5 5 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 7 !Declarations specifiques au cas standard 7 8 character*80 :: fich_cas 8 ! Discr?tisation 9 ! Discr?tisation 9 10 integer nlev_cas, nt_cas 10 11 … … 56 57 real, allocatable:: q_prof_cas(:) 57 58 real, allocatable:: u_prof_cas(:) 58 real, allocatable:: v_prof_cas(:) 59 real, allocatable:: v_prof_cas(:) 59 60 60 61 real, allocatable:: vitw_prof_cas(:) … … 81 82 82 83 real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 83 84 84 85 85 86 … … 87 88 88 89 SUBROUTINE read_1D_cas 90 implicit none 91 92 INCLUDE "netcdf.inc" 89 93 90 94 INTEGER nid,rid,ierr … … 95 99 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 96 100 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 97 if (ierr /=NF_NOERR) then101 if (ierr.NE.NF_NOERR) then 98 102 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 99 103 write(*,*) NF_STRERROR(ierr) … … 102 106 !....................................................................... 103 107 ierr=NF_INQ_DIMID(nid,'lat',rid) 104 IF (ierr /=NF_NOERR) THEN108 IF (ierr.NE.NF_NOERR) THEN 105 109 print*, 'Oh probleme lecture dimension lat' 106 110 ENDIF … … 109 113 !....................................................................... 110 114 ierr=NF_INQ_DIMID(nid,'lon',rid) 111 IF (ierr /=NF_NOERR) THEN115 IF (ierr.NE.NF_NOERR) THEN 112 116 print*, 'Oh probleme lecture dimension lon' 113 117 ENDIF … … 116 120 !....................................................................... 117 121 ierr=NF_INQ_DIMID(nid,'lev',rid) 118 IF (ierr /=NF_NOERR) THEN122 IF (ierr.NE.NF_NOERR) THEN 119 123 print*, 'Oh probleme lecture dimension zz' 120 124 ENDIF … … 125 129 print*,'nid,rid',nid,rid 126 130 nt_cas=0 127 IF (ierr /=NF_NOERR) THEN131 IF (ierr.NE.NF_NOERR) THEN 128 132 stop 'probleme lecture dimension sens' 129 133 ENDIF … … 133 137 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 134 138 !profils moyens: 135 allocate(plev_cas(nlev_cas,nt_cas)) 139 allocate(plev_cas(nlev_cas,nt_cas)) 136 140 allocate(z_cas(nlev_cas,nt_cas)) 137 141 allocate(t_cas(nlev_cas,nt_cas),q_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas)) … … 200 204 !profils environnementaux: 201 205 deallocate(plev_cas) 202 206 203 207 deallocate(z_cas) 204 208 deallocate(t_cas,q_cas,rh_cas) … … 206 210 deallocate(u_cas) 207 211 deallocate(v_cas) 208 212 209 213 !forcing 210 214 deallocate(ht_cas,vt_cas,dt_cas,dtrad_cas) … … 253 257 END SUBROUTINE deallocate_1D_cases 254 258 255 !===================================================================== 259 260 END MODULE mod_1D_cases_read 261 !===================================================================== 256 262 subroutine read_cas(nid,nlevel,ntime & 257 263 & ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & … … 260 266 261 267 !program reading forcing of the case study 268 implicit none 269 INCLUDE "netcdf.inc" 262 270 263 271 integer ntime,nlevel … … 288 296 integer var3didin(nbvar3d) 289 297 290 ierr=NF_INQ_VARID(nid,"zz",var3didin(1)) 298 ierr=NF_INQ_VARID(nid,"zz",var3didin(1)) 291 299 if(ierr/=NF_NOERR) then 292 300 write(*,*) NF_STRERROR(ierr) 293 301 stop 'lev' 294 302 endif 295 296 ierr=NF_INQ_VARID(nid,"pp",var3didin(2)) 303 304 ierr=NF_INQ_VARID(nid,"pp",var3didin(2)) 297 305 if(ierr/=NF_NOERR) then 298 306 write(*,*) NF_STRERROR(ierr) … … 421 429 stop 'advq' 422 430 endif 423 431 424 432 ierr=NF_INQ_VARID(nid,"hq",var3didin(23)) 425 433 if(ierr/=NF_NOERR) then … … 457 465 stop 'advr' 458 466 endif 459 467 460 468 ierr=NF_INQ_VARID(nid,"hr",var3didin(29)) 461 469 if(ierr/=NF_NOERR) then … … 523 531 stop 'q2' 524 532 endif 525 526 ierr = nf90_get_var(nid,var3didin(1),zz) 533 534 #ifdef NC_DOUBLE 535 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(1),zz) 536 #else 537 ierr = NF_GET_VAR_REAL(nid,var3didin(1),zz) 538 #endif 527 539 if(ierr/=NF_NOERR) then 528 540 write(*,*) NF_STRERROR(ierr) … … 531 543 ! write(*,*)'lecture z ok',zz 532 544 533 ierr = nf90_get_var(nid,var3didin(2),pp) 545 #ifdef NC_DOUBLE 546 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(2),pp) 547 #else 548 ierr = NF_GET_VAR_REAL(nid,var3didin(2),pp) 549 #endif 534 550 if(ierr/=NF_NOERR) then 535 551 write(*,*) NF_STRERROR(ierr) … … 539 555 540 556 541 ierr = nf90_get_var(nid,var3didin(3),temp) 557 #ifdef NC_DOUBLE 558 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(3),temp) 559 #else 560 ierr = NF_GET_VAR_REAL(nid,var3didin(3),temp) 561 #endif 542 562 if(ierr/=NF_NOERR) then 543 563 write(*,*) NF_STRERROR(ierr) … … 546 566 ! write(*,*)'lecture T ok',temp 547 567 548 ierr = nf90_get_var(nid,var3didin(4),qv) 568 #ifdef NC_DOUBLE 569 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(4),qv) 570 #else 571 ierr = NF_GET_VAR_REAL(nid,var3didin(4),qv) 572 #endif 549 573 if(ierr/=NF_NOERR) then 550 574 write(*,*) NF_STRERROR(ierr) … … 552 576 endif 553 577 ! write(*,*)'lecture qv ok',qv 554 555 ierr = nf90_get_var(nid,var3didin(5),rh) 578 579 #ifdef NC_DOUBLE 580 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(5),rh) 581 #else 582 ierr = NF_GET_VAR_REAL(nid,var3didin(5),rh) 583 #endif 556 584 if(ierr/=NF_NOERR) then 557 585 write(*,*) NF_STRERROR(ierr) … … 560 588 ! write(*,*)'lecture rh ok',rh 561 589 562 ierr = nf90_get_var(nid,var3didin(6),theta) 590 #ifdef NC_DOUBLE 591 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(6),theta) 592 #else 593 ierr = NF_GET_VAR_REAL(nid,var3didin(6),theta) 594 #endif 563 595 if(ierr/=NF_NOERR) then 564 596 write(*,*) NF_STRERROR(ierr) … … 567 599 ! write(*,*)'lecture theta ok',theta 568 600 569 ierr = nf90_get_var(nid,var3didin(7),rv) 601 #ifdef NC_DOUBLE 602 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(7),rv) 603 #else 604 ierr = NF_GET_VAR_REAL(nid,var3didin(7),rv) 605 #endif 570 606 if(ierr/=NF_NOERR) then 571 607 write(*,*) NF_STRERROR(ierr) … … 574 610 ! write(*,*)'lecture rv ok',rv 575 611 576 ierr = nf90_get_var(nid,var3didin(8),u) 612 #ifdef NC_DOUBLE 613 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(8),u) 614 #else 615 ierr = NF_GET_VAR_REAL(nid,var3didin(8),u) 616 #endif 577 617 if(ierr/=NF_NOERR) then 578 618 write(*,*) NF_STRERROR(ierr) … … 581 621 ! write(*,*)'lecture u ok',u 582 622 583 ierr = nf90_get_var(nid,var3didin(9),v) 623 #ifdef NC_DOUBLE 624 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(9),v) 625 #else 626 ierr = NF_GET_VAR_REAL(nid,var3didin(9),v) 627 #endif 584 628 if(ierr/=NF_NOERR) then 585 629 write(*,*) NF_STRERROR(ierr) … … 588 632 ! write(*,*)'lecture v ok',v 589 633 590 ierr = nf90_get_var(nid,var3didin(10),ug) 634 #ifdef NC_DOUBLE 635 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(10),ug) 636 #else 637 ierr = NF_GET_VAR_REAL(nid,var3didin(10),ug) 638 #endif 591 639 if(ierr/=NF_NOERR) then 592 640 write(*,*) NF_STRERROR(ierr) … … 595 643 ! write(*,*)'lecture ug ok',ug 596 644 597 ierr = nf90_get_var(nid,var3didin(11),vg) 645 #ifdef NC_DOUBLE 646 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(11),vg) 647 #else 648 ierr = NF_GET_VAR_REAL(nid,var3didin(11),vg) 649 #endif 598 650 if(ierr/=NF_NOERR) then 599 651 write(*,*) NF_STRERROR(ierr) … … 602 654 ! write(*,*)'lecture vg ok',vg 603 655 604 ierr = nf90_get_var(nid,var3didin(12),w) 656 #ifdef NC_DOUBLE 657 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(12),w) 658 #else 659 ierr = NF_GET_VAR_REAL(nid,var3didin(12),w) 660 #endif 605 661 if(ierr/=NF_NOERR) then 606 662 write(*,*) NF_STRERROR(ierr) … … 609 665 ! write(*,*)'lecture w ok',w 610 666 611 ierr = nf90_get_var(nid,var3didin(13),du) 667 #ifdef NC_DOUBLE 668 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(13),du) 669 #else 670 ierr = NF_GET_VAR_REAL(nid,var3didin(13),du) 671 #endif 612 672 if(ierr/=NF_NOERR) then 613 673 write(*,*) NF_STRERROR(ierr) … … 616 676 ! write(*,*)'lecture du ok',du 617 677 618 ierr = nf90_get_var(nid,var3didin(14),hu) 678 #ifdef NC_DOUBLE 679 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(14),hu) 680 #else 681 ierr = NF_GET_VAR_REAL(nid,var3didin(14),hu) 682 #endif 619 683 if(ierr/=NF_NOERR) then 620 684 write(*,*) NF_STRERROR(ierr) … … 623 687 ! write(*,*)'lecture hu ok',hu 624 688 625 ierr = nf90_get_var(nid,var3didin(15),vu) 689 #ifdef NC_DOUBLE 690 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(15),vu) 691 #else 692 ierr = NF_GET_VAR_REAL(nid,var3didin(15),vu) 693 #endif 626 694 if(ierr/=NF_NOERR) then 627 695 write(*,*) NF_STRERROR(ierr) … … 630 698 ! write(*,*)'lecture vu ok',vu 631 699 632 ierr = nf90_get_var(nid,var3didin(16),dv) 700 #ifdef NC_DOUBLE 701 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(16),dv) 702 #else 703 ierr = NF_GET_VAR_REAL(nid,var3didin(16),dv) 704 #endif 633 705 if(ierr/=NF_NOERR) then 634 706 write(*,*) NF_STRERROR(ierr) … … 637 709 ! write(*,*)'lecture dv ok',dv 638 710 639 ierr = nf90_get_var(nid,var3didin(17),hv) 711 #ifdef NC_DOUBLE 712 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(17),hv) 713 #else 714 ierr = NF_GET_VAR_REAL(nid,var3didin(17),hv) 715 #endif 640 716 if(ierr/=NF_NOERR) then 641 717 write(*,*) NF_STRERROR(ierr) … … 644 720 ! write(*,*)'lecture hv ok',hv 645 721 646 ierr = nf90_get_var(nid,var3didin(18),vv) 722 #ifdef NC_DOUBLE 723 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(18),vv) 724 #else 725 ierr = NF_GET_VAR_REAL(nid,var3didin(18),vv) 726 #endif 647 727 if(ierr/=NF_NOERR) then 648 728 write(*,*) NF_STRERROR(ierr) … … 651 731 ! write(*,*)'lecture vv ok',vv 652 732 653 ierr = nf90_get_var(nid,var3didin(19),dt) 733 #ifdef NC_DOUBLE 734 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(19),dt) 735 #else 736 ierr = NF_GET_VAR_REAL(nid,var3didin(19),dt) 737 #endif 654 738 if(ierr/=NF_NOERR) then 655 739 write(*,*) NF_STRERROR(ierr) … … 658 742 ! write(*,*)'lecture dt ok',dt 659 743 660 ierr = nf90_get_var(nid,var3didin(20),ht) 744 #ifdef NC_DOUBLE 745 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(20),ht) 746 #else 747 ierr = NF_GET_VAR_REAL(nid,var3didin(20),ht) 748 #endif 661 749 if(ierr/=NF_NOERR) then 662 750 write(*,*) NF_STRERROR(ierr) … … 665 753 ! write(*,*)'lecture ht ok',ht 666 754 667 ierr = nf90_get_var(nid,var3didin(21),vt) 755 #ifdef NC_DOUBLE 756 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(21),vt) 757 #else 758 ierr = NF_GET_VAR_REAL(nid,var3didin(21),vt) 759 #endif 668 760 if(ierr/=NF_NOERR) then 669 761 write(*,*) NF_STRERROR(ierr) … … 672 764 ! write(*,*)'lecture vt ok',vt 673 765 674 ierr = nf90_get_var(nid,var3didin(22),dq) 766 #ifdef NC_DOUBLE 767 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(22),dq) 768 #else 769 ierr = NF_GET_VAR_REAL(nid,var3didin(22),dq) 770 #endif 675 771 if(ierr/=NF_NOERR) then 676 772 write(*,*) NF_STRERROR(ierr) … … 679 775 ! write(*,*)'lecture dq ok',dq 680 776 681 ierr = nf90_get_var(nid,var3didin(23),hq) 777 #ifdef NC_DOUBLE 778 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(23),hq) 779 #else 780 ierr = NF_GET_VAR_REAL(nid,var3didin(23),hq) 781 #endif 682 782 if(ierr/=NF_NOERR) then 683 783 write(*,*) NF_STRERROR(ierr) … … 686 786 ! write(*,*)'lecture hq ok',hq 687 787 688 ierr = nf90_get_var(nid,var3didin(24),vq) 788 #ifdef NC_DOUBLE 789 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(24),vq) 790 #else 791 ierr = NF_GET_VAR_REAL(nid,var3didin(24),vq) 792 #endif 689 793 if(ierr/=NF_NOERR) then 690 794 write(*,*) NF_STRERROR(ierr) … … 693 797 ! write(*,*)'lecture vq ok',vq 694 798 695 ierr = nf90_get_var(nid,var3didin(25),dth) 799 #ifdef NC_DOUBLE 800 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(25),dth) 801 #else 802 ierr = NF_GET_VAR_REAL(nid,var3didin(25),dth) 803 #endif 696 804 if(ierr/=NF_NOERR) then 697 805 write(*,*) NF_STRERROR(ierr) … … 700 808 ! write(*,*)'lecture dth ok',dth 701 809 702 ierr = nf90_get_var(nid,var3didin(26),hth) 810 #ifdef NC_DOUBLE 811 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(26),hth) 812 #else 813 ierr = NF_GET_VAR_REAL(nid,var3didin(26),hth) 814 #endif 703 815 if(ierr/=NF_NOERR) then 704 816 write(*,*) NF_STRERROR(ierr) … … 707 819 ! write(*,*)'lecture hth ok',hth 708 820 709 ierr = nf90_get_var(nid,var3didin(27),vth) 821 #ifdef NC_DOUBLE 822 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(27),vth) 823 #else 824 ierr = NF_GET_VAR_REAL(nid,var3didin(27),vth) 825 #endif 710 826 if(ierr/=NF_NOERR) then 711 827 write(*,*) NF_STRERROR(ierr) … … 714 830 ! write(*,*)'lecture vth ok',vth 715 831 716 ierr = nf90_get_var(nid,var3didin(28),dr) 832 #ifdef NC_DOUBLE 833 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(28),dr) 834 #else 835 ierr = NF_GET_VAR_REAL(nid,var3didin(28),dr) 836 #endif 717 837 if(ierr/=NF_NOERR) then 718 838 write(*,*) NF_STRERROR(ierr) … … 721 841 ! write(*,*)'lecture dr ok',dr 722 842 723 ierr = nf90_get_var(nid,var3didin(29),hr) 843 #ifdef NC_DOUBLE 844 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(29),hr) 845 #else 846 ierr = NF_GET_VAR_REAL(nid,var3didin(29),hr) 847 #endif 724 848 if(ierr/=NF_NOERR) then 725 849 write(*,*) NF_STRERROR(ierr) … … 728 852 ! write(*,*)'lecture hr ok',hr 729 853 730 ierr = nf90_get_var(nid,var3didin(30),vr) 854 #ifdef NC_DOUBLE 855 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(30),vr) 856 #else 857 ierr = NF_GET_VAR_REAL(nid,var3didin(30),vr) 858 #endif 731 859 if(ierr/=NF_NOERR) then 732 860 write(*,*) NF_STRERROR(ierr) … … 735 863 ! write(*,*)'lecture vr ok',vr 736 864 737 ierr = nf90_get_var(nid,var3didin(31),dtrad) 865 #ifdef NC_DOUBLE 866 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(31),dtrad) 867 #else 868 ierr = NF_GET_VAR_REAL(nid,var3didin(31),dtrad) 869 #endif 738 870 if(ierr/=NF_NOERR) then 739 871 write(*,*) NF_STRERROR(ierr) … … 742 874 ! write(*,*)'lecture dtrad ok',dtrad 743 875 744 ierr = nf90_get_var(nid,var3didin(32),sens) 876 #ifdef NC_DOUBLE 877 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(32),sens) 878 #else 879 ierr = NF_GET_VAR_REAL(nid,var3didin(32),sens) 880 #endif 745 881 if(ierr/=NF_NOERR) then 746 882 write(*,*) NF_STRERROR(ierr) … … 749 885 ! write(*,*)'lecture sens ok',sens 750 886 751 ierr = nf90_get_var(nid,var3didin(33),flat) 887 #ifdef NC_DOUBLE 888 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(33),flat) 889 #else 890 ierr = NF_GET_VAR_REAL(nid,var3didin(33),flat) 891 #endif 752 892 if(ierr/=NF_NOERR) then 753 893 write(*,*) NF_STRERROR(ierr) … … 756 896 ! write(*,*)'lecture flat ok',flat 757 897 758 ierr = nf90_get_var(nid,var3didin(34),ts) 898 #ifdef NC_DOUBLE 899 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(34),ts) 900 #else 901 ierr = NF_GET_VAR_REAL(nid,var3didin(34),ts) 902 #endif 759 903 if(ierr/=NF_NOERR) then 760 904 write(*,*) NF_STRERROR(ierr) … … 763 907 ! write(*,*)'lecture ts ok',ts 764 908 765 ierr = nf90_get_var(nid,var3didin(35),ustar) 909 #ifdef NC_DOUBLE 910 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(35),ustar) 911 #else 912 ierr = NF_GET_VAR_REAL(nid,var3didin(35),ustar) 913 #endif 766 914 if(ierr/=NF_NOERR) then 767 915 write(*,*) NF_STRERROR(ierr) … … 770 918 ! write(*,*)'lecture ustar ok',ustar 771 919 772 ierr = nf90_get_var(nid,var3didin(36),uw) 920 #ifdef NC_DOUBLE 921 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(36),uw) 922 #else 923 ierr = NF_GET_VAR_REAL(nid,var3didin(36),uw) 924 #endif 773 925 if(ierr/=NF_NOERR) then 774 926 write(*,*) NF_STRERROR(ierr) … … 777 929 ! write(*,*)'lecture uw ok',uw 778 930 779 ierr = nf90_get_var(nid,var3didin(37),vw) 931 #ifdef NC_DOUBLE 932 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(37),vw) 933 #else 934 ierr = NF_GET_VAR_REAL(nid,var3didin(37),vw) 935 #endif 780 936 if(ierr/=NF_NOERR) then 781 937 write(*,*) NF_STRERROR(ierr) … … 784 940 ! write(*,*)'lecture vw ok',vw 785 941 786 ierr = nf90_get_var(nid,var3didin(38),q1) 942 #ifdef NC_DOUBLE 943 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(38),q1) 944 #else 945 ierr = NF_GET_VAR_REAL(nid,var3didin(38),q1) 946 #endif 787 947 if(ierr/=NF_NOERR) then 788 948 write(*,*) NF_STRERROR(ierr) … … 791 951 ! write(*,*)'lecture q1 ok',q1 792 952 793 ierr = nf90_get_var(nid,var3didin(39),q2) 953 #ifdef NC_DOUBLE 954 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(39),q2) 955 #else 956 ierr = NF_GET_VAR_REAL(nid,var3didin(39),q2) 957 #endif 794 958 if(ierr/=NF_NOERR) then 795 959 write(*,*) NF_STRERROR(ierr) … … 799 963 800 964 801 return 965 return 802 966 end subroutine read_cas 803 967 !====================================================================== … … 817 981 & ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas & 818 982 & ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas) 819 983 820 984 821 985 implicit none … … 826 990 ! day: current julian day (e.g. 717538.2) 827 991 ! day1: first day of the simulation 828 ! nt_cas: total nb of data in the forcing 992 ! nt_cas: total nb of data in the forcing 829 993 ! pdt_cas: total time interval (in sec) between 2 forcing data 830 994 !--------------------------------------------------------------------------------------- … … 917 1081 918 1082 it_cas1=INT(timeit/pdt_cas)+1 919 IF (it_cas1 ==nt_cas) THEN920 it_cas2=it_cas1 1083 IF (it_cas1 .EQ. nt_cas) THEN 1084 it_cas2=it_cas1 921 1085 ELSE 922 1086 it_cas2=it_cas1 + 1 … … 929 1093 print *,'time_cas2=',time_cas2 930 1094 931 if (it_cas1 >nt_cas) then1095 if (it_cas1 .gt. nt_cas) then 932 1096 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 933 1097 & ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 936 1100 937 1101 ! time interpolation: 938 IF (it_cas1 ==it_cas2) THEN1102 IF (it_cas1 .EQ. it_cas2) THEN 939 1103 frac=0. 940 1104 ELSE … … 944 1108 945 1109 lat_prof_cas = lat_cas(it_cas2) & 946 & -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 1110 & -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 947 1111 sens_prof_cas = sens_cas(it_cas2) & 948 1112 & -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) … … 1009 1173 1010 1174 !********************************************************************************************** 1011 END MODULE mod_1D_cases_read -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read2.F90
r5075 r5084 3 3 ! 4 4 MODULE mod_1D_cases_read2 5 USE lmdz_netcdf, ONLY: nf90_get_var,nf_noerr,nf_inq_varid,nf_inq_dimlen,nf_strerror,nf_open,& 6 nf_nowrite,nf_inq_dimid 5 7 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8 7 !Declarations specifiques au cas standard … … 82 81 implicit none 83 82 83 INCLUDE "netcdf.inc" 84 84 85 INTEGER nid,rid,ierr 85 86 INTEGER ii,jj … … 89 90 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 90 91 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 91 if (ierr /=NF_NOERR) then92 if (ierr.NE.NF_NOERR) then 92 93 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 93 94 write(*,*) NF_STRERROR(ierr) … … 96 97 !....................................................................... 97 98 ierr=NF_INQ_DIMID(nid,'lat',rid) 98 IF (ierr /=NF_NOERR) THEN99 IF (ierr.NE.NF_NOERR) THEN 99 100 print*, 'Oh probleme lecture dimension lat' 100 101 ENDIF … … 103 104 !....................................................................... 104 105 ierr=NF_INQ_DIMID(nid,'lon',rid) 105 IF (ierr /=NF_NOERR) THEN106 IF (ierr.NE.NF_NOERR) THEN 106 107 print*, 'Oh probleme lecture dimension lon' 107 108 ENDIF … … 110 111 !....................................................................... 111 112 ierr=NF_INQ_DIMID(nid,'lev',rid) 112 IF (ierr /=NF_NOERR) THEN113 IF (ierr.NE.NF_NOERR) THEN 113 114 print*, 'Oh probleme lecture dimension zz' 114 115 ENDIF … … 119 120 print*,'nid,rid',nid,rid 120 121 nt_cas=0 121 IF (ierr /=NF_NOERR) THEN122 IF (ierr.NE.NF_NOERR) THEN 122 123 stop 'probleme lecture dimension sens' 123 124 ENDIF … … 191 192 implicit none 192 193 194 INCLUDE "netcdf.inc" 195 193 196 INTEGER nid,rid,ierr 194 197 INTEGER ii,jj … … 198 201 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 199 202 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 200 if (ierr /=NF_NOERR) then203 if (ierr.NE.NF_NOERR) then 201 204 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 202 205 write(*,*) NF_STRERROR(ierr) … … 205 208 !....................................................................... 206 209 ierr=NF_INQ_DIMID(nid,'lat',rid) 207 IF (ierr /=NF_NOERR) THEN210 IF (ierr.NE.NF_NOERR) THEN 208 211 print*, 'Oh probleme lecture dimension lat' 209 212 ENDIF … … 212 215 !....................................................................... 213 216 ierr=NF_INQ_DIMID(nid,'lon',rid) 214 IF (ierr /=NF_NOERR) THEN217 IF (ierr.NE.NF_NOERR) THEN 215 218 print*, 'Oh probleme lecture dimension lon' 216 219 ENDIF … … 219 222 !....................................................................... 220 223 ierr=NF_INQ_DIMID(nid,'nlev',rid) 221 IF (ierr /=NF_NOERR) THEN224 IF (ierr.NE.NF_NOERR) THEN 222 225 print*, 'Oh probleme lecture dimension nlev' 223 226 ENDIF … … 227 230 ierr=NF_INQ_DIMID(nid,'time',rid) 228 231 nt_cas=0 229 IF (ierr /=NF_NOERR) THEN232 IF (ierr.NE.NF_NOERR) THEN 230 233 stop 'Oh probleme lecture dimension time' 231 234 ENDIF … … 314 317 !********************************************************************************************** 315 318 SUBROUTINE old_read_SCM_cas 319 use netcdf, only: nf90_get_var 316 320 implicit none 317 321 322 INCLUDE "netcdf.inc" 318 323 INCLUDE "date_cas.h" 319 324 … … 326 331 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 327 332 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 328 if (ierr /=NF_NOERR) then333 if (ierr.NE.NF_NOERR) then 329 334 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 330 335 write(*,*) NF_STRERROR(ierr) … … 333 338 !....................................................................... 334 339 ierr=NF_INQ_DIMID(nid,'lat',rid) 335 IF (ierr /=NF_NOERR) THEN340 IF (ierr.NE.NF_NOERR) THEN 336 341 print*, 'Oh probleme lecture dimension lat' 337 342 ENDIF … … 340 345 !....................................................................... 341 346 ierr=NF_INQ_DIMID(nid,'lon',rid) 342 IF (ierr /=NF_NOERR) THEN347 IF (ierr.NE.NF_NOERR) THEN 343 348 print*, 'Oh probleme lecture dimension lon' 344 349 ENDIF … … 347 352 !....................................................................... 348 353 ierr=NF_INQ_DIMID(nid,'lev',rid) 349 IF (ierr /=NF_NOERR) THEN354 IF (ierr.NE.NF_NOERR) THEN 350 355 print*, 'Oh probleme lecture dimension nlev' 351 356 ENDIF … … 359 364 ierr=NF_INQ_DIMID(nid,'time',rid) 360 365 nt_cas=0 361 IF (ierr /=NF_NOERR) THEN366 IF (ierr.NE.NF_NOERR) THEN 362 367 stop 'Oh probleme lecture dimension time' 363 368 ENDIF … … 528 533 529 534 535 END MODULE mod_1D_cases_read2 530 536 !===================================================================== 531 537 subroutine read_cas2(nid,nlevel,ntime & … … 535 541 536 542 !program reading forcing of the case study 543 use netcdf, only: nf90_get_var 537 544 implicit none 545 INCLUDE "netcdf.inc" 538 546 539 547 integer ntime,nlevel … … 581 589 do i=1,nbvar3d 582 590 print *,'Dans read_cas2, on va lire ',var3didin(i),name_var(i) 583 if(i <=35) then591 if(i.LE.35) then 584 592 ierr = NF90_GET_VAR(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime]) 585 593 print *,'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i) … … 650 658 651 659 !program reading forcing of the case study 660 use netcdf, only: nf90_get_var 652 661 implicit none 662 INCLUDE "netcdf.inc" 653 663 654 664 integer ntime,nlevel … … 701 711 else 702 712 !----------------------------------------------------------------------- 703 if(i <=4) then ! Lecture des coord pression en (nlevelp1,lat,lon)713 if(i.LE.4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 704 714 ierr = NF90_GET_VAR(nid,var3didin(i),apbp, count = [1, 1, nlevel + 1]) 705 715 print *,'read2_cas(apbp), on a lu ',i,name_var(i) … … 709 719 endif 710 720 !----------------------------------------------------------------------- 711 else if(i >4.and.i<=45) then ! Lecture des variables en (time,nlevel,lat,lon)721 else if(i.gt.4.and.i.LE.45) then ! Lecture des variables en (time,nlevel,lat,lon) 712 722 ierr = NF90_GET_VAR(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime]) 713 723 print *,'read2_cas(resul), on a lu ',i,name_var(i) … … 717 727 endif 718 728 !----------------------------------------------------------------------- 719 else if (i >45.and.i<=51) then ! Lecture des variables en (time,lat,lon)729 else if (i.gt.45.and.i.LE.51) then ! Lecture des variables en (time,lat,lon) 720 730 ierr = NF90_GET_VAR(nid,var3didin(i),resul2, count = [1, 1, ntime]) 721 731 print *,'read2_cas(resul2), on a lu ',i,name_var(i) … … 819 829 820 830 !program reading forcing of the case study 831 use netcdf, only: nf90_get_var 821 832 implicit none 833 INCLUDE "netcdf.inc" 822 834 823 835 integer ntime,nlevel,k,t … … 876 888 else 877 889 !----------------------------------------------------------------------- 878 if(i <=4) then ! Lecture des coord pression en (nlevelp1,lat,lon)890 if(i.LE.4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 879 891 ierr = NF90_GET_VAR(nid,var3didin(i),apbp) 880 892 print *,'read2_cas(apbp), on a lu ',i,name_var(i) … … 884 896 endif 885 897 !----------------------------------------------------------------------- 886 else if(i >4.and.i<=12) then ! Lecture des variables en (time,nlevel,lat,lon)898 else if(i.gt.4.and.i.LE.12) then ! Lecture des variables en (time,nlevel,lat,lon) 887 899 ierr = NF90_GET_VAR(nid,var3didin(i),resul1) 888 900 print *,'read2_cas(resul1), on a lu ',i,name_var(i) … … 893 905 print*,'Lecture de la variable #i ',i,name_var(i),minval(resul1),maxval(resul1) 894 906 !----------------------------------------------------------------------- 895 else if(i >12.and.i<=54) then ! Lecture des variables en (time,nlevel,lat,lon)907 else if(i.gt.12.and.i.LE.54) then ! Lecture des variables en (time,nlevel,lat,lon) 896 908 ierr = NF90_GET_VAR(nid,var3didin(i),resul) 897 909 print *,'read2_cas(resul), on a lu ',i,name_var(i) … … 902 914 print*,'Lecture de la variable #i ',i,name_var(i),minval(resul),maxval(resul) 903 915 !----------------------------------------------------------------------- 904 else if (i >54.and.i<=65) then ! Lecture des variables en (time,lat,lon)916 else if (i.gt.54.and.i.LE.65) then ! Lecture des variables en (time,lat,lon) 905 917 ierr = NF90_GET_VAR(nid,var3didin(i),resul2) 906 918 print *,'read2_cas(resul2), on a lu ',i,name_var(i) … … 1136 1148 1137 1149 it_cas1=INT(timeit/pdt_cas)+1 1138 IF (it_cas1 ==nt_cas) THEN1150 IF (it_cas1 .EQ. nt_cas) THEN 1139 1151 it_cas2=it_cas1 1140 1152 ELSE … … 1145 1157 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1146 1158 1147 if (it_cas1 >nt_cas) then1159 if (it_cas1 .gt. nt_cas) then 1148 1160 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1149 1161 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 1152 1164 1153 1165 ! time interpolation: 1154 IF (it_cas1 ==it_cas2) THEN1166 IF (it_cas1 .EQ. it_cas2) THEN 1155 1167 frac=0. 1156 1168 ELSE … … 1351 1363 1352 1364 it_cas1=INT(timeit/pdt_cas)+1 1353 IF (it_cas1 ==nt_cas) THEN1365 IF (it_cas1 .EQ. nt_cas) THEN 1354 1366 it_cas2=it_cas1 1355 1367 ELSE … … 1361 1373 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1362 1374 1363 if (it_cas1 > nt_cas) then1375 if (it_cas1 .gt. nt_cas) then 1364 1376 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1365 1377 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 1368 1380 1369 1381 ! time interpolation: 1370 IF (it_cas1 ==it_cas2) THEN1382 IF (it_cas1 .EQ. it_cas2) THEN 1371 1383 frac=0. 1372 1384 ELSE … … 1463 1475 !********************************************************************************************** 1464 1476 1465 END MODULE mod_1D_cases_read2 -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90
r5075 r5084 3 3 ! 4 4 MODULE mod_1D_cases_read_std 5 USE lmdz_netcdf, ONLY:nf_noerr,nf_inq_varid,nf_inq_dimid,nf_inq_dimlen,nf_open,nf_nowrite,&6 nf_strerror,nf90_get_var7 5 8 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 89 87 !********************************************************************************************** 90 88 SUBROUTINE read_SCM_cas 89 use netcdf, only: nf90_get_var 91 90 implicit none 92 91 92 INCLUDE "netcdf.inc" 93 93 INCLUDE "date_cas.h" 94 94 … … 101 101 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 102 102 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 103 if (ierr /=NF_NOERR) then103 if (ierr.NE.NF_NOERR) then 104 104 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 105 105 write(*,*) NF_STRERROR(ierr) … … 108 108 !....................................................................... 109 109 ierr=NF_INQ_DIMID(nid,'lat',rid) 110 IF (ierr /=NF_NOERR) THEN110 IF (ierr.NE.NF_NOERR) THEN 111 111 print*, 'Oh probleme lecture dimension lat' 112 112 ENDIF … … 115 115 !....................................................................... 116 116 ierr=NF_INQ_DIMID(nid,'lon',rid) 117 IF (ierr /=NF_NOERR) THEN117 IF (ierr.NE.NF_NOERR) THEN 118 118 print*, 'Oh probleme lecture dimension lon' 119 119 ENDIF … … 122 122 !....................................................................... 123 123 ierr=NF_INQ_DIMID(nid,'lev',rid) 124 IF (ierr /=NF_NOERR) THEN124 IF (ierr.NE.NF_NOERR) THEN 125 125 print*, 'Oh probleme lecture dimension nlev' 126 126 ENDIF … … 134 134 ierr=NF_INQ_DIMID(nid,'time',rid) 135 135 nt_cas=0 136 IF (ierr /=NF_NOERR) THEN136 IF (ierr.NE.NF_NOERR) THEN 137 137 stop 'Oh probleme lecture dimension time' 138 138 ENDIF … … 329 329 330 330 !program reading forcing of the case study 331 use netcdf, only: nf90_get_var 331 332 implicit none 333 INCLUDE "netcdf.inc" 332 334 INCLUDE "compar1d.h" 333 335 … … 453 455 ! Reading variables 1D (N+1) vertical variables (nlevelp1,lat,lon) 454 456 !----------------------------------------------------------------------- 455 if(i <=4) then457 if(i.LE.4) then 456 458 ierr = NF90_GET_VAR(nid,var3didin(i),apbp) 457 459 print *,'read_SCM(apbp), on a lu ',i,name_var(i) … … 464 466 ! Reading 1D (N) vertical varialbes (nlevel,lat,lon) 465 467 !----------------------------------------------------------------------- 466 else if(i >4.and.i<=12) then468 else if(i.gt.4.and.i.LE.12) then 467 469 ierr = NF90_GET_VAR(nid,var3didin(i),resul1) 468 470 print *,'read_SCM(resul1), on a lu ',i,name_var(i) … … 477 479 ! TBD : seems to be the same as above. 478 480 !----------------------------------------------------------------------- 479 else if(i >12.and.i<=61) then481 else if(i.gt.12.and.i.LE.61) then 480 482 ierr = NF90_GET_VAR(nid,var3didin(i),resul) 481 483 print *,'read_SCM(resul), on a lu ',i,name_var(i) … … 489 491 ! Reading 1D time variables (time,lat,lon) 490 492 !----------------------------------------------------------------------- 491 else if (i >62.and.i<=75) then493 else if (i.gt.62.and.i.LE.75) then 492 494 ierr = NF90_GET_VAR(nid,var3didin(i),resul2) 493 495 print *,'read_SCM(resul2), on a lu ',i,name_var(i) … … 775 777 776 778 it_cas1=INT(timeit/pdt_cas)+1 777 IF (it_cas1 ==nt_cas) THEN779 IF (it_cas1 .EQ. nt_cas) THEN 778 780 it_cas2=it_cas1 779 781 ELSE … … 785 787 ! print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 786 788 787 if (it_cas1 > nt_cas) then789 if (it_cas1 .gt. nt_cas) then 788 790 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 789 791 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 792 794 793 795 ! time interpolation: 794 IF (it_cas1 ==it_cas2) THEN796 IF (it_cas1 .EQ. it_cas2) THEN 795 797 frac=0. 796 798 ELSE … … 987 989 do l = 1, llm 988 990 989 if (play(l) >=plev_prof_cas(nlev_cas)) then991 if (play(l).ge.plev_prof_cas(nlev_cas)) then 990 992 991 993 mxcalc=l … … 994 996 k2=0 995 997 996 if (play(l) <=plev_prof_cas(1)) then998 if (play(l).le.plev_prof_cas(1)) then 997 999 998 1000 do k = 1, nlev_cas-1 999 if (play(l) <=plev_prof_cas(k).and. play(l)>plev_prof_cas(k+1)) then1001 if (play(l).le.plev_prof_cas(k).and. play(l).gt.plev_prof_cas(k+1)) then 1000 1002 k1=k 1001 1003 k2=k+1 … … 1003 1005 enddo 1004 1006 1005 if (k1 ==0 .or. k2==0) then1007 if (k1.eq.0 .or. k2.eq.0) then 1006 1008 write(*,*) 'PB! k1, k2 = ',k1,k2 1007 1009 write(*,*) 'l,play(l) = ',l,play(l)/100 … … 1017 1019 t_mod_cas(l)= t_prof_cas(k2) - frac*(t_prof_cas(k2)-t_prof_cas(k1)) 1018 1020 theta_mod_cas(l)= th_prof_cas(k2) - frac*(th_prof_cas(k2)-th_prof_cas(k1)) 1019 if(theta_mod_cas(l) /=0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)1021 if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD) 1020 1022 thv_mod_cas(l)= thv_prof_cas(k2) - frac*(thv_prof_cas(k2)-thv_prof_cas(k1)) 1021 1023 thl_mod_cas(l)= thl_prof_cas(k2) - frac*(thl_prof_cas(k2)-thl_prof_cas(k1)) … … 1066 1068 t_mod_cas(l)= frac1*t_prof_cas(k1) - frac2*t_prof_cas(k2) 1067 1069 theta_mod_cas(l)= frac1*th_prof_cas(k1) - frac2*th_prof_cas(k2) 1068 if(theta_mod_cas(l) /=0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)1070 if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD) 1069 1071 thv_mod_cas(l)= frac1*thv_prof_cas(k1) - frac2*thv_prof_cas(k2) 1070 1072 thl_mod_cas(l)= frac1*thl_prof_cas(k1) - frac2*thl_prof_cas(k2) … … 1163 1165 do l = 1, llm+1 1164 1166 1165 if (plev(l) >=plev_prof_cas(nlev_cas)) then1167 if (plev(l).ge.plev_prof_cas(nlev_cas)) then 1166 1168 1167 1169 mxcalc=l … … 1169 1171 k2=0 1170 1172 1171 if (plev(l) <=plev_prof_cas(1)) then1173 if (plev(l).le.plev_prof_cas(1)) then 1172 1174 1173 1175 do k = 1, nlev_cas-1 1174 if (plev(l) <=plev_prof_cas(k).and. plev(l)>plev_prof_cas(k+1)) then1176 if (plev(l).le.plev_prof_cas(k).and. plev(l).gt.plev_prof_cas(k+1)) then 1175 1177 k1=k 1176 1178 k2=k+1 … … 1178 1180 enddo 1179 1181 1180 if (k1 ==0 .or. k2==0) then1182 if (k1.eq.0 .or. k2.eq.0) then 1181 1183 write(*,*) 'PB! k1, k2 = ',k1,k2 1182 1184 write(*,*) 'l,plev(l) = ',l,plev(l)/100 -
LMDZ6/trunk/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h
r5075 r5084 146 146 !program reading forcings of the TWP-ICE experiment 147 147 148 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 149 nf_inq_dimid,nf_inq_dimlen 150 148 use netcdf, only: nf90_get_var 151 149 152 150 implicit none 151 152 INCLUDE "netcdf.inc" 153 153 154 154 integer ntime,nlevel … … 492 492 subroutine catchaxis(nid,ttm,llm,time,lev,ierr) 493 493 494 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 495 nf_inq_dimid,nf_inq_dimlen 494 use netcdf, only: nf90_get_var 496 495 497 496 implicit none 497 INCLUDE "netcdf.inc" 498 498 integer nid,ttm,llm 499 499 real*8 time(ttm) … … 2170 2170 2171 2171 2172 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2173 nf_inq_dimid,nf_inq_dimlen 2172 use netcdf, only: nf90_get_var 2174 2173 implicit none 2174 2175 INCLUDE "netcdf.inc" 2175 2176 2176 2177 integer ntime,nlevel … … 2380 2381 !program reading initial profils and forcings of the Dice case study 2381 2382 2382 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2383 nf_inq_dimid,nf_inq_dimlen 2383 use netcdf, only: nf90_get_var 2384 2384 2385 2385 implicit none 2386 2386 2387 INCLUDE "netcdf.inc" 2387 2388 INCLUDE "YOMCST.h" 2388 2389 … … 2714 2715 !program reading initial profils and forcings of the Gabls4 case study 2715 2716 2716 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2717 nf_inq_dimid,nf_inq_dimlen 2717 use netcdf, only: nf90_get_var 2718 2718 2719 2719 implicit none 2720 2721 INCLUDE "netcdf.inc" 2720 2722 2721 2723 integer ntime,nlevel,nsol -
LMDZ6/trunk/libf/phylmd/dyn1d/old_1D_decl_cases.h
r5075 r5084 1 INCLUDE "netcdf.inc" 1 2 2 3 ! Declarations specifiques au cas Toga -
LMDZ6/trunk/libf/phylmd/dyn1d/old_lmdz1d.F90
r5075 r5084 44 44 USE temps_mod, ONLY: annee_ref, calend, day_end, day_ini, day_ref, & 45 45 itau_dyn, itau_phy, start_time, year_len 46 USE phys_cal_mod, ONLY : year_len_phys_cal_mod => year_len 47 USE mod_1D_cases_read, ONLY: interp_case_time ! used in included old_1D_read_forc_cases.h 48 46 USE phys_cal_mod, ONLY : year_len_phys_cal_mod => year_len 49 47 50 48 implicit none … … 368 366 if (forcing_type <=0) THEN 369 367 forcing_les = .true. 370 elseif (forcing_type ==1) THEN368 elseif (forcing_type .eq.1) THEN 371 369 forcing_radconv = .true. 372 elseif (forcing_type ==2) THEN370 elseif (forcing_type .eq.2) THEN 373 371 forcing_toga = .true. 374 elseif (forcing_type ==3) THEN372 elseif (forcing_type .eq.3) THEN 375 373 forcing_GCM2SCM = .true. 376 elseif (forcing_type ==4) THEN374 elseif (forcing_type .eq.4) THEN 377 375 forcing_twpice = .true. 378 elseif (forcing_type ==5) THEN376 elseif (forcing_type .eq.5) THEN 379 377 forcing_rico = .true. 380 elseif (forcing_type ==6) THEN378 elseif (forcing_type .eq.6) THEN 381 379 forcing_amma = .true. 382 elseif (forcing_type ==7) THEN380 elseif (forcing_type .eq.7) THEN 383 381 forcing_dice = .true. 384 elseif (forcing_type ==8) THEN382 elseif (forcing_type .eq.8) THEN 385 383 forcing_gabls4 = .true. 386 elseif (forcing_type ==101) THEN ! Cindynamo starts 1-10-2011 0h384 elseif (forcing_type .eq.101) THEN ! Cindynamo starts 1-10-2011 0h 387 385 forcing_case = .true. 388 386 year_ini_cas=2011 … … 391 389 heure_ini_cas=0. 392 390 pdt_cas=3*3600. ! forcing frequency 393 elseif (forcing_type ==102) THEN ! Bomex starts 24-6-1969 0h391 elseif (forcing_type .eq.102) THEN ! Bomex starts 24-6-1969 0h 394 392 forcing_case = .true. 395 393 year_ini_cas=1969 … … 398 396 heure_ini_cas=0. 399 397 pdt_cas=1800. ! forcing frequency 400 elseif (forcing_type ==103) THEN ! Arm_cu starts 21-6-1997 11h30398 elseif (forcing_type .eq.103) THEN ! Arm_cu starts 21-6-1997 11h30 401 399 forcing_case2 = .true. 402 400 year_ini_cas=1997 … … 405 403 heure_ini_cas=11.5 406 404 pdt_cas=1800. ! forcing frequency 407 elseif (forcing_type ==104) THEN ! rico starts 16-12-2004 0h405 elseif (forcing_type .eq.104) THEN ! rico starts 16-12-2004 0h 408 406 forcing_case2 = .true. 409 407 year_ini_cas=2004 … … 412 410 heure_ini_cas=0. 413 411 pdt_cas=1800. ! forcing frequency 414 elseif (forcing_type ==105) THEN ! bomex starts 16-12-2004 0h412 elseif (forcing_type .eq.105) THEN ! bomex starts 16-12-2004 0h 415 413 forcing_case2 = .true. 416 414 year_ini_cas=1969 … … 419 417 heure_ini_cas=0. 420 418 pdt_cas=1800. ! forcing frequency 421 elseif (forcing_type ==106) THEN ! ayotte_24SC starts 6-11-1992 0h419 elseif (forcing_type .eq.106) THEN ! ayotte_24SC starts 6-11-1992 0h 422 420 forcing_case2 = .true. 423 421 year_ini_cas=1992 … … 426 424 heure_ini_cas=10. 427 425 pdt_cas=86400. ! forcing frequency 428 elseif (forcing_type ==113) THEN ! Arm_cu starts 21-6-1997 11h30426 elseif (forcing_type .eq.113) THEN ! Arm_cu starts 21-6-1997 11h30 429 427 forcing_SCM = .true. 430 428 year_ini_cas=1997 … … 434 432 mth_ini_cas=1 ! pour le moment on compte depuis le debut de l'annee 435 433 call getin('time_ini',heure_ini_cas) 436 elseif (forcing_type ==40) THEN434 elseif (forcing_type .eq.40) THEN 437 435 forcing_GCSSold = .true. 438 elseif (forcing_type ==50) THEN436 elseif (forcing_type .eq.50) THEN 439 437 forcing_fire = .true. 440 elseif (forcing_type ==59) THEN438 elseif (forcing_type .eq.59) THEN 441 439 forcing_sandu = .true. 442 elseif (forcing_type ==60) THEN440 elseif (forcing_type .eq.60) THEN 443 441 forcing_astex = .true. 444 elseif (forcing_type ==61) THEN442 elseif (forcing_type .eq.61) THEN 445 443 forcing_armcu = .true. 446 IF(llm /=19.AND.llm/=40) stop 'Erreur nombre de niveaux !!'444 IF(llm.NE.19.AND.llm.NE.40) stop 'Erreur nombre de niveaux !!' 447 445 else 448 446 write (*,*) 'ERROR : unknown forcing_type ', forcing_type … … 463 461 jcode = iflag_nudge 464 462 do i = 1,nudge_max 465 nudge(i) = mod(jcode,10) >=1463 nudge(i) = mod(jcode,10) .ge. 1 466 464 jcode = jcode/10 467 465 enddo … … 530 528 531 529 ! Special case for arm_cu which lasts less than one day : 53100s !! (MPL 20111026) 532 IF(forcing_type ==61) fnday=53100./86400.533 IF(forcing_type ==103) fnday=53100./86400.530 IF(forcing_type .EQ. 61) fnday=53100./86400. 531 IF(forcing_type .EQ. 103) fnday=53100./86400. 534 532 ! Special case for amma which lasts less than one day : 64800s !! (MPL 20120216) 535 IF(forcing_type ==6) fnday=64800./86400.533 IF(forcing_type .EQ. 6) fnday=64800./86400. 536 534 ! IF(forcing_type .EQ. 6) fnday=50400./86400. 537 IF(forcing_type == 8 ) fnday=129600./86400.535 IF(forcing_type .EQ. 8 ) fnday=129600./86400. 538 536 annee_ref = anneeref 539 537 mois = 1 … … 546 544 day_end = day_ini + int(fnday) 547 545 548 IF (forcing_type ==2) THEN546 IF (forcing_type .eq.2) THEN 549 547 ! Convert the initial date of Toga-Coare to Julian day 550 548 call ymds2ju & 551 549 & (year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga) 552 550 553 ELSEIF (forcing_type ==4) THEN551 ELSEIF (forcing_type .eq.4) THEN 554 552 ! Convert the initial date of TWPICE to Julian day 555 553 call ymds2ju & 556 554 & (year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi & 557 555 & ,day_ju_ini_twpi) 558 ELSEIF (forcing_type ==6) THEN556 ELSEIF (forcing_type .eq.6) THEN 559 557 ! Convert the initial date of AMMA to Julian day 560 558 call ymds2ju & 561 559 & (year_ini_amma,mth_ini_amma,day_ini_amma,heure_ini_amma & 562 560 & ,day_ju_ini_amma) 563 ELSEIF (forcing_type ==7) THEN561 ELSEIF (forcing_type .eq.7) THEN 564 562 ! Convert the initial date of DICE to Julian day 565 563 call ymds2ju & 566 564 & (year_ini_dice,mth_ini_dice,day_ini_dice,heure_ini_dice & 567 565 & ,day_ju_ini_dice) 568 ELSEIF (forcing_type ==8 ) THEN566 ELSEIF (forcing_type .eq.8 ) THEN 569 567 ! Convert the initial date of GABLS4 to Julian day 570 568 call ymds2ju & 571 569 & (year_ini_gabls4,mth_ini_gabls4,day_ini_gabls4,heure_ini_gabls4 & 572 570 & ,day_ju_ini_gabls4) 573 ELSEIF (forcing_type >100) THEN571 ELSEIF (forcing_type .gt.100) THEN 574 572 ! Convert the initial date to Julian day 575 573 day_ini_cas=day_deb … … 579 577 & ,day_ju_ini_cas) 580 578 print*,'time case 2',day_ini_cas,day_ju_ini_cas 581 ELSEIF (forcing_type ==59) THEN579 ELSEIF (forcing_type .eq.59) THEN 582 580 ! Convert the initial date of Sandu case to Julian day 583 581 call ymds2ju & … … 585 583 & time_ini*3600.,day_ju_ini_sandu) 586 584 587 ELSEIF (forcing_type ==60) THEN585 ELSEIF (forcing_type .eq.60) THEN 588 586 ! Convert the initial date of Astex case to Julian day 589 587 call ymds2ju & … … 591 589 & time_ini*3600.,day_ju_ini_astex) 592 590 593 ELSEIF (forcing_type ==61) THEN591 ELSEIF (forcing_type .eq.61) THEN 594 592 ! Convert the initial date of Arm_cu case to Julian day 595 593 call ymds2ju & … … 598 596 ENDIF 599 597 600 IF (forcing_type >100) THEN598 IF (forcing_type .gt.100) THEN 601 599 daytime = day + heure_ini_cas/24. ! 1st day and initial time of the simulation 602 600 ELSE … … 640 638 call phys_state_var_init(read_climoz) 641 639 642 if (ngrid /=klon) then640 if (ngrid.ne.klon) then 643 641 print*,'stop in inifis' 644 642 print*,'Probleme de dimensions :' … … 704 702 zlay=-rd*300.*log(play/psurf)/rg ! moved after reading profiles 705 703 706 IF (forcing_type ==59) THEN704 IF (forcing_type .eq. 59) THEN 707 705 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m 708 706 write(*,*) '***********************' 709 707 do l = 1, llm 710 708 write(*,*) 'l,play(l),presnivs(l): ',l,play(l),presnivs(l) 711 if (trouve_700 .and. play(l) <=70000) then709 if (trouve_700 .and. play(l).le.70000) then 712 710 llm700=l 713 711 print *,'llm700,play=',llm700,play(l)/100. … … 828 826 print*,'avant phyredem' 829 827 pctsrf(1,:)=0. 830 if (nat_surf ==0.) then828 if (nat_surf.eq.0.) then 831 829 pctsrf(1,is_oce)=1. 832 830 pctsrf(1,is_ter)=0. 833 831 pctsrf(1,is_lic)=0. 834 832 pctsrf(1,is_sic)=0. 835 else if (nat_surf == 1) then833 else if (nat_surf .eq. 1) then 836 834 pctsrf(1,is_oce)=0. 837 835 pctsrf(1,is_ter)=1. 838 836 pctsrf(1,is_lic)=0. 839 837 pctsrf(1,is_sic)=0. 840 else if (nat_surf == 2) then838 else if (nat_surf .eq. 2) then 841 839 pctsrf(1,is_oce)=0. 842 840 pctsrf(1,is_ter)=0. 843 841 pctsrf(1,is_lic)=1. 844 842 pctsrf(1,is_sic)=0. 845 else if (nat_surf == 3) then843 else if (nat_surf .eq. 3) then 846 844 pctsrf(1,is_oce)=0. 847 845 pctsrf(1,is_ter)=0. … … 872 870 pbl_tke(:,2,:)=1.e-2 873 871 PRINT *, ' pbl_tke dans lmdz1d ' 874 if (prt_level >= 5) then872 if (prt_level .ge. 5) then 875 873 DO nsrf = 1,4 876 874 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) … … 1023 1021 endif 1024 1022 !Al1 ================ end restart ================================= 1025 IF (ecrit_slab_oc ==1) then1023 IF (ecrit_slab_oc.eq.1) then 1026 1024 open(97,file='div_slab.dat',STATUS='UNKNOWN') 1027 elseif (ecrit_slab_oc ==0) then1025 elseif (ecrit_slab_oc.eq.0) then 1028 1026 open(97,file='div_slab.dat',STATUS='OLD') 1029 1027 endif … … 1048 1046 it_end = nint(fnday*day_step) 1049 1047 !test JLD it_end = 10 1050 do while(it <=it_end)1051 1052 if (prt_level >=1) then1048 do while(it.le.it_end) 1049 1050 if (prt_level.ge.1) then 1053 1051 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 1054 1052 & it,day,time,it_end,day_step … … 1056 1054 endif 1057 1055 !Al1 demande de restartphy.nc 1058 if (it ==it_end) lastcall=.True.1056 if (it.eq.it_end) lastcall=.True. 1059 1057 1060 1058 !--------------------------------------------------------------------- … … 1151 1149 1152 1150 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice & 1153 & .or.forcing_amma .or. forcing_type ==101) then1151 & .or.forcing_amma .or. forcing_type.eq.101) then 1154 1152 fcoriolis=0.0 ; ug=0. ; vg=0. 1155 1153 endif … … 1166 1164 !on calcule dt_cooling 1167 1165 do l=1,llm 1168 if (play(l) >=20000.) then1166 if (play(l).ge.20000.) then 1169 1167 dt_cooling(l)=-1.5/86400. 1170 elseif ((play(l) >=10000.).and.((play(l)<20000.))) then1168 elseif ((play(l).ge.10000.).and.((play(l).lt.20000.))) then 1171 1169 dt_cooling(l)=-1.5/86400.*(play(l)-10000.)/(10000.)-1./86400.*(20000.-play(l))/10000.*(temp(l)-200.) 1172 1170 else … … 1275 1273 & +d_q_nudge(1:mxcalc,:) ) 1276 1274 1277 if (prt_level >=3) then1275 if (prt_level.ge.3) then 1278 1276 print *, & 1279 1277 & 'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', & … … 1353 1351 1354 1352 !Al1 1355 if (ecrit_slab_oc /=-1) close(97)1353 if (ecrit_slab_oc.ne.-1) close(97) 1356 1354 1357 1355 !Al1 Call to 1D equivalent of dynredem (an,mois,jour,heure ?) -
LMDZ6/trunk/libf/phylmd/grid_noro_m.F90
r5075 r5084 435 435 ! Purpose: Read parameters usually determined with grid_noro from a file. 436 436 !=============================================================================== 437 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_INQ_DIMID, NF90_INQUIRE_DIMENSION, &437 USE netcdf, ONLY: NF90_OPEN, NF90_INQ_DIMID, NF90_INQUIRE_DIMENSION, & 438 438 NF90_NOERR, NF90_CLOSE, NF90_INQ_VARID, NF90_GET_VAR, NF90_STRERROR, & 439 439 NF90_NOWRITE -
LMDZ6/trunk/libf/phylmd/ice_sursat_mod.F90
r5075 r5084 96 96 USE mod_phys_lmdz_para, ONLY: scatter, bcast 97 97 USE print_control_mod, ONLY: lunout 98 USE lmdz_netcdf, ONLY: nf90_get_var, nf_inq_varid, nf_inq_dimlen, nf_inq_dimid, &99 nf_open, nf_noerr100 98 101 99 IMPLICIT NONE 102 100 103 101 INCLUDE "YOMCST.h" 102 INCLUDE 'netcdf.inc' 104 103 105 104 !-------------------------------------------------------- … … 169 168 iret = nf_inq_varid(ncida, 'lev', varid) 170 169 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get lev dimid aircraft_phy.nc file',1) 171 iret = nf 90_get_var(ncida, varid, zmida)170 iret = nf_get_var_double(ncida, varid, zmida) 172 171 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read zmida file',1) 173 172 ! 174 173 iret = nf_inq_varid(ncida, 'emi_co2_aircraft', varid) !--CO2 as a proxy for m flown - 175 174 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get emi_distance dimid aircraft_phy.nc file',1) 176 iret = nf 90_get_var(ncida, varid, pkm_airpl_glo)175 iret = nf_get_var_double(ncida, varid, pkm_airpl_glo) 177 176 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read pkm_airpl file',1) 178 177 ! 179 178 iret = nf_inq_varid(ncida, 'emi_h2o_aircraft', varid) 180 179 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get emi_h2o_aircraft dimid aircraft_phy.nc file',1) 181 iret = nf 90_get_var(ncida, varid, ph2o_airpl_glo)180 iret = nf_get_var_double(ncida, varid, ph2o_airpl_glo) 182 181 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read ph2o_airpl file',1) 183 182 ! … … 277 276 ! 278 277 DO i=1, klon 279 IF (latitude_deg(i) >=42.0.AND.latitude_deg(i)<=48.0) THEN278 IF (latitude_deg(i).GE.42.0.AND.latitude_deg(i).LE.48.0) THEN 280 279 flight_m(i,38) = 50000.0 !--5000 m of flight/second in grid cell x 10 scaling 281 280 ENDIF … … 413 412 pdf_b = pdf_k/(2.*sqrt(2.)) 414 413 pdf_e1 = pdf_a+pdf_b 415 IF (abs(pdf_e1) >=erf_lim) THEN414 IF (abs(pdf_e1).GE.erf_lim) THEN 416 415 pdf_e1 = sign(1.,pdf_e1) 417 416 pdf_N = max(0.,sign(rneb,pdf_e1)) … … 426 425 ! On perd la memoire sur la temperature (sur qvc) pour garder 427 426 ! celle sur alpha_cld 428 IF (pdf_N >1.) THEN427 IF (pdf_N.GT.1.) THEN 429 428 ! On inverse alpha_cld = int_qvc^infty P(q) dq 430 429 ! pour determiner qvc = f(alpha_cld) … … 442 441 pdf_a = log(qvc/q)/(pdf_k*sqrt(2.)) 443 442 pdf_e1 = pdf_a+pdf_b 444 IF (abs(pdf_e1) >=erf_lim) THEN443 IF (abs(pdf_e1).GE.erf_lim) THEN 445 444 pdf_e1 = sign(1.,pdf_e1) 446 445 ELSE … … 462 461 pdf_a = log(qvc*gamma_prec/q)/(pdf_k*sqrt(2.)) 463 462 pdf_e2 = pdf_a+pdf_b 464 IF (abs(pdf_e2) >=erf_lim) THEN463 IF (abs(pdf_e2).GE.erf_lim) THEN 465 464 pdf_e2 = sign(1.,pdf_e2) 466 465 ELSE … … 469 468 pdf_e2 = 0.5*(1.+pdf_e2) ! integrale sous P pour q > gamma qsat 470 469 471 IF (abs(pdf_e1-pdf_e2) <eps) THEN470 IF (abs(pdf_e1-pdf_e2).LT.eps) THEN 472 471 pdf_N1 = pdf_N2 473 472 ELSE … … 476 475 477 476 ! Barriere qui traite le cas gamma_prec = 1. 478 IF (pdf_N1 <=0.) THEN477 IF (pdf_N1.LE.0.) THEN 479 478 pdf_N1 = 0. 480 IF (pdf_e2 >eps) THEN479 IF (pdf_e2.GT.eps) THEN 481 480 pdf_N2 = rneb/pdf_e2 482 481 ELSE … … 488 487 ! Physique 1 489 488 ! Sublimation 490 IF (qvc <qsat) THEN489 IF (qvc.LT.qsat) THEN 491 490 pdf_a = log(qvc/q)/(pdf_k*sqrt(2.)) 492 491 pdf_e1 = pdf_a+pdf_b 493 IF (abs(pdf_e1) >=erf_lim) THEN492 IF (abs(pdf_e1).GE.erf_lim) THEN 494 493 pdf_e1 = sign(1.,pdf_e1) 495 494 ELSE … … 499 498 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 500 499 pdf_e2 = pdf_a+pdf_b 501 IF (abs(pdf_e2) >=erf_lim) THEN500 IF (abs(pdf_e2).GE.erf_lim) THEN 502 501 pdf_e2 = sign(1.,pdf_e2) 503 502 ELSE … … 517 516 518 517 ! Condensation 519 IF (gamma_ss*qsat <gamma_prec*qvc) THEN518 IF (gamma_ss*qsat.LT.gamma_prec*qvc) THEN 520 519 521 520 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 522 521 pdf_e1 = pdf_a+pdf_b 523 IF (abs(pdf_e1) >=erf_lim) THEN522 IF (abs(pdf_e1).GE.erf_lim) THEN 524 523 pdf_e1 = sign(1.,pdf_e1) 525 524 ELSE … … 529 528 pdf_a = log(gamma_prec*qvc/q)/(pdf_k*sqrt(2.)) 530 529 pdf_e2 = pdf_a+pdf_b 531 IF (abs(pdf_e2) >=erf_lim) THEN530 IF (abs(pdf_e2).GE.erf_lim) THEN 532 531 pdf_e2 = sign(1.,pdf_e2) 533 532 ELSE … … 546 545 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 547 546 pdf_e1 = pdf_a+pdf_b 548 IF (abs(pdf_e1) >=erf_lim) THEN547 IF (abs(pdf_e1).GE.erf_lim) THEN 549 548 pdf_e1 = sign(1.,pdf_e1) 550 549 ELSE … … 563 562 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 564 563 pdf_e1 = pdf_a+pdf_b 565 IF (abs(pdf_e1) >=erf_lim) THEN564 IF (abs(pdf_e1).GE.erf_lim) THEN 566 565 pdf_e1 = sign(1.,pdf_e1) 567 566 ELSE … … 571 570 572 571 pdf_e2 = pdf_a-pdf_b 573 IF (abs(pdf_e2) >=erf_lim) THEN572 IF (abs(pdf_e2).GE.erf_lim) THEN 574 573 pdf_e2 = sign(1.,pdf_e2) 575 574 ELSE … … 585 584 pdf_a = log(max(qsat,qvc)/q)/(pdf_k*sqrt(2.)) 586 585 pdf_e1 = pdf_a-pdf_b 587 IF (abs(pdf_e1) >=erf_lim) THEN586 IF (abs(pdf_e1).GE.erf_lim) THEN 588 587 pdf_e1 = sign(1.,pdf_e1) 589 588 ELSE … … 593 592 pdf_a = log(min(gamma_ss*qsat,gamma_prec*qvc)/q)/(pdf_k*sqrt(2.)) 594 593 pdf_e2 = pdf_a-pdf_b 595 IF (abs(pdf_e2) >=erf_lim) THEN594 IF (abs(pdf_e2).GE.erf_lim) THEN 596 595 pdf_e2 = sign(1.,pdf_e2) 597 596 ELSE … … 604 603 605 604 ! Partie 2 (sous condition) 606 IF (gamma_ss*qsat >gamma_prec*qvc) THEN605 IF (gamma_ss*qsat.GT.gamma_prec*qvc) THEN 607 606 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 608 607 pdf_e1 = pdf_a-pdf_b 609 IF (abs(pdf_e1) >=erf_lim) THEN608 IF (abs(pdf_e1).GE.erf_lim) THEN 610 609 pdf_e1 = sign(1.,pdf_e1) 611 610 ELSE … … 633 632 634 633 ! Physique 2 : Turbulence 635 IF (rneb >eps.AND.rneb<1.-eps) THEN ! rneb != 0 and != 1634 IF (rneb.GT.eps.AND.rneb.LT.1.-eps) THEN ! rneb != 0 and != 1 636 635 ! 637 636 tke = pbl_tke(i,k,is_ave) … … 643 642 b_tur = (rneb*V_cell/4./PI/N_cld)**(1./3.) 644 643 ! On verifie que la longeur de melange n'est pas trop grande 645 IF (L_tur >b_tur) THEN644 IF (L_tur.GT.b_tur) THEN 646 645 L_tur = b_tur 647 646 ENDIF … … 666 665 q_eq = q_eq/(V_env + V_cld) 667 666 668 IF (q_eq >qsat) THEN667 IF (q_eq.GT.qsat) THEN 669 668 drnebclr = - V_clr/V_cell 670 669 dqclr = drnebclr*qclr/MAX(eps,rnebclr) … … 704 703 ! Barrieres 705 704 ! ISSR trop petite 706 IF (rnebss <eps) THEN705 IF (rnebss.LT.eps) THEN 707 706 rneb = MIN(rneb + rnebss,1.0-eps) !--ajout OB barriere 708 707 qcld = qcld + qss … … 712 711 713 712 ! le nuage est trop petit 714 IF (rneb <eps) THEN713 IF (rneb.LT.eps) THEN 715 714 ! s'il y a une ISSR on met tout dans l'ISSR, sinon dans le 716 715 ! clear sky 717 IF (rnebss <eps) THEN716 IF (rnebss.LT.eps) THEN 718 717 rnebclr = 1. 719 718 rnebss = 0. !--ajout OB … … 750 749 !--critical T_LM below which no liquid contrail can form in exhaust 751 750 !Tcontr(i,k) = 226.69+9.43*log(Gcontr-0.053)+0.72*(log(Gcontr-0.053))**2 !--K 752 IF (Gcontr >0.1) THEN751 IF (Gcontr .GT. 0.1) THEN 753 752 ! 754 753 Tcontr = 226.69+9.43*log(Gcontr-0.053)+0.72*(log(Gcontr-0.053))**2 !--K … … 776 775 !qcontr2 = eps_w*qcontr / (pplay+eps_w*qcontr) 777 776 ! 778 IF (t <Tcontr) THEN !--contrail formation is possible777 IF (t .LT. Tcontr) THEN !--contrail formation is possible 779 778 ! 780 779 !--compute fractions of persistent (P) and non-persistent(N) contrail potential regions 781 780 !!IF (qcontr(i,k).GE.qsat) THEN 782 IF (qcontr2 >=qsat) THEN781 IF (qcontr2.GE.qsat) THEN 783 782 !--none of the unsaturated clear sky is prone for contrail formation 784 783 !!fcontrN(i,k) = 0.0 … … 788 787 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 789 788 pdf_e1 = pdf_a+pdf_b 790 IF (abs(pdf_e1) >=erf_lim) THEN789 IF (abs(pdf_e1).GE.erf_lim) THEN 791 790 pdf_e1 = sign(1.,pdf_e1) 792 791 ELSE … … 797 796 pdf_a = log(MIN(qcontr2,qvc)/q)/(pdf_k*sqrt(2.)) 798 797 pdf_e2 = pdf_a+pdf_b 799 IF (abs(pdf_e2) >=erf_lim) THEN798 IF (abs(pdf_e2).GE.erf_lim) THEN 800 799 pdf_e2 = sign(1.,pdf_e2) 801 800 ELSE … … 808 807 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 809 808 pdf_e1 = pdf_a+pdf_b 810 IF (abs(pdf_e1) >=erf_lim) THEN809 IF (abs(pdf_e1).GE.erf_lim) THEN 811 810 pdf_e1 = sign(1.,pdf_e1) 812 811 ELSE … … 817 816 pdf_a = log(MIN(qcontr2,qvc)/q)/(pdf_k*sqrt(2.)) 818 817 pdf_e2 = pdf_a+pdf_b 819 IF (abs(pdf_e2) >=erf_lim) THEN818 IF (abs(pdf_e2).GE.erf_lim) THEN 820 819 pdf_e2 = sign(1.,pdf_e2) 821 820 ELSE … … 828 827 pdf_a = log(MAX(qsat,qvc)/q)/(pdf_k*sqrt(2.)) 829 828 pdf_e1 = pdf_a+pdf_b 830 IF (abs(pdf_e1) >=erf_lim) THEN829 IF (abs(pdf_e1).GE.erf_lim) THEN 831 830 pdf_e1 = sign(1.,pdf_e1) 832 831 ELSE … … 837 836 pdf_a = log(MIN(qcontr2,MIN(gamma_prec*qvc,gamma_ss*qsat))/q)/(pdf_k*sqrt(2.)) 838 837 pdf_e2 = pdf_a+pdf_b 839 IF (abs(pdf_e2) >=erf_lim) THEN838 IF (abs(pdf_e2).GE.erf_lim) THEN 840 839 pdf_e2 = sign(1.,pdf_e2) 841 840 ELSE … … 848 847 pdf_a = log(gamma_prec*qvc/q)/(pdf_k*sqrt(2.)) 849 848 pdf_e1 = pdf_a+pdf_b 850 IF (abs(pdf_e1) >=erf_lim) THEN849 IF (abs(pdf_e1).GE.erf_lim) THEN 851 850 pdf_e1 = sign(1.,pdf_e1) 852 851 ELSE … … 857 856 pdf_a = log(MIN(qcontr2,gamma_ss*qsat)/q)/(pdf_k*sqrt(2.)) 858 857 pdf_e2 = pdf_a+pdf_b 859 IF (abs(pdf_e2) >=erf_lim) THEN858 IF (abs(pdf_e2).GE.erf_lim) THEN 860 859 pdf_e2 = sign(1.,pdf_e2) 861 860 ELSE … … 876 875 pdf_a = log(qcontr2/q)/(pdf_k*sqrt(2.)) 877 876 pdf_e1 = pdf_a+pdf_b !--normalement pdf_b est deja defini 878 IF (abs(pdf_e1) >=erf_lim) THEN877 IF (abs(pdf_e1).GE.erf_lim) THEN 879 878 pdf_e1 = sign(1.,pdf_e1) 880 879 ELSE … … 884 883 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 885 884 pdf_e2 = pdf_a+pdf_b 886 IF (abs(pdf_e2) >=erf_lim) THEN885 IF (abs(pdf_e2).GE.erf_lim) THEN 887 886 pdf_e2 = sign(1.,pdf_e2) 888 887 ELSE -
LMDZ6/trunk/libf/phylmd/inlandsis/surf_inlandsis_mod.F90
r5075 r5084 638 638 END DO 639 639 640 IF (sissnow(ikl) <=sn_low) THEN !add snow641 IF (isnoSV(ikl) >=1) THEN640 IF (sissnow(ikl) .LE. sn_low) THEN !add snow 641 IF (isnoSV(ikl).GE.1) THEN 642 642 dzsnSV(ikl, 1) = dzsnSV(ikl, 1) + sn_add / max(ro__SV(ikl, 1), epsi) 643 643 toicSV(ikl) = toicSV(ikl) - sn_add … … 657 657 END IF 658 658 659 IF (sissnow(ikl) >=sn_upp) THEN !thinnen snow layer below659 IF (sissnow(ikl) .ge. sn_upp) THEN !thinnen snow layer below 660 660 dzsnSV(ikl, 1) = dzsnSV(ikl, 1) / sn_div 661 661 toicSV(ikl) = toicSV(ikl) + dzsnSV(ikl, 1) * ro__SV(ikl, 1) / sn_div … … 1049 1049 ! Objet: Lecture du fichier de conditions initiales pour SISVAT 1050 1050 !====================================================================== 1051 include "netcdf.inc" 1051 1052 ! include "indicesol.h" 1052 1053 … … 1117 1118 1118 1119 DO isn = 1, nsno 1119 IF (isn <=99) THEN1120 IF (isn.LE.99) THEN 1120 1121 WRITE(str2, '(i2.2)') isn 1121 1122 CALL get_field("AGESNOW" // str2, & … … 1127 1128 ENDDO 1128 1129 DO isn = 1, nsno 1129 IF (isn <=99) THEN1130 IF (isn.LE.99) THEN 1130 1131 WRITE(str2, '(i2.2)') isn 1131 1132 CALL get_field("DZSNOW" // str2, & … … 1137 1138 ENDDO 1138 1139 DO isn = 1, nsno 1139 IF (isn <=99) THEN1140 IF (isn.LE.99) THEN 1140 1141 WRITE(str2, '(i2.2)') isn 1141 1142 CALL get_field("G2SNOW" // str2, & … … 1147 1148 ENDDO 1148 1149 DO isn = 1, nsno 1149 IF (isn <=99) THEN1150 IF (isn.LE.99) THEN 1150 1151 WRITE(str2, '(i2.2)') isn 1151 1152 CALL get_field("G1SNOW" // str2, & … … 1157 1158 ENDDO 1158 1159 DO isn = 1, nsismx 1159 IF (isn <=99) THEN1160 IF (isn.LE.99) THEN 1160 1161 WRITE(str2, '(i2.2)') isn 1161 1162 CALL get_field("ETA" // str2, & … … 1167 1168 ENDDO 1168 1169 DO isn = 1, nsismx 1169 IF (isn <=99) THEN1170 IF (isn.LE.99) THEN 1170 1171 WRITE(str2, '(i2.2)') isn 1171 1172 CALL get_field("RO" // str2, & … … 1177 1178 ENDDO 1178 1179 DO isn = 1, nsismx 1179 IF (isn <=99) THEN1180 IF (isn.LE.99) THEN 1180 1181 WRITE(str2, '(i2.2)') isn 1181 1182 CALL get_field("TSS" // str2, & … … 1187 1188 ENDDO 1188 1189 DO isn = 1, nsno 1189 IF (isn <=99) THEN1190 IF (isn.LE.99) THEN 1190 1191 WRITE(str2, '(i2.2)') isn 1191 1192 CALL get_field("HISTORY" // str2, & … … 1286 1287 IMPLICIT none 1287 1288 1289 include "netcdf.inc" 1288 1290 ! include "indicesol.h" 1289 1291 ! include "dimsoil.h" … … 1401 1403 1402 1404 DO isn = 1, nsno 1403 IF (isn <=99) THEN1405 IF (isn.LE.99) THEN 1404 1406 WRITE(str2, '(i2.2)') isn 1405 1407 CALL put_field(pass, "AGESNOW" // str2, & … … 1412 1414 ENDDO 1413 1415 DO isn = 1, nsno 1414 IF (isn <=99) THEN1416 IF (isn.LE.99) THEN 1415 1417 WRITE(str2, '(i2.2)') isn 1416 1418 CALL put_field(pass, "DZSNOW" // str2, & … … 1423 1425 ENDDO 1424 1426 DO isn = 1, nsno 1425 IF (isn <=99) THEN1427 IF (isn.LE.99) THEN 1426 1428 WRITE(str2, '(i2.2)') isn 1427 1429 CALL put_field(pass, "G2SNOW" // str2, & … … 1434 1436 ENDDO 1435 1437 DO isn = 1, nsno 1436 IF (isn <=99) THEN1438 IF (isn.LE.99) THEN 1437 1439 WRITE(str2, '(i2.2)') isn 1438 1440 CALL put_field(pass, "G1SNOW" // str2, & … … 1445 1447 ENDDO 1446 1448 DO isn = 1, nsismx 1447 IF (isn <=99) THEN1449 IF (isn.LE.99) THEN 1448 1450 WRITE(str2, '(i2.2)') isn 1449 1451 CALL put_field(pass, "ETA" // str2, & … … 1456 1458 ENDDO 1457 1459 DO isn = 1, nsismx !nsno 1458 IF (isn <=99) THEN1460 IF (isn.LE.99) THEN 1459 1461 WRITE(str2, '(i2.2)') isn 1460 1462 CALL put_field(pass, "RO" // str2, & … … 1467 1469 ENDDO 1468 1470 DO isn = 1, nsismx 1469 IF (isn <=99) THEN1471 IF (isn.LE.99) THEN 1470 1472 WRITE(str2, '(i2.2)') isn 1471 1473 CALL put_field(pass, "TSS" // str2, & … … 1478 1480 ENDDO 1479 1481 DO isn = 1, nsno 1480 IF (isn <=99) THEN1482 IF (isn.LE.99) THEN 1481 1483 WRITE(str2, '(i2.2)') isn 1482 1484 CALL put_field(pass, "HISTORY" // str2, & -
LMDZ6/trunk/libf/phylmd/interfoce_lim.F90
r5075 r5084 10 10 USE mod_phys_lmdz_para 11 11 USE indice_sol_mod 12 USE lmdz_netcdf, ONLY: nf90_get_var,nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite13 12 14 13 IMPLICIT NONE 14 15 INCLUDE "netcdf.inc" 15 16 16 17 ! Cette routine sert d'interface entre le modele atmospherique et un fichier … … 115 116 fich = TRIM(fich) 116 117 ierr = NF_OPEN (fich, NF_NOWRITE,nid) 117 IF (ierr /=NF_NOERR) THEN118 IF (ierr.NE.NF_NOERR) THEN 118 119 abort_message = 'Pb d''ouverture du fichier de conditions aux limites' 119 120 CALL abort_physic(modname,abort_message,1) … … 136 137 CALL abort_physic(modname,abort_message,1) 137 138 ENDIF 138 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_oce),start,epais) 139 #ifdef NC_DOUBLE 140 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_oce)) 141 #else 142 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_oce)) 143 #endif 139 144 IF (ierr /= NF_NOERR) THEN 140 145 abort_message = 'Lecture echouee pour <FOCE>' … … 149 154 CALL abort_physic(modname,abort_message,1) 150 155 ENDIF 151 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_sic),start,epais) 156 #ifdef NC_DOUBLE 157 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_sic)) 158 #else 159 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_sic)) 160 #endif 152 161 IF (ierr /= NF_NOERR) THEN 153 162 abort_message = 'Lecture echouee pour <FSIC>' … … 162 171 CALL abort_physic(modname,abort_message,1) 163 172 ENDIF 164 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_ter),start,epais) 173 #ifdef NC_DOUBLE 174 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_ter)) 175 #else 176 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_ter)) 177 #endif 165 178 IF (ierr /= NF_NOERR) THEN 166 179 abort_message = 'Lecture echouee pour <FTER>' … … 175 188 CALL abort_physic(modname,abort_message,1) 176 189 ENDIF 177 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_lic),start,epais) 190 #ifdef NC_DOUBLE 191 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_lic)) 192 #else 193 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_lic)) 194 #endif 178 195 IF (ierr /= NF_NOERR) THEN 179 196 abort_message = 'Lecture echouee pour <FLIC>' … … 188 205 CALL abort_physic(modname,abort_message,1) 189 206 ENDIF 190 ierr = nf90_get_var(nid,nvarid,nat_lu,start,epais) 207 #ifdef NC_DOUBLE 208 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais, nat_lu) 209 #else 210 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais, nat_lu) 211 #endif 191 212 IF (ierr /= NF_NOERR) THEN 192 213 abort_message = 'Lecture echouee pour <NAT>' … … 218 239 CALL abort_physic(modname,abort_message,1) 219 240 ENDIF 220 ierr = nf90_get_var(nid,nvarid,sst_lu,start,epais) 241 #ifdef NC_DOUBLE 242 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais, sst_lu) 243 #else 244 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais, sst_lu) 245 #endif 221 246 IF (ierr /= NF_NOERR) THEN 222 247 abort_message = 'Lecture echouee pour <SST>' -
LMDZ6/trunk/libf/phylmd/iostart.F90
r5075 r5084 1 1 MODULE iostart 2 2 3 3 PRIVATE 4 4 INTEGER,SAVE :: nid_start … … 30 30 31 31 SUBROUTINE Open_startphy(filename) 32 USE lmdz_netcdf, ONLY: nf90_nowrite, nf90_noerr,nf90_open32 USE netcdf 33 33 USE mod_phys_lmdz_para 34 34 IMPLICIT NONE … … 38 38 IF (is_mpi_root .AND. is_omp_root) THEN 39 39 ierr = NF90_OPEN (filename, NF90_NOWRITE,nid_start) 40 IF (ierr /=NF90_NOERR) THEN40 IF (ierr.NE.NF90_NOERR) THEN 41 41 write(6,*)' Pb d''ouverture du fichier '//filename 42 42 write(6,*)' ierr = ', ierr … … 48 48 49 49 SUBROUTINE Close_startphy 50 USE lmdz_netcdf, ONLY: nf90_close50 USE netcdf 51 51 USE mod_phys_lmdz_para 52 52 IMPLICIT NONE … … 61 61 62 62 FUNCTION Inquire_Field(Field_name) 63 USE lmdz_netcdf, ONLY: nf90_noerr,nf90_inq_varid63 USE netcdf 64 64 USE mod_phys_lmdz_para 65 65 IMPLICIT NONE … … 115 115 116 116 SUBROUTINE Get_field_rgen(field_name,field,field_size,found) 117 USE lmdz_netcdf, ONLY: nf90_inq_varid,nf90_noerr,nf90_get_var117 USE netcdf 118 118 USE dimphy 119 119 USE geometry_mod … … 251 251 252 252 SUBROUTINE Get_var_rgen(var_name,var,var_size,found) 253 USE lmdz_netcdf, ONLY: nf90_noerr,nf90_get_var,nf90_inq_varid253 USE netcdf 254 254 USE dimphy 255 255 USE mod_grid_phy_lmdz … … 301 301 302 302 SUBROUTINE open_restartphy(filename) 303 USE lmdz_netcdf, ONLY: nf90_create,nf90_clobber,nf90_64bit_offset,nf90_noerr,nf90_strerror,& 304 nf90_global,nf90_put_att,nf90_def_dim 303 USE netcdf 305 304 USE mod_phys_lmdz_para, ONLY: is_master 306 305 USE mod_grid_phy_lmdz, ONLY: klon_glo … … 333 332 334 333 SUBROUTINE enddef_restartphy 335 USE lmdz_netcdf, ONLY: nf90_enddef334 USE netcdf 336 335 USE mod_phys_lmdz_para 337 336 IMPLICIT NONE … … 343 342 344 343 SUBROUTINE close_restartphy 345 USE lmdz_netcdf, ONLY: nf90_close344 USE netcdf 346 345 USE mod_phys_lmdz_para 347 346 IMPLICIT NONE … … 386 385 387 386 SUBROUTINE put_field_rgen(pass, field_name,title,field,field_size) 388 USE lmdz_netcdf, ONLY: nf90_def_var,nf90_format,nf90_put_att,nf90_inq_varid,nf90_put_var387 USE netcdf 389 388 USE dimphy 390 389 USE geometry_mod … … 425 424 426 425 ! ierr = NF90_REDEF (nid_restart) 427 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_FORMAT,(/ idim /),nvarid) 426 #ifdef NC_DOUBLE 427 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_DOUBLE,(/ idim /),nvarid) 428 #else 429 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_FLOAT,(/ idim /),nvarid) 430 #endif 428 431 IF (LEN_TRIM(title) > 0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 429 432 ! ierr = NF90_ENDDEF(nid_restart) … … 509 512 510 513 SUBROUTINE put_var_rgen(pass, var_name,title,var,var_size) 511 USE lmdz_netcdf, ONLY: nf90_format,nf90_def_var,nf90_put_var,nf90_inq_varid,nf90_put_att514 USE netcdf 512 515 USE dimphy 513 516 USE mod_phys_lmdz_para … … 534 537 ! ierr = NF90_REDEF (nid_restart) 535 538 536 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FORMAT,(/ idim1 /),nvarid) 539 #ifdef NC_DOUBLE 540 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_DOUBLE,(/ idim1 /),nvarid) 541 #else 542 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FLOAT,(/ idim1 /),nvarid) 543 #endif 537 544 IF (LEN_TRIM(title)>0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 538 545 ! ierr = NF90_ENDDEF(nid_restart) -
LMDZ6/trunk/libf/phylmd/iotd_ecrit.F90
r5075 r5084 22 22 !================================================================= 23 23 24 USE lmdz_netcdf, ONLY: nf90_put_var,nf_inq_varid,nf_enddef,nf_redef,nf_sync,nf_noerr,& 25 nf_float,nf_def_var 24 use netcdf, only: nf90_put_var 26 25 implicit none 27 26 28 27 ! Commons 29 28 29 INCLUDE "netcdf.inc" 30 30 INCLUDE "iotd.h" 31 31 … … 90 90 91 91 !! Quand on tombe sur la premiere variable on ajoute un pas de temps 92 if (nom ==firstnom) then92 if (nom.eq.firstnom) then 93 93 ! We have identified a "first call" (at given date) 94 94 … … 114 114 ! print*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date 115 115 116 if (ierr /=NF_NOERR) then116 if (ierr.ne.NF_NOERR) then 117 117 write(*,*) "***** PUT_VAR matter in writediagfi_nc" 118 118 write(*,*) "***** with time" … … 175 175 ierr= NF90_PUT_VAR(nid,varid,zx,corner,edges) 176 176 177 if (ierr /=NF_NOERR) then177 if (ierr.ne.NF_NOERR) then 178 178 write(*,*) "***** PUT_VAR problem in writediagfi" 179 179 write(*,*) "***** with ",nom -
LMDZ6/trunk/libf/phylmd/iotd_fin.F90
r5075 r5084 1 SUBROUTINE iotd_fin2 USE lmdz_netcdf, ONLY : nf_close1 SUBROUTINE iotd_fin 2 IMPLICIT NONE 3 3 4 IMPLICIT NONE 4 !======================================================================= 5 ! 6 ! Auteur: F. Hourdin 7 ! ------- 8 ! 9 ! Objet: 10 ! ------ 11 ! Light interface for netcdf outputs. can be used outside LMDZ 12 ! 13 !======================================================================= 5 14 6 !=======================================================================7 !8 ! Auteur: F. Hourdin9 ! -------10 !11 ! Objet:12 ! ------13 ! Light interface for netcdf outputs. can be used outside LMDZ14 !15 !=======================================================================16 15 17 INCLUDE "iotd.h" 18 integer ierr 16 INCLUDE "netcdf.inc" 17 INCLUDE "iotd.h" 18 integer ierr 19 19 20 21 20 ! Arguments: 21 ! ---------- 22 22 23 ierr =NF_close(nid)23 ierr=NF_close(nid) 24 24 25 END25 END -
LMDZ6/trunk/libf/phylmd/iotd_ini.F90
r5075 r5084 1 1 SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier) 2 USE lmdz_netcdf, ONLY: nf_enddef,nf_put_att_text,nf_float,nf_def_var,nf_redef,&3 nf_global,nf_def_dim,nf_create,nf_clobber,nf_unlimited,nf90_put_var4 2 IMPLICIT NONE 5 3 … … 18 16 ! ------------- 19 17 18 INCLUDE "netcdf.inc" 20 19 INCLUDE "iotd.h" 21 20 … … 32 31 real px(1000) 33 32 character (len=10) :: nom 34 real (kind=4)rlon(iim),rlat(jjm),coordv(llm)33 real*4 rlon(iim),rlat(jjm),coordv(llm) 35 34 36 35 ! Local: … … 72 71 n_names_iotd_def=0 73 72 open(99,file='iotd.def',form='formatted',status='old',iostat=ierr) 74 if ( ierr ==0 ) then73 if ( ierr.eq.0 ) then 75 74 ierr=0 76 75 do while (ierr==0) … … 113 112 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east") 114 113 ierr=NF_ENDDEF(nid) 115 ierr= nf90_put_var(nid,nvarid,rlon)114 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlon) 116 115 print*,ierr 117 116 … … 122 121 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north") 123 122 ierr=NF_ENDDEF(nid) 124 ierr= nf90_put_var(nid,nvarid,rlat)123 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlat) 125 124 ! 126 125 ! ---- vertical ------------ … … 136 135 endif 137 136 ierr=NF_ENDDEF(nid) 138 ierr= nf90_put_var(nid,nvarid,coordv)137 ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv) 139 138 140 139 ! -
LMDZ6/trunk/libf/phylmd/limit_read_mod.F90
r5075 r5084 165 165 USE mod_phys_lmdz_para 166 166 USE surface_data, ONLY : type_ocean, ok_veget 167 USE lmdz_netcdf, ONLY:nf90_get_var,nf90_inq_varid,nf90_close,nf90_inquire_dimension,& 168 nf90_inquire,nf90_get_att,nf90_inq_dimid,nf90_nowrite,nf90_noerr,nf90_open 167 USE netcdf 169 168 USE indice_sol_mod 170 169 USE phys_cal_mod, ONLY : calend, year_len -
LMDZ6/trunk/libf/phylmd/limit_slab.F90
r5075 r5084 6 6 USE mod_grid_phy_lmdz, ONLY: klon_glo 7 7 USE mod_phys_lmdz_para 8 USE lmdz_netcdf, ONLY: nf90_close,nf90_get_var,nf90_inq_varid,nf90_nowrite,nf90_noerr,nf90_open8 USE netcdf 9 9 USE indice_sol_mod 10 10 USE ocean_slab_mod, ONLY: nslay … … 99 99 END IF 100 100 ! Try next layers if more than 1 101 IF ((nslay >1).AND.read_bils) THEN101 IF ((nslay.GT.1).AND.read_bils) THEN 102 102 DO i=2,nslay 103 103 WRITE(str2,'(i2.2)') i 104 104 ierr = NF90_INQ_VARID(nid,'BILS_OCE'//str2, nvarid) 105 IF (ierr ==NF90_NOERR) THEN105 IF (ierr.EQ.NF90_NOERR) THEN 106 106 ierr = NF90_GET_VAR(nid,nvarid,bils_glo(:,i),start,epais) 107 107 ENDIF -
LMDZ6/trunk/libf/phylmd/mo_simple_plumes.F90
r5075 r5084 24 24 MODULE MO_SIMPLE_PLUMES 25 25 26 USE lmdz_netcdf, ONLY:nf90_get_var,nf90_close,nf90_inq_varid,nf90_inq_dimid,& 27 nf90_inquire_dimension,nf90_noerr,nf90_nowrite,nf90_open 26 USE netcdf 28 27 29 28 IMPLICIT NONE -
LMDZ6/trunk/libf/phylmd/moy_undefSTD.F90
r5075 r5084 3 3 4 4 SUBROUTINE moy_undefstd(itap, itapm1) 5 USE lmdz_netcdf, ONLY: nf90_fill_real5 USE netcdf 6 6 USE dimphy 7 7 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/open_climoz_m.F90
r5075 r5084 13 13 !------------------------------------------------------------------------------- 14 14 USE netcdf95, ONLY: nf95_open, nf95_close, nf95_gw_var, nf95_inq_varid 15 USE lmdz_netcdf, ONLY: nf90_nowrite15 USE netcdf, ONLY: nf90_nowrite 16 16 USE mod_phys_lmdz_mpi_data, ONLY: is_mpi_root 17 17 USE mod_phys_lmdz_mpi_transfert, ONLY: bcast_mpi -
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r5075 r5084 415 415 use lmdz_blowing_snow_ini, only : zeta_bs 416 416 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 417 USE lmdz_netcdf, only: missing_val_netcdf => nf90_fill_real417 USE netcdf, only: missing_val_netcdf => nf90_fill_real 418 418 419 419 -
LMDZ6/trunk/libf/phylmd/phyaqua_mod.F90
r5073 r5084 133 133 !END IF 134 134 135 if (year_len /=360) then135 if (year_len.ne.360) then 136 136 write (*,*) year_len 137 137 call abort_physic("iniaqua", 'iniaqua: 360 day calendar is required !', 1) … … 517 517 IMPLICIT NONE 518 518 519 include "netcdf.inc" 520 519 521 INTEGER, INTENT (IN) :: klon 520 522 REAL, INTENT (IN) :: phy_nat(klon, 360) … … 570 572 USE mod_phys_lmdz_transfert_para, ONLY: gather 571 573 USE phys_cal_mod, ONLY: year_len 572 use lmdz_netcdf, ONLY: nf90_def_var, nf90_put_var, nf90_get_var, nf_strerror, nf_close, & 573 nf_enddef, nf_put_att_text, nf_unlimited, nf_noerr, nf_global, nf_clobber, & 574 nf_64bit_offset, nf90_format, nf_def_dim, nf_create 574 use netcdf, only: nf90_def_var, nf90_double, nf90_float 575 575 IMPLICIT NONE 576 include "netcdf.inc" 576 577 577 578 INTEGER, INTENT (IN) :: klon … … 615 616 dims(2) = ntim 616 617 617 ierr = nf90_def_var(nid, 'TEMPS', NF90_FORMAT, [ntim], id_tim) 618 #ifdef NC_DOUBLE 619 ierr = nf90_def_var(nid, 'TEMPS', nf90_double, [ntim], id_tim) 620 #else 621 ierr = nf90_def_var(nid, 'TEMPS', nf90_float, [ntim], id_tim) 622 #endif 618 623 ierr = nf_put_att_text(nid, id_tim, 'title', 17, 'Jour dans l annee') 619 624 620 ierr = nf90_def_var(nid, 'NAT', NF90_FORMAT, dims, id_nat) 625 #ifdef NC_DOUBLE 626 ierr = nf90_def_var(nid, 'NAT', nf90_double, dims, id_nat) 627 #else 628 ierr = nf90_def_var(nid, 'NAT', nf90_float, dims, id_nat) 629 #endif 621 630 ierr = nf_put_att_text(nid, id_nat, 'title', 23, & 622 631 'Nature du sol (0,1,2,3)') 623 632 624 ierr = nf90_def_var(nid, 'SST', NF90_FORMAT, dims, id_sst) 633 #ifdef NC_DOUBLE 634 ierr = nf90_def_var(nid, 'SST', nf90_double, dims, id_sst) 635 #else 636 ierr = nf90_def_var(nid, 'SST', nf90_float, dims, id_sst) 637 #endif 625 638 ierr = nf_put_att_text(nid, id_sst, 'title', 35, & 626 639 'Temperature superficielle de la mer') 627 640 628 ierr = nf90_def_var(nid, 'BILS', NF90_FORMAT, dims, id_bils) 641 #ifdef NC_DOUBLE 642 ierr = nf90_def_var(nid, 'BILS', nf90_double, dims, id_bils) 643 #else 644 ierr = nf90_def_var(nid, 'BILS', nf90_float, dims, id_bils) 645 #endif 629 646 ierr = nf_put_att_text(nid, id_bils, 'title', 32, & 630 647 'Reference flux de chaleur au sol') 631 648 632 ierr = nf90_def_var(nid, 'ALB', NF90_FORMAT, dims, id_alb) 649 #ifdef NC_DOUBLE 650 ierr = nf90_def_var(nid, 'ALB', nf90_double, dims, id_alb) 651 #else 652 ierr = nf90_def_var(nid, 'ALB', nf90_float, dims, id_alb) 653 #endif 633 654 ierr = nf_put_att_text(nid, id_alb, 'title', 19, 'Albedo a la surface') 634 655 635 ierr = nf90_def_var(nid, 'RUG', NF90_FORMAT, dims, id_rug) 656 #ifdef NC_DOUBLE 657 ierr = nf90_def_var(nid, 'RUG', nf90_double, dims, id_rug) 658 #else 659 ierr = nf90_def_var(nid, 'RUG', nf90_float, dims, id_rug) 660 #endif 636 661 ierr = nf_put_att_text(nid, id_rug, 'title', 8, 'Rugosite') 637 662 638 ierr = nf90_def_var(nid, 'FTER', NF90_FORMAT, dims, id_fter) 663 #ifdef NC_DOUBLE 664 ierr = nf90_def_var(nid, 'FTER', nf90_double, dims, id_fter) 665 #else 666 ierr = nf90_def_var(nid, 'FTER', nf90_float, dims, id_fter) 667 #endif 639 668 ierr = nf_put_att_text(nid, id_fter, 'title',10,'Frac. Land') 640 ierr = nf90_def_var(nid, 'FOCE', NF90_FORMAT, dims, id_foce) 669 #ifdef NC_DOUBLE 670 ierr = nf90_def_var(nid, 'FOCE', nf90_double, dims, id_foce) 671 #else 672 ierr = nf90_def_var(nid, 'FOCE', nf90_float, dims, id_foce) 673 #endif 641 674 ierr = nf_put_att_text(nid, id_foce, 'title',11,'Frac. Ocean') 642 ierr = nf90_def_var(nid, 'FSIC', NF90_FORMAT, dims, id_fsic) 675 #ifdef NC_DOUBLE 676 ierr = nf90_def_var(nid, 'FSIC', nf90_double, dims, id_fsic) 677 #else 678 ierr = nf90_def_var(nid, 'FSIC', nf90_float, dims, id_fsic) 679 #endif 643 680 ierr = nf_put_att_text(nid, id_fsic, 'title',13,'Frac. Sea Ice') 644 ierr = nf90_def_var(nid, 'FLIC', NF90_FORMAT, dims, id_flic) 681 #ifdef NC_DOUBLE 682 ierr = nf90_def_var(nid, 'FLIC', nf90_double, dims, id_flic) 683 #else 684 ierr = nf90_def_var(nid, 'FLIC', nf90_float, dims, id_flic) 685 #endif 645 686 ierr = nf_put_att_text(nid, id_flic, 'title',14,'Frac. Land Ice') 646 687 … … 654 695 ! write the 'times' 655 696 DO k = 1, year_len 656 ierr = nf90_put_var(nid, id_tim, k, [k]) 697 #ifdef NC_DOUBLE 698 ierr = nf_put_var1_double(nid, id_tim, k, dble(k)) 699 #else 700 ierr = nf_put_var1_real(nid, id_tim, k, float(k)) 701 #endif 657 702 IF (ierr/=nf_noerr) THEN 658 703 WRITE (*, *) 'writelim error with temps(k),k=', k … … 667 712 CALL gather(phy_nat, phy_glo) 668 713 IF (is_master) THEN 669 ierr = nf90_put_var(nid, id_nat, phy_glo) 714 #ifdef NC_DOUBLE 715 ierr = nf_put_var_double(nid, id_nat, phy_glo) 716 #else 717 ierr = nf_put_var_real(nid, id_nat, phy_glo) 718 #endif 670 719 IF (ierr/=nf_noerr) THEN 671 720 WRITE (*, *) 'writelim error with phy_nat' … … 676 725 CALL gather(phy_sst, phy_glo) 677 726 IF (is_master) THEN 678 ierr = nf90_put_var(nid, id_sst, phy_glo) 727 #ifdef NC_DOUBLE 728 ierr = nf_put_var_double(nid, id_sst, phy_glo) 729 #else 730 ierr = nf_put_var_real(nid, id_sst, phy_glo) 731 #endif 679 732 IF (ierr/=nf_noerr) THEN 680 733 WRITE (*, *) 'writelim error with phy_sst' … … 685 738 CALL gather(phy_bil, phy_glo) 686 739 IF (is_master) THEN 687 ierr = nf90_put_var(nid, id_bils, phy_glo) 740 #ifdef NC_DOUBLE 741 ierr = nf_put_var_double(nid, id_bils, phy_glo) 742 #else 743 ierr = nf_put_var_real(nid, id_bils, phy_glo) 744 #endif 688 745 IF (ierr/=nf_noerr) THEN 689 746 WRITE (*, *) 'writelim error with phy_bil' … … 694 751 CALL gather(phy_alb, phy_glo) 695 752 IF (is_master) THEN 696 ierr = nf90_put_var(nid, id_alb, phy_glo) 753 #ifdef NC_DOUBLE 754 ierr = nf_put_var_double(nid, id_alb, phy_glo) 755 #else 756 ierr = nf_put_var_real(nid, id_alb, phy_glo) 757 #endif 697 758 IF (ierr/=nf_noerr) THEN 698 759 WRITE (*, *) 'writelim error with phy_alb' … … 703 764 CALL gather(phy_rug, phy_glo) 704 765 IF (is_master) THEN 705 ierr = nf90_put_var(nid, id_rug, phy_glo) 766 #ifdef NC_DOUBLE 767 ierr = nf_put_var_double(nid, id_rug, phy_glo) 768 #else 769 ierr = nf_put_var_real(nid, id_rug, phy_glo) 770 #endif 706 771 IF (ierr/=nf_noerr) THEN 707 772 WRITE (*, *) 'writelim error with phy_rug' … … 712 777 CALL gather(phy_fter, phy_glo) 713 778 IF (is_master) THEN 714 ierr = nf90_put_var(nid, id_fter, phy_glo) 779 #ifdef NC_DOUBLE 780 ierr = nf_put_var_double(nid, id_fter, phy_glo) 781 #else 782 ierr = nf_put_var_real(nid, id_fter, phy_glo) 783 #endif 715 784 IF (ierr/=nf_noerr) THEN 716 785 WRITE (*, *) 'writelim error with phy_fter' … … 721 790 CALL gather(phy_foce, phy_glo) 722 791 IF (is_master) THEN 723 ierr = nf90_put_var(nid, id_foce, phy_glo) 792 #ifdef NC_DOUBLE 793 ierr = nf_put_var_double(nid, id_foce, phy_glo) 794 #else 795 ierr = nf_put_var_real(nid, id_foce, phy_glo) 796 #endif 724 797 IF (ierr/=nf_noerr) THEN 725 798 WRITE (*, *) 'writelim error with phy_foce' … … 730 803 CALL gather(phy_fsic, phy_glo) 731 804 IF (is_master) THEN 732 ierr = nf90_put_var(nid, id_fsic, phy_glo) 805 #ifdef NC_DOUBLE 806 ierr = nf_put_var_double(nid, id_fsic, phy_glo) 807 #else 808 ierr = nf_put_var_real(nid, id_fsic, phy_glo) 809 #endif 733 810 IF (ierr/=nf_noerr) THEN 734 811 WRITE (*, *) 'writelim error with phy_fsic' … … 739 816 CALL gather(phy_flic, phy_glo) 740 817 IF (is_master) THEN 741 ierr = nf90_put_var(nid, id_flic, phy_glo) 818 #ifdef NC_DOUBLE 819 ierr = nf_put_var_double(nid, id_flic, phy_glo) 820 #else 821 ierr = nf_put_var_real(nid, id_flic, phy_glo) 822 #endif 742 823 IF (ierr/=nf_noerr) THEN 743 824 WRITE (*, *) 'writelim error with phy_flic' … … 939 1020 END IF 940 1021 941 if (type_profil ==20) then1022 if (type_profil.EQ.20) then 942 1023 print*,'Profile SST 20' 943 1024 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K … … 948 1029 endif 949 1030 950 if (type_profil ==21) then1031 if (type_profil.EQ.21) then 951 1032 print*,'Profile SST 21' 952 1033 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K -
LMDZ6/trunk/libf/phylmd/phyetat0_mod.F90
r5075 r5084 40 40 USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy 41 41 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 42 use lmdz_netcdf, only: missing_val_netcdf => nf90_fill_real42 use netcdf, only: missing_val_netcdf => nf90_fill_real 43 43 use config_ocean_skin_m, only: activate_ocean_skin 44 44 … … 152 152 tab_cntrl(6)=nbapp_rad 153 153 154 IF (iflag_cycle_diurne >=1) tab_cntrl( 7) = iflag_cycle_diurne154 IF (iflag_cycle_diurne.GE.1) tab_cntrl( 7) = iflag_cycle_diurne 155 155 IF (soil_model) tab_cntrl( 8) =1. 156 156 IF (new_oliq) tab_cntrl( 9) =1. … … 251 251 + pctsrf(1 : klon, is_lic) 252 252 DO i = 1 , klon 253 IF ( abs(fractint(i) - zmasq(i) ) >EPSFRA ) THEN253 IF ( abs(fractint(i) - zmasq(i) ) .GT. EPSFRA ) THEN 254 254 WRITE(*, *) 'phyetat0: attention fraction terre pas ', & 255 255 'coherente ', i, zmasq(i), pctsrf(i, is_ter) & … … 262 262 + pctsrf(1 : klon, is_sic) 263 263 DO i = 1 , klon 264 IF ( abs( fractint(i) - (1. - zmasq(i))) >EPSFRA ) THEN264 IF ( abs( fractint(i) - (1. - zmasq(i))) .GT. EPSFRA ) THEN 265 265 WRITE(*, *) 'phyetat0 attention fraction ocean pas ', & 266 266 'coherente ', i, zmasq(i) , pctsrf(i, is_oce) & … … 290 290 DO nsrf = 1, nbsrf 291 291 DO isw=1, nsw 292 IF (isw >99) THEN292 IF (isw.GT.99) THEN 293 293 PRINT*, "Trop de bandes SW" 294 294 call abort_physic("phyetat0", "", 1) … … 313 313 314 314 DO isoil=1, nsoilmx 315 IF (isoil >99) THEN315 IF (isoil.GT.99) THEN 316 316 PRINT*, "Trop de couches " 317 317 call abort_physic("phyetat0", "", 1) … … 416 416 ! dummy values (as is the case when generated by ce0l, 417 417 ! or by iniaqua) 418 IF ( (maxval(q_ancien) ==minval(q_ancien)) .OR. &419 (maxval(ql_ancien) ==minval(ql_ancien)) .OR. &420 (maxval(qs_ancien) ==minval(qs_ancien)) .OR. &421 (maxval(rneb_ancien) ==minval(rneb_ancien)) .OR. &422 (maxval(prw_ancien) ==minval(prw_ancien)) .OR. &423 (maxval(prlw_ancien) ==minval(prlw_ancien)) .OR. &424 (maxval(prsw_ancien) ==minval(prsw_ancien)) .OR. &425 (maxval(t_ancien) ==minval(t_ancien)) ) THEN418 IF ( (maxval(q_ancien).EQ.minval(q_ancien)) .OR. & 419 (maxval(ql_ancien).EQ.minval(ql_ancien)) .OR. & 420 (maxval(qs_ancien).EQ.minval(qs_ancien)) .OR. & 421 (maxval(rneb_ancien).EQ.minval(rneb_ancien)) .OR. & 422 (maxval(prw_ancien).EQ.minval(prw_ancien)) .OR. & 423 (maxval(prlw_ancien).EQ.minval(prlw_ancien)) .OR. & 424 (maxval(prsw_ancien).EQ.minval(prsw_ancien)) .OR. & 425 (maxval(t_ancien).EQ.minval(t_ancien)) ) THEN 426 426 ancien_ok=.false. 427 427 ENDIF 428 428 429 429 IF (ok_bs) THEN 430 IF ( (maxval(qbs_ancien) ==minval(qbs_ancien)) .OR. &431 (maxval(prbsw_ancien) ==minval(prbsw_ancien)) ) THEN430 IF ( (maxval(qbs_ancien).EQ.minval(qbs_ancien)) .OR. & 431 (maxval(prbsw_ancien).EQ.minval(prbsw_ancien)) ) THEN 432 432 ancien_ok=.false. 433 433 ENDIF … … 549 549 IF ( type_ocean == 'slab' ) THEN 550 550 CALL ocean_slab_init(phys_tstep, pctsrf) 551 IF (nslay ==1) THEN551 IF (nslay.EQ.1) THEN 552 552 found=phyetat0_get(tslab,["tslab01","tslab "],"tslab",0.) 553 553 ELSE … … 578 578 PRINT*, "Initialisation a 0/1m suivant fraction glace" 579 579 seaice(:)=0. 580 WHERE (pctsrf(:,is_sic) >EPSFRA)580 WHERE (pctsrf(:,is_sic).GT.EPSFRA) 581 581 seaice=917. 582 582 ENDWHERE -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r5066 r5084 352 352 !$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf) 353 353 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_vdf, d_dens_vdf 354 !!! $OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)354 !!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf) 355 355 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_the, d_deltaq_the 356 356 !$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the) 357 357 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_the, d_dens_the 358 !!! $OMP THREADPRIVATE(d_s_the, d_dens_the)358 !!!OMP THREADPRIVATE(d_s_the, d_dens_the) 359 359 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: d_deltat_ajs_cv, d_deltaq_ajs_cv 360 360 !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r5075 r5084 456 456 USE ioipsl, ONLY: histend, histsync 457 457 USE iophy, ONLY: set_itau_iophy, histwrite_phy 458 USE lmdz_netcdf, ONLY: nf90_fill_real458 USE netcdf, ONLY: nf90_fill_real 459 459 USE print_control_mod, ONLY: prt_level,lunout 460 460 ! ug Pour les sorties XIOS … … 555 555 kmax_100m=1 556 556 DO k=1, klev-1 557 IF (presnivs(k) >0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin557 IF (presnivs(k).GT.0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin 558 558 ENDDO 559 559 ENDIF … … 782 782 DO k=1, kmax_100m-1 !--we could stop much lower 783 783 DO i=1,klon 784 IF (z(i,k) <100..AND.z(i,k+1)>=100.) THEN784 IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN 785 785 wind100m(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + & 786 786 (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 ) … … 794 794 !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier 795 795 DO i=1,klon 796 IF (pctsrf(i,is_ter) >0.05 .AND. wind100m(i)/=missing_val) THEN796 IF (pctsrf(i,is_ter).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN 797 797 x=wind100m(i) 798 IF (x <=3.0 .OR. x>=22.5) THEN798 IF (x.LE.3.0 .OR. x.GE.22.5) THEN 799 799 zx_tmp_fi2d(i)=0.0 800 ELSE IF (x >=10.0) THEN800 ELSE IF (x.GE.10.0) THEN 801 801 zx_tmp_fi2d(i)=1.0 802 802 ELSE … … 815 815 !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier 816 816 DO i=1,klon 817 IF (pctsrf(i,is_oce) >0.05 .AND. wind100m(i)/=missing_val) THEN817 IF (pctsrf(i,is_oce).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN 818 818 x=wind100m(i) 819 IF (x <=3.0 .OR. x>=25.5) THEN819 IF (x.LE.3.0 .OR. x.GE.25.5) THEN 820 820 zx_tmp_fi2d(i)=0.0 821 ELSE IF (x >=12.5) THEN821 ELSE IF (x.GE.12.5) THEN 822 822 zx_tmp_fi2d(i)=1.0 823 823 ELSE … … 1407 1407 CALL histwrite_phy(o_uwat, uwat) 1408 1408 CALL histwrite_phy(o_vwat, vwat) 1409 IF (iflag_con >=3) THEN ! sb1409 IF (iflag_con.GE.3) THEN ! sb 1410 1410 CALL histwrite_phy(o_cape, cape) 1411 1411 CALL histwrite_phy(o_pbase, ema_pcb) … … 1512 1512 DO k=1, nlevSTD 1513 1513 bb2=clevSTD(k) 1514 IF (bb2 =="850".OR.bb2=="700".OR. &1515 bb2 =="500".OR.bb2=="200".OR. &1516 bb2 =="100".OR. &1517 bb2 =="50".OR.bb2=="10") THEN1514 IF (bb2.EQ."850".OR.bb2.EQ."700".OR. & 1515 bb2.EQ."500".OR.bb2.EQ."200".OR. & 1516 bb2.EQ."100".OR. & 1517 bb2.EQ."50".OR.bb2.EQ."10") THEN 1518 1518 ll=ll+1 1519 1519 CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k)) … … 1530 1530 IF (vars_defined) THEN 1531 1531 DO i=1, klon 1532 IF (pctsrf(i,is_oce) >epsfra.OR. &1533 pctsrf(i,is_sic) >epsfra) THEN1532 IF (pctsrf(i,is_oce).GT.epsfra.OR. & 1533 pctsrf(i,is_sic).GT.epsfra) THEN 1534 1534 zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ & 1535 1535 ftsol(i, is_sic) * pctsrf(i,is_sic))/ & … … 1543 1543 1544 1544 ! Couplage convection-couche limite 1545 IF (iflag_con >=3) THEN1545 IF (iflag_con.GE.3) THEN 1546 1546 IF (iflag_coupl>=1) THEN 1547 1547 CALL histwrite_phy(o_ale_bl, ale_bl) … … 1550 1550 ENDIF !(iflag_con.GE.3) 1551 1551 ! Wakes 1552 IF (iflag_con ==3) THEN1552 IF (iflag_con.EQ.3) THEN 1553 1553 CALL histwrite_phy(o_Mipsh, Mipsh) 1554 1554 IF (iflag_wake>=1) THEN … … 1620 1620 CALL histwrite_phy(o_fqd, fqd) 1621 1621 ENDIF !(iflag_con.EQ.3) 1622 IF (iflag_con ==3.OR.iflag_con==30) THEN1622 IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN 1623 1623 ! sortie RomP convection descente insaturee iflag_con=30 1624 1624 ! etendue a iflag_con=3 (jyg) … … 1651 1651 IF (type_ocean=='slab ') THEN 1652 1652 CALL histwrite_phy(o_slab_bils, slab_wfbils) 1653 IF (nslay ==1) THEN1653 IF (nslay.EQ.1) THEN 1654 1654 IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1) 1655 1655 CALL histwrite_phy(o_tslab, zx_tmp_fi2d) … … 1669 1669 ENDIF 1670 1670 IF (slab_hdiff) THEN 1671 IF (nslay ==1) THEN1671 IF (nslay.EQ.1) THEN 1672 1672 IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1) 1673 1673 CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d) … … 1676 1676 ENDIF 1677 1677 ENDIF 1678 IF (slab_ekman >0) THEN1679 IF (nslay ==1) THEN1678 IF (slab_ekman.GT.0) THEN 1679 IF (nslay.EQ.1) THEN 1680 1680 IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1) 1681 1681 CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d) … … 1702 1702 IF (vars_defined) THEN 1703 1703 DO i=1, klon 1704 IF (zt2m(i) <=273.15) then1704 IF (zt2m(i).LE.273.15) then 1705 1705 zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.) 1706 1706 ELSE … … 1744 1744 !This is warranted by treating INCA aerosols as offline aerosols 1745 1745 #ifndef CPP_ECRAD 1746 IF (flag_aerosol >0) THEN1746 IF (flag_aerosol.GT.0) THEN 1747 1747 IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN 1748 1748 … … 1777 1777 ENDIF 1778 1778 !--STRAT AER 1779 IF (flag_aerosol >0.OR.flag_aerosol_strat>0) THEN1779 IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN 1780 1780 DO naero = 1, naero_tot 1781 1781 CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero)) 1782 1782 ENDDO 1783 1783 ENDIF 1784 IF (flag_aerosol_strat >0) THEN1784 IF (flag_aerosol_strat.GT.0) THEN 1785 1785 CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy)) 1786 1786 ENDIF … … 1933 1933 CALL histwrite_phy(o_sollwai, zx_tmp_fi2d) 1934 1934 ENDIF 1935 IF (flag_aerosol >0.AND.ok_cdnc) THEN1935 IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN 1936 1936 CALL histwrite_phy(o_scdnc, scdnc) 1937 1937 CALL histwrite_phy(o_cldncl, cldncl) … … 2002 2002 #endif 2003 2003 2004 IF (flag_aerosol_strat ==2) THEN2004 IF (flag_aerosol_strat.EQ.2) THEN 2005 2005 CALL histwrite_phy(o_stratomask, stratomask) 2006 2006 ENDIF … … 2030 2030 CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d) 2031 2031 CALL histwrite_phy(o_rhum, zx_rh) 2032 IF (iflag_ice_thermo >0) THEN2032 IF (iflag_ice_thermo .GT. 0) THEN 2033 2033 IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100. 2034 2034 CALL histwrite_phy(o_rhl, zx_tmp_fi3d) … … 2111 2111 CALL histwrite_phy(o_dqlphy2d, zx_tmp_fi2d) 2112 2112 2113 IF (nqo ==3) THEN2113 IF (nqo.EQ.3) THEN 2114 2114 CALL histwrite_phy(o_dqsphy, d_qx(:,:,isol)) 2115 2115 IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d) … … 2195 2195 ENDIF 2196 2196 CALL histwrite_phy(o_dtcon, zx_tmp_fi3d) 2197 IF (iflag_thermals ==0) THEN2197 IF (iflag_thermals.EQ.0) THEN 2198 2198 IF (vars_defined) THEN 2199 2199 zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + & … … 2201 2201 ENDIF 2202 2202 CALL histwrite_phy(o_tntc, zx_tmp_fi3d) 2203 ELSE IF(iflag_thermals >=1.AND.iflag_wake==1) THEN2203 ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN 2204 2204 IF (vars_defined) THEN 2205 2205 zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + & … … 2218 2218 CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d) 2219 2219 2220 IF (iflag_thermals ==0) THEN2220 IF (iflag_thermals.EQ.0) THEN 2221 2221 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys 2222 2222 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 2223 ELSE IF (iflag_thermals >=1.AND.iflag_wake==1) THEN2223 ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN 2224 2224 IF (vars_defined) THEN 2225 2225 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + & … … 2694 2694 DO k=1, nlevSTD 2695 2695 DO i=1, klon 2696 IF (O3STD(i,k) /=missing_val) THEN2696 IF (O3STD(i,k).NE.missing_val) THEN 2697 2697 zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9 2698 2698 ELSE … … 2707 2707 DO k=1, nlevSTD 2708 2708 DO i=1, klon 2709 IF (O3daySTD(i,k) /=missing_val) THEN2709 IF (O3daySTD(i,k).NE.missing_val) THEN 2710 2710 zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9 2711 2711 ELSE -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r5075 r5084 10 10 ! Declaration des variables 11 11 USE dimphy 12 USE lmdz_netcdf, only: nf90_fill_real12 USE netcdf, only: nf90_fill_real 13 13 INTEGER, PARAMETER :: nlevSTD=17 14 14 INTEGER, PARAMETER :: nlevSTD8=8 -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5075 r5084 48 48 USE mod_phys_lmdz_para 49 49 USE netcdf95, only: nf95_close 50 USE lmdz_netcdf, only: nf90_fill_real ! IM for NMC files50 USE netcdf, only: nf90_fill_real ! IM for NMC files 51 51 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 52 52 USE ozonecm_m, only: ozonecm ! ozone of J.-F. Royer … … 1250 1250 !lwoff=y : offset LW CRE for radiation code and other schemes 1251 1251 REAL, SAVE :: betalwoff 1252 ! $OMP THREADPRIVATE(betalwoff)1252 !OMP THREADPRIVATE(betalwoff) 1253 1253 ! 1254 1254 INTEGER :: nbtr_tmp ! Number of tracer inside concvl -
LMDZ6/trunk/libf/phylmd/plevel.F90
r5075 r5084 7 7 ! ================================================================ 8 8 ! ================================================================ 9 USE lmdz_netcdf, ONLY: nf90_fill_real9 USE netcdf 10 10 USE dimphy 11 11 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/plevel_new.F90
r5075 r5084 8 8 ! ================================================================ 9 9 ! ================================================================ 10 USE netcdf 10 11 USE dimphy 11 12 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/press_coefoz_m.F90
r5075 r5084 24 24 25 25 use netcdf95, only: nf95_open, nf95_close, nf95_gw_var, nf95_inq_varid 26 use lmdz_netcdf, only: nf90_nowrite26 use netcdf, only: nf90_nowrite 27 27 28 28 use mod_phys_lmdz_mpi_data, only: is_mpi_root -
LMDZ6/trunk/libf/phylmd/read_map2D.F90
r5075 r5084 3 3 ! Return variable for the given timestep. 4 4 USE dimphy 5 USE lmdz_netcdf, ONLY: nf90_open,nf90_close,nf90_nowrite,nf90_noerr,nf90_get_var,nf90_inq_varid5 USE netcdf 6 6 USE mod_grid_phy_lmdz 7 7 USE mod_phys_lmdz_para -
LMDZ6/trunk/libf/phylmd/read_pstoke.F90
r5075 r5084 17 17 ! ****************************************************************************** 18 18 19 USE lmdz_netcdf, ONLY: nf90_open,nf90_inq_varid,nf90_nowrite,nf90_get_var,nf_inq_dim,& 20 nf_inq_dimid 19 USE netcdf 21 20 USE dimphy 22 21 USE indice_sol_mod … … 24 23 25 24 IMPLICIT NONE 25 26 include "netcdf.inc" 26 27 27 28 INTEGER klono, klevo, imo, jmo -
LMDZ6/trunk/libf/phylmd/read_pstoke0.F90
r5075 r5084 16 16 ! ****************************************************************************** 17 17 18 USE lmdz_netcdf, ONLY: nf_inq_dimid,nf_inq_dim,nf90_get_var,nf90_inq_varid,nf90_open,& 19 nf90_nowrite 18 USE netcdf 20 19 USE dimphy 21 20 USE indice_sol_mod … … 23 22 24 23 IMPLICIT NONE 24 25 include "netcdf.inc" 25 26 26 27 INTEGER kon, kev, zkon, zkev … … 252 253 ! niveaux de pression 253 254 254 status = nf 90_get_var(ncidp, varidpl, pl, [1], [kev])255 status = nf_get_vara_real(ncidp, varidpl, 1, kev, pl) 255 256 256 257 ! lecture de aire et phis … … 269 270 ! **** Geopotentiel au sol *************************************** 270 271 ! phis 271 status = nf90_get_var(ncidp, varidps, phisfi2, start, count) 272 #ifdef NC_DOUBLE 273 status = nf_get_vara_double(ncidp, varidps, start, count, phisfi2) 274 #else 275 status = nf_get_vara_real(ncidp, varidps, start, count, phisfi2) 276 #endif 272 277 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, phisfi2, phisfi) 273 278 274 279 ! **** Aires des mails aux sol ************************************ 275 280 ! aire 276 status = nf90_get_var(ncidp, varidai, airefi2, start, count) 281 #ifdef NC_DOUBLE 282 status = nf_get_vara_double(ncidp, varidai, start, count, airefi2) 283 #else 284 status = nf_get_vara_real(ncidp, varidai, start, count, airefi2) 285 #endif 277 286 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, airefi2, airefi) 278 287 ELSE … … 301 310 302 311 ! abder t 303 status = nf90_get_var(ncidp, varidt, t2, start, count) 312 #ifdef NC_DOUBLE 313 status = nf_get_vara_double(ncidp, varidt, start, count, t2) 314 #else 315 status = nf_get_vara_real(ncidp, varidt, start, count, t2) 316 #endif 304 317 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, t2, t) 305 318 … … 307 320 ! ******************************************** 308 321 ! mfu 309 status = nf90_get_var(ncidp, varidmfu, mfu2, start, count) 322 #ifdef NC_DOUBLE 323 status = nf_get_vara_double(ncidp, varidmfu, start, count, mfu2) 324 #else 325 status = nf_get_vara_real(ncidp, varidmfu, start, count, mfu2) 326 #endif 310 327 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, mfu2, mfu) 311 328 312 329 ! mfd 313 status = nf90_get_var(ncidp, varidmfd, mfd2, start, count) 330 #ifdef NC_DOUBLE 331 status = nf_get_vara_double(ncidp, varidmfd, start, count, mfd2) 332 #else 333 status = nf_get_vara_real(ncidp, varidmfd, start, count, mfd2) 334 #endif 314 335 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, mfd2, mfd) 315 336 316 337 ! en_u 317 status = nf90_get_var(ncidp, varidenu, en_u2, start, count) 338 #ifdef NC_DOUBLE 339 status = nf_get_vara_double(ncidp, varidenu, start, count, en_u2) 340 #else 341 status = nf_get_vara_real(ncidp, varidenu, start, count, en_u2) 342 #endif 318 343 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_u2, en_u) 319 344 320 345 ! de_u 321 status = nf90_get_var(ncidp, variddeu, de_u2, start, count) 346 #ifdef NC_DOUBLE 347 status = nf_get_vara_double(ncidp, variddeu, start, count, de_u2) 348 #else 349 status = nf_get_vara_real(ncidp, variddeu, start, count, de_u2) 350 #endif 322 351 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, de_u2, de_u) 323 352 324 353 ! en_d 325 status = nf90_get_var(ncidp, varidend, en_d2, start, count) 354 #ifdef NC_DOUBLE 355 status = nf_get_vara_double(ncidp, varidend, start, count, en_d2) 356 #else 357 status = nf_get_vara_real(ncidp, varidend, start, count, en_d2) 358 #endif 326 359 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_d2, en_d) 327 360 328 361 ! de_d 329 status = nf90_get_var(ncidp, varidded, de_d2, start, count) 362 #ifdef NC_DOUBLE 363 status = nf_get_vara_double(ncidp, varidded, start, count, de_d2) 364 #else 365 status = nf_get_vara_real(ncidp, varidded, start, count, de_d2) 366 #endif 330 367 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, de_d2, de_d) 331 368 … … 334 371 ! coefh 335 372 PRINT *, 'LECTURE de coefh a irec =', irec 336 status = nf90_get_var(ncidp, varidch, coefh2, start, count) 373 #ifdef NC_DOUBLE 374 status = nf_get_vara_double(ncidp, varidch, start, count, coefh2) 375 #else 376 status = nf_get_vara_real(ncidp, varidch, start, count, coefh2) 377 #endif 337 378 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, coefh2, coefh) 338 379 ! call dump2d(iip1,jjp1,coefh2(1,2),'COEFH2READ ') … … 343 384 ! Thermiques 344 385 PRINT *, 'LECTURE de fm_therm a irec =', irec 345 status = nf90_get_var(ncidp, varidfmth, fm_therm2, start, count) 386 #ifdef NC_DOUBLE 387 status = nf_get_vara_double(ncidp, varidfmth, start, count, fm_therm2) 388 #else 389 status = nf_get_vara_real(ncidp, varidfmth, start, count, fm_therm2) 390 #endif 346 391 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, fm_therm2, fm_therm) 347 392 PRINT *, 'LECTURE de en_therm a irec =', irec 348 status = nf90_get_var(ncidp, varidenth, en_therm2, start, count) 393 #ifdef NC_DOUBLE 394 status = nf_get_vara_double(ncidp, varidenth, start, count, en_therm2) 395 #else 396 status = nf_get_vara_real(ncidp, varidenth, start, count, en_therm2) 397 #endif 349 398 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_therm2, en_therm) 350 399 … … 352 401 ! ******************************************* 353 402 ! frac_impa 354 status = nf90_get_var(ncidp, varidfi, frac_impa2, start, count) 403 #ifdef NC_DOUBLE 404 status = nf_get_vara_double(ncidp, varidfi, start, count, frac_impa2) 405 #else 406 status = nf_get_vara_real(ncidp, varidfi, start, count, frac_impa2) 407 #endif 355 408 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, frac_impa2, frac_impa) 356 409 357 410 ! frac_nucl 358 411 359 status = nf90_get_var(ncidp, varidfn, frac_nucl2, start, count) 412 #ifdef NC_DOUBLE 413 status = nf_get_vara_double(ncidp, varidfn, start, count, frac_nucl2) 414 #else 415 status = nf_get_vara_real(ncidp, varidfn, start, count, frac_nucl2) 416 #endif 360 417 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, frac_nucl2, frac_nucl) 361 418 … … 369 426 ! pyu1 370 427 PRINT *, 'LECTURE de yu1 a irec =', irec 371 status = nf90_get_var(ncidp, varidyu1, pyu12, start, count) 428 #ifdef NC_DOUBLE 429 status = nf_get_vara_double(ncidp, varidyu1, start, count, pyu12) 430 #else 431 status = nf_get_vara_real(ncidp, varidyu1, start, count, pyu12) 432 #endif 372 433 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, pyu12, pyu1) 373 434 374 435 ! pyv1 375 436 PRINT *, 'LECTURE de yv1 a irec =', irec 376 status = nf90_get_var(ncidp, varidyv1, pyv12, start, count) 437 #ifdef NC_DOUBLE 438 status = nf_get_vara_double(ncidp, varidyv1, start, count, pyv12) 439 #else 440 status = nf_get_vara_real(ncidp, varidyv1, start, count, pyv12) 441 #endif 377 442 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, pyv12, pyv1) 378 443 … … 380 445 ! ftsol1 381 446 PRINT *, 'LECTURE de ftsol1 a irec =', irec 382 status = nf90_get_var(ncidp, varidfts1, ftsol12, start, count) 447 #ifdef NC_DOUBLE 448 status = nf_get_vara_double(ncidp, varidfts1, start, count, ftsol12) 449 #else 450 status = nf_get_vara_real(ncidp, varidfts1, start, count, ftsol12) 451 #endif 383 452 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol12, ftsol1) 384 453 385 454 ! ftsol2 386 455 PRINT *, 'LECTURE de ftsol2 a irec =', irec 387 status = nf90_get_var(ncidp, varidfts2, ftsol22, start, count) 456 #ifdef NC_DOUBLE 457 status = nf_get_vara_double(ncidp, varidfts2, start, count, ftsol22) 458 #else 459 status = nf_get_vara_real(ncidp, varidfts2, start, count, ftsol22) 460 #endif 388 461 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol22, ftsol2) 389 462 390 463 ! ftsol3 391 464 PRINT *, 'LECTURE de ftsol3 a irec =', irec 392 status = nf90_get_var(ncidp, varidfts3, ftsol32, start, count) 465 #ifdef NC_DOUBLE 466 status = nf_get_vara_double(ncidp, varidfts3, start, count, ftsol32) 467 #else 468 status = nf_get_vara_real(ncidp, varidfts3, start, count, ftsol32) 469 #endif 393 470 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol32, ftsol3) 394 471 395 472 ! ftsol4 396 status = nf90_get_var(ncidp, varidfts4, ftsol42, start, count) 473 #ifdef NC_DOUBLE 474 status = nf_get_vara_double(ncidp, varidfts4, start, count, ftsol42) 475 #else 476 status = nf_get_vara_real(ncidp, varidfts4, start, count, ftsol42) 477 #endif 397 478 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol42, ftsol4) 398 479 399 480 ! **** Nature sol ******************************************** 400 481 ! psrf1 401 status = nf90_get_var(ncidp, varidpsr1, psrf12, start, count) 482 #ifdef NC_DOUBLE 483 status = nf_get_vara_double(ncidp, varidpsr1, start, count, psrf12) 484 #else 485 status = nf_get_vara_real(ncidp, varidpsr1, start, count, psrf12) 486 #endif 402 487 ! call dump2d(iip1-1,jjm+1,psrf12,'PSRF1NC') 403 488 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf12, psrf1) 404 489 405 490 ! psrf2 406 status = nf90_get_var(ncidp, varidpsr2, psrf22, start, count) 491 #ifdef NC_DOUBLE 492 status = nf_get_vara_double(ncidp, varidpsr2, start, count, psrf22) 493 #else 494 status = nf_get_vara_real(ncidp, varidpsr2, start, count, psrf22) 495 #endif 407 496 ! call dump2d(iip1-1,jjm+1,psrf22,'PSRF2NC') 408 497 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf22, psrf2) 409 498 410 499 ! psrf3 411 status = nf90_get_var(ncidp, varidpsr3, psrf32, start, count) 500 #ifdef NC_DOUBLE 501 status = nf_get_vara_double(ncidp, varidpsr3, start, count, psrf32) 502 #else 503 status = nf_get_vara_real(ncidp, varidpsr3, start, count, psrf32) 504 #endif 412 505 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf32, psrf3) 413 506 414 507 ! psrf4 415 status = nf90_get_var(ncidp, varidpsr4, psrf42, start, count) 508 #ifdef NC_DOUBLE 509 status = nf_get_vara_double(ncidp, varidpsr4, start, count, psrf42) 510 #else 511 status = nf_get_vara_real(ncidp, varidpsr4, start, count, psrf42) 512 #endif 416 513 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf42, psrf4) 417 514 -
LMDZ6/trunk/libf/phylmd/readaerosol_mod.F90
r5075 r5084 2 2 ! 3 3 MODULE readaerosol_mod 4 5 USE lmdz_netcdf, ONLY: nf90_strerror,nf90_noerr,nf90_get_var,nf90_inq_varid,&6 nf90_inquire_dimension,nf90_inq_dimid,nf90_open,nf90_nowrite,nf90_close7 4 8 5 REAL, SAVE :: not_valid=-333. … … 89 86 ! Read data depending on actual year and interpolate if necessary 90 87 !**************************************************************************************** 91 IF (iyr_in <1850) THEN88 IF (iyr_in .LT. 1850) THEN 92 89 cyear='.nat' 93 90 WRITE(lunout,*) 'get_aero 1 iyr_in=', iyr_in,' ',cyear … … 96 93 CALL get_aero_fromfile(name_aero, cyear, filename, klev_src, pt_ap, pt_b, pt_out, psurf, load) 97 94 98 ELSE IF (iyr_in >=2100) THEN95 ELSE IF (iyr_in .GE. 2100) THEN 99 96 cyear='2100' 100 97 WRITE(lunout,*) 'get_aero 2 iyr_in=', iyr_in,' ',cyear … … 106 103 ! Read data from 2 decades and interpolate to actual year 107 104 ! a) from actual 10-yr-period 108 IF (iyr_in <1900) THEN105 IF (iyr_in.LT.1900) THEN 109 106 iyr1 = 1850 110 107 iyr2 = 1900 111 ELSE IF (iyr_in >=1900.AND.iyr_in<1920) THEN108 ELSE IF (iyr_in.GE.1900.AND.iyr_in.LT.1920) THEN 112 109 iyr1 = 1900 113 110 iyr2 = 1920 … … 177 174 178 175 SUBROUTINE init_aero_fromfile(flag_aerosol, aerosol_couple) 176 USE netcdf 179 177 USE mod_phys_lmdz_para 180 178 USE mod_grid_phy_lmdz, ONLY: grid_type, unstructured … … 267 265 !**************************************************************************************** 268 266 267 USE netcdf 269 268 USE dimphy 270 269 USE mod_grid_phy_lmdz, ONLY: nbp_lon_=>nbp_lon, nbp_lat_=>nbp_lat, klon_glo, & … … 508 507 !**************************************************************************************** 509 508 DO imth=1, 12 510 IF (imth ==1) THEN509 IF (imth.EQ.1) THEN 511 510 cvar=TRIM(varname)//'JAN' 512 ELSE IF (imth ==2) THEN511 ELSE IF (imth.EQ.2) THEN 513 512 cvar=TRIM(varname)//'FEB' 514 ELSE IF (imth ==3) THEN513 ELSE IF (imth.EQ.3) THEN 515 514 cvar=TRIM(varname)//'MAR' 516 ELSE IF (imth ==4) THEN515 ELSE IF (imth.EQ.4) THEN 517 516 cvar=TRIM(varname)//'APR' 518 ELSE IF (imth ==5) THEN517 ELSE IF (imth.EQ.5) THEN 519 518 cvar=TRIM(varname)//'MAY' 520 ELSE IF (imth ==6) THEN519 ELSE IF (imth.EQ.6) THEN 521 520 cvar=TRIM(varname)//'JUN' 522 ELSE IF (imth ==7) THEN521 ELSE IF (imth.EQ.7) THEN 523 522 cvar=TRIM(varname)//'JUL' 524 ELSE IF (imth ==8) THEN523 ELSE IF (imth.EQ.8) THEN 525 524 cvar=TRIM(varname)//'AUG' 526 ELSE IF (imth ==9) THEN525 ELSE IF (imth.EQ.9) THEN 527 526 cvar=TRIM(varname)//'SEP' 528 ELSE IF (imth ==10) THEN527 ELSE IF (imth.EQ.10) THEN 529 528 cvar=TRIM(varname)//'OCT' 530 ELSE IF (imth ==11) THEN529 ELSE IF (imth.EQ.11) THEN 531 530 cvar=TRIM(varname)//'NOV' 532 ELSE IF (imth ==12) THEN531 ELSE IF (imth.EQ.12) THEN 533 532 cvar=TRIM(varname)//'DEC' 534 533 END IF … … 717 716 718 717 SUBROUTINE check_err(status,text) 718 USE netcdf 719 719 USE print_control_mod, ONLY: lunout 720 720 IMPLICIT NONE -
LMDZ6/trunk/libf/phylmd/readaerosolstrato.F90
r5075 r5084 3 3 use netcdf95, only: nf95_close, nf95_gw_var, nf95_inq_dimid, & 4 4 nf95_inq_varid, nf95_open 5 use lmdz_netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite5 use netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite 6 6 7 7 USE phys_cal_mod, ONLY : mth_cur … … 68 68 69 69 !--only read file if beginning of run or start of new month 70 IF (debut.OR.mth_cur /=mth_pre) THEN70 IF (debut.OR.mth_cur.NE.mth_pre) THEN 71 71 72 72 !--only root reads 73 73 IF (is_mpi_root.AND.is_omp_root) THEN 74 74 75 IF (nbands /=2) THEN75 IF (nbands.NE.2) THEN 76 76 abort_message='nbands doit etre egal a 2 dans readaerosolstrat' 77 77 CALL abort_physic(modname,abort_message,1) … … 83 83 CALL nf95_gw_var(ncid_in, varid, lev) 84 84 n_lev = size(lev) 85 IF (n_lev /=klev) THEN85 IF (n_lev.NE.klev) THEN 86 86 abort_message='Le nombre de niveaux n est pas egal a klev' 87 87 CALL abort_physic(modname,abort_message,1) … … 93 93 WRITE(lunout,*) 'LAT aerosol strato=', n_lat, latitude 94 94 IF (grid_type/=unstructured) THEN 95 IF (n_lat /=nbp_lat) THEN95 IF (n_lat.NE.nbp_lat) THEN 96 96 abort_message='Le nombre de lat n est pas egal a nbp_lat' 97 97 CALL abort_physic(modname,abort_message,1) … … 104 104 IF (grid_type/=unstructured) THEN 105 105 WRITE(lunout,*) 'LON aerosol strato=', n_lon, longitude 106 IF (n_lon /=nbp_lon) THEN106 IF (n_lon.NE.nbp_lon) THEN 107 107 abort_message='Le nombre de lon n est pas egal a nbp_lon' 108 108 CALL abort_physic(modname,abort_message,1) … … 114 114 n_month = size(time) 115 115 WRITE(lunout,*) 'TIME aerosol strato=', n_month, time 116 IF (n_month /=12) THEN116 IF (n_month.NE.12) THEN 117 117 abort_message='Le nombre de month n est pas egal a 12' 118 118 CALL abort_physic(modname,abort_message,1) … … 131 131 132 132 !---select the correct month 133 IF (mth_cur <1.OR.mth_cur>12) THEN133 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 134 134 WRITE(lunout,*) 'probleme avec le mois dans readaerosolstrat =', mth_cur 135 135 ENDIF -
LMDZ6/trunk/libf/phylmd/readaerosolstrato_m.F90
r5075 r5084 24 24 25 25 SUBROUTINE init_readaerosolstrato1 26 USE lmdz_netcdf, ONLY: nf90_nowrite27 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 26 USE netcdf 27 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 28 28 nf95_inq_varid, nf95_open 29 29 USE mod_phys_lmdz_para … … 67 67 68 68 SUBROUTINE init_readaerosolstrato2 69 USE lmdz_netcdf, ONLY: nf90_nowrite70 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 69 USE netcdf 70 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 71 71 nf95_inq_varid, nf95_open 72 72 USE mod_phys_lmdz_para -
LMDZ6/trunk/libf/phylmd/readchlorophyll.F90
r5075 r5084 8 8 9 9 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, nf95_inq_varid, nf95_open 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 USE phys_cal_mod, ONLY: mth_cur 12 12 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, klon_glo, grid2dto1d_glo … … 50 50 51 51 !--only read file if beginning of run or start of new month 52 IF (debut.OR.mth_cur /=mth_pre) THEN52 IF (debut.OR.mth_cur.NE.mth_pre) THEN 53 53 54 54 IF (is_mpi_root.AND.is_omp_root) THEN … … 59 59 CALL nf95_gw_var(ncid_in, varid, longitude) 60 60 n_lon = size(longitude) 61 IF (n_lon /=nbp_lon) THEN61 IF (n_lon.NE.nbp_lon) THEN 62 62 abort_message='Le nombre de lon n est pas egal a nbp_lon' 63 63 CALL abort_physic(modname,abort_message,1) … … 67 67 CALL nf95_gw_var(ncid_in, varid, latitude) 68 68 n_lat = size(latitude) 69 IF (n_lat /=nbp_lat) THEN69 IF (n_lat.NE.nbp_lat) THEN 70 70 abort_message='Le nombre de lat n est pas egal a jnbp_lat' 71 71 CALL abort_physic(modname,abort_message,1) … … 75 75 CALL nf95_gw_var(ncid_in, varid, time) 76 76 n_month = size(time) 77 IF (n_month /=12) THEN77 IF (n_month.NE.12) THEN 78 78 abort_message='Le nombre de month n est pas egal a 12' 79 79 CALL abort_physic(modname,abort_message,1) … … 92 92 93 93 !---select the correct month 94 IF (mth_cur <1.OR.mth_cur>12) THEN94 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 95 95 WRITE(lunout,*)'probleme avec le mois dans readchlorophyll =', mth_cur 96 96 ENDIF … … 104 104 ! if(isnan(chlorocon_mois_glo(i)))then ! isnan() is not in the Fortran standard... 105 105 ! Another way to check for NaN: 106 IF (chlorocon_mois_glo(i) /=chlorocon_mois_glo(i)) chlorocon_mois_glo(i)=0.106 IF (chlorocon_mois_glo(i).NE.chlorocon_mois_glo(i)) chlorocon_mois_glo(i)=0. 107 107 ENDDO 108 108 -
LMDZ6/trunk/libf/phylmd/regr_horiz_time_climoz_m.F90
r5075 r5084 4 4 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, grid_type, unstructured 5 5 USE nrtype, ONLY: pi 6 USE lmdz_netcdf, ONLY: NF90_CLOBBER, NF90_FLOAT, NF90_OPEN, &6 USE netcdf, ONLY: NF90_CLOBBER, NF90_FLOAT, NF90_OPEN, & 7 7 NF90_NOWRITE, NF90_NOERR, NF90_GET_ATT, NF90_GLOBAL 8 8 USE netcdf95, ONLY: NF95_DEF_DIM, NF95_INQ_DIMID, NF95_INQUIRE_DIMENSION, & … … 702 702 ! 703 703 !------------------------------------------------------------------------------- 704 USE lmdz_netcdf, ONLY: NF90_NOERR, NF90_strerror704 USE netcdf, ONLY: NF90_NOERR, NF90_strerror 705 705 !------------------------------------------------------------------------------- 706 706 ! Arguments: -
LMDZ6/trunk/libf/phylmd/regr_lat_time_coefoz_m.F90
r5075 r5084 45 45 use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf95_get_var, & 46 46 nf95_put_var, nf95_gw_var 47 use lmdz_netcdf, only: nf90_nowrite47 use netcdf, only: nf90_nowrite 48 48 use nrtype, only: pi 49 49 use regular_lonlat_mod, only: boundslat_reg, south … … 245 245 use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, & 246 246 nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var 247 use lmdz_netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global247 use netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global 248 248 use nrtype, only: pi 249 249 use regular_lonlat_mod, only : lat_reg … … 328 328 subroutine handle_err_copy_att(att_name) 329 329 330 use lmdz_netcdf, only: nf90_noerr, nf90_strerror330 use netcdf, only: nf90_noerr, nf90_strerror 331 331 332 332 character(len=*), intent(in):: att_name -
LMDZ6/trunk/libf/phylmd/regr_pr_comb_coefoz_m.F90
r5075 r5084 72 72 73 73 use netcdf95, only: nf95_open, nf95_close 74 use lmdz_netcdf, only: nf90_nowrite74 use netcdf, only: nf90_nowrite 75 75 use assert_m, only: assert 76 76 use dimphy, only: klon -
LMDZ6/trunk/libf/phylmd/regr_pr_o3_m.F90
r5075 r5084 26 26 27 27 use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf95_get_var 28 use lmdz_netcdf, only: nf90_nowrite28 use netcdf, only: nf90_nowrite 29 29 use assert_m, only: assert 30 30 use regr_conserv_m, only: regr_conserv -
LMDZ6/trunk/libf/phylmd/regr_pr_time_av_m.F90
r5075 r5084 115 115 USE netcdf95, ONLY: NF95_INQ_VARID, NF95_INQUIRE_VARIABLE, & 116 116 NF95_INQ_DIMID, NF95_INQUIRE_DIMENSION, nf95_get_var 117 USE lmdz_netcdf, ONLY: NF90_INQ_VARID, NF90_NOERR117 USE netcdf, ONLY: NF90_INQ_VARID, NF90_NOERR 118 118 USE assert_m, ONLY: assert 119 119 USE assert_eq_m, ONLY: assert_eq -
LMDZ6/trunk/libf/phylmd/rrtm/read_rsun_rrtm.F90
r5075 r5084 8 8 9 9 USE netcdf95, ONLY: nf95_close, nf95_inq_varid, nf95_open, nf95_gw_var 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 12 12 USE phys_cal_mod, ONLY : days_elapsed, year_len -
LMDZ6/trunk/libf/phylmd/rrtm/readaerosolstrato1_rrtm.F90
r5075 r5084 7 7 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 8 8 nf95_inq_varid, nf95_open 9 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite9 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 10 10 11 11 USE phys_cal_mod, ONLY : mth_cur -
LMDZ6/trunk/libf/phylmd/rrtm/readaerosolstrato2_rrtm.F90
r5075 r5084 6 6 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 7 7 nf95_inq_varid, nf95_open 8 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite8 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 9 9 10 10 USE phys_cal_mod, ONLY : mth_cur -
LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90
r5075 r5084 104 104 105 105 ! Initialization of tr_seri(id_CO2) If it is not initialized 106 IF (MAXVAL(tr_seri(:,:,id_CO2)) <1.e-15) THEN106 IF (MAXVAL(tr_seri(:,:,id_CO2)).LT.1.e-15) THEN 107 107 tr_seri(:,:,id_CO2)=co2_ppm0*1.e-6/RMD*RMCO2 !--initialised from co2_ppm0 in rdem 108 108 ENDIF … … 299 299 !--for every timestep comment out the IF ENDIF statements 300 300 !--otherwise this is updated every day 301 IF (debutphy.OR.day_cur /=day_pre) THEN301 IF (debutphy.OR.day_cur.NE.day_pre) THEN 302 302 303 303 CALL gather(tr_seri(:,:,id_CO2),co2_glo) … … 351 351 352 352 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_varid, nf95_open 353 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite353 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 354 354 355 355 USE carbon_cycle_mod, ONLY : fco2_ff, fco2_bb, fco2_land, fco2_ocean … … 401 401 CALL nf95_gw_var(ncid_in, varid, vector) 402 402 n_glo = size(vector) 403 IF (n_glo /=klon_glo) THEN403 IF (n_glo.NE.klon_glo) THEN 404 404 abort_message='sflx_lmdz_co2_ff: le nombre de points n est pas egal a klon_glo' 405 405 CALL abort_physic(modname,abort_message,1) … … 409 409 CALL nf95_gw_var(ncid_in, varid, time) 410 410 n_month = size(time) 411 IF (n_month /=12) THEN411 IF (n_month.NE.12) THEN 412 412 abort_message='sflx_lmdz_co2_ff: le nombre de month n est pas egal a 12' 413 413 CALL abort_physic(modname,abort_message,1) … … 434 434 CALL nf95_gw_var(ncid_in, varid, vector) 435 435 n_glo = size(vector) 436 IF (n_glo /=klon_glo) THEN436 IF (n_glo.NE.klon_glo) THEN 437 437 abort_message='sflx_lmdz_co2_bb: le nombre de points n est pas egal a klon_glo' 438 438 CALL abort_physic(modname,abort_message,1) … … 442 442 CALL nf95_gw_var(ncid_in, varid, time) 443 443 n_month = size(time) 444 IF (n_month /=12) THEN444 IF (n_month.NE.12) THEN 445 445 abort_message='sflx_lmdz_co2_bb: le nombre de month n est pas egal a 12' 446 446 CALL abort_physic(modname,abort_message,1) … … 474 474 475 475 !---select the correct month 476 IF (mth_cur <1.OR.mth_cur>12) THEN476 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 477 477 PRINT *,'probleme avec le mois dans co2_ini =', mth_cur 478 478 ENDIF -
LMDZ6/trunk/libf/phylmd/undefSTD.F90
r5075 r5084 3 3 4 4 SUBROUTINE undefstd(itap, read_climoz) 5 USE lmdz_netcdf, ONLY: nf90_fill_real5 USE netcdf 6 6 USE dimphy 7 7 #ifdef CPP_IOIPSL
Note: See TracChangeset
for help on using the changeset viewer.