Changeset 4368 for LMDZ6/branches/Ocean_skin/libf/phylmd/Dust
- Timestamp:
- Dec 6, 2022, 12:01:16 AM (2 years ago)
- Location:
- LMDZ6/branches/Ocean_skin
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Ocean_skin
- Property svn:mergeinfo changed
-
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/phys_output_write_spl_mod.F90
r3811 r4368 381 381 USE pbl_surface_mod, ONLY: snow 382 382 USE indice_sol_mod, ONLY: nbsrf 383 USE infotrac, ONLY: nqtot, n qo, nbtr, type_trac383 USE infotrac, ONLY: nqtot, nbtr, tracers, type_trac 384 384 USE geometry_mod, ONLY: cell_area 385 385 USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, landice_opt … … 401 401 ! INCLUDE "temps.h" 402 402 INCLUDE "clesphys.h" 403 INCLUDE " thermcell.h"403 INCLUDE "alpale.h" 404 404 INCLUDE "compbl.h" 405 405 INCLUDE "YOMCST.h" … … 430 430 INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm 431 431 INTEGER :: itau_w 432 INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero432 INTEGER :: i, iinit, iinitend=1, iff, iq, itr, nsrf, k, ll, naero 433 433 REAL, DIMENSION (klon) :: zx_tmp_fi2d 434 434 REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv … … 1610 1610 #endif 1611 1611 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1612 IF (nqtot.GE.nqo+1) THEN 1613 !AS: type_trac = 'lmdz' par defaut dans libf/dyn3d/conf_gcm.F90 1614 !Changé par inca, repr(obus), coag(ulation), co2i(nteractif), PAS par SPLA 1615 !Cet "if" est donc inutile : IF (type_trac == 'lmdz' .OR. type_trac == 'repr') THEN 1616 DO iq=nqo+1,nqtot 1617 CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo)) 1618 CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo)) 1619 CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo)) 1620 CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo)) 1621 CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo)) 1622 CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo)) 1623 CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo)) 1624 CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo)) 1625 CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo)) 1626 CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo)) 1627 ! CALL histwrite_phy(o_dtr_dyn(iq-nqo),d_tr_dyn(:,:,iq-nqo)) 1628 ! CALL histwrite_phy(o_dtr_cl(iq-nqo),d_tr_cl(:,:,iq-nqo)) 1629 CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo)) 1630 CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo)) 1631 CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo)) 1632 CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo)) 1612 itr = 0 1613 DO iq = 1, nqtot 1614 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 1615 itr = itr+1 1616 CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr)) 1617 CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr)) 1618 CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr)) 1619 CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr)) 1620 CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr)) 1621 CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr)) 1622 CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr)) 1623 CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr)) 1624 CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr)) 1625 CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr)) 1626 ! CALL histwrite_phy(o_dtr_dyn(itr),d_tr_dyn(:,:,itr)) 1627 ! CALL histwrite_phy(o_dtr_cl(itr),d_tr_cl(:,:,itr)) 1628 CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr)) 1629 CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr)) 1630 CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr)) 1631 CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr)) 1633 1632 zx_tmp_fi2d=0. 1634 1633 IF (vars_defined) THEN 1635 1634 DO k=1,klev 1636 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,i q-nqo)1635 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr) 1637 1636 ENDDO 1638 1637 ENDIF 1639 CALL histwrite_phy(o_trac_cum(i q-nqo), zx_tmp_fi2d)1638 CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d) 1640 1639 ENDDO 1641 !ENDIF1642 ENDIF1643 1640 1644 1641 IF (.NOT.vars_defined) THEN -
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/phytracr_spl_mod.F90
r4013 r4368 820 820 ! 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien 821 821 ! les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide) 822 !! AS : nqmax-2 devrait etre nqmax-3 apres introducton de H2Oi ; 823 !! et c'est encore different avec le parser de DC ? 822 824 !====================================================================== 823 825 #include "dimensions.h" … … 827 829 #include "YOETHF.h" 828 830 #include "paramet.h" 829 #include " thermcell.h"831 #include "alpale.h" 830 832 831 833 !====================================================================== … … 1104 1106 REAL, intent(in) :: rlon(klon) ! longitudes pour chaque point 1105 1107 ! 1106 INTEGER i, k, i t, j, ig1108 INTEGER i, k, iq, itr, j, ig 1107 1109 ! 1108 1110 ! DEFINITION OF DIAGNOSTIC VARIABLES … … 1260 1262 1261 1263 #ifdef IOPHYS_DUST 1262 do it=1,nbtr 1263 write(str2,'(i2.2)') it 1264 call iophys_ecrit('TRA'//str2,klev,'SOURCE','',tr_seri(:,:,it)) 1264 itr = 0 1265 DO iq = 1, nqtot 1266 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 1267 itr = itr+1 1268 write(str2,'(i2.2)') itrr 1269 call iophys_ecrit('TRA'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 1265 1270 enddo 1266 1271 #endif … … 1414 1419 id_codu=-1 1415 1420 id_scdu=-1 1416 !print *,nbtr 1417 do it=1,nbtr 1418 print *, it, tname(it+nqo) 1419 if (tname(it+nqo) == 'PREC' ) then 1420 id_prec=it 1421 endif 1422 if (tname(it+nqo) == 'FINE' ) then 1423 id_fine=it 1424 endif 1425 if (tname(it+nqo) == 'COSS' ) then 1426 id_coss=it 1427 endif 1428 if (tname(it+nqo) == 'CODU' ) then 1429 id_codu=it 1430 endif 1431 if (tname(it+nqo) == 'SCDU' ) then 1432 id_scdu=it 1433 endif 1434 enddo 1435 ! check consistency with dust emission scheme: 1436 if (ok_chimeredust) then 1421 itr = 0 1422 do iq=1,nqtot 1423 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 1424 itr = itr+1 1425 print *, itr, TRIM(tracers(iq)%name) 1426 SELECT CASE(tracers(iq)%name) 1427 CASE('PREC'); id_prec=itr 1428 CASE('FINE'); id_fine=itr 1429 CASE('COSS'); id_coss=itr 1430 CASE('CODU'); id_codu=itr 1431 CASE('SCDU'); id_scdu=itr 1432 END SELECT 1433 enddo 1434 ! check consistency with dust emission scheme: 1435 if (ok_chimeredust) then 1437 1436 if (.not.( id_scdu>0 .and. id_codu>0 .and. id_fine>0)) then 1438 1437 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 0',1) 1439 1438 endif 1440 else1439 else 1441 1440 if (id_scdu>0) then 1442 1441 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1) … … 1568 1567 ! JE before put in zero 1569 1568 IF (lminmax) THEN 1570 DO it =1,nbtr1571 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan init phytracr')1572 ENDDO 1573 DO it =1,nbtr1574 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'minmax init phytracr')1569 DO itr=1,nbtr 1570 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan init phytracr') 1571 ENDDO 1572 DO itr=1,nbtr 1573 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'minmax init phytracr') 1575 1574 ENDDO 1576 1575 CALL minmaxsource(source_tr,qmin,qmax,'maxsource init phytracr') 1577 1576 ENDIF 1578 1577 ! JE initializon to cero the tracers 1579 ! DO it =1,nbtr1580 ! tr_seri(:,:,it )=0.01578 ! DO itr=1,nbtr 1579 ! tr_seri(:,:,itr)=0.0 1581 1580 ! ENDDO 1582 1581 ! JE end … … 1584 1583 ! tr_seri(:,:,:)=0.0 1585 1584 ! 1586 ! DO it =1,nbtr1587 ! trm_aux(it )=0.01588 ! src_aux(it )=0.01589 ! diag_trm(it )=0.01590 ! diag_drydep(it )=0.01591 ! diag_wetdep(it )=0.01592 ! diag_cvtdep(it )=0.01593 ! diag_emissn(it )=0.01585 ! DO itr=1,nbtr 1586 ! trm_aux(itr)=0.0 1587 ! src_aux(itr)=0.0 1588 ! diag_trm(itr)=0.0 1589 ! diag_drydep(itr)=0.0 1590 ! diag_wetdep(itr)=0.0 1591 ! diag_cvtdep(itr)=0.0 1592 ! diag_emissn(itr)=0.0 1594 1593 ! ENDDO 1595 1594 ! diag_g2part=0.0 … … 1767 1766 1768 1767 ! 1769 DO it =1,nbtr1768 DO itr=1,nbtr 1770 1769 DO k=1,klev 1771 1770 DO i=1,klon 1772 d_tr_cv(i,k,it )=0.1773 d_tr_trsp(i,k,it )=0.1774 d_tr_sscav(i,k,it )=0.1775 d_tr_sat(i,k,it )=0.1776 d_tr_uscav(i,k,it )=0.1777 d_tr(i,k,it )=0.1778 d_tr_insc(i,k,it )=0.1779 d_tr_bcscav(i,k,it )=0.1780 d_tr_evapls(i,k,it )=0.1781 d_tr_ls(i,k,it )=0.1782 d_tr_cl(i,k,it )=0.1783 d_tr_th(i,k,it )=0.1771 d_tr_cv(i,k,itr)=0. 1772 d_tr_trsp(i,k,itr)=0. 1773 d_tr_sscav(i,k,itr)=0. 1774 d_tr_sat(i,k,itr)=0. 1775 d_tr_uscav(i,k,itr)=0. 1776 d_tr(i,k,itr)=0. 1777 d_tr_insc(i,k,itr)=0. 1778 d_tr_bcscav(i,k,itr)=0. 1779 d_tr_evapls(i,k,itr)=0. 1780 d_tr_ls(i,k,itr)=0. 1781 d_tr_cl(i,k,itr)=0. 1782 d_tr_th(i,k,itr)=0. 1784 1783 1785 d_tr_cv_o(i,k,it )=0.1786 d_tr_trsp_o(i,k,it )=0.1787 d_tr_sscav_o(i,k,it )=0.1788 d_tr_sat_o(i,k,it )=0.1789 d_tr_uscav_o(i,k,it )=0.1790 1791 1792 qDi(i,k,it )=0.1793 qPr(i,k,it )=0.1794 qPa(i,k,it )=0.1795 qMel(i,k,it )=0.1796 qTrdi(i,k,it )=0.1797 dtrcvMA(i,k,it )=0.1798 zmfd1a(i,k,it )=0.1799 zmfdam(i,k,it )=0.1800 zmfphi2(i,k,it )=0.1784 d_tr_cv_o(i,k,itr)=0. 1785 d_tr_trsp_o(i,k,itr)=0. 1786 d_tr_sscav_o(i,k,itr)=0. 1787 d_tr_sat_o(i,k,itr)=0. 1788 d_tr_uscav_o(i,k,itr)=0. 1789 1790 1791 qDi(i,k,itr)=0. 1792 qPr(i,k,itr)=0. 1793 qPa(i,k,itr)=0. 1794 qMel(i,k,itr)=0. 1795 qTrdi(i,k,itr)=0. 1796 dtrcvMA(i,k,itr)=0. 1797 zmfd1a(i,k,itr)=0. 1798 zmfdam(i,k,itr)=0. 1799 zmfphi2(i,k,itr)=0. 1801 1800 END DO 1802 1801 END DO … … 1804 1803 1805 1804 1806 DO it =1,nbtr1805 DO itr=1,nbtr 1807 1806 DO i=1,klon 1808 qPrls(i,it )=0.01809 dtrconv(i,it )=0.01807 qPrls(i,itr)=0.0 1808 dtrconv(i,itr)=0.0 1810 1809 !JE20140507<< 1811 d_tr_dry(i,it )=0.01812 flux_tr_dry(i,it )=0.01810 d_tr_dry(i,itr)=0.0 1811 flux_tr_dry(i,itr)=0.0 1813 1812 !JE20140507>> 1814 1813 ENDDO 1815 1814 ENDDO 1816 1815 1817 DO it =1,nbtr1816 DO itr=1,nbtr 1818 1817 DO i=1, klon 1819 his_dh(i,it )=0.01820 his_dhlsc(i,it )=0.01821 his_dhcon(i,it )=0.01822 his_dhbclsc(i,it )=0.01823 his_dhbccon(i,it )=0.01824 trm(i,it )=0.01825 his_th(i,it )=0.01826 his_dhkecv(i,it )=0.01827 his_ds(i,it )=0.01828 his_dhkelsc(i,it )=0.01818 his_dh(i,itr)=0.0 1819 his_dhlsc(i,itr)=0.0 1820 his_dhcon(i,itr)=0.0 1821 his_dhbclsc(i,itr)=0.0 1822 his_dhbccon(i,itr)=0.0 1823 trm(i,itr)=0.0 1824 his_th(i,itr)=0.0 1825 his_dhkecv(i,itr)=0.0 1826 his_ds(i,itr)=0.0 1827 his_dhkelsc(i,itr)=0.0 1829 1828 1830 1829 ENDDO … … 2068 2067 !======================================================================= 2069 2068 ! 2070 DO it =1,nbtr2069 DO itr=1,nbtr 2071 2070 DO j=1,klev 2072 2071 DO i=1,klon 2073 tmp_var(i,j)=tr_seri(i,j,it )2072 tmp_var(i,j)=tr_seri(i,j,itr) 2074 2073 ENDDO 2075 2074 ENDDO … … 2077 2076 DO j=1,klev 2078 2077 DO i=1,klon 2079 tr_seri(i,j,it )=tmp_var(i,j)2078 tr_seri(i,j,itr)=tmp_var(i,j) 2080 2079 ENDDO 2081 2080 ENDDO … … 2094 2093 ! 2095 2094 IF (lminmax) THEN 2096 DO it =1,nbtr2097 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_avt_coarem')2095 DO itr=1,nbtr 2096 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_avt_coarem') 2098 2097 ENDDO 2099 DO it =1,nbtr2100 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'avt coarem')2098 DO itr=1,nbtr 2099 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'avt coarem') 2101 2100 ENDDO 2102 2101 CALL minmaxsource(source_tr,qmin,qmax,'src: avt coarem') … … 2131 2130 ! . MAXVAL(tr_seri(:,:,3)) 2132 2131 #ifdef IOPHYS_DUST 2133 do it =1,nbtr2134 write(str2,'(i2.2)') it 2135 call iophys_ecrit('sav'//str2,1,'SOURCE','',source_tr(:,it ))2136 call iophys_ecrit('fav'//str2,1,'SOURCE','',source_tr(:,it ))2132 do itr=1,nbtr 2133 write(str2,'(i2.2)') itr 2134 call iophys_ecrit('sav'//str2,1,'SOURCE','',source_tr(:,itr)) 2135 call iophys_ecrit('fav'//str2,1,'SOURCE','',source_tr(:,itr)) 2137 2136 enddo 2138 do it =1,nbtr2139 write(str2,'(i2.2)') it 2140 call iophys_ecrit('TRB'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2137 do itr=1,nbtr 2138 write(str2,'(i2.2)') itr 2139 call iophys_ecrit('TRB'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2141 2140 enddo 2142 2141 #endif … … 2164 2163 2165 2164 #ifdef IOPHYS_DUST 2166 do it =1,nbtr2167 write(str2,'(i2.2)') it 2168 call iophys_ecrit('sap'//str2,1,'SOURCE','',source_tr(:,it ))2169 call iophys_ecrit('fap'//str2,1,'SOURCE','',source_tr(:,it ))2165 do itr=1,nbtr 2166 write(str2,'(i2.2)') itr 2167 call iophys_ecrit('sap'//str2,1,'SOURCE','',source_tr(:,itr)) 2168 call iophys_ecrit('fap'//str2,1,'SOURCE','',source_tr(:,itr)) 2170 2169 enddo 2171 2170 #endif 2172 2171 2173 2172 IF (lminmax) THEN 2174 DO it =1,nbtr2175 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_coarem')2176 ENDDO 2177 DO it =1,nbtr2178 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after coarem')2173 DO itr=1,nbtr 2174 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_coarem') 2175 ENDDO 2176 DO itr=1,nbtr 2177 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after coarem') 2179 2178 ENDDO 2180 2179 CALL minmaxsource(source_tr,qmin,qmax,'src: after coarem') … … 2248 2247 ! 2249 2248 IF (lminmax) THEN 2250 DO it =1,nbtr2251 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after precur')2252 ENDDO 2253 DO it =1,nbtr2254 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after precur')2249 DO itr=1,nbtr 2250 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after precur') 2251 ENDDO 2252 DO itr=1,nbtr 2253 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after precur') 2255 2254 ENDDO 2256 2255 CALL minmaxsource(source_tr,qmin,qmax,'src: after precur') … … 2262 2261 #ifdef IOPHYS_DUST 2263 2262 ! 2264 do it =1,nbtr2265 write(str2,'(i2.2)') it 2266 call iophys_ecrit('tpr'//str2,1,'SOURCE','',source_tr(:,it ))2267 call iophys_ecrit('fpr'//str2,1,'SOURCE','',flux_tr(:,it ))2263 do itr=1,nbtr 2264 write(str2,'(i2.2)') itr 2265 call iophys_ecrit('tpr'//str2,1,'SOURCE','',source_tr(:,itr)) 2266 call iophys_ecrit('fpr'//str2,1,'SOURCE','',flux_tr(:,itr)) 2268 2267 enddo 2269 2268 #endif … … 2282 2281 ! 2283 2282 IF (lminmax) THEN 2284 DO it =1,nbtr2285 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_fineem')2286 ENDDO 2287 DO it =1,nbtr2288 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after fineem')2283 DO itr=1,nbtr 2284 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_fineem') 2285 ENDDO 2286 DO itr=1,nbtr 2287 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after fineem') 2289 2288 ENDDO 2290 2289 IF (lcheckmass) THEN 2291 DO it =1,nbtr2292 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2290 DO itr=1,nbtr 2291 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2293 2292 pplay,t_seri,iscm3,'after fineem') 2294 2293 ENDDO … … 2309 2308 2310 2309 #ifdef IOPHYS_DUST 2311 do it =1,nbtr2312 write(str2,'(i2.2)') it 2313 call iophys_ecrit('t'//str2,1,'SOURCE','',source_tr(:,it ))2314 call iophys_ecrit('f'//str2,1,'SOURCE','',flux_tr(:,it ))2310 do itr=1,nbtr 2311 write(str2,'(i2.2)') itr 2312 call iophys_ecrit('t'//str2,1,'SOURCE','',source_tr(:,itr)) 2313 call iophys_ecrit('f'//str2,1,'SOURCE','',flux_tr(:,itr)) 2315 2314 enddo 2316 2315 #endif … … 2325 2324 !======================================================================= 2326 2325 ! 2327 ! DO it =1,nbtr2328 ! CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz,2326 ! DO itr=1,nbtr 2327 ! CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, 2329 2328 ! . pplay,t_seri,iscm3,'') 2330 2329 ! ENDDO … … 2337 2336 ENDIF 2338 2337 2339 DO it =1,nbtr2338 DO itr=1,nbtr 2340 2339 DO j=1,klev 2341 2340 DO i=1,klon 2342 tmp_var(i,j)=tr_seri(i,j,it )2341 tmp_var(i,j)=tr_seri(i,j,itr) 2343 2342 ENDDO 2344 2343 ENDDO … … 2346 2345 DO j=1,klev 2347 2346 DO i=1,klon 2348 tr_seri(i,j,it )=tmp_var(i,j)2347 tr_seri(i,j,itr)=tmp_var(i,j) 2349 2348 ENDDO 2350 2349 ENDDO … … 2353 2352 !---------------------------- 2354 2353 IF (lminmax) THEN 2355 DO it =1,nbtr2356 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_depo')2357 ENDDO 2358 DO it =1,nbtr2359 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before depo')2354 DO itr=1,nbtr 2355 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_depo') 2356 ENDDO 2357 DO itr=1,nbtr 2358 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before depo') 2360 2359 ENDDO 2361 2360 IF (lcheckmass) THEN 2362 DO it =1,nbtr2363 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2361 DO itr=1,nbtr 2362 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2364 2363 pplay,t_seri,iscm3,'before depo') 2365 2364 ENDDO … … 2369 2368 2370 2369 #ifdef IOPHYS_DUST 2371 do it =1,nbtr2372 write(str2,'(i2.2)') it 2373 call iophys_ecrit('TRC'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2370 do itr=1,nbtr 2371 write(str2,'(i2.2)') itr 2372 call iophys_ecrit('TRC'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2374 2373 enddo 2375 2374 #endif … … 2381 2380 ! 2382 2381 IF (lminmax) THEN 2383 DO it =1,nbtr2384 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_depo')2385 ENDDO 2386 DO it =1,nbtr2387 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after depo')2382 DO itr=1,nbtr 2383 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_depo') 2384 ENDDO 2385 DO itr=1,nbtr 2386 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after depo') 2388 2387 ENDDO 2389 2388 IF (lcheckmass) THEN 2390 DO it =1,nbtr2391 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2389 DO itr=1,nbtr 2390 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2392 2391 pplay,t_seri,iscm3,'after depo') 2393 2392 ENDDO … … 2411 2410 2412 2411 #ifdef IOPHYS_DUST 2413 do it =1,nbtr2414 write(str2,'(i2.2)') it 2415 call iophys_ecrit('TRD'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2412 do itr=1,nbtr 2413 write(str2,'(i2.2)') itr 2414 call iophys_ecrit('TRD'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2416 2415 enddo 2417 2416 #endif … … 2431 2430 END DO 2432 2431 ! 2433 DO it =1,nbtr2432 DO itr=1,nbtr 2434 2433 DO j=1, klev 2435 2434 DO i=1, klon 2436 tmp_var(i,j)=tr_seri(i,j,it )2437 aux_var2(i)=source_tr(i,it )2435 tmp_var(i,j)=tr_seri(i,j,itr) 2436 aux_var2(i)=source_tr(i,itr) 2438 2437 ENDDO 2439 2438 ENDDO … … 2446 2445 !KE 2447 2446 CALL cltrac(pdtphys, coefh,t_seri,tmp_var,aux_var2,paprs,pplay, & 2448 delp,aux_var3,d_tr_dry,flux_tr_dry(:,it ))2447 delp,aux_var3,d_tr_dry,flux_tr_dry(:,itr)) 2449 2448 ENDIF 2450 2449 2451 2450 DO i=1, klon 2452 2451 DO j=1, klev 2453 tr_seri(i,j,it )=tmp_var(i,j)2454 d_tr(i,j,it )=aux_var3(i,j)2455 d_tr_cl(i,j,it )=d_tr(i,j,it)2452 tr_seri(i,j,itr)=tmp_var(i,j) 2453 d_tr(i,j,itr)=aux_var3(i,j) 2454 d_tr_cl(i,j,itr)=d_tr(i,j,itr) 2456 2455 ENDDO 2457 2456 ENDDO 2458 2457 DO k = 1, klev 2459 2458 DO i = 1, klon 2460 tr_seri(i,k,it ) = tr_seri(i,k,it) + d_tr(i,k,it)2459 tr_seri(i,k,itr) = tr_seri(i,k,itr) + d_tr(i,k,itr) 2461 2460 ENDDO 2462 2461 ENDDO 2463 2462 print *,' AFTER Cltrac' 2464 2463 IF (lminmax) THEN 2465 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after cltrac')2464 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after cltrac') 2466 2465 ENDIF 2467 2466 ENDDO !--end itr loop … … 2487 2486 call iophys_ecrit('yv1',1,'yv1','',yv1) 2488 2487 call iophys_ecrit('delp',klev,'delp','',delp) 2489 do it =1,nbtr2490 write(str2,'(i2.2)') it 2491 call iophys_ecrit('TRE'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2488 do itr=1,nbtr 2489 write(str2,'(i2.2)') itr 2490 call iophys_ecrit('TRE'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2492 2491 enddo 2493 2492 #endif … … 2506 2505 2507 2506 IF (lminmax) THEN 2508 DO it =1,nbtr2509 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before therm')2510 ENDDO 2511 DO it =1,nbtr2512 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before therm')2507 DO itr=1,nbtr 2508 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before therm') 2509 ENDDO 2510 DO itr=1,nbtr 2511 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before therm') 2513 2512 ENDDO 2514 2513 IF (lcheckmass) THEN 2515 DO it =1,nbtr2516 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2514 DO itr=1,nbtr 2515 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2517 2516 pplay,t_seri,iscm3,'before therm') 2518 2517 ENDDO … … 2521 2520 ENDIF 2522 2521 2523 DO it =1,nbtr2522 DO itr=1,nbtr 2524 2523 DO k=1,klev 2525 2524 DO i=1,klon 2526 tmp_var3(i,k,it )=tr_seri(i,k,it)2527 d_tr_th(i,k,it )=0.2528 tr_seri(i,k,it )=MAX(tr_seri(i,k,it),0.)2529 !JE: precursor >>1e10 tr_seri(i,k,it )=MIN(tr_seri(i,k,it),1.e10)2525 tmp_var3(i,k,itr)=tr_seri(i,k,itr) 2526 d_tr_th(i,k,itr)=0. 2527 tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr),0.) 2528 !JE: precursor >>1e10 tr_seri(i,k,itr)=MIN(tr_seri(i,k,itr),1.e10) 2530 2529 END DO 2531 2530 END DO … … 2533 2532 2534 2533 !JE new implicit scheme 20140323 2535 DO it =1,nbtr2534 DO itr=1,nbtr 2536 2535 CALL thermcell_dq(klon,klev,1,pdtphys,fm_therm,entr_therm, & 2537 zmasse,tr_seri(1:klon,1:klev,it ), &2538 d_tr(1:klon,1:klev,it ),ztra_th,0 )2536 zmasse,tr_seri(1:klon,1:klev,itr), & 2537 d_tr(1:klon,1:klev,itr),ztra_th,0 ) 2539 2538 2540 2539 DO k=1,klev 2541 2540 DO i=1,klon 2542 d_tr(i,k,it )=pdtphys*d_tr(i,k,it)2543 d_tr_th(i,k,it )=d_tr_th(i,k,it)+d_tr(i,k,it)2544 tr_seri(i,k,it )=MAX(tr_seri(i,k,it)+d_tr(i,k,it),0.)2541 d_tr(i,k,itr)=pdtphys*d_tr(i,k,itr) 2542 d_tr_th(i,k,itr)=d_tr_th(i,k,itr)+d_tr(i,k,itr) 2543 tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr)+d_tr(i,k,itr),0.) 2545 2544 END DO 2546 2545 END DO … … 2550 2549 ! old scheme explicit 2551 2550 ! nsplit=10 2552 ! DO it =1,nbtr2551 ! DO itr=1,nbtr 2553 2552 ! DO isplit=1,nsplit 2554 2553 ! CALL dqthermcell(klon,klev,pdtphys/nsplit, 2555 2554 ! . fm_therm,entr_therm,zmasse, 2556 ! . tr_seri(1:klon,1:klev,it ),2557 ! . d_tr(1:klon,1:klev,it ),ztra_th)2555 ! . tr_seri(1:klon,1:klev,itr), 2556 ! . d_tr(1:klon,1:klev,itr),ztra_th) 2558 2557 ! DO k=1,klev 2559 2558 ! DO i=1,klon 2560 ! d_tr(i,k,it )=pdtphys*d_tr(i,k,it)/nsplit2561 ! d_tr_th(i,k,it )=d_tr_th(i,k,it)+d_tr(i,k,it)2562 ! tr_seri(i,k,it )=MAX(tr_seri(i,k,it)+d_tr(i,k,it),0.)2559 ! d_tr(i,k,itr)=pdtphys*d_tr(i,k,itr)/nsplit 2560 ! d_tr_th(i,k,itr)=d_tr_th(i,k,itr)+d_tr(i,k,itr) 2561 ! tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr)+d_tr(i,k,itr),0.) 2563 2562 ! END DO 2564 2563 ! END DO … … 2567 2566 !JE end modif 20140323 2568 2567 2569 DO it =1,nbtr2568 DO itr=1,nbtr 2570 2569 DO k=1,klev 2571 2570 DO i=1,klon 2572 tmp_var(i,k)=tr_seri(i,k,it )-tmp_var3(i,k,it)2571 tmp_var(i,k)=tr_seri(i,k,itr)-tmp_var3(i,k,itr) 2573 2572 ENDDO 2574 2573 ENDDO 2575 2574 IF (lminmax) THEN 2576 2575 IF (lcheckmass) THEN 2577 CALL checkmass(tmp_var(:,:),RNAVO,masse(it ),zdz, &2576 CALL checkmass(tmp_var(:,:),RNAVO,masse(itr),zdz, & 2578 2577 pplay,t_seri,iscm3,'dtr therm ') 2579 2578 ENDIF … … 2583 2582 DO k=1,klev 2584 2583 DO i=1,klon 2585 his_th(i,it )=his_th(i,it)+ &2584 his_th(i,itr)=his_th(i,itr)+ & 2586 2585 (tmp_var(i,k))/RNAVO* & 2587 masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys2586 masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 2588 2587 END DO !klon 2589 2588 END DO !klev … … 2591 2590 END DO !it 2592 2591 IF (lminmax) THEN 2593 DO it =1,nbtr2594 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after therm')2595 ENDDO 2596 DO it =1,nbtr2597 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after therm')2592 DO itr=1,nbtr 2593 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after therm') 2594 ENDDO 2595 DO itr=1,nbtr 2596 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after therm') 2598 2597 ENDDO 2599 2598 IF (lcheckmass) THEN 2600 DO it =1,nbtr2601 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2599 DO itr=1,nbtr 2600 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2602 2601 pplay,t_seri,iscm3,'after therm') 2603 2602 ENDDO … … 2624 2623 2625 2624 2626 DO it =1,nbtr2625 DO itr=1,nbtr 2627 2626 DO j=1,klev 2628 2627 DO i=1,klon 2629 tmp_var(i,j)=tr_seri(i,j,it )2628 tmp_var(i,j)=tr_seri(i,j,itr) 2630 2629 ENDDO 2631 2630 ENDDO … … 2633 2632 DO j=1,klev 2634 2633 DO i=1,klon 2635 tr_seri(i,j,it )=tmp_var(i,j)2634 tr_seri(i,j,itr)=tmp_var(i,j) 2636 2635 ENDDO 2637 2636 ENDDO … … 2642 2641 2643 2642 IF (lminmax) THEN 2644 DO it =1,nbtr2645 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_sedi')2646 ENDDO 2647 DO it =1,nbtr2648 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before sedi')2643 DO itr=1,nbtr 2644 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_sedi') 2645 ENDDO 2646 DO itr=1,nbtr 2647 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before sedi') 2649 2648 ENDDO 2650 2649 IF (lcheckmass) THEN 2651 DO it =1,nbtr2652 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2650 DO itr=1,nbtr 2651 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2653 2652 pplay,t_seri,iscm3,'before sedi') 2654 2653 ENDDO … … 2668 2667 2669 2668 IF (lminmax) THEN 2670 DO it =1,nbtr2671 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_sedi')2672 ENDDO 2673 DO it =1,nbtr2674 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after sedi')2669 DO itr=1,nbtr 2670 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_sedi') 2671 ENDDO 2672 DO itr=1,nbtr 2673 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after sedi') 2675 2674 ENDDO 2676 2675 IF (lcheckmass) THEN 2677 DO it =1,nbtr2678 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2676 DO itr=1,nbtr 2677 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2679 2678 pplay,t_seri,iscm3,'after sedi') 2680 2679 ENDDO … … 2686 2685 !======================================================================= 2687 2686 #ifdef IOPHYS_DUST 2688 do it =1,nbtr2689 write(str2,'(i2.2)') it 2690 call iophys_ecrit('TRF'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2687 do itr=1,nbtr 2688 write(str2,'(i2.2)') itr 2689 call iophys_ecrit('TRF'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2691 2690 enddo 2692 2691 #endif … … 2703 2702 ENDIF 2704 2703 2705 DO it =1,nbtr2704 DO itr=1,nbtr 2706 2705 DO j=1,klev 2707 2706 DO i=1,klon 2708 tmp_var(i,j)=tr_seri(i,j,it )2707 tmp_var(i,j)=tr_seri(i,j,itr) 2709 2708 ENDDO 2710 2709 ENDDO … … 2712 2711 DO j=1,klev 2713 2712 DO i=1,klon 2714 tr_seri(i,j,it )=tmp_var(i,j)2713 tr_seri(i,j,itr)=tmp_var(i,j) 2715 2714 ENDDO 2716 2715 ENDDO … … 2729 2728 2730 2729 IF (lminmax) THEN 2731 DO it =1,nbtr2732 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_beforegastopar')2733 ENDDO 2734 DO it =1,nbtr2735 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before gastopar')2730 DO itr=1,nbtr 2731 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_beforegastopar') 2732 ENDDO 2733 DO itr=1,nbtr 2734 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before gastopar') 2736 2735 ENDDO 2737 2736 IF (lcheckmass) THEN 2738 DO it =1,nbtr2739 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2737 DO itr=1,nbtr 2738 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2740 2739 pplay,t_seri,iscm3,'before gastopar') 2741 2740 ENDDO … … 2749 2748 ! 2750 2749 IF (lminmax) THEN 2751 DO it =1,nbtr2752 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_gastopar')2753 ENDDO 2754 DO it =1,nbtr2755 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after gastopar')2750 DO itr=1,nbtr 2751 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_gastopar') 2752 ENDDO 2753 DO itr=1,nbtr 2754 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after gastopar') 2756 2755 ENDDO 2757 2756 IF (lcheckmass) THEN 2758 DO it =1,nbtr2759 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2757 DO itr=1,nbtr 2758 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2760 2759 pplay,t_seri,iscm3,'after gastopar') 2761 2760 ENDDO … … 2780 2779 2781 2780 #ifdef IOPHYS_DUST 2782 do it =1,nbtr2783 write(str2,'(i2.2)') it 2784 call iophys_ecrit('TRG'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2781 do itr=1,nbtr 2782 write(str2,'(i2.2)') itr 2783 call iophys_ecrit('TRG'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2785 2784 enddo 2786 2785 #endif … … 2796 2795 2797 2796 2798 DO it =1,nbtr2797 DO itr=1,nbtr 2799 2798 DO j=1,klev 2800 2799 DO i=1,klon 2801 tmp_var(i,j)=tr_seri(i,j,it )2800 tmp_var(i,j)=tr_seri(i,j,itr) 2802 2801 ENDDO 2803 2802 ENDDO … … 2805 2804 DO j=1,klev 2806 2805 DO i=1,klon 2807 tr_seri(i,j,it )=tmp_var(i,j)2806 tr_seri(i,j,itr)=tmp_var(i,j) 2808 2807 ENDDO 2809 2808 ENDDO … … 2818 2817 2819 2818 IF (lminmax) THEN 2820 DO it =1,nbtr2821 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_incloud')2822 ENDDO 2823 DO it =1,nbtr2824 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before incloud')2819 DO itr=1,nbtr 2820 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_incloud') 2821 ENDDO 2822 DO itr=1,nbtr 2823 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before incloud') 2825 2824 ENDDO 2826 2825 IF (lcheckmass) THEN 2827 DO it =1,nbtr2828 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2826 DO itr=1,nbtr 2827 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2829 2828 pplay,t_seri,iscm3,'before incloud') 2830 2829 ENDDO … … 2859 2858 print *,' BEFORE blcloud (after incloud)' 2860 2859 IF (lminmax) THEN 2861 DO it =1,nbtr2862 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_blcloud')2863 ENDDO 2864 DO it =1,nbtr2865 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before blcloud')2860 DO itr=1,nbtr 2861 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_blcloud') 2862 ENDDO 2863 DO itr=1,nbtr 2864 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before blcloud') 2866 2865 ENDDO 2867 2866 IF (lcheckmass) THEN 2868 DO it =1,nbtr2869 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2867 DO itr=1,nbtr 2868 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2870 2869 pplay,t_seri,iscm3,'before blcloud') 2871 2870 ENDDO … … 2902 2901 2903 2902 IF (lminmax) THEN 2904 DO it =1,nbtr2905 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_blcloud')2903 DO itr=1,nbtr 2904 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_blcloud') 2906 2905 ENDDO 2907 DO it =1,nbtr2908 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after blcloud')2906 DO itr=1,nbtr 2907 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after blcloud') 2909 2908 ENDDO 2910 2909 IF (lcheckmass) THEN 2911 DO it =1,nbtr2912 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2910 DO itr=1,nbtr 2911 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2913 2912 pplay,t_seri,iscm3,'after blcloud') 2914 2913 ENDDO … … 2920 2919 ENDIF !--lessivage 2921 2920 2922 DO it =1,nbtr2921 DO itr=1,nbtr 2923 2922 DO j=1,klev 2924 2923 DO i=1,klon 2925 tmp_var(i,j)=tr_seri(i,j,it )2924 tmp_var(i,j)=tr_seri(i,j,itr) 2926 2925 ENDDO 2927 2926 ENDDO … … 2929 2928 DO j=1,klev 2930 2929 DO i=1,klon 2931 tr_seri(i,j,it )=tmp_var(i,j)2930 tr_seri(i,j,itr)=tmp_var(i,j) 2932 2931 ENDDO 2933 2932 ENDDO … … 2955 2954 ! 2956 2955 #ifdef IOPHYS_DUST 2957 do it =1,nbtr2958 write(str2,'(i2.2)') it 2959 call iophys_ecrit('TRH'//str2,klev,'SOURCE','',tr_seri(:,:,it ))2956 do itr=1,nbtr 2957 write(str2,'(i2.2)') itr 2958 call iophys_ecrit('TRH'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 2960 2959 enddo 2961 2960 #endif … … 2972 2971 2973 2972 IF (lminmax) THEN 2974 DO it =1,nbtr2975 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_trconve')2976 ENDDO 2977 DO it =1,nbtr2978 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before trconve')2973 DO itr=1,nbtr 2974 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_trconve') 2975 ENDDO 2976 DO itr=1,nbtr 2977 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before trconve') 2979 2978 ENDDO 2980 2979 IF (lcheckmass) THEN 2981 DO it =1,nbtr2982 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &2980 DO itr=1,nbtr 2981 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 2983 2982 pplay,t_seri,iscm3,'before trconve') 2984 2983 ENDDO … … 2997 2996 pen_d,pde_d,paprs,zdz,xconv,qmin,qmax,.false.,masse, & 2998 2997 dtrconv,tr_seri) 2999 DO it =1,nbtr3000 d_tr_cv(:,:,it )=0.2998 DO itr=1,nbtr 2999 d_tr_cv(:,:,itr)=0. 3001 3000 ENDDO 3002 3001 … … 3004 3003 ! KE 3005 3004 print *,'JE: KE in phytracr_spl' 3006 DO it =1,nbtr3005 DO itr=1,nbtr 3007 3006 DO k = 1, klev 3008 3007 DO i = 1, klon 3009 tmp_var3(i,k,it )=tr_seri(i,k,it)3008 tmp_var3(i,k,itr)=tr_seri(i,k,itr) 3010 3009 END DO 3011 3010 END DO 3012 3011 ENDDO 3013 3012 3014 DO it =1,nbtr3013 DO itr=1,nbtr 3015 3014 ! routine for aerosols . otherwise, check cvltrorig 3016 print *,'Check sum before cvltr it ',it,SUM(tr_seri(:,:,it))3015 print *,'Check sum before cvltr itr)',itr,SUM(tr_seri(:,:,itr)) 3017 3016 ! IF (.FALSE.) THEN 3018 3017 CALL cvltr_spl(pdtphys, da, phi,phi2,d1a,dam, mp,ep, & 3019 3018 sigd,sij,wght_cvfd,clw,elij,epmlmMm,eplaMm, & 3020 3019 pmflxr,pmflxs,evapls,t_seri,wdtrainA,wdtrainM, & 3021 ! paprs,it ,tr_seri,upwd,dnwd,itop_con,ibas_con, &3022 paprs,it ,tmp_var3,upwd,dnwd,itop_con,ibas_con, &3020 ! paprs,itr,tr_seri,upwd,dnwd,itop_con,ibas_con, & 3021 paprs,itr,tmp_var3,upwd,dnwd,itop_con,ibas_con, & 3023 3022 henry,kk,zrho,ccntrAA_spla,ccntrENV_spla,coefcoli_spla, & 3024 3023 id_prec,id_fine,id_coss, id_codu, id_scdu, & … … 3032 3031 ! . sigd,sij,wght_cvfd,clw,elij,epmlmMm,eplaMm, 3033 3032 ! . pmflxr,pmflxs,evapls,t_seri,wdtrainA,wdtrainM, 3034 ! . paprs,it ,tmp_var3,upwd,dnwd,itop_con,ibas_con,3033 ! . paprs,itr,tmp_var3,upwd,dnwd,itop_con,ibas_con, 3035 3034 ! . d_tr_cv,d_tr_trsp,d_tr_sscav,d_tr_sat,d_tr_uscav,qDi,qPr, 3036 3035 ! . qPa,qMel,qTrdi,dtrcvMA,Mint, … … 3050 3049 ! CALL checknanqfi(paprs(:,:),1.,-1.,'paprs ') 3051 3050 ! CALL checknanqfi(pplay(:,:),1.,-1.,'pplay ') 3052 ! CALL checknanqfi(tmp_var3(:,:,it ),1.,-1.,'tmp_var3 ')3051 ! CALL checknanqfi(tmp_var3(:,:,itr),1.,-1.,'tmp_var3 ') 3053 3052 ! CALL checknanqfi(upwd(:,:),1.,-1.,'upwd ') 3054 3053 ! CALL checknanqfi(dnwd(:,:),1.,-1.,'dnwd ') 3055 ! CALL checknanqfi(d_tr_cv(:,:,it ),1.,-1.,'d_tr_cv ')3054 ! CALL checknanqfi(d_tr_cv(:,:,itr),1.,-1.,'d_tr_cv ') 3056 3055 ! IF (.TRUE.) THEN 3057 3056 ! CALL cvltr_noscav(it,pdtphys, da, phi,mp,wght_cvfd,paprs, … … 3060 3059 DO k = 1, klev 3061 3060 DO i = 1, klon 3062 ! tr_seri(i,k,it ) = tr_seri(i,k,it) + d_tr_cv(i,k,it)3063 tr_seri(i,k,it )=(tmp_var3(i,k,it)+d_tr_cv(i,k,it))3064 tmp_var(i,k)=d_tr_cv(i,k,it )3061 ! tr_seri(i,k,itr) = tr_seri(i,k,itr) + d_tr_cv(i,k,itr) 3062 tr_seri(i,k,itr)=(tmp_var3(i,k,itr)+d_tr_cv(i,k,itr)) 3063 tmp_var(i,k)=d_tr_cv(i,k,itr) 3065 3064 3066 3065 END DO … … 3071 3070 DO k = 1, klev 3072 3071 DO i = 1, klon 3073 dtrconv(i,it )=0.03074 his_dhkecv(i,it )=his_dhkecv(i,it)-tmp_var(i,k) &3075 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3072 dtrconv(i,itr)=0.0 3073 his_dhkecv(i,itr)=his_dhkecv(i,itr)-tmp_var(i,k) & 3074 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3076 3075 END DO 3077 3076 END DO … … 3082 3081 DO k = 1, klev 3083 3082 DO i = 1, klon 3084 dtrconv(i,it )=0.03085 his_ds(i,it )=his_ds(i,it)-tmp_var(i,k) &3086 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3083 dtrconv(i,itr)=0.0 3084 his_ds(i,itr)=his_ds(i,itr)-tmp_var(i,k) & 3085 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3087 3086 END DO 3088 3087 END DO … … 3090 3089 IF (lminmax) THEN 3091 3090 3092 print *,'Check sum after cvltr it ',it,SUM(tr_seri(:,:,it))3093 CALL minmaxqfi2(d_tr_cv(:,:,it ),qmin,qmax,'d_tr_cv:')3094 CALL minmaxqfi2(d_tr_trsp(:,:,it ),qmin,qmax,'d_tr_trsp:')3095 CALL minmaxqfi2(d_tr_sscav(:,:,it ),qmin,qmax,'d_tr_sscav:')3096 CALL minmaxqfi2(d_tr_sat(:,:,it ),qmin,qmax,'d_tr_sat:')3097 CALL minmaxqfi2(d_tr_uscav(:,:,it ),qmin,qmax,'d_tr_uscav:')3091 print *,'Check sum after cvltr itr)',itr,SUM(tr_seri(:,:,itr)) 3092 CALL minmaxqfi2(d_tr_cv(:,:,itr),qmin,qmax,'d_tr_cv:') 3093 CALL minmaxqfi2(d_tr_trsp(:,:,itr),qmin,qmax,'d_tr_trsp:') 3094 CALL minmaxqfi2(d_tr_sscav(:,:,itr),qmin,qmax,'d_tr_sscav:') 3095 CALL minmaxqfi2(d_tr_sat(:,:,itr),qmin,qmax,'d_tr_sat:') 3096 CALL minmaxqfi2(d_tr_uscav(:,:,itr),qmin,qmax,'d_tr_uscav:') 3098 3097 IF (lcheckmass) THEN 3099 CALL checkmass(d_tr_cv(:,:,it ),RNAVO,masse(it),zdz, &3098 CALL checkmass(d_tr_cv(:,:,itr),RNAVO,masse(itr),zdz, & 3100 3099 pplay,t_seri,.false.,'d_tr_cv:') 3101 3100 ENDIF … … 3105 3104 ENDIF ! iflag_conv 3106 3105 IF (lminmax) THEN 3107 DO it =1,nbtr3108 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_trcon')3109 ENDDO 3110 DO it =1,nbtr3111 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after trconv')3106 DO itr=1,nbtr 3107 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_trcon') 3108 ENDDO 3109 DO itr=1,nbtr 3110 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after trconv') 3112 3111 ENDDO 3113 3112 IF (lcheckmass) THEN 3114 DO it =1,nbtr3115 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &3113 DO itr=1,nbtr 3114 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 3116 3115 pplay,t_seri,iscm3,'after trconv') 3117 3116 ENDDO … … 3158 3157 call iophys_ecrit('wdtrainM',klev,'wdtrainM','',wdtrainM) 3159 3158 3160 do it =1,nbtr3161 write(str2,'(i2.2)') it 3162 call iophys_ecrit('TRI'//str2,klev,'SOURCE','',tr_seri(:,:,it ))3159 do itr=1,nbtr 3160 write(str2,'(i2.2)') itr 3161 call iophys_ecrit('TRI'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 3163 3162 enddo 3164 3163 #endif … … 3174 3173 print *,' BEFORE lsc_scav ' 3175 3174 IF (lminmax) THEN 3176 DO it =1,nbtr3177 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_before_lsc_scav')3178 ENDDO 3179 DO it =1,nbtr3180 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'before lsc_scav')3175 DO itr=1,nbtr 3176 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_lsc_scav') 3177 ENDDO 3178 DO itr=1,nbtr 3179 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before lsc_scav') 3181 3180 ENDDO 3182 3181 IF (lcheckmass) THEN 3183 DO it =1,nbtr3184 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &3182 DO itr=1,nbtr 3183 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 3185 3184 pplay,t_seri,iscm3,'before lsc_scav') 3186 3185 ENDDO … … 3199 3198 !IF (.false.) THEN ! test #DFB (Binta) sans lsc_scav_spl 3200 3199 print *,'JE iflag_lscav',iflag_lscav 3201 DO it = 1,nbtr3200 DO itr=1,nbtr 3202 3201 3203 3202 ! incloud scavenging and removal by large scale rain ! orig : ql_incl … … 3206 3205 ! Liu (2001) proposed to use 1.5e-3 kg/kg 3207 3206 3208 ! CALL lsc_scav_orig(pdtphys,it ,iflag_lscav,ql_incl,prfl,psfl,3207 ! CALL lsc_scav_orig(pdtphys,itr,iflag_lscav,ql_incl,prfl,psfl, 3209 3208 ! . rneb,beta_fisrt, beta_v1,pplay,paprs, 3210 3209 ! . t_seri,tr_seri,d_tr_insc, 3211 3210 ! . d_tr_bcscav,d_tr_evapls,qPrls) 3212 CALL lsc_scav_spl(pdtphys,it ,iflag_lscav,ql_incl,prfl,psfl, &3211 CALL lsc_scav_spl(pdtphys,itr,iflag_lscav,ql_incl,prfl,psfl, & 3213 3212 rneb,beta_fisrt, beta_v1,pplay,paprs, & 3214 3213 t_seri,tr_seri,d_tr_insc, & … … 3220 3219 DO k = 1, klev 3221 3220 DO i = 1, klon 3222 d_tr_ls(i,k,it )=d_tr_insc(i,k,it)+d_tr_bcscav(i,k,it) &3223 +d_tr_evapls(i,k,it )3224 tr_seri(i,k,it )=tr_seri(i,k,it)+d_tr_ls(i,k,it)3225 tmp_var(i,k)=d_tr_ls(i,k,it )3221 d_tr_ls(i,k,itr)=d_tr_insc(i,k,itr)+d_tr_bcscav(i,k,itr) & 3222 +d_tr_evapls(i,k,itr) 3223 tr_seri(i,k,itr)=tr_seri(i,k,itr)+d_tr_ls(i,k,itr) 3224 tmp_var(i,k)=d_tr_ls(i,k,itr) 3226 3225 ENDDO 3227 3226 ENDDO … … 3231 3230 DO k=1,klev 3232 3231 DO i=1,klon 3233 his_dhkelsc(i,it )=his_dhkelsc(i,it)-tmp_var(i,k) &3234 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3232 his_dhkelsc(i,itr)=his_dhkelsc(i,itr)-tmp_var(i,k) & 3233 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3235 3234 3236 3235 END DO … … 3241 3240 ELSE 3242 3241 print *,'WARNING: NO lsc_scav, Please choose iflag_lscav=3 or 4' 3243 DO it = 1,nbtr3242 DO itr=1,nbtr 3244 3243 DO i=1,klon 3245 his_dhkelsc(i,it )=0.03244 his_dhkelsc(i,itr)=0.0 3246 3245 END DO ! klon 3247 3246 END DO !it=1,nbtr … … 3250 3249 print *,' AFTER lsc_scav ' 3251 3250 IF (lminmax) THEN 3252 DO it =1,nbtr3253 CALL checknanqfi(tr_seri(:,:,it ),qmin,qmax,'nan_after_lsc_scav')3254 ENDDO 3255 DO it =1,nbtr3256 CALL minmaxqfi2(tr_seri(:,:,it ),qmin,qmax,'after lsc_scav')3251 DO itr=1,nbtr 3252 CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_lsc_scav') 3253 ENDDO 3254 DO itr=1,nbtr 3255 CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after lsc_scav') 3257 3256 ENDDO 3258 3257 IF (lcheckmass) THEN 3259 DO it =1,nbtr3260 CALL checkmass(tr_seri(:,:,it ),RNAVO,masse(it),zdz, &3258 DO itr=1,nbtr 3259 CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, & 3261 3260 pplay,t_seri,iscm3,'after lsc_scav') 3262 3261 ENDDO … … 3284 3283 !======================================================================= 3285 3284 #ifdef IOPHYS_DUST 3286 do it =1,nbtr3287 write(str2,'(i2.2)') it 3288 call iophys_ecrit('TRJ'//str2,klev,'SOURCE','',tr_seri(:,:,it ))3285 do itr=1,nbtr 3286 write(str2,'(i2.2)') itr 3287 call iophys_ecrit('TRJ'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 3289 3288 enddo 3290 3289 #endif … … 3296 3295 3297 3296 3298 DO it =1,nbtr3297 DO itr=1,nbtr 3299 3298 DO j=1,klev 3300 3299 DO i=1,klon 3301 tmp_var(i,j)=tr_seri(i,j,it )3300 tmp_var(i,j)=tr_seri(i,j,itr) 3302 3301 ENDDO 3303 3302 ENDDO … … 3305 3304 DO j=1,klev 3306 3305 DO i=1,klon 3307 tr_seri(i,j,it )=tmp_var(i,j)3306 tr_seri(i,j,itr)=tmp_var(i,j) 3308 3307 ENDDO 3309 3308 ENDDO … … 3313 3312 ! 3314 3313 ! Computing burden in mg/m2 3315 DO it =1,nbtr3314 DO itr=1,nbtr 3316 3315 DO k=1, klev 3317 3316 DO i=1, klon 3318 trm(i,it )=trm(i,it)+tr_seri(i,k,it)*1.e6*zdz(i,k)* &3319 masse(it )*1.e3/RNAVO !--mg S/m23317 trm(i,itr)=trm(i,itr)+tr_seri(i,k,itr)*1.e6*zdz(i,k)* & 3318 masse(itr)*1.e3/RNAVO !--mg S/m2 3320 3319 ENDDO 3321 3320 ENDDO … … 3324 3323 ! Computing Surface concentration in ug/m3 3325 3324 ! 3326 DO it =1,nbtr3325 DO itr=1,nbtr 3327 3326 DO i=1, klon 3328 sconc_seri(i,it )=tr_seri(i,1,it)*1.e6* &3329 masse(it )*1.e3/RNAVO !--mg/m3 (tr_seri ist in g/cm3)3327 sconc_seri(i,itr)=tr_seri(i,1,itr)*1.e6* & 3328 masse(itr)*1.e3/RNAVO !--mg/m3 (tr_seri ist in g/cm3) 3330 3329 ENDDO 3331 3330 ENDDO … … 3559 3558 !====================================================================== 3560 3559 #ifdef IOPHYS_DUST 3561 do it =1,nbtr3562 write(str2,'(i2.2)') it 3563 call iophys_ecrit('TRK'//str2,klev,'SOURCE','',tr_seri(:,:,it ))3560 do itr=1,nbtr 3561 write(str2,'(i2.2)') itr 3562 call iophys_ecrit('TRK'//str2,klev,'SOURCE','',tr_seri(:,:,itr)) 3564 3563 enddo 3565 3564 #endif … … 3571 3570 ENDIF 3572 3571 3573 DO it =1,nbtr3572 DO itr=1,nbtr 3574 3573 DO j=1,klev 3575 3574 DO i=1,klon 3576 tmp_var(i,j)=tr_seri(i,j,it )3575 tmp_var(i,j)=tr_seri(i,j,itr) 3577 3576 ENDDO 3578 3577 ENDDO … … 3580 3579 DO j=1,klev 3581 3580 DO i=1,klon 3582 tr_seri(i,j,it )=tmp_var(i,j)3581 tr_seri(i,j,itr)=tmp_var(i,j) 3583 3582 ENDDO 3584 3583 ENDDO … … 3729 3728 ! prepare outputs cvltr 3730 3729 3731 DO it =1,nbtr3730 DO itr=1,nbtr 3732 3731 DO k=1,klev 3733 3732 DO i=1,klon 3734 tmp_var(i,k)=d_tr_cv(i,k,it )3733 tmp_var(i,k)=d_tr_cv(i,k,itr) 3735 3734 ENDDO 3736 3735 ENDDO … … 3738 3737 DO k=1,klev 3739 3738 DO i=1,klon 3740 d_tr_cv_o(i,k,it )=tmp_var(i,k) &3741 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3739 d_tr_cv_o(i,k,itr)=tmp_var(i,k) & 3740 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3742 3741 ENDDO 3743 3742 ENDDO 3744 3743 ENDDO 3745 DO it =1,nbtr3744 DO itr=1,nbtr 3746 3745 DO k=1,klev 3747 3746 DO i=1,klon 3748 tmp_var(i,k)=d_tr_trsp(i,k,it )3747 tmp_var(i,k)=d_tr_trsp(i,k,itr) 3749 3748 ENDDO 3750 3749 ENDDO … … 3752 3751 DO k=1,klev 3753 3752 DO i=1,klon 3754 d_tr_trsp_o(i,k,it )=tmp_var(i,k) &3755 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3753 d_tr_trsp_o(i,k,itr)=tmp_var(i,k) & 3754 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3756 3755 ENDDO 3757 3756 ENDDO 3758 3757 ENDDO 3759 DO it =1,nbtr3758 DO itr=1,nbtr 3760 3759 DO k=1,klev 3761 3760 DO i=1,klon 3762 tmp_var(i,k)=d_tr_sscav(i,k,it )3761 tmp_var(i,k)=d_tr_sscav(i,k,itr) 3763 3762 ENDDO 3764 3763 ENDDO … … 3766 3765 DO k=1,klev 3767 3766 DO i=1,klon 3768 d_tr_sscav_o(i,k,it )=tmp_var(i,k) &3769 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3767 d_tr_sscav_o(i,k,itr)=tmp_var(i,k) & 3768 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3770 3769 ENDDO 3771 3770 ENDDO 3772 3771 ENDDO 3773 DO it =1,nbtr3772 DO itr=1,nbtr 3774 3773 DO k=1,klev 3775 3774 DO i=1,klon 3776 tmp_var(i,k)=d_tr_sat(i,k,it )3775 tmp_var(i,k)=d_tr_sat(i,k,itr) 3777 3776 ENDDO 3778 3777 ENDDO … … 3780 3779 DO k=1,klev 3781 3780 DO i=1,klon 3782 d_tr_sat_o(i,k,it )=tmp_var(i,k) &3783 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3781 d_tr_sat_o(i,k,itr)=tmp_var(i,k) & 3782 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3784 3783 ENDDO 3785 3784 ENDDO 3786 3785 ENDDO 3787 DO it =1,nbtr3786 DO itr=1,nbtr 3788 3787 DO k=1,klev 3789 3788 DO i=1,klon 3790 tmp_var(i,k)=d_tr_uscav(i,k,it )3789 tmp_var(i,k)=d_tr_uscav(i,k,itr) 3791 3790 ENDDO 3792 3791 ENDDO … … 3794 3793 DO k=1,klev 3795 3794 DO i=1,klon 3796 d_tr_uscav_o(i,k,it )=tmp_var(i,k) &3797 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3795 d_tr_uscav_o(i,k,itr)=tmp_var(i,k) & 3796 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3798 3797 ENDDO 3799 3798 ENDDO … … 3801 3800 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3802 3801 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3803 DO it =1,nbtr3802 DO itr=1,nbtr 3804 3803 DO k=1,klev 3805 3804 DO i=1,klon 3806 tmp_var(i,k)=d_tr_insc(i,k,it )3805 tmp_var(i,k)=d_tr_insc(i,k,itr) 3807 3806 ENDDO 3808 3807 ENDDO … … 3810 3809 DO k=1,klev 3811 3810 DO i=1,klon 3812 d_tr_insc_o(i,k,it )=tmp_var(i,k) &3813 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3811 d_tr_insc_o(i,k,itr)=tmp_var(i,k) & 3812 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3814 3813 ENDDO 3815 3814 ENDDO … … 3817 3816 3818 3817 3819 DO it =1,nbtr3818 DO itr=1,nbtr 3820 3819 DO k=1,klev 3821 3820 DO i=1,klon 3822 tmp_var(i,k)=d_tr_bcscav(i,k,it )3821 tmp_var(i,k)=d_tr_bcscav(i,k,itr) 3823 3822 ENDDO 3824 3823 ENDDO … … 3826 3825 DO k=1,klev 3827 3826 DO i=1,klon 3828 d_tr_bcscav_o(i,k,it )=tmp_var(i,k) &3829 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3827 d_tr_bcscav_o(i,k,itr)=tmp_var(i,k) & 3828 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3830 3829 ENDDO 3831 3830 ENDDO … … 3833 3832 3834 3833 3835 DO it =1,nbtr3834 DO itr=1,nbtr 3836 3835 DO k=1,klev 3837 3836 DO i=1,klon 3838 tmp_var(i,k)=d_tr_evapls(i,k,it )3837 tmp_var(i,k)=d_tr_evapls(i,k,itr) 3839 3838 ENDDO 3840 3839 ENDDO … … 3842 3841 DO k=1,klev 3843 3842 DO i=1,klon 3844 d_tr_evapls_o(i,k,it )=tmp_var(i,k) &3845 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3843 d_tr_evapls_o(i,k,itr)=tmp_var(i,k) & 3844 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3846 3845 ENDDO 3847 3846 ENDDO … … 3849 3848 3850 3849 3851 DO it =1,nbtr3850 DO itr=1,nbtr 3852 3851 DO k=1,klev 3853 3852 DO i=1,klon 3854 tmp_var(i,k)=d_tr_ls(i,k,it )3853 tmp_var(i,k)=d_tr_ls(i,k,itr) 3855 3854 ENDDO 3856 3855 ENDDO … … 3858 3857 DO k=1,klev 3859 3858 DO i=1,klon 3860 d_tr_ls_o(i,k,it )=tmp_var(i,k) &3861 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3859 d_tr_ls_o(i,k,itr)=tmp_var(i,k) & 3860 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3862 3861 ENDDO 3863 3862 ENDDO … … 3865 3864 3866 3865 3867 DO it =1,nbtr3866 DO itr=1,nbtr 3868 3867 DO k=1,klev 3869 3868 DO i=1,klon 3870 tmp_var(i,k)=d_tr_dyn(i,k,it )3869 tmp_var(i,k)=d_tr_dyn(i,k,itr) 3871 3870 ENDDO 3872 3871 ENDDO … … 3874 3873 DO k=1,klev 3875 3874 DO i=1,klon 3876 d_tr_dyn_o(i,k,it )=tmp_var(i,k) &3877 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3875 d_tr_dyn_o(i,k,itr)=tmp_var(i,k) & 3876 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3878 3877 ENDDO 3879 3878 ENDDO … … 3881 3880 3882 3881 3883 DO it =1,nbtr3882 DO itr=1,nbtr 3884 3883 DO k=1,klev 3885 3884 DO i=1,klon 3886 tmp_var(i,k)=d_tr_cl(i,k,it )3885 tmp_var(i,k)=d_tr_cl(i,k,itr) 3887 3886 ENDDO 3888 3887 ENDDO … … 3890 3889 DO k=1,klev 3891 3890 DO i=1,klon 3892 d_tr_cl_o(i,k,it )=tmp_var(i,k) &3893 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3891 d_tr_cl_o(i,k,itr)=tmp_var(i,k) & 3892 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3894 3893 ENDDO 3895 3894 ENDDO … … 3897 3896 3898 3897 3899 DO it =1,nbtr3898 DO itr=1,nbtr 3900 3899 DO k=1,klev 3901 3900 DO i=1,klon 3902 tmp_var(i,k)=d_tr_th(i,k,it )3901 tmp_var(i,k)=d_tr_th(i,k,itr) 3903 3902 ENDDO 3904 3903 ENDDO … … 3906 3905 DO k=1,klev 3907 3906 DO i=1,klon 3908 d_tr_th_o(i,k,it )=tmp_var(i,k) &3909 /RNAVO*masse(it )*1.e3*1.e6*zdz(i,k)/pdtphys3907 d_tr_th_o(i,k,itr)=tmp_var(i,k) & 3908 /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 3910 3909 ENDDO 3911 3910 ENDDO … … 3914 3913 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3915 3914 3916 DO it =1,nbtr3917 WRITE(str2,'(i2.2)') it 3915 DO itr=1,nbtr 3916 WRITE(str2,'(i2.2)') itr 3918 3917 DO i=1, klon 3919 his_dh(i,it )= his_dhlsc(i,it)+his_dhcon(i,it)+ &3920 his_dhbclsc(i,it )+his_dhbccon(i,it)3918 his_dh(i,itr)= his_dhlsc(i,itr)+his_dhcon(i,itr)+ & 3919 his_dhbclsc(i,itr)+his_dhbccon(i,itr) 3921 3920 3922 3921 ENDDO -
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/splaeropt_5wv_rrtm.F90
r2753 r4368 9 9 USE DIMPHY 10 10 USE aero_mod 11 USE infotrac_phy 11 USE infotrac_phy, ONLY: nqtot, nbtr, tracers 12 12 USE phys_local_var_mod, ONLY: od550aer,od865aer,ec550aer,od550lt1aer 13 13 ! … … 34 34 LOGICAL :: soluble 35 35 36 INTEGER :: i, k, m, i tr, irh, aerindex36 INTEGER :: i, k, m, iq, itr, irh, aerindex 37 37 INTEGER :: spsol, spinsol, la 38 38 INTEGER :: RH_num(klon,klev) … … 112 112 ENDDO 113 113 114 DO itr=1,nbtr !--loop over tracers 115 116 IF (tname(itr+nqo)=='PREC') THEN !--fine mode accumulation mode 117 CYCLE 118 ELSE IF (tname(itr+nqo)=='FINE') THEN !--fine mode accumulation mode 119 soluble=.TRUE. 120 spsol=1 121 aerindex=1 122 ELSE IF (tname(itr+nqo)=='COSS') THEN !--coarse mode sea salt 123 soluble=.TRUE. 124 spsol=2 125 aerindex=2 126 ELSE IF (tname(itr+nqo)=='CODU') THEN !--coarse mode dust 127 soluble=.FALSE. 128 spinsol=1 129 aerindex=3 130 ELSE IF (tname(itr+nqo)=='SCDU') THEN !--super coarse mode dust 131 soluble=.FALSE. 132 spinsol=2 133 aerindex=4 134 ELSE 135 CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1) 136 ENDIF 114 itr = 0 115 DO iq = 1, nqtot 116 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 117 itr = itr+1 118 SELECT CASE(tracers(iq)%name) 119 CASE('PREC'); CYCLE !--precursor 120 CASE('FINE'); soluble=.TRUE.; spsol=1; aerindex=1 !--fine mode accumulation mode 121 CASE('COSS'); soluble=.TRUE.; spsol=2; aerindex=2 !--coarse mode sea salt 122 CASE('CODU'); soluble=.FALSE.; spinsol=1; aerindex=3 !--coarse mode dust 123 CASE('SCDU'); soluble=.FALSE.; spinsol=2; aerindex=4 !--super coarse mode dust 124 CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(iq)%name,1) 125 END SELECT 137 126 138 127 DO la=1,las -
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/splaeropt_6bands_rrtm.F90
r3798 r4368 8 8 USE dimphy 9 9 USE aero_mod 10 USE infotrac_phy 10 USE infotrac_phy, ONLY: nqtot, nbtr, tracers 11 11 USE phys_local_var_mod, ONLY: abs550aer 12 12 … … 35 35 ! 36 36 LOGICAL :: soluble 37 INTEGER :: i, k, irh, i tr, inu37 INTEGER :: i, k, irh, iq, itr, inu 38 38 INTEGER :: aerindex, spsol, spinsol 39 39 INTEGER :: RH_num(klon,klev) … … 165 165 cg_ae(:,:,:,:)=0. 166 166 167 DO itr=1, nbtr 168 169 IF (tname(itr+nqo)=='PREC') THEN !--precursor 170 CYCLE 171 ELSE IF (tname(itr+nqo)=='FINE') THEN !--fine mode accumulation mode 172 soluble=.TRUE. 173 spsol=1 174 aerindex=1 175 ELSE IF (tname(itr+nqo)=='COSS') THEN !--coarse mode sea salt 176 soluble=.TRUE. 177 spsol=2 178 aerindex=2 179 ELSE IF (tname(itr+nqo)=='CODU') THEN !--coarse mode dust 180 soluble=.FALSE. 181 spinsol=1 182 aerindex=3 183 ELSE IF (tname(itr+nqo)=='SCDU') THEN !--super coarse mode dust 184 soluble=.FALSE. 185 spinsol=2 186 aerindex=4 187 ELSE 188 CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1) 189 ENDIF 167 itr = 0 168 DO iq = 1, nqtot 169 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 170 itr = itr+1 171 SELECT CASE(tracers(iq)%name) 172 CASE('PREC'); CYCLE !--precursor 173 CASE('FINE'); soluble=.TRUE.; spsol=1; aerindex=1 !--fine mode accumulation mode 174 CASE('COSS'); soluble=.TRUE.; spsol=2; aerindex=2 !--coarse mode sea salt 175 CASE('CODU'); soluble=.FALSE.; spinsol=1; aerindex=3 !--coarse mode dust 176 CASE('SCDU'); soluble=.FALSE.; spinsol=2; aerindex=4 !--super coarse mode dust 177 CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(iq)%name,1) 178 END SELECT 190 179 191 180 IF (soluble) THEN ! For aerosol soluble components -
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/splaeropt_lw_rrtm.F90
r2753 r4368 10 10 USE dimphy 11 11 USE aero_mod 12 USE infotrac_phy 12 USE infotrac_phy, ONLY: nqtot, nbtr, tracers 13 13 USE phys_state_var_mod, ONLY : tau_aero_lw_rrtm 14 14 USE YOERAD, ONLY : NLW … … 30 30 INTEGER, PARAMETER :: naero=naero_soluble+naero_insoluble 31 31 ! 32 INTEGER inu, itr, spinsol32 INTEGER inu, itr, iq, spinsol 33 33 CHARACTER*20 modname 34 34 ! … … 54 54 tau_aero_lw_rrtm = 0.0 55 55 ! 56 DO itr=1,nbtr 57 ! 58 IF (tname(itr+nqo)=='PREC') THEN !--precursor 59 CYCLE 60 ELSE IF (tname(itr+nqo)=='FINE') THEN !--fine mode accumulation mode 61 CYCLE 62 ELSE IF (tname(itr+nqo)=='COSS') THEN !--coarse mode sea salt 63 CYCLE 64 ELSE IF (tname(itr+nqo)=='CODU') THEN !--coarse mode dust 65 spinsol=1 66 ELSE IF (tname(itr+nqo)=='SCDU') THEN !--super coarse mode dust 67 spinsol=2 68 ELSE 69 CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1) 70 ENDIF 56 57 itr = 0 58 DO iq = 1, nqtot 59 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 60 itr = itr+1 61 SELECT CASE(tracers(iq)%name) 62 CASE('PREC','FINE','COSS'); CYCLE !--precursor or fine/coarde accumulation mode 63 CASE('CODU'); spinsol=1 !--coarse mode dust 64 CASE('SCDU'); spinsol=2 !--super coarse mode dust 65 CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(iq)%name,1) 66 END SELECT 71 67 ! 72 68 DO inu=1,NLW -
LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/splaerosol_optic_rrtm.F90
r2753 r4368 13 13 USE dimphy 14 14 USE aero_mod 15 USE infotrac_phy 15 USE infotrac_phy, ONLY: nbtr, nqtot, tracers 16 16 USE YOMCST, ONLY: RD, RG 17 17 … … 40 40 REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(OUT) :: tau3d_aero 41 41 42 INTEGER i, k, i tr42 INTEGER i, k, iq, itr 43 43 REAL, DIMENSION(klon,klev) :: zdm, zdh 44 44 REAL zrho, pdel … … 50 50 mass_solu_aero_pi(:,:) = 0.0 51 51 ! 52 DO itr=1,nbtr 53 IF (tname(itr+nqo)=='FINE') THEN 52 itr = 0 53 DO iq = 1, nqtot 54 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 55 itr = itr+1 56 IF(tracers(iq)%name/='FINE') THEN 54 57 mass_solu_aero(:,:) = tr_seri(:,:,itr) 55 58 mass_solu_aero_pi(:,:) = tr_seri(:,:,itr)
Note: See TracChangeset
for help on using the changeset viewer.