Changeset 4171 for LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/physiq_mod.F90
- Timestamp:
- Jun 17, 2022, 4:24:49 PM (2 years ago)
- Location:
- LMDZ6/branches/LMDZ-ECRAD
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ-ECRAD
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/physiq_mod.F90
r3880 r4171 34 34 USE FLOTT_GWD_rando_m, only: FLOTT_GWD_rando 35 35 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 36 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg 36 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg, longitude,latitude, & 37 boundslon,boundslat, dx, dy, ind_cell_glo 37 38 USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, & 38 39 histwrite, ju2ymds, ymds2ju, getin 39 40 USE ioipsl_getin_p_mod, ONLY : getin_p 40 41 USE indice_sol_mod 41 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, type_trac 42 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, types_trac, nqCO2 43 USE readTracFiles_mod, ONLY: addPhase 44 USE strings_mod, ONLY: strIdx 42 45 USE iophy 43 46 USE limit_read_mod, ONLY : init_limit_read … … 53 56 USE phystokenc_mod, ONLY: offline, phystokenc 54 57 USE phys_cal_mod, only: year_len, mth_len, days_elapsed, jh_1jan, & 55 year_cur, mth_cur,jD_cur, jH_cur, jD_ref, day_cur, hour 58 year_cur, mth_cur,jD_cur, jH_cur, jD_ref, day_cur, hour, calend 56 59 !! USE phys_local_var_mod, ONLY : a long list of variables 57 60 !! ==> see below, after "CPP Keys" section … … 59 62 USE phys_output_mod 60 63 USE phys_output_ctrlout_mod 61 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level 64 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level, & 65 alert_first_call, call_alert, prt_alerte 62 66 USE readaerosol_mod, ONLY : init_aero_fromfile 63 67 USE readaerosolstrato_m, ONLY : init_readaerosolstrato … … 67 71 USE surface_data, ONLY : type_ocean, ok_veget, landice_opt 68 72 USE time_phylmdz_mod, only: annee_ref, current_time, day_ini, day_ref, & 69 day_step_phy, itau_phy, pdtphys, raz_date, start_time, update_time 73 day_step_phy, itau_phy, pdtphys, raz_date, start_time, update_time, ndays 70 74 USE tracinca_mod, ONLY: config_inca 71 75 USE tropopause_m, ONLY: dyn_tropopause 76 USE ice_sursat_mod, ONLY: flight_init, airplane 72 77 USE vampir 73 78 USE VERTICAL_LAYERS_MOD, ONLY: aps,bps, ap, bp 74 79 USE write_field_phy 80 USE lscp_mod, ONLY : lscp 81 USE wake_ini_mod, ONLY : wake_ini 82 USE thermcell_ini_mod, ONLY : thermcell_ini 75 83 76 84 !USE cmp_seri_mod … … 123 131 ! [Variables internes non sauvegardees de la physique] 124 132 ! Variables locales pour effectuer les appels en serie 125 t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,tr_seri, &133 t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,tr_seri,rneb_seri, & 126 134 ! Dynamic tendencies (diagnostics) 127 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn, &135 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn,d_rneb_dyn, & 128 136 d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d, & 129 137 ! Physic tendencies … … 144 152 ! 145 153 d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_t_diss, & 154 d_t_vdf_x, d_t_vdf_w, & 155 d_q_vdf_x, d_q_vdf_w, & 146 156 d_ts, & 147 157 ! … … 197 207 cdragm, cdragh, & 198 208 zustar, zu10m, zv10m, rh2m, qsat2m, & 199 zq2m, zt2m, weak_inversion, & 200 zq2m_cor,zt2m_cor,zu10m_cor,zv10m_cor, & ! pour corriger d'un bug 201 zrh2m_cor,zqsat2m_cor, & 209 zq2m, zt2m, zn2mout, weak_inversion, & 202 210 zt2m_min_mon, zt2m_max_mon, & ! pour calcul_divers.h 203 211 t2m_min_mon, t2m_max_mon, & ! pour calcul_divers.h … … 212 220 zxrunofflic, & 213 221 zxtsol, snow_lsc, zxfqfonte, zxqsurf, & 222 delta_qsurf, & 214 223 rain_lsc, rain_num, & 215 224 ! … … 217 226 zxfluxlat_x, zxfluxlat_w, & 218 227 ! 219 d_t_vdf_x, d_t_vdf_w, & 220 d_q_vdf_x, d_q_vdf_w, & 221 pbl_tke_input, & 228 pbl_tke_input, tke_dissip, l_mix, wprime,& 222 229 t_therm, q_therm, u_therm, v_therm, & 223 230 cdragh_x, cdragh_w, & … … 246 253 alp_bl_stat, n2, s2, & 247 254 proba_notrig, random_notrig, & 248 cv_gen, & 255 !! cv_gen, & !moved to phys_state_var_mod 249 256 ! 250 257 dnwd0, & … … 350 357 include "dimsoil.h" 351 358 include "clesphys.h" 352 include " thermcell.h"359 include "alpale.h" 353 360 include "dimpft.h" 354 361 !====================================================================== 355 362 LOGICAL, SAVE :: ok_volcan ! pour activer les diagnostics volcaniques 356 363 !$OMP THREADPRIVATE(ok_volcan) 364 INTEGER, SAVE :: flag_volc_surfstrat ! pour imposer le cool/heat rate à la surf/strato 365 !$OMP THREADPRIVATE(flag_volc_surfstrat) 357 366 LOGICAL ok_cvl ! pour activer le nouveau driver pour convection KE 358 367 PARAMETER (ok_cvl=.TRUE.) … … 435 444 !====================================================================== 436 445 ! 437 INTEGER ivap ! indice de traceurs pour vapeur d'eau 438 PARAMETER (ivap=1) 439 INTEGER iliq ! indice de traceurs pour eau liquide 440 PARAMETER (iliq=2) 441 !CR: on ajoute la phase glace 442 INTEGER isol ! indice de traceurs pour eau glace 443 PARAMETER (isol=3) 446 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional) 447 INTEGER,SAVE :: ivap, iliq, isol, irneb 448 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb) 444 449 ! 445 450 ! … … 616 621 ! gust-front in the grid cell. 617 622 !$OMP THREADPRIVATE(iflag_alp_wk_cond) 618 619 INTEGER, SAVE :: iflag_bug_t2m_ipslcm61=1 !620 !$OMP THREADPRIVATE(iflag_bug_t2m_ipslcm61)621 INTEGER, SAVE :: iflag_bug_t2m_stab_ipslcm61=-1 !622 !$OMP THREADPRIVATE(iflag_bug_t2m_stab_ipslcm61)623 623 624 624 REAL t_w(klon,klev),q_w(klon,klev) ! temperature and moisture profiles in the wake region … … 856 856 real zqsat(klon,klev) 857 857 ! 858 INTEGER i, k, iq, j, nsrf, ll, l 858 INTEGER i, k, iq, j, nsrf, ll, l, itr 859 859 ! 860 860 REAL t_coup … … 963 963 !IM cf. AM 081204 BEG 964 964 LOGICAL ptconvth(klon,klev) 965 966 REAL picefra(klon,klev) 965 967 !IM cf. AM 081204 END 966 968 ! … … 1034 1036 !JLD REAL zstophy, zout 1035 1037 1036 CHARACTER *20 modname1038 CHARACTER (LEN=20) :: modname='physiq_mod' 1037 1039 CHARACTER*80 abort_message 1038 1040 LOGICAL, SAVE :: ok_sync, ok_sync_omp … … 1186 1188 integer iostat 1187 1189 1190 REAL, dimension(klon,klev+1) :: tke_dissip_ave, l_mix_ave, wprime_ave 1188 1191 REAL zzz 1189 1192 !albedo SB >>> … … 1200 1203 pi = 4. * ATAN(1.) 1201 1204 1205 ! set-up call to alerte function 1206 call_alert = (alert_first_call .AND. is_master) 1207 1202 1208 ! Ehouarn: set value of jjmp1 since it is no longer a "fixed parameter" 1203 1209 jjmp1=nbp_lat … … 1244 1250 1245 1251 IF (first) THEN 1252 ivap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 1253 iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 1254 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1255 irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r')) 1246 1256 CALL init_etat0_limit_unstruct 1247 1257 IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) … … 1261 1271 fact_cldcon, facttemps,ok_newmicro,iflag_radia, & 1262 1272 iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, & 1263 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, & 1264 chemistry_couple, & 1265 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 1273 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, flag_volc_surfstrat, aerosol_couple, & 1274 chemistry_couple, flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 1266 1275 flag_bc_internal_mixture, bl95_b0, bl95_b1, & 1267 1276 ! nv flags pour la convection et les … … 1278 1287 #endif 1279 1288 1289 !!CALL flight_init 1290 1280 1291 print*, '=================================================' 1281 1292 ! … … 1283 1294 IF ((iflag_ice_thermo.gt.0).and.(nqo==2)) THEN 1284 1295 WRITE (lunout, *) ' iflag_ice_thermo==1 requires 3 H2O tracers ', & 1285 '(H2Ov, H2Ol, H2Oi) but nqo=', nqo, '. Might as well stop here.' 1296 '(H2O_g, H2O_l, H2O_s) but nqo=', nqo, '. Might as well stop here.' 1297 abort_message='see above' 1298 CALL abort_physic(modname,abort_message,1) 1299 ENDIF 1300 1301 IF (ok_ice_sursat.AND.(iflag_ice_thermo.EQ.0)) THEN 1302 WRITE (lunout, *) ' ok_ice_sursat=y requires iflag_ice_thermo=1 as well' 1303 abort_message='see above' 1304 CALL abort_physic(modname,abort_message,1) 1305 ENDIF 1306 1307 IF (ok_ice_sursat.AND.(nqo.NE.4)) THEN 1308 WRITE (lunout, *) ' ok_ice_sursat=y requires 4 H2O tracers ', & 1309 '(H2O_g, H2O_l, H2O_s, H2O_r) but nqo=', nqo, '. Might as well stop here.' 1310 abort_message='see above' 1311 CALL abort_physic(modname,abort_message,1) 1312 ENDIF 1313 1314 IF (ok_plane_h2o.AND..NOT.ok_ice_sursat) THEN 1315 WRITE (lunout, *) ' ok_plane_h2o=y requires ok_ice_sursat=y ' 1316 abort_message='see above' 1317 CALL abort_physic(modname,abort_message,1) 1318 ENDIF 1319 1320 IF (ok_plane_contrail.AND..NOT.ok_ice_sursat) THEN 1321 WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_sursat=y ' 1286 1322 abort_message='see above' 1287 1323 CALL abort_physic(modname,abort_message,1) … … 1317 1353 forall (k=1: nbp_lev) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1318 1354 1319 modname = 'physiq'1320 1355 1321 1356 IF (debut) THEN … … 1328 1363 tau_gl=86400.*tau_gl 1329 1364 WRITE(lunout,*) 'debut physiq_mod tau_gl=',tau_gl 1330 1331 iflag_bug_t2m_ipslcm61 = 11332 CALL getin_p('iflag_bug_t2m_ipslcm61', iflag_bug_t2m_ipslcm61)1333 iflag_bug_t2m_stab_ipslcm61 = -11334 CALL getin_p('iflag_bug_t2m_stab_ipslcm61', iflag_bug_t2m_stab_ipslcm61)1335 1365 1336 1366 CALL getin_p('iflag_alp_wk_cond', iflag_alp_wk_cond) … … 1366 1396 iflag_phytrac = 1 1367 1397 ENDIF 1368 #endif 1398 #endif 1369 1399 nvm_lmdz = 13 1370 1400 CALL getin_p('NVM',nvm_lmdz) … … 1424 1454 tau_overturning_th(:)=0. 1425 1455 1426 IF ( type_trac == 'inca') THEN1456 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 1427 1457 ! jg : initialisation jusqu'au ces variables sont dans restart 1428 1458 ccm(:,:,:) = 0. … … 1535 1565 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1536 1566 CALL init_iophy_new(latitude_deg,longitude_deg) 1537 CALL create_etat0_limit_unstruct1538 CALL phyetat0 ("startphy.nc",clesphy0,tabcntr0)1539 1567 1540 1568 !=================================================================== … … 1699 1727 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1700 1728 ! Nouvelle initialisation pour le rayonnement RRTM 1701 !1702 1729 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1703 1730 1704 1731 CALL iniradia(klon,klev,paprs(1,1:klev+1)) 1705 1732 1706 ! Initialisation des champs dans phytrac* qui sont utilisés par phys_output_write* 1733 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1734 CALL wake_ini(rg,rd,rv,prt_level) 1735 CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, & 1736 & RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1737 1738 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1739 1740 ! 1741 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1742 ! Initialisation des champs dans phytrac* qui sont utilises par phys_output_write* 1743 ! 1744 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1745 1707 1746 #ifdef CPP_Dust 1708 1747 ! Quand on utilise SPLA, on force iflag_phytrac=1 … … 1733 1772 #endif 1734 1773 IF(read_climoz>=1 .AND. create_etat0_limit) CALL regr_horiz_time_climoz(read_climoz,ok_daily_climoz) 1774 CALL create_etat0_limit_unstruct 1775 CALL phyetat0 ("startphy.nc",clesphy0,tabcntr0) 1735 1776 1736 1777 !jyg< … … 1747 1788 ENDDO 1748 1789 ENDDO 1749 1790 ELSE 1750 1791 pbl_tke(:,:,is_ave) = 0. !ym missing init : maybe must be initialized in the same way that for klon_glo==1 ?? 1751 1792 !>jyg … … 1791 1832 CALL abort_physic(modname,abort_message,1) 1792 1833 ENDIF 1834 1835 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1836 ! Initialisation pour la convection de K.E. et pour les poches froides 1837 ! 1838 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1839 1793 1840 WRITE(lunout,*)"Clef pour la convection, iflag_con=", iflag_con 1794 WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", & 1795 ok_cvl 1841 WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", ok_cvl 1796 1842 ! 1797 1843 !KE43 … … 1840 1886 d_s_wk(:) = 0. 1841 1887 d_dens_wk(:) = 0. 1842 ENDIF 1888 ENDIF ! (iflag_wake>=1) 1843 1889 1844 1890 ! do i = 1,klon … … 1851 1897 ! ALLOCATE(lonGCM(0), latGCM(0)) 1852 1898 ! ALLOCATE(iGCM(0), jGCM(0)) 1853 ENDIF 1854 1899 ENDIF ! (iflag_con.GE.3) 1900 ! 1855 1901 DO i=1,klon 1856 1902 rugoro(i) = f_rugoro * MAX(1.0e-05, zstd(i)*zsig(i)/2.0) … … 1921 1967 !$OMP BARRIER 1922 1968 missing_val=missing_val_omp 1969 ! 1970 ! Now we activate some double radiation call flags only if some 1971 ! diagnostics are requested, otherwise there is no point in doing this 1972 IF (is_master) THEN 1973 !--setting up swaero_diag to TRUE in XIOS case 1974 IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. & 1975 xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. & 1976 xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR. & 1977 (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. & 1978 xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0")))) & 1979 !!!--for now these fields are not in the XML files so they are omitted 1980 !!! xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) & 1981 swaero_diag=.TRUE. 1982 1983 !--setting up swaerofree_diag to TRUE in XIOS case 1984 IF (xios_field_is_active("SWdnSFCcleanclr").OR.xios_field_is_active("SWupSFCcleanclr").OR. & 1985 xios_field_is_active("SWupTOAcleanclr").OR.xios_field_is_active("rsucsaf").OR. & 1986 xios_field_is_active("rsdcsaf") .OR. xios_field_is_active("LWdnSFCcleanclr").OR. & 1987 xios_field_is_active("LWupTOAcleanclr")) & 1988 swaerofree_diag=.TRUE. 1989 1990 !--setting up dryaod_diag to TRUE in XIOS case 1991 DO naero = 1, naero_tot-1 1992 IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE. 1993 ENDDO 1994 ! 1995 !--setting up ok_4xCO2atm to TRUE in XIOS case 1996 IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. & 1997 xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. & 1998 xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. & 1999 xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. & 2000 xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. & 2001 xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) & 2002 ok_4xCO2atm=.TRUE. 2003 ENDIF 2004 !$OMP BARRIER 2005 CALL bcast(swaero_diag) 2006 CALL bcast(swaerofree_diag) 2007 CALL bcast(dryaod_diag) 2008 CALL bcast(ok_4xCO2atm) 1923 2009 #endif 1924 1925 2010 ! 1926 2011 CALL printflag( tabcntr0,radpas,ok_journe, & 1927 2012 ok_instan, ok_region ) 1928 2013 ! 1929 2014 ! 1930 !1931 2015 ! Prescrire l'ozone dans l'atmosphere 1932 !1933 2016 ! 1934 2017 !c DO i = 1, klon … … 1938 2021 !c ENDDO 1939 2022 ! 1940 IF ( type_trac == 'inca') THEN2023 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 1941 2024 #ifdef INCA 1942 2025 CALL VTe(VTphysiq) … … 1945 2028 WRITE(lunout,*) 'initial time chemini', days_elapsed, calday 1946 2029 1947 CALL chemini( & 1948 rg, & 1949 ra, & 1950 cell_area, & 2030 call init_const_lmdz( & 2031 ndays, nbsrf, is_oce,is_sic, is_ter,is_lic, calend, & 2032 config_inca) 2033 2034 CALL init_inca_geometry( & 2035 longitude, latitude, & 2036 boundslon, boundslat, & 2037 dx, dy, cell_area, ind_cell_glo) 2038 2039 2040 CALL chemini( pplay, & 2041 nbp_lon, nbp_lat, & 1951 2042 latitude_deg, & 1952 2043 longitude_deg, & … … 1955 2046 klon, & 1956 2047 nqtot, & 1957 nqo , &2048 nqo+nqCO2, & 1958 2049 pdtphys, & 1959 2050 annee_ref, & … … 1986 2077 #endif 1987 2078 ENDIF 1988 IF (type_trac == 'repr') THEN 2079 ! 2080 IF (ANY(types_trac == 'repr')) THEN 1989 2081 #ifdef REPROBUS 1990 2082 CALL chemini_rep( & … … 2034 2126 SFRWL(6)=3.02191470E-02 2035 2127 END SELECT 2036 2037 2038 2128 !albedo SB <<< 2039 2129 … … 2074 2164 2075 2165 2166 2076 2167 ENDIF 2077 2168 ! … … 2100 2191 2101 2192 ! Update time and other variables in Reprobus 2102 IF ( type_trac == 'repr') THEN2193 IF (ANY(types_trac == 'repr')) THEN 2103 2194 #ifdef REPROBUS 2104 2195 CALL Init_chem_rep_xjour(jD_cur-jD_ref+day_ref) … … 2158 2249 ! RomP <<< 2159 2250 ENDIF 2160 2161 2251 ! 2162 2252 ! Ne pas affecter les valeurs entrees de u, v, h, et q … … 2170 2260 ql_seri(i,k) = qx(i,k,iliq) 2171 2261 !CR: ATTENTION, on rajoute la variable glace 2172 IF (nqo. eq.2) THEN2262 IF (nqo.EQ.2) THEN !--vapour and liquid only 2173 2263 qs_seri(i,k) = 0. 2174 ELSE IF (nqo.eq.3) THEN 2264 rneb_seri(i,k) = 0. 2265 ELSE IF (nqo.EQ.3) THEN !--vapour, liquid and ice 2175 2266 qs_seri(i,k) = qx(i,k,isol) 2267 rneb_seri(i,k) = 0. 2268 ELSE IF (nqo.EQ.4) THEN !--vapour, liquid, ice and rneb 2269 qs_seri(i,k) = qx(i,k,isol) 2270 rneb_seri(i,k) = qx(i,k,irneb) 2176 2271 ENDIF 2177 2272 ENDDO … … 2189 2284 2190 2285 tke0(:,:)=pbl_tke(:,:,is_ave) 2191 !CR:Nombre de traceurs de l'eau: nqo 2192 ! IF (nqtot.GE.3) THEN 2193 IF (nqtot.GE.(nqo+1)) THEN 2194 ! DO iq = 3, nqtot 2195 DO iq = nqo+1, nqtot 2286 IF (nqtot > nqo) THEN 2287 ! water isotopes are not included in tr_seri 2288 itr = 0 2289 DO iq = 1, nqtot 2290 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2291 itr = itr+1 2196 2292 DO k = 1, klev 2197 2293 DO i = 1, klon 2198 ! tr_seri(i,k,iq-2) = qx(i,k,iq) 2199 tr_seri(i,k,iq-nqo) = qx(i,k,iq) 2294 tr_seri(i,k,itr) = qx(i,k,iq) 2200 2295 ENDDO 2201 2296 ENDDO 2202 2297 ENDDO 2203 2298 ELSE 2204 DO k = 1, klev 2205 DO i = 1, klon 2206 tr_seri(i,k,1) = 0.0 2207 ENDDO 2208 ENDDO 2299 ! DC: make sure the final "1" index was meant for 1st H2O phase (vapor) !!! 2300 tr_seri(:,:,strIdx(tracers(:)%name,addPhase('H2O','g'))) = 0.0 2209 2301 ENDIF 2210 2302 ! … … 2213 2305 IF (debut) THEN 2214 2306 WRITE(lunout,*)' WARNING: tr_ancien initialised to tr_seri' 2215 DO iq = nqo+1, nqtot 2216 tr_ancien(:,:,iq-nqo)=tr_seri(:,:,iq-nqo) 2217 ENDDO 2307 itr = 0 2308 do iq = 1, nqtot 2309 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2310 itr = itr+1 2311 tr_ancien(:,:,itr)=tr_seri(:,:,itr) 2312 enddo 2218 2313 ENDIF 2219 2314 ! … … 2246 2341 d_qs_dyn2d(:)=(zx_tmp_fi2d(:)-prsw_ancien(:))/phys_tstep 2247 2342 ! !! RomP >>> td dyn traceur 2248 IF (nqtot.GT.nqo) THEN ! jyg 2249 DO iq = nqo+1, nqtot ! jyg 2250 d_tr_dyn(:,:,iq-nqo)=(tr_seri(:,:,iq-nqo)-tr_ancien(:,:,iq-nqo))/phys_tstep ! jyg 2251 ENDDO 2252 ENDIF 2343 IF (nqtot > nqo) d_tr_dyn(:,:,:)=(tr_seri(:,:,:)-tr_ancien(:,:,:))/phys_tstep 2253 2344 ! !! RomP <<< 2345 !!d_rneb_dyn(:,:)=(rneb_seri(:,:)-rneb_ancien(:,:))/phys_tstep 2346 d_rneb_dyn(:,:)=0.0 2254 2347 ELSE 2255 2348 d_u_dyn(:,:) = 0.0 … … 2263 2356 d_qs_dyn2d(:) = 0.0 2264 2357 ! !! RomP >>> td dyn traceur 2265 IF (nqtot.GT.nqo) THEN ! jyg 2266 DO iq = nqo+1, nqtot ! jyg 2267 d_tr_dyn(:,:,iq-nqo)= 0.0 ! jyg 2268 ENDDO 2269 ENDIF 2358 IF (nqtot > nqo) d_tr_dyn(:,:,:)= 0.0 2270 2359 ! !! RomP <<< 2360 d_rneb_dyn(:,:)=0.0 2271 2361 ancien_ok = .TRUE. 2272 2362 ENDIF … … 2497 2587 ! s_therm, s_trmb1, s_trmb2, s_trmb3, 2498 2588 ! zu10m, zv10m, fder, 2499 ! zxqsurf, rh2m, zxfluxu, zxfluxv, 2589 ! zxqsurf, delta_qsurf, 2590 ! rh2m, zxfluxu, zxfluxv, 2500 2591 ! frugs, agesno, fsollw, fsolsw, 2501 2592 ! d_ts, fevap, fluxlat, t2m, … … 2547 2638 debut, lafin, & 2548 2639 longitude_deg, latitude_deg, rugoro, zrmu0, & 2549 zsig, sollwdown, pphi, cldt, &2640 sollwdown, cldt, & 2550 2641 rain_fall, snow_fall, solsw, solswfdiff, sollw, & 2551 2642 gustiness, & … … 2558 2649 !albedo SB <<< 2559 2650 cdragh, cdragm, u1, v1, & 2651 beta_aridity, & 2560 2652 !albedo SB >>> 2561 2653 ! albsol1, albsol2, sens, evap, & … … 2563 2655 !albedo SB <<< 2564 2656 albsol3_lic,runoff, snowhgt, qsnow, to_ice, sissnow, & 2565 zxtsol, zxfluxlat, zt2m, qsat2m, &2657 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 2566 2658 d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_t_diss, & 2567 2659 !nrlmd< … … 2584 2676 s_therm, s_trmb1, s_trmb2, s_trmb3, & 2585 2677 zustar, zu10m, zv10m, fder, & 2586 zxqsurf, rh2m, zxfluxu, zxfluxv, &2678 zxqsurf, delta_qsurf, rh2m, zxfluxu, zxfluxv, & 2587 2679 z0m, z0h, agesno, fsollw, fsolsw, & 2588 2680 d_ts, fevap, fluxlat, t2m, & … … 2610 2702 !>jyg 2611 2703 ENDIF 2612 2613 !add limitation for t,q at and wind at 10m2614 if ( iflag_bug_t2m_ipslcm61 == 0 ) THEN2615 CALL borne_var_surf( klon,klev,nbsrf, &2616 iflag_bug_t2m_stab_ipslcm61, &2617 t_seri(:,1),q_seri(:,1),u_seri(:,1),v_seri(:,1), &2618 ftsol,zxqsurf,pctsrf,paprs, &2619 t2m, q2m, u10m, v10m, &2620 zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor, &2621 zrh2m_cor, zqsat2m_cor)2622 ELSE2623 zt2m_cor(:)=zt2m(:)2624 zq2m_cor(:)=zq2m(:)2625 zu10m_cor(:)=zu10m(:)2626 zv10m_cor(:)=zv10m(:)2627 zqsat2m_cor=999.9992628 ENDIF2629 2704 2630 2705 !--------------------------------------------------------------------- … … 2831 2906 ENDDO 2832 2907 ELSE 2833 t_w(:,:) = t_seri(:,:)2908 t_w(:,:) = t_seri(:,:) 2834 2909 q_w(:,:) = q_seri(:,:) 2835 2910 t_x(:,:) = t_seri(:,:) … … 2907 2982 ! 2908 2983 !>jyg 2909 IF ( type_trac == 'repr') THEN2984 IF (ANY(types_trac == 'repr')) THEN 2910 2985 nbtr_tmp=ntra 2911 2986 ELSE … … 3047 3122 3048 3123 DO i = 1, klon 3049 ema_pcb(i) = paprs(i,ibas_con(i)) 3124 ! C Risi modif: pour éviter pb de dépassement d'indice dans les cas 3125 ! où i n'est pas un point convectif et donc ibas_con(i)=0 3126 ! c'est un pb indépendant des isotopes 3127 if (ibas_con(i) > 0) then 3128 ema_pcb(i) = paprs(i,ibas_con(i)) 3129 else 3130 ema_pcb(i) = 0.0 3131 endif 3050 3132 ENDDO 3051 3133 DO i = 1, klon … … 3473 3555 ! Computation of ratqs, the width (normalized) of the subrid scale 3474 3556 ! water distribution 3557 3558 tke_dissip_ave(:,:)=0. 3559 l_mix_ave(:,:)=0. 3560 wprime_ave(:,:)=0. 3561 3562 DO nsrf = 1, nbsrf 3563 DO i = 1, klon 3564 tke_dissip_ave(i,:) = tke_dissip_ave(i,:) + tke_dissip(i,:,nsrf)*pctsrf(i,nsrf) 3565 l_mix_ave(i,:) = l_mix_ave(i,:) + l_mix(i,:,nsrf)*pctsrf(i,nsrf) 3566 wprime_ave(i,:) = wprime_ave(i,:) + wprime(i,:,nsrf)*pctsrf(i,nsrf) 3567 ENDDO 3568 ENDDO 3569 3475 3570 CALL calcratqs(klon,klev,prt_level,lunout, & 3476 3571 iflag_ratqs,iflag_con,iflag_cld_th,pdtphys, & 3477 3572 ratqsbas,ratqshaut,ratqsp0, ratqsdp, & 3478 tau_ratqs,fact_cldcon, &3573 tau_ratqs,fact_cldcon,wake_s, wake_deltaq, & 3479 3574 ptconv,ptconvth,clwcon0th, rnebcon0th, & 3480 paprs,pplay, q_seri,zqsat,fm_therm, &3481 ratqs,ratqsc)3482 3575 paprs,pplay,t_seri,q_seri, qtc_cv, sigt_cv, zqsat, & 3576 pbl_tke(:,:,is_ave),tke_dissip_ave,l_mix_ave,wprime_ave,t2m,q2m,fm_therm, & 3577 ratqs,ratqsc,ratqs_inter) 3483 3578 3484 3579 ! … … 3490 3585 ENDIF 3491 3586 ! 3587 3588 picefra(:,:)=0. 3589 3590 IF (ok_new_lscp) THEN 3591 3592 !--mise à jour de flight_m et flight_h2o dans leur module 3593 IF (ok_plane_h2o .OR. ok_plane_contrail) THEN 3594 CALL airplane(debut,pphis,pplay,paprs,t_seri) 3595 ENDIF 3596 3597 CALL lscp(phys_tstep,missing_val,paprs,pplay, & 3598 t_seri, q_seri,ptconv,ratqs, & 3599 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneb_seri, & 3600 cldliq, picefra, rain_lsc, snow_lsc, & 3601 pfrac_impa, pfrac_nucl, pfrac_1nucl, & 3602 frac_impa, frac_nucl, beta_prec_fisrt, & 3603 prfl, psfl, rhcl, & 3604 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3605 iflag_ice_thermo, ok_ice_sursat) 3606 3607 ELSE 3608 3492 3609 CALL fisrtilp(phys_tstep,paprs,pplay, & 3493 3610 t_seri, q_seri,ptconv,ratqs, & … … 3499 3616 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3500 3617 iflag_ice_thermo) 3618 3619 ENDIF 3501 3620 ! 3502 3621 WHERE (rain_lsc < 0) rain_lsc = 0. … … 3521 3640 ENDDO 3522 3641 ENDDO 3523 IF (nqo ==3) THEN3642 IF (nqo >= 3) THEN 3524 3643 DO k = 1, klev 3525 3644 DO i = 1, klon … … 3768 3887 ENDDO 3769 3888 3770 IF ( type_trac == 'inca') THEN3889 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 3771 3890 #ifdef INCA 3772 3891 CALL VTe(VTphysiq) … … 3811 3930 nbp_lon, & 3812 3931 nbp_lat-1, & 3813 tr_seri , &3932 tr_seri(:,:,1+nqCO2:nbtr), & 3814 3933 ftsol, & 3815 3934 paprs, & … … 3822 3941 CALL VTe(VTinca) 3823 3942 CALL VTb(VTphysiq) 3824 #endif 3825 ENDIF !type_trac = inca 3826 IF ( type_trac == 'repr') THEN3943 #endif 3944 ENDIF !type_trac = inca or inco 3945 IF (ANY(types_trac == 'repr')) THEN 3827 3946 #ifdef REPROBUS 3828 3947 !CALL chemtime_rep(itap+itau_phy-1, date0, dtime, itap) … … 3994 4113 3995 4114 IF (ok_newmicro) then 3996 ! IF (iflag_rrtm.NE.0) THEN4115 ! AI IF (iflag_rrtm.NE.0) THEN 3997 4116 IF (iflag_rrtm.EQ.1) THEN 3998 4117 #ifdef CPP_RRTM … … 4009 4128 ENDIF 4010 4129 CALL newmicro (flag_aerosol, ok_cdnc, bl95_b0, bl95_b1, & 4011 paprs, pplay, t_seri, cldliq, cldfra, &4130 paprs, pplay, t_seri, cldliq, picefra, cldfra, & 4012 4131 cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, & 4013 4132 flwp, fiwp, flwc, fiwc, & 4014 4133 mass_solu_aero, mass_solu_aero_pi, & 4015 cldtaupi, re, fl, ref_liq, ref_ice, &4134 cldtaupi, latitude_deg, re, fl, ref_liq, ref_ice, & 4016 4135 ref_liq_pi, ref_ice_pi) 4017 4136 ELSE 4018 4137 CALL nuage (paprs, pplay, & 4019 t_seri, cldliq, cldfra, cldtau, cldemi, &4138 t_seri, cldliq, picefra, cldfra, cldtau, cldemi, & 4020 4139 cldh, cldl, cldm, cldt, cldq, & 4021 4140 ok_aie, & … … 4169 4288 t_seri,q_seri,wo, & 4170 4289 cldfrarad, cldemirad, cldtaurad, & 4171 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 4172 flag_aerosol, & 4173 flag_aerosol_strat, flag_aer_feedback, & 4290 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, & 4291 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 4174 4292 tau_aero, piz_aero, cg_aero, & 4175 4293 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 4256 4374 t_seri,q_seri,wo, & 4257 4375 cldfrarad, cldemirad, cldtaurad, & 4258 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 4259 flag_aerosol, & 4260 flag_aerosol_strat, flag_aer_feedback, & 4376 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, & 4377 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 4261 4378 tau_aero, piz_aero, cg_aero, & 4262 4379 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 4287 4404 ZLWFT0_i, ZFLDN0, ZFLUP0, & 4288 4405 ZSWFT0_i, ZFSDN0, ZFSUP0) 4289 endif!ok_4xCO2atm4406 ENDIF !ok_4xCO2atm 4290 4407 ENDIF ! aerosol_couple 4291 4408 itaprad = 0 … … 4668 4785 4669 4786 CALL tend_to_tke(pdtphys,paprs,exner,t_seri,u_seri,v_seri,dtadd,duadd,dvadd,pctsrf,pbl_tke) 4670 4787 ! 4788 ! Prevent pbl_tke_w from becoming negative 4789 wake_delta_pbl_tke(:,:,:) = max(wake_delta_pbl_tke(:,:,:), -pbl_tke(:,:,:)) 4790 ! 4671 4791 4672 4792 ENDIF … … 4800 4920 ! 4801 4921 4802 IF ( type_trac=='repr') THEN4922 IF (ANY(types_trac=='repr')) THEN 4803 4923 !MM pas d'impact, car on recupere q_seri,tr_seri,t_seri via phys_local_var_mod 4804 4924 !MM dans Reprobus … … 4811 4931 ELSE 4812 4932 sh_in(:,:) = qx(:,:,ivap) 4813 ch_in(:,:) = qx(:,:,iliq) 4933 IF (nqo >= 3) THEN 4934 ch_in(:,:) = qx(:,:,iliq) + qx(:,:,isol) 4935 ELSE 4936 ch_in(:,:) = qx(:,:,iliq) 4937 ENDIF 4814 4938 ENDIF 4815 4939 … … 4950 5074 ENDDO 4951 5075 ! 4952 IF ( type_trac == 'inca') THEN5076 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 4953 5077 #ifdef INCA 4954 5078 CALL VTe(VTphysiq) … … 4959 5083 pplay, & 4960 5084 t_seri, & 4961 tr_seri , &5085 tr_seri(:,:,1+nqCO2:nbtr), & 4962 5086 nbtr, & 4963 5087 paprs, & … … 4967 5091 pphis, & 4968 5092 zx_rh, & 4969 aps, bps, ap, bp )5093 aps, bps, ap, bp, lafin) 4970 5094 4971 5095 CALL VTe(VTinca) … … 4974 5098 ENDIF 4975 5099 5100 IF (ANY(types_trac == 'repr')) THEN 5101 #ifdef REPROBUS 5102 CALL coord_hyb_rep(paprs, pplay, aps, bps, ap, bp, cell_area) 5103 #endif 5104 ENDIF 4976 5105 4977 5106 ! … … 4997 5126 d_qx(i,k,iliq) = ( ql_seri(i,k) - qx(i,k,iliq) ) / phys_tstep 4998 5127 !CR: on ajoute le contenu en glace 4999 IF (nqo .eq.3) THEN5128 IF (nqo >= 3) THEN 5000 5129 d_qx(i,k,isol) = ( qs_seri(i,k) - qx(i,k,isol) ) / phys_tstep 5130 ENDIF 5131 !--ice_sursat: nqo=4, on ajoute rneb 5132 IF (nqo == 4) THEN 5133 d_qx(i,k,irneb) = ( rneb_seri(i,k) - qx(i,k,irneb) ) / phys_tstep 5001 5134 ENDIF 5002 5135 ENDDO 5003 5136 ENDDO 5004 5137 ! 5005 !CR: nb de traceurs eau: nqo5006 ! IF (nqtot.GE.3) THEN5007 IF (nqtot.GE.(nqo+1)) THEN5008 ! DO iq = 3, nqtot5009 DO iq = nqo+1, nqtot5138 IF (nqtot > nqo) THEN 5139 itr = 0 5140 DO iq = 1, nqtot 5141 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 5142 itr = itr+1 5010 5143 DO k = 1, klev 5011 5144 DO i = 1, klon 5012 ! d_qx(i,k,iq) = ( tr_seri(i,k,iq-2) - qx(i,k,iq) ) / phys_tstep 5013 d_qx(i,k,iq) = ( tr_seri(i,k,iq-nqo) - qx(i,k,iq) ) / phys_tstep 5145 d_qx(i,k,iq) = ( tr_seri(i,k,itr) - qx(i,k,iq) ) / phys_tstep 5014 5146 ENDDO 5015 5147 ENDDO … … 5048 5180 ql_ancien(:,:) = ql_seri(:,:) 5049 5181 qs_ancien(:,:) = qs_seri(:,:) 5182 rneb_ancien(:,:) = rneb_seri(:,:) 5050 5183 CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien) 5051 5184 CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien) 5052 5185 CALL water_int(klon,klev,qs_ancien,zmasse,prsw_ancien) 5053 5186 ! !! RomP >>> 5054 !CR: nb de traceurs eau: nqo 5055 IF (nqtot.GT.nqo) THEN 5056 DO iq = nqo+1, nqtot 5057 tr_ancien(:,:,iq-nqo) = tr_seri(:,:,iq-nqo) 5058 ENDDO 5059 ENDIF 5187 IF (nqtot > nqo) tr_ancien(:,:,:) = tr_seri(:,:,:) 5060 5188 ! !! RomP <<< 5061 5189 !========================================================================== … … 5192 5320 #endif 5193 5321 5194 ! Pour XIOS : On remet des variables a .false. apres un premier appel5195 IF (debut) THEN5196 #ifdef CPP_XIOS5197 swaero_diag=.FALSE.5198 swaerofree_diag=.FALSE.5199 dryaod_diag=.FALSE.5200 ok_4xCO2atm= .FALSE.5201 ! write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm5202 5203 IF (is_master) THEN5204 !--setting up swaero_diag to TRUE in XIOS case5205 IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. &5206 xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. &5207 xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR. &5208 (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. &5209 xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0")))) &5210 !!!--for now these fields are not in the XML files so they are omitted5211 !!! xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) &5212 swaero_diag=.TRUE.5213 5214 !--setting up swaerofree_diag to TRUE in XIOS case5215 IF (xios_field_is_active("SWdnSFCcleanclr").OR.xios_field_is_active("SWupSFCcleanclr").OR. &5216 xios_field_is_active("SWupTOAcleanclr").OR.xios_field_is_active("rsucsaf").OR. &5217 xios_field_is_active("rsdcsaf") .OR. xios_field_is_active("LWdnSFCcleanclr").OR. &5218 xios_field_is_active("LWupTOAcleanclr")) &5219 swaerofree_diag=.TRUE.5220 5221 !--setting up dryaod_diag to TRUE in XIOS case5222 DO naero = 1, naero_tot-15223 IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE.5224 ENDDO5225 !5226 !--setting up ok_4xCO2atm to TRUE in XIOS case5227 IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. &5228 xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. &5229 xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. &5230 xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. &5231 xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. &5232 xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) &5233 ok_4xCO2atm=.TRUE.5234 ENDIF5235 !$OMP BARRIER5236 CALL bcast(swaero_diag)5237 CALL bcast(swaerofree_diag)5238 CALL bcast(dryaod_diag)5239 CALL bcast(ok_4xCO2atm)5240 ! write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm5241 #endif5242 ENDIF5243 5244 5322 !==================================================================== 5245 5323 ! Arret du modele apres hgardfou en cas de detection d'un … … 5259 5337 ! 5260 5338 5339 ! Disabling calls to the prt_alerte function 5340 alert_first_call = .FALSE. 5341 5261 5342 IF (lafin) THEN 5262 5343 itau_phy = itau_phy + itap … … 5277 5358 #ifdef CPP_XIOS 5278 5359 IF (is_omp_master) CALL xios_context_finalize 5360 5361 #ifdef INCA 5362 if (ANY(types_trac == 'inca' )) then 5363 IF (is_omp_master .and. grid_type==unstructured) THEN 5364 CALL finalize_inca 5365 ENDIF 5366 endif 5367 #endif 5368 5279 5369 #endif 5280 5370 WRITE(lunout,*) ' physiq fin, nombre de steps ou cvpas = 1 : ', Ncvpaseq1
Note: See TracChangeset
for help on using the changeset viewer.