Changeset 878 for LMDZ4/trunk/libf/phylmd/coef_diff_turb_mod.F90
- Timestamp:
- Jan 14, 2008, 1:03:39 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/coef_diff_turb_mod.F90
r793 r878 18 18 SUBROUTINE coef_diff_turb(dtime, nsrf, knon, ni, & 19 19 ypaprs, ypplay, yu, yv, yq, yt, yts, yrugos, yqsurf, & 20 ycoefm, ycoefh )20 ycoefm, ycoefh ,yq2) 21 21 ! 22 22 ! Calculate coefficients(ycoefm, ycoefh) for turbulent diffusion in the … … 35 35 REAL, DIMENSION(klon,klev), INTENT(IN) :: yq, yt 36 36 REAL, DIMENSION(klon), INTENT(IN) :: yts, yrugos, yqsurf 37 REAL, DIMENSION(klon,klev+1) :: yq2 37 38 38 39 ! Output arguments … … 41 42 REAL, DIMENSION(klon,klev), INTENT(OUT) :: ycoefm 42 43 43 ! Local variables with attribute SAVE44 !****************************************************************************************45 REAL, DIMENSION(:,:,:), ALLOCATABLE, SAVE :: q2save46 !$OMP THREADPRIVATE(q2save)47 LOGICAL, SAVE :: first_call=.TRUE.48 !$OMP THREADPRIVATE(first_call)49 50 44 ! Other local variables 51 45 !**************************************************************************************** 52 46 INTEGER :: k, i, j 53 47 REAL, DIMENSION(klon,klev) :: ycoefm0, ycoefh0, yzlay, yteta 54 REAL, DIMENSION(klon,klev+1) :: yzlev, yq2,q2diag, ykmm, ykmn, ykmq48 REAL, DIMENSION(klon,klev+1) :: yzlev, q2diag, ykmm, ykmn, ykmq 55 49 REAL, DIMENSION(klon) :: y_cd_h, y_cd_m 56 50 REAL, DIMENSION(klon) :: yustar … … 94 88 ycoefm0, ycoefh0) 95 89 96 DO k = 1, klev90 DO k = 2, klev 97 91 DO i = 1, knon 98 92 ycoefm(i,k) = MAX(ycoefm(i,k),ycoefm0(i,k)) … … 121 115 ycoefm0,ycoefh0) 122 116 123 DO k = 1, klev117 DO k = 2, klev 124 118 DO i = 1, knon 125 119 ycoefm(i,k) = MAX(ycoefm(i,k),ycoefm0(i,k)) … … 137 131 138 132 IF (iflag_pbl.GE.3) THEN 139 140 IF (first_call) THEN141 PRINT*, "Using method MELLOR&YAMADA"142 ! NB! q2save could/should be read and written from (re)startphy.nc143 ALLOCATE(q2save(klon,klev+1,nbsrf))144 q2save(:,:,:) = 1.e-8145 first_call=.FALSE.146 END IF147 133 148 134 yzlay(1:knon,1)= & … … 173 159 END DO 174 160 175 ! Compresse q2save 176 DO k = 1, klev+1 177 DO j = 1, knon 178 i = ni(j) 179 yq2(j,k)=q2save(i,k,nsrf) 180 ENDDO 181 ENDDO 182 183 ! Bug introduit volontairement pour converger avec les resultats 184 ! du papier sur les thermiques. 185 IF (1.EQ.1) THEN 186 y_cd_m(1:knon) = ycoefm(1:knon,1) 187 y_cd_h(1:knon) = ycoefh(1:knon,1) 188 ELSE 189 y_cd_h(1:knon) = ycoefm(1:knon,1) 190 y_cd_m(1:knon) = ycoefh(1:knon,1) 191 ENDIF 161 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 162 ! Pour memoire, le papier Hourdin et al. 2002 a ete obtenur avec un 163 ! bug sur les coefficients de surface : 164 ! y_cd_h(1:knon) = ycoefm(1:knon,1) 165 ! y_cd_m(1:knon) = ycoefh(1:knon,1) 166 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 167 168 y_cd_m(1:knon) = ycoefm(1:knon,1) 169 y_cd_h(1:knon) = ycoefh(1:knon,1) 192 170 193 171 CALL ustarhb(knon,yu,yv,y_cd_m, yustar) … … 215 193 ycoefh(1:knon,2:klev)=ykmn(1:knon,2:klev) 216 194 217 ! update q2save with yq2218 DO j=1,knon219 DO k=1,klev+1220 i=ni(j)221 q2save(i,k,nsrf) = yq2(j,k)222 END DO223 END DO224 225 195 ENDIF !(iflag_pbl.ge.3) 226 196
Note: See TracChangeset
for help on using the changeset viewer.