Changeset 1998 for LMDZ5/trunk/libf/phylmd/add_phys_tend.F90
- Timestamp:
- Mar 19, 2014, 3:14:30 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/add_phys_tend.F90
r1907 r1998 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql, text)4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,paprs,text) 5 5 !====================================================================== 6 6 ! Ajoute les tendances des variables physiques aux variables … … 19 19 IMPLICIT none 20 20 #include "iniprint.h" 21 #include "YOMCST.h" 21 22 22 23 ! Arguments : … … 24 25 REAL zdu(klon,klev),zdv(klon,klev) 25 26 REAL zdt(klon,klev),zdq(klon,klev),zdql(klon,klev) 27 REAL paprs(klon,klev+1) 26 28 CHARACTER*(*) text 27 29 … … 29 31 !-------- 30 32 REAL zt,zq 33 REAL zq_int, zqp_int, zq_new 34 35 REAL zqp(klev) 31 36 32 37 INTEGER i, k,j … … 35 40 INTEGER kadrs(klon*klev) 36 41 INTEGER kqadrs(klon*klev) 42 43 LOGICAL done(klon) 37 44 38 45 integer debug_level … … 107 114 !===================================================================================== 108 115 IF (jqbad .GT. 0) THEN 116 done(:) = .false. !jyg 109 117 DO j = 1, jqbad 110 i=jqadrs(j) 111 if(prt_level.ge.debug_level) THEN 112 print*,'WARNING : EAU POUR LE POINT i rlon rlat =',i,rlon(i),rlat(i),text 113 print*,'l T dT Q dQ ' 114 endif 115 DO k = 1, klev 116 zq=q_seri(i,k)+zdq(i,k) 117 if (zq.lt.1.e-15) then 118 if (q_seri(i,k).lt.1.e-15) then 119 if(prt_level.ge.debug_level) THEN 120 print*,' cas q_seri<1.e-15 i k q_seri zq zdq :',i,k,q_seri(i,k),zq,zdq(i,k) 121 endif 122 q_seri(i,k)=1.e-15 123 zdq(i,k)=(1.e-15-q_seri(i,k)) 124 endif 125 endif 118 i=jqadrs(j) 119 IF (.NOT.done(i)) THEN !jyg 120 if(prt_level.ge.debug_level) THEN 121 print*,'WARNING : EAU POUR LE POINT i rlon rlat =',i,rlon(i),rlat(i),text 122 print*,'l T dT Q dQ ' 123 DO k = 1, klev 124 write(*,'(i3,2f14.4,2e14.2)') k,t_seri(i,k),zdt(i,k),q_seri(i,k),zdq(i,k) 125 ENDDO 126 endif 127 !jyg<20140228 Corrections pour conservation de l'eau 128 DO k = 1, klev 129 zqp(k) = max(q_seri(i,k),1.e-15) 130 ENDDO 131 zq_int = 0. 132 zqp_int = 0. 133 DO k = 1, klev 134 zq_int = zq_int + q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/Rg 135 zqp_int = zqp_int + zqp(k) *(paprs(i,k)-paprs(i,k+1))/Rg 136 ENDDO 137 if(prt_level.ge.debug_level) THEN 138 print*,' cas q_seri<1.e-15 i k zq_int zqp_int zq_int/zqp_int :', & 139 i, kqadrs(j), zq_int, zqp_int, zq_int/zqp_int 140 endif 141 DO k = 1, klev 142 zq_new = zqp(k)*zq_int/zqp_int 143 zdq(i,k) = zdq(i,k) + zq_new - q_seri(i,k) 144 q_seri(i,k) = zq_new 145 ENDDO 146 done(i) = .true. 147 ENDIF !(.NOT.done(i)) 148 149 ! DO k = 1, klev 126 150 ! zq=q_seri(i,k)+zdq(i,k) 127 151 ! if (zq.lt.1.e-15) then 128 ! zdq(i,k)=(1.e-15-q_seri(i,k)) 152 ! if (q_seri(i,k).lt.1.e-15) then 153 ! if(prt_level.ge.debug_level) THEN 154 ! print*,' cas q_seri<1.e-15 i k q_seri zq zdq :',i,k,q_seri(i,k),zq,zdq(i,k) 155 ! endif 156 ! q_seri(i,k)=1.e-15 157 ! zdq(i,k)=(1.e-15-q_seri(i,k)) 158 ! endif 129 159 ! endif 130 ENDDO 160 !! zq=q_seri(i,k)+zdq(i,k) 161 !! if (zq.lt.1.e-15) then 162 !! zdq(i,k)=(1.e-15-q_seri(i,k)) 163 !! endif 164 ! ENDDO 165 !jyg> 131 166 ENDDO 132 167 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.