Changeset 5144 for LMDZ6/branches/Amaury_dev/libf/phylmd/stratocu_if.F90
- Timestamp:
- Jul 29, 2024, 11:01:04 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/stratocu_if.F90
r5099 r5144 1 SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t &2 ,seuil_inversion,weak_inversion,dthmin)1 SUBROUTINE stratocu_if(klon, klev, pctsrf, paprs, pplay, t & 2 , seuil_inversion, weak_inversion, dthmin) 3 3 4 4 USE indice_sol_mod 5 USE lmdz_yomcst 5 6 6 IMPLICIT NONE7 IMPLICIT NONE 7 8 8 !======================================================================9 ! J'introduit un peu de diffusion sauf dans les endroits10 ! ou une forte inversion est presente11 ! On peut dire qu'il represente la convection peu profonde9 !====================================================================== 10 ! J'introduit un peu de diffusion sauf dans les endroits 11 ! ou une forte inversion est presente 12 ! On peut dire qu'il represente la convection peu profonde 12 13 13 ! Arguments:14 ! klon-----input-I- nombre de points a traiter15 ! paprs----input-R- pression a chaque intercouche (en Pa)16 ! pplay----input-R- pression au milieu de chaque couche (en Pa)17 ! t--------input-R- temperature (K)14 ! Arguments: 15 ! klon-----input-I- nombre de points a traiter 16 ! paprs----input-R- pression a chaque intercouche (en Pa) 17 ! pplay----input-R- pression au milieu de chaque couche (en Pa) 18 ! t--------input-R- temperature (K) 18 19 19 ! weak_inversion-----logical20 !======================================================================20 ! weak_inversion-----logical 21 !====================================================================== 21 22 22 ! Arguments:23 ! Arguments: 23 24 24 INTEGER, INTENT(IN) :: klon,klev 25 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs 26 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay 27 REAL, DIMENSION(klon, 4), INTENT(IN) :: pctsrf 28 REAL, DIMENSION(klon, klev), INTENT(IN) :: t 29 30 REAL, DIMENSION(klon), INTENT(OUT) :: weak_inversion 25 INTEGER, INTENT(IN) :: klon, klev 26 REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs 27 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay 28 REAL, DIMENSION(klon, 4), INTENT(IN) :: pctsrf 29 REAL, DIMENSION(klon, klev), INTENT(IN) :: t 31 30 32 ! Quelques constantes et options: 31 REAL, DIMENSION(klon), INTENT(OUT) :: weak_inversion 33 32 34 REAL seuil_inversion ! au-dela l'inversion est consideree trop faible 35 ! PARAMETER (seuil=-0.1) 33 ! Quelques constantes et options: 36 34 37 ! Variables locales: 35 REAL seuil_inversion ! au-dela l'inversion est consideree trop faible 36 ! PARAMETER (seuil=-0.1) 38 37 39 INTEGER i, k, invb(klon) 40 REAL zl2(klon) 41 REAL dthmin(klon), zdthdp 38 ! Variables locales: 42 39 43 INCLUDE "YOMCST.h" 40 INTEGER i, k, invb(klon) 41 REAL zl2(klon) 42 REAL dthmin(klon), zdthdp 44 43 45 ! Chercher la zone d'inversion forte44 ! Chercher la zone d'inversion forte 46 45 46 DO i = 1, klon 47 invb(i) = klev 48 dthmin(i) = 0.0 49 ENDDO 50 DO k = 2, klev / 2 - 1 47 51 DO i = 1, klon 48 invb(i) = klev 49 dthmin(i)=0.0 52 zdthdp = (t(i, k) - t(i, k + 1)) / (pplay(i, k) - pplay(i, k + 1)) & 53 - RD * 0.5 * (t(i, k) + t(i, k + 1)) / RCPD / paprs(i, k + 1) 54 zdthdp = zdthdp * 100.0 55 IF (pplay(i, k)>0.8 * paprs(i, 1) .AND. & 56 zdthdp<dthmin(i)) THEN 57 dthmin(i) = zdthdp 58 invb(i) = k 59 ENDIF 50 60 ENDDO 51 DO k = 2, klev/2-1 52 DO i = 1, klon 53 zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) & 54 - RD * 0.5*(t(i,k)+t(i,k+1))/RCPD/paprs(i,k+1) 55 zdthdp = zdthdp * 100.0 56 IF (pplay(i,k)>0.8*paprs(i,1) .AND. & 57 zdthdp<dthmin(i) ) THEN 58 dthmin(i) = zdthdp 59 invb(i) = k 60 ENDIF 61 ENDDO 62 ENDDO 61 ENDDO 63 62 64 ! Introduire une diffusion:63 ! Introduire une diffusion: 65 64 66 67 IF ( (pctsrf(i,is_oce) < 0.5) .OR. &68 (invb(i) == klev) .OR. (dthmin(i) > seuil_inversion) ) THEN69 weak_inversion(i)=1.70 71 weak_inversion(i)=0.72 73 65 DO i = 1, klon 66 IF ((pctsrf(i, is_oce) < 0.5) .OR. & 67 (invb(i) == klev) .OR. (dthmin(i) > seuil_inversion)) THEN 68 weak_inversion(i) = 1. 69 ELSE 70 weak_inversion(i) = 0. 71 ENDIF 72 ENDDO 74 73 75 74 END SUBROUTINE stratocu_if
Note: See TracChangeset
for help on using the changeset viewer.