--- trunk/Sources/phylmd/screenc.f 2017/10/16 12:35:41 225 +++ trunk/Sources/phylmd/screenc.f 2017/11/15 13:56:45 246 @@ -4,14 +4,10 @@ contains - SUBROUTINE screenc(klon, knon, nsrf, zxli, speed, temp, q_zref, zref, ts, & - qsurf, rugos, psol, ustar, testar, qstar, okri, ri1, pref, delu, & - delte, delq) + SUBROUTINE screenc(klon, knon, nsrf, speed, temp, q_zref, zref, ts, & + qsurf, rugos, psol, ustar, testar, qstar, pref, delu, delte, delq) - use coefcdrag_m, only: coefcdrag - use SUPHEC_M - - ! From LMDZ4/libf/phylmd/screenc.F90, version 1.1.1.1 2004/05/19 12:53:09 + ! From LMDZ4/libf/phylmd/screenc.F90, version 1.1.1.1, 2004/05/19 12:53:09 ! Objet : calcul "correcteur" des anomalies du vent, de la ! temp\'erature potentielle et de l'humidit\'e relative au niveau @@ -23,6 +19,9 @@ ! I. Musat, 01.07.2002 + use coefcdrag_m, only: coefcdrag + use SUPHEC_M, only: RG + INTEGER, intent(in):: klon ! klon----input-I- dimension de la grille physique (= ! nb_pts_latitude X nb_pts_longitude) @@ -30,8 +29,6 @@ ! knon----input-I- nombre de points pour un type de surface INTEGER, intent(in):: nsrf ! nsrf----input-I- indice pour le type de surface; voir indicesol.inc - LOGICAL, intent(in):: zxli - ! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li REAL, dimension(klon), intent(in):: speed, temp, q_zref ! speed---input-R- module du vent au 1er niveau du modele ! temp----input-R- temperature de l'air au 1er niveau du modele @@ -43,15 +40,11 @@ ! qsurf---input-R- humidite relative a la surface ! rugos---input-R- rugosite ! psol----input-R- pression au sol - REAL, dimension(klon), intent(in):: ustar, testar, qstar - ! ustar---input-R- facteur d'echelle pour le vent + REAL, intent(in):: ustar(:) ! (knon) facteur d'\'echelle pour le vent + REAL, dimension(klon), intent(in):: testar ! testar--input-R- facteur d'echelle pour la temperature potentielle + REAL, dimension(klon), intent(in):: qstar ! qstar---input-R- facteur d'echelle pour l'humidite relative - LOGICAL, intent(in):: okri - ! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce - ! et zref par rapport au Ri entre la sfce et la 1ere couche - REAL, dimension(klon), intent(in):: ri1 - ! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche REAL, dimension(klon), intent(out):: pref ! pref----input-R- pression au niveau de reference @@ -75,13 +68,14 @@ ! Richardson at reference level - CALL coefcdrag (klon, knon, nsrf, zxli, speed, temp, q_zref, gref, psol, & - ts, qsurf, rugos, okri, ri1, cdram, cdrah, cdran, zri1, pref) + CALL coefcdrag(nsrf, speed(:knon), temp(:knon), q_zref(:knon), & + gref(:knon), psol(:knon), ts, qsurf, rugos, cdram, cdrah, cdran, & + zri1, pref) DO i = 1, knon - delu(i) = ustar(i)/sqrt(cdram(i)) - delte(i)= (testar(i)* sqrt(cdram(i)))/ cdrah(i) - delq(i)= (qstar(i)* sqrt(cdram(i)))/ cdrah(i) + delu(i) = ustar(i) / sqrt(cdram(i)) + delte(i) = testar(i) * sqrt(cdram(i)) / cdrah(i) + delq(i) = qstar(i) * sqrt(cdram(i)) / cdrah(i) ENDDO END SUBROUTINE screenc