Changeset 2056 for LMDZ5/branches/testing/libf/phylmd/add_phys_tend.F90
- Timestamp:
- Jun 11, 2014, 3:46:46 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1998,2000-2023,2025-2029,2032,2034,2036-2049,2051-2055
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/add_phys_tend.F90
r1910 r2056 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 … … 18 18 use phys_state_var_mod 19 19 IMPLICIT none 20 #include "iniprint.h" 20 include "iniprint.h" 21 include "YOMCST.h" 22 include "clesphys.h" 21 23 22 24 ! Arguments : … … 24 26 REAL zdu(klon,klev),zdv(klon,klev) 25 27 REAL zdt(klon,klev),zdq(klon,klev),zdql(klon,klev) 28 REAL paprs(klon,klev+1) 26 29 CHARACTER*(*) text 27 30 … … 29 32 !-------- 30 33 REAL zt,zq 34 REAL zq_int, zqp_int, zq_new 35 36 REAL zqp(klev) 31 37 32 38 INTEGER i, k,j … … 35 41 INTEGER kadrs(klon*klev) 36 42 INTEGER kqadrs(klon*klev) 43 44 LOGICAL done(klon) 37 45 38 46 integer debug_level … … 107 115 !===================================================================================== 108 116 IF (jqbad .GT. 0) THEN 117 done(:) = .false. !jyg 109 118 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)) 119 i=jqadrs(j) 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 IF (ok_conserv_q) THEN 128 !jyg<20140228 Corrections pour conservation de l'eau 129 IF (.NOT.done(i)) THEN !jyg 130 DO k = 1, klev 131 zqp(k) = max(q_seri(i,k),1.e-15) 132 ENDDO 133 zq_int = 0. 134 zqp_int = 0. 135 DO k = 1, klev 136 zq_int = zq_int + q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/Rg 137 zqp_int = zqp_int + zqp(k) *(paprs(i,k)-paprs(i,k+1))/Rg 138 ENDDO 139 if(prt_level.ge.debug_level) THEN 140 print*,' cas q_seri<1.e-15 i k zq_int zqp_int zq_int/zqp_int :', & 141 i, kqadrs(j), zq_int, zqp_int, zq_int/zqp_int 124 142 endif 125 endif 126 ! zq=q_seri(i,k)+zdq(i,k) 127 ! if (zq.lt.1.e-15) then 128 ! zdq(i,k)=(1.e-15-q_seri(i,k)) 129 ! endif 130 ENDDO 131 ENDDO 143 DO k = 1, klev 144 zq_new = zqp(k)*zq_int/zqp_int 145 zdq(i,k) = zdq(i,k) + zq_new - q_seri(i,k) 146 q_seri(i,k) = zq_new 147 ENDDO 148 done(i) = .true. 149 ENDIF !(.NOT.done(i)) 150 ELSE 151 !jyg> 152 DO k = 1, klev 153 zq=q_seri(i,k)+zdq(i,k) 154 if (zq.lt.1.e-15) then 155 if (q_seri(i,k).lt.1.e-15) then 156 if(prt_level.ge.debug_level) THEN 157 print*,' cas q_seri<1.e-15 i k q_seri zq zdq :',i,k,q_seri(i,k),zq,zdq(i,k) 158 endif 159 q_seri(i,k)=1.e-15 160 zdq(i,k)=(1.e-15-q_seri(i,k)) 161 endif 162 endif 163 ! zq=q_seri(i,k)+zdq(i,k) 164 ! if (zq.lt.1.e-15) then 165 ! zdq(i,k)=(1.e-15-q_seri(i,k)) 166 ! endif 167 ENDDO 168 !jyg<20140228 169 ENDIF ! (ok_conserv_q) 170 !jyg> 171 ENDDO ! j = 1, jqbad 132 172 ENDIF 133 173 !
Note: See TracChangeset
for help on using the changeset viewer.