Changeset 6296 for CONFIG/UNIFORM/v7/IPSLCM7/SOURCES/LMDZ
- Timestamp:
- 12/22/22 16:17:21 (19 months ago)
- Location:
- CONFIG/UNIFORM/v7/IPSLCM7/SOURCES/LMDZ
- Files:
-
- 2 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
CONFIG/UNIFORM/v7/IPSLCM7/SOURCES/LMDZ/oasis.F90
r5479 r6296 24 24 USE mod_prism_get_proto 25 25 USE mod_prism_put_proto 26 #endif 27 #ifdef CPP_CPLOCNINCA 28 USE incaoasis, ONLY : inforcv 26 29 #endif 27 30 #endif … … 59 62 INTEGER, PARAMETER :: ids_qraiic = 28 60 63 INTEGER, PARAMETER :: ids_qsnoic = 29 61 INTEGER, PARAMETER :: maxsend = 29 ! Maximum number of fields to send 64 INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31 65 66 INTEGER, PARAMETER :: maxsend = 31 ! Maximum number of fields to send 62 67 63 68 ! Id for fields received from ocean 69 64 70 INTEGER, PARAMETER :: idr_sisutw = 1 65 71 INTEGER, PARAMETER :: idr_icecov = 2 … … 70 76 INTEGER, PARAMETER :: idr_curenz = 7 71 77 INTEGER, PARAMETER :: idr_oceco2 = 8 72 INTEGER, PARAMETER :: maxrecv = 8 ! Maximum number of fields to receive 73 78 79 INTEGER, PARAMETER :: idr_sss = 9 80 ! bulk salinity of the surface layer of the ocean, in ppt 81 82 INTEGER, PARAMETER :: maxrecv = 9 ! Maximum number of fields to receive 83 84 #ifdef CPP_CPLOCNINCA 85 INTEGER, PARAMETER :: idr_ocedms = 1 86 INTEGER, PARAMETER :: maxrcv = 1 87 #endif 74 88 75 89 TYPE, PUBLIC :: FLD_CPL ! Type for coupling field information … … 110 124 USE geometry_mod, ONLY: ind_cell_glo 111 125 USE mod_phys_lmdz_mpi_data, ONLY: klon_mpi_para_nb 112 113 126 use config_ocean_skin_m, only: activate_ocean_skin 114 127 115 128 ! Local variables … … 127 140 CHARACTER (len = 80) :: abort_message 128 141 LOGICAL, SAVE :: cpl_current_omp 129 INTEGER, DIMENSION(klon_mpi) 142 INTEGER, DIMENSION(klon_mpi) :: ind_cell_glo_mpi 130 143 131 144 !* 1. Initializations … … 164 177 165 178 !************************************************************************************ 166 ! Gather global index to be used for oasis decomposition 179 ! Gather global index to be used for oasis decomposition 167 180 !************************************************************************************ 168 181 CALL gather_omp(ind_cell_glo,ind_cell_glo_mpi) … … 189 202 infosend(ids_calvin)%action = .TRUE. ; infosend(ids_calvin)%name = 'COCALVIN' 190 203 204 if (activate_ocean_skin == 2) then 205 infosend(ids_delta_sst)%action = .TRUE. 206 infosend(ids_delta_sst)%name = 'CODELSST' 207 infosend(ids_delta_sal)%action = .TRUE. 208 infosend(ids_delta_sal)%name = 'CODELSSS' 209 end if 210 191 211 IF (version_ocean=='nemo') THEN 192 212 infosend(ids_shftot)%action = .TRUE. ; infosend(ids_shftot)%name = 'COQSRMIX' … … 225 245 inforecv(idr_icealw)%action = .TRUE. ; inforecv(idr_icealw)%name = 'SIICEALW' 226 246 inforecv(idr_icetem)%action = .TRUE. ; inforecv(idr_icetem)%name = 'SIICTEMW' 247 248 if (activate_ocean_skin >= 1) then 249 inforecv(idr_sss)%action = .TRUE. 250 inforecv(idr_sss)%name = 'SISUSALW' 251 end if 227 252 228 253 IF (cpl_current ) THEN … … 235 260 inforecv(idr_oceco2)%action = .TRUE. ; inforecv(idr_oceco2)%name = 'SICO2FLX' 236 261 ENDIF 262 #ifdef CPP_CPLOCNINCA 263 inforcv(idr_ocedms)%action = .TRUE. ; inforcv(idr_ocedms)%name = 'SIDMSFLX' 264 #endif 237 265 238 266 !************************************************************************************ … … 319 347 ENDIF 320 348 END DO 321 349 350 ! Now, if also coupling CPL with INCA, initialize here fields to be exchanged. 351 #ifdef CPP_CPLOCNINCA 352 DO jf=1,maxrcv 353 IF (inforcv(jf)%action) THEN 354 CALL prism_def_var_proto(inforcv(jf)%nid, inforcv(jf)%name, il_part_id, & 355 il_var_nodims, PRISM_In, il_var_actual_shape, il_var_type, & 356 ierror) 357 IF (ierror .NE. PRISM_Ok) THEN 358 WRITE(lunout,*) 'inicma : Problem with prism_def_var_proto for field : ',& 359 inforcv(jf)%name 360 abort_message=' Problem in call to prism_def_var_proto for fields to receive' 361 CALL abort_physic(modname,abort_message,1) 362 ENDIF 363 ENDIF 364 END DO 365 #endif 366 322 367 !************************************************************************************ 323 368 ! Atmospheric Fields to send -
CONFIG/UNIFORM/v7/IPSLCM7/SOURCES/LMDZ/physiq_mod.F90
r5484 r6296 1 1 ! 2 ! $Id: physiq_mod.F90 3666 2020-04-20 10:13:34Z lfalletti$2 ! $Id: physiq_mod.F90 4298 2022-10-17 08:15:06Z pcadule $ 3 3 ! 4 4 !#define IO_DEBUG … … 16 16 d_u, d_v, d_t, d_qx, d_ps) 17 17 18 ! For clarity, the "USE" section is now arranged in alphabetical order, 19 ! with a separate section for CPP keys 20 ! PLEASE try to follow this rule 21 22 USE ACAMA_GWD_rando_m, only: ACAMA_GWD_rando 23 USE aero_mod 24 USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, & 25 & fl_ebil, fl_cor_ebil 18 26 USE assert_m, only: assert 27 USE change_srf_frac_mod 28 USE conf_phys_m, only: conf_phys 29 USE carbon_cycle_mod, ONLY : infocfields_init, RCO2_glo, carbon_cycle_rad 30 USE CFMIP_point_locations ! IM stations CFMIP 31 USE cmp_seri_mod 32 USE dimphy 33 USE etat0_limit_unstruct_mod 34 USE FLOTT_GWD_rando_m, only: FLOTT_GWD_rando 35 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 36 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg, longitude,latitude, & 37 boundslon,boundslat, dx, dy, ind_cell_glo 19 38 USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, & 20 39 histwrite, ju2ymds, ymds2ju, getin 21 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg 40 USE ioipsl_getin_p_mod, ONLY : getin_p 41 USE indice_sol_mod 42 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, types_trac, nqCO2 43 USE readTracFiles_mod, ONLY: addPhase 44 USE strings_mod, ONLY: strIdx 45 USE iophy 46 USE limit_read_mod, ONLY : init_limit_read 47 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev, klon_glo, grid1dTo2d_glo, grid_type, unstructured 48 USE mod_phys_lmdz_mpi_data, only: is_mpi_root 49 USE mod_phys_lmdz_para 50 USE netcdf95, only: nf95_close 51 USE netcdf, only: nf90_fill_real ! IM for NMC files 52 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 53 USE ozonecm_m, only: ozonecm ! ozone of J.-F. Royer 54 USE pbl_surface_mod, ONLY : pbl_surface 55 USE phyaqua_mod, only: zenang_an 56 USE phystokenc_mod, ONLY: offline, phystokenc 22 57 USE phys_cal_mod, only: year_len, mth_len, days_elapsed, jh_1jan, & 23 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 59 !! USE phys_local_var_mod, ONLY : a long list of variables 60 !! ==> see below, after "CPP Keys" section 61 USE phys_state_var_mod ! Variables sauvegardees de la physique 62 USE phys_output_mod 63 USE phys_output_ctrlout_mod 64 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level, & 65 alert_first_call, call_alert, prt_alerte 66 USE readaerosol_mod, ONLY : init_aero_fromfile 67 USE readaerosolstrato_m, ONLY : init_readaerosolstrato 68 USE radlwsw_m, only: radlwsw 69 USE regr_horiz_time_climoz_m, ONLY: regr_horiz_time_climoz 70 USE regr_pr_time_av_m, only: regr_pr_time_av 71 USE surface_data, ONLY : type_ocean, ok_veget, landice_opt 72 USE time_phylmdz_mod, only: annee_ref, current_time, day_ini, day_ref, & 73 day_step_phy, itau_phy, pdtphys, raz_date, start_time, update_time, ndays 74 USE tracinca_mod, ONLY: config_inca 75 USE tropopause_m, ONLY: dyn_tropopause 76 USE ice_sursat_mod, ONLY: flight_init, airplane 77 USE vampir 78 USE VERTICAL_LAYERS_MOD, ONLY: aps,bps, ap, bp 24 79 USE write_field_phy 25 USE dimphy 26 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, type_trac 27 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev, klon_glo, grid1dTo2d_glo, grid_type, unstructured 28 USE mod_phys_lmdz_para 29 USE iophy 30 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level 31 USE phystokenc_mod, ONLY: offline, phystokenc 32 USE time_phylmdz_mod, only: raz_date, day_step_phy, update_time,current_time 33 USE vampir 34 USE pbl_surface_mod, ONLY : pbl_surface 35 USE change_srf_frac_mod 36 USE surface_data, ONLY : type_ocean, ok_veget, ok_snow 37 USE tropopause_m, ONLY: dyn_tropopause 80 #ifdef CPP_XIOS 81 USE wxios, ONLY: g_ctx, wxios_set_context 82 #endif 83 USE lscp_mod, ONLY : lscp 84 USE wake_ini_mod, ONLY : wake_ini 85 USE thermcell_ini_mod, ONLY : thermcell_ini 86 87 !USE cmp_seri_mod 88 ! USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, & 89 ! & fl_ebil, fl_cor_ebil 90 91 !!!!!!!!!!!!!!!!!! "USE" section for CPP keys !!!!!!!!!!!!!!!!!!!!!!!! 92 ! 93 ! 38 94 #ifdef CPP_Dust 39 USE phytracr_spl_mod, ONLY: phytracr_spl 95 USE phytracr_spl_mod, ONLY: phytracr_spl, phytracr_spl_out_init 96 USE phys_output_write_spl_mod 97 #else 98 USE phytrac_mod, ONLY : phytrac_init, phytrac 99 USE phys_output_write_mod 40 100 #endif 101 102 103 #ifdef REPROBUS 104 USE CHEM_REP, ONLY : Init_chem_rep_xjour, & 105 d_q_rep,d_ql_rep,d_qi_rep,ptrop,ttrop, & 106 ztrop, gravit,itroprep, Z1,Z2,fac,B 107 #endif 108 109 110 #ifdef CPP_RRTM 111 USE YOERAD, ONLY : NRADLP 112 USE YOESW, ONLY : RSUN 113 #endif 114 115 41 116 #ifdef CPP_StratAer 42 117 USE strataer_mod, ONLY: strataer_init 43 118 #endif 44 USE phys_local_var_mod, ONLY: phys_local_var_init, phys_local_var_end, & 119 120 121 #ifdef CPP_XIOS 122 USE xios, ONLY: xios_update_calendar, xios_context_finalize 123 USE xios, ONLY: xios_get_field_attr, xios_field_is_active, xios_context 124 USE xios, ONLY: xios_set_current_context 125 USE wxios, ONLY: missing_val, missing_val_omp 126 #endif 127 #ifndef CPP_XIOS 128 USE paramLMDZ_phy_mod 129 #endif 130 ! 131 ! 132 !!!!!!!!!!!!!!!!!! END "USE" for CPP keys !!!!!!!!!!!!!!!!!!!!!! 133 134 USE phys_local_var_mod, ONLY: phys_local_var_init, phys_local_var_end, & 45 135 ! [Variables internes non sauvegardees de la physique] 46 136 ! Variables locales pour effectuer les appels en serie 47 t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,tr_seri, &137 t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,tr_seri,rneb_seri, & 48 138 ! Dynamic tendencies (diagnostics) 49 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn, &139 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn,d_rneb_dyn, & 50 140 d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d, & 51 141 ! Physic tendencies … … 66 156 ! 67 157 d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_t_diss, & 158 d_t_vdf_x, d_t_vdf_w, & 159 d_q_vdf_x, d_q_vdf_w, & 68 160 d_ts, & 69 161 ! … … 119 211 cdragm, cdragh, & 120 212 zustar, zu10m, zv10m, rh2m, qsat2m, & 121 zq2m, zt2m, weak_inversion, & 122 zq2m_cor,zt2m_cor,zu10m_cor,zv10m_cor, & ! pour corriger d'un bug 123 zrh2m_cor,zqsat2m_cor, & 213 zq2m, zt2m, zn2mout, weak_inversion, & 124 214 zt2m_min_mon, zt2m_max_mon, & ! pour calcul_divers.h 125 215 t2m_min_mon, t2m_max_mon, & ! pour calcul_divers.h … … 134 224 zxrunofflic, & 135 225 zxtsol, snow_lsc, zxfqfonte, zxqsurf, & 226 delta_qsurf, & 136 227 rain_lsc, rain_num, & 137 228 ! … … 139 230 zxfluxlat_x, zxfluxlat_w, & 140 231 ! 141 d_t_vdf_x, d_t_vdf_w, & 142 d_q_vdf_x, d_q_vdf_w, & 143 pbl_tke_input, & 232 pbl_tke_input, tke_dissip, l_mix, wprime,& 144 233 t_therm, q_therm, u_therm, v_therm, & 145 234 cdragh_x, cdragh_w, & … … 168 257 alp_bl_stat, n2, s2, & 169 258 proba_notrig, random_notrig, & 170 cv_gen, & 259 !! cv_gen, & !moved to phys_state_var_mod 171 260 ! 172 261 dnwd0, & … … 195 284 ref_liq, ref_ice, theta, & 196 285 ref_liq_pi, ref_ice_pi, & 197 zphi, zx_rh, &286 zphi, zx_rh, zx_rhl, zx_rhi, & 198 287 pmfd, pmfu, & 199 288 ! … … 216 305 zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic 217 306 ! 218 USE phys_state_var_mod ! Variables sauvegardees de la physique219 #ifdef CPP_Dust220 USE phys_output_write_spl_mod221 #else222 USE phys_output_var_mod ! Variables pour les ecritures des sorties223 #endif224 225 USE phys_output_write_mod226 USE fonte_neige_mod, ONLY : fonte_neige_get_vars227 USE phys_output_mod228 USE phys_output_ctrlout_mod229 USE open_climoz_m, only: open_climoz ! ozone climatology from a file230 USE regr_pr_time_av_m, only: regr_pr_time_av231 USE netcdf95, only: nf95_close232 !IM for NMC files233 USE netcdf, only: nf90_fill_real234 USE mod_phys_lmdz_mpi_data, only: is_mpi_root235 USE aero_mod236 USE ozonecm_m, only: ozonecm ! ozone of J.-F. Royer237 USE conf_phys_m, only: conf_phys238 USE radlwsw_m, only: radlwsw239 USE phyaqua_mod, only: zenang_an240 USE time_phylmdz_mod, only: day_step_phy, annee_ref, day_ref, itau_phy, &241 start_time, pdtphys, day_ini242 USE tracinca_mod, ONLY: config_inca243 #ifdef CPP_XIOS244 USE wxios, ONLY: missing_val, missing_val_omp245 USE xios, ONLY: xios_get_field_attr, xios_field_is_active246 #endif247 #ifdef REPROBUS248 USE CHEM_REP, ONLY : Init_chem_rep_xjour, &249 d_q_rep,d_ql_rep,d_qi_rep,ptrop,ttrop, &250 ztrop, gravit,itroprep, Z1,Z2,fac,B251 #endif252 USE indice_sol_mod253 USE phytrac_mod, ONLY : phytrac_init, phytrac254 USE carbon_cycle_mod, ONLY : infocfields_init, RCO2_glo, carbon_cycle_rad255 256 #ifdef CPP_RRTM257 USE YOERAD, ONLY : NRADLP258 USE YOESW, ONLY : RSUN259 #endif260 USE ioipsl_getin_p_mod, ONLY : getin_p261 262 #ifndef CPP_XIOS263 USE paramLMDZ_phy_mod264 #endif265 266 USE cmp_seri_mod267 USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, &268 & fl_ebil, fl_cor_ebil269 270 !IM stations CFMIP271 USE CFMIP_point_locations272 USE FLOTT_GWD_rando_m, only: FLOTT_GWD_rando273 USE ACAMA_GWD_rando_m, only: ACAMA_GWD_rando274 USE VERTICAL_LAYERS_MOD, ONLY: aps,bps, ap, bp275 USE etat0_limit_unstruct_mod276 #ifdef CPP_XIOS277 USE xios, ONLY: xios_update_calendar, xios_context_finalize278 #endif279 USE limit_read_mod, ONLY : init_limit_read280 USE regr_horiz_time_climoz_m, ONLY: regr_horiz_time_climoz281 USE readaerosol_mod, ONLY : init_aero_fromfile282 USE readaerosolstrato_m, ONLY : init_readaerosolstrato283 307 284 308 IMPLICIT NONE … … 336 360 include "dimsoil.h" 337 361 include "clesphys.h" 338 include " thermcell.h"362 include "alpale.h" 339 363 include "dimpft.h" 340 364 !====================================================================== 341 365 LOGICAL, SAVE :: ok_volcan ! pour activer les diagnostics volcaniques 342 366 !$OMP THREADPRIVATE(ok_volcan) 367 INTEGER, SAVE :: flag_volc_surfstrat ! pour imposer le cool/heat rate à la surf/strato 368 !$OMP THREADPRIVATE(flag_volc_surfstrat) 343 369 LOGICAL ok_cvl ! pour activer le nouveau driver pour convection KE 344 370 PARAMETER (ok_cvl=.TRUE.) … … 421 447 !====================================================================== 422 448 ! 423 INTEGER ivap ! indice de traceurs pour vapeur d'eau 424 PARAMETER (ivap=1) 425 INTEGER iliq ! indice de traceurs pour eau liquide 426 PARAMETER (iliq=2) 427 !CR: on ajoute la phase glace 428 INTEGER isol ! indice de traceurs pour eau glace 429 PARAMETER (isol=3) 449 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional) 450 INTEGER,SAVE :: ivap, iliq, isol, irneb 451 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb) 430 452 ! 431 453 ! … … 469 491 REAL dtadd(klon,klev) 470 492 493 !#ifdef CPP_XIOS 494 ! TYPE(xios_context), SAVE :: g_ctx 495 !#endif 496 471 497 #ifndef CPP_XIOS 472 498 REAL, SAVE :: missing_val=nf90_fill_real … … 602 628 ! gust-front in the grid cell. 603 629 !$OMP THREADPRIVATE(iflag_alp_wk_cond) 604 605 INTEGER, SAVE :: iflag_bug_t2m_ipslcm61=1 !606 !$OMP THREADPRIVATE(iflag_bug_t2m_ipslcm61)607 INTEGER, SAVE :: iflag_bug_t2m_stab_ipslcm61=-1 !608 !$OMP THREADPRIVATE(iflag_bug_t2m_stab_ipslcm61)609 630 610 631 REAL t_w(klon,klev),q_w(klon,klev) ! temperature and moisture profiles in the wake region … … 842 863 real zqsat(klon,klev) 843 864 ! 844 INTEGER i, k, iq, j, nsrf, ll, l 865 INTEGER i, k, iq, j, nsrf, ll, l, itr 845 866 ! 846 867 REAL t_coup … … 949 970 !IM cf. AM 081204 BEG 950 971 LOGICAL ptconvth(klon,klev) 972 973 REAL picefra(klon,klev) 951 974 !IM cf. AM 081204 END 952 975 ! … … 1020 1043 !JLD REAL zstophy, zout 1021 1044 1022 CHARACTER *20 modname1045 CHARACTER (LEN=20) :: modname='physiq_mod' 1023 1046 CHARACTER*80 abort_message 1024 1047 LOGICAL, SAVE :: ok_sync, ok_sync_omp … … 1172 1195 integer iostat 1173 1196 1197 REAL, dimension(klon,klev+1) :: tke_dissip_ave, l_mix_ave, wprime_ave 1174 1198 REAL zzz 1175 1199 !albedo SB >>> … … 1186 1210 pi = 4. * ATAN(1.) 1187 1211 1212 ! set-up call to alerte function 1213 call_alert = (alert_first_call .AND. is_master) 1214 1188 1215 ! Ehouarn: set value of jjmp1 since it is no longer a "fixed parameter" 1189 1216 jjmp1=nbp_lat … … 1196 1223 phys_tstep=NINT(pdtphys) 1197 1224 #ifdef CPP_XIOS 1198 IF (.NOT. debut .AND. is_omp_master) CALL xios_update_calendar(itap+1) 1225 ! switch to XIOS LMDZ physics context 1226 !!!!$OMP MASTER 1227 !!!! WRITE(*,*)'PHYSICS XIOS Context :', g_ctx 1228 !!!! CALL wxios_set_context() 1229 !!!!$OMP END MASTER 1230 IF (.NOT. debut .AND. is_omp_master) THEN 1231 CALL wxios_set_context() 1232 CALL xios_update_calendar(itap+1) 1233 ENDIF 1199 1234 #endif 1200 1235 … … 1230 1265 1231 1266 IF (first) THEN 1267 ivap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 1268 iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 1269 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1270 irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r')) 1271 ! CALL init_etat0_limit_unstruct 1272 ! IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) 1232 1273 !CR:nvelles variables convection/poches froides 1233 1274 … … 1245 1286 fact_cldcon, facttemps,ok_newmicro,iflag_radia, & 1246 1287 iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, & 1247 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, & 1248 chemistry_couple, & 1249 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 1288 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, flag_volc_surfstrat, aerosol_couple, & 1289 chemistry_couple, flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 1250 1290 flag_bc_internal_mixture, bl95_b0, bl95_b1, & 1251 1291 ! nv flags pour la convection et les … … 1264 1304 #endif 1265 1305 1306 !!CALL flight_init 1307 1266 1308 print*, '=================================================' 1267 1309 ! … … 1269 1311 IF ((iflag_ice_thermo.gt.0).and.(nqo==2)) THEN 1270 1312 WRITE (lunout, *) ' iflag_ice_thermo==1 requires 3 H2O tracers ', & 1271 '(H2Ov, H2Ol, H2Oi) but nqo=', nqo, '. Might as well stop here.' 1313 '(H2O_g, H2O_l, H2O_s) but nqo=', nqo, '. Might as well stop here.' 1314 abort_message='see above' 1315 CALL abort_physic(modname,abort_message,1) 1316 ENDIF 1317 1318 IF (ok_ice_sursat.AND.(iflag_ice_thermo.EQ.0)) THEN 1319 WRITE (lunout, *) ' ok_ice_sursat=y requires iflag_ice_thermo=1 as well' 1320 abort_message='see above' 1321 CALL abort_physic(modname,abort_message,1) 1322 ENDIF 1323 1324 IF (ok_ice_sursat.AND.(nqo.NE.4)) THEN 1325 WRITE (lunout, *) ' ok_ice_sursat=y requires 4 H2O tracers ', & 1326 '(H2O_g, H2O_l, H2O_s, H2O_r) but nqo=', nqo, '. Might as well stop here.' 1327 abort_message='see above' 1328 CALL abort_physic(modname,abort_message,1) 1329 ENDIF 1330 1331 IF (ok_plane_h2o.AND..NOT.ok_ice_sursat) THEN 1332 WRITE (lunout, *) ' ok_plane_h2o=y requires ok_ice_sursat=y ' 1333 abort_message='see above' 1334 CALL abort_physic(modname,abort_message,1) 1335 ENDIF 1336 1337 IF (ok_plane_contrail.AND..NOT.ok_ice_sursat) THEN 1338 WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_sursat=y ' 1272 1339 abort_message='see above' 1273 1340 CALL abort_physic(modname,abort_message,1) … … 1303 1370 forall (k=1: nbp_lev) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1304 1371 1305 modname = 'physiq'1306 1372 1307 1373 IF (debut) THEN … … 1314 1380 tau_gl=86400.*tau_gl 1315 1381 WRITE(lunout,*) 'debut physiq_mod tau_gl=',tau_gl 1316 1317 iflag_bug_t2m_ipslcm61 = 11318 CALL getin_p('iflag_bug_t2m_ipslcm61', iflag_bug_t2m_ipslcm61)1319 iflag_bug_t2m_stab_ipslcm61 = -11320 CALL getin_p('iflag_bug_t2m_stab_ipslcm61', iflag_bug_t2m_stab_ipslcm61)1321 1382 1322 1383 CALL getin_p('iflag_alp_wk_cond', iflag_alp_wk_cond) … … 1347 1408 iflag_phytrac = 1 ! by default we do want to call phytrac 1348 1409 CALL getin_p('iflag_phytrac',iflag_phytrac) 1410 #ifdef CPP_Dust 1411 IF (iflag_phytrac.EQ.0) THEN 1412 WRITE(lunout,*) 'In order to run with SPLA, iflag_phytrac will be forced to 1' 1413 iflag_phytrac = 1 1414 ENDIF 1415 #endif 1349 1416 nvm_lmdz = 13 1350 1417 CALL getin_p('NVM',nvm_lmdz) … … 1404 1471 tau_overturning_th(:)=0. 1405 1472 1406 IF ( type_trac == 'inca') THEN1473 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 1407 1474 ! jg : initialisation jusqu'au ces variables sont dans restart 1408 1475 ccm(:,:,:) = 0. … … 1609 1676 #ifdef CPP_COSP 1610 1677 IF (ok_cosp) THEN 1611 DO k = 1, klev1612 DO i = 1, klon1613 phicosp(i,k) = pphi(i,k) + pphis(i)1614 ENDDO1615 ENDDO1678 ! DO k = 1, klev 1679 ! DO i = 1, klon 1680 ! phicosp(i,k) = pphi(i,k) + pphis(i) 1681 ! ENDDO 1682 ! ENDDO 1616 1683 CALL phys_cosp(itap,phys_tstep,freq_cosp, & 1617 1684 ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP, & … … 1631 1698 #ifdef CPP_COSP2 1632 1699 IF (ok_cosp) THEN 1633 DO k = 1, klev1634 DO i = 1, klon1635 phicosp(i,k) = pphi(i,k) + pphis(i)1636 ENDDO1637 ENDDO1700 ! DO k = 1, klev 1701 ! DO i = 1, klon 1702 ! phicosp(i,k) = pphi(i,k) + pphis(i) 1703 ! ENDDO 1704 ! ENDDO 1638 1705 CALL phys_cosp2(itap,phys_tstep,freq_cosp, & 1639 1706 ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP, & … … 1677 1744 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1678 1745 ! Nouvelle initialisation pour le rayonnement RRTM 1679 !1680 1746 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1681 1747 1682 1748 CALL iniradia(klon,klev,paprs(1,1:klev+1)) 1683 ! Initialisation des champs dans phytrac qui sont utilisés par phys_output_write 1749 1750 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1751 CALL wake_ini(rg,rd,rv,prt_level) 1752 CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, & 1753 & RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1754 1755 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1756 1757 ! 1758 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1759 ! Initialisation des champs dans phytrac* qui sont utilises par phys_output_write* 1760 ! 1761 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1762 1763 #ifdef CPP_Dust 1764 ! Quand on utilise SPLA, on force iflag_phytrac=1 1765 CALL phytracr_spl_out_init() 1766 CALL phys_output_write_spl(itap, pdtphys, paprs, pphis, & 1767 pplay, lmax_th, aerosol_couple, & 1768 ok_ade, ok_aie, ivap, ok_sync, & 1769 ptconv, read_climoz, clevSTD, & 1770 ptconvth, d_t, qx, d_qx, d_tr_dyn, zmasse, & 1771 flag_aerosol, flag_aerosol_strat, ok_cdnc) 1772 #else 1773 ! phys_output_write écrit des variables traceurs seulement si iflag_phytrac == 1 1774 ! donc seulement dans ce cas on doit appeler phytrac_init() 1684 1775 IF (iflag_phytrac == 1 ) THEN 1685 1776 CALL phytrac_init() 1686 ENDIF 1687 1777 ENDIF 1688 1778 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 1689 1779 pplay, lmax_th, aerosol_couple, & … … 1692 1782 ptconvth, d_u, d_t, qx, d_qx, zmasse, & 1693 1783 flag_aerosol, flag_aerosol_strat, ok_cdnc) 1784 #endif 1785 1694 1786 1695 1787 #ifdef CPP_XIOS … … 1713 1805 ENDDO 1714 1806 ENDDO 1715 1807 ELSE 1716 1808 pbl_tke(:,:,is_ave) = 0. !ym missing init : maybe must be initialized in the same way that for klon_glo==1 ?? 1717 1809 !>jyg … … 1757 1849 CALL abort_physic(modname,abort_message,1) 1758 1850 ENDIF 1851 1852 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1853 ! Initialisation pour la convection de K.E. et pour les poches froides 1854 ! 1855 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1856 1759 1857 WRITE(lunout,*)"Clef pour la convection, iflag_con=", iflag_con 1760 WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", & 1761 ok_cvl 1858 WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", ok_cvl 1762 1859 ! 1763 1860 !KE43 … … 1806 1903 d_s_wk(:) = 0. 1807 1904 d_dens_wk(:) = 0. 1808 ENDIF 1905 ENDIF ! (iflag_wake>=1) 1809 1906 1810 1907 ! do i = 1,klon … … 1817 1914 ! ALLOCATE(lonGCM(0), latGCM(0)) 1818 1915 ! ALLOCATE(iGCM(0), jGCM(0)) 1819 ENDIF 1820 1916 ENDIF ! (iflag_con.GE.3) 1917 ! 1821 1918 DO i=1,klon 1822 1919 rugoro(i) = f_rugoro * MAX(1.0e-05, zstd(i)*zsig(i)/2.0) … … 1887 1984 !$OMP BARRIER 1888 1985 missing_val=missing_val_omp 1986 ! 1987 ! Now we activate some double radiation call flags only if some 1988 ! diagnostics are requested, otherwise there is no point in doing this 1989 IF (is_master) THEN 1990 !--setting up swaero_diag to TRUE in XIOS case 1991 IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. & 1992 xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. & 1993 xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR. & 1994 (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. & 1995 xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0")))) & 1996 !!!--for now these fields are not in the XML files so they are omitted 1997 !!! xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) & 1998 swaero_diag=.TRUE. 1999 2000 !--setting up swaerofree_diag to TRUE in XIOS case 2001 IF (xios_field_is_active("SWdnSFCcleanclr").OR.xios_field_is_active("SWupSFCcleanclr").OR. & 2002 xios_field_is_active("SWupTOAcleanclr").OR.xios_field_is_active("rsucsaf").OR. & 2003 xios_field_is_active("rsdcsaf") .OR. xios_field_is_active("LWdnSFCcleanclr").OR. & 2004 xios_field_is_active("LWupTOAcleanclr")) & 2005 swaerofree_diag=.TRUE. 2006 2007 !--setting up dryaod_diag to TRUE in XIOS case 2008 DO naero = 1, naero_tot-1 2009 IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE. 2010 ENDDO 2011 ! 2012 !--setting up ok_4xCO2atm to TRUE in XIOS case 2013 IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. & 2014 xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. & 2015 xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. & 2016 xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. & 2017 xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. & 2018 xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) & 2019 ok_4xCO2atm=.TRUE. 2020 ENDIF 2021 !$OMP BARRIER 2022 CALL bcast(swaero_diag) 2023 CALL bcast(swaerofree_diag) 2024 CALL bcast(dryaod_diag) 2025 CALL bcast(ok_4xCO2atm) 1889 2026 #endif 1890 1891 2027 ! 1892 2028 CALL printflag( tabcntr0,radpas,ok_journe, & 1893 2029 ok_instan, ok_region ) 1894 2030 ! 1895 2031 ! 1896 !1897 2032 ! Prescrire l'ozone dans l'atmosphere 1898 !1899 2033 ! 1900 2034 !c DO i = 1, klon … … 1904 2038 !c ENDDO 1905 2039 ! 1906 IF ( type_trac == 'inca') THEN2040 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 1907 2041 #ifdef INCA 1908 2042 CALL VTe(VTphysiq) … … 1911 2045 WRITE(lunout,*) 'initial time chemini', days_elapsed, calday 1912 2046 1913 CALL chemini( & 1914 rg, & 1915 ra, & 1916 cell_area, & 1917 latitude_deg, & 1918 longitude_deg, & 1919 presnivs, & 1920 calday, & 1921 klon, & 1922 nqtot, & 1923 nqo, & 1924 pdtphys, & 1925 annee_ref, & 1926 year_cur, & 1927 day_ref, & 1928 day_ini, & 1929 start_time, & 1930 itau_phy, & 1931 date0, & 1932 io_lon, & 1933 io_lat, & 1934 chemistry_couple, & 1935 init_source, & 1936 init_tauinca, & 1937 init_pizinca, & 1938 init_cginca, & 1939 init_ccminca) 2047 call init_const_lmdz( & 2048 ndays, nbsrf, is_oce,is_sic, is_ter,is_lic, calend, & 2049 config_inca) 2050 2051 CALL init_inca_geometry( & 2052 longitude, latitude, & 2053 boundslon, boundslat, & 2054 cell_area, ind_cell_glo) 2055 2056 if (grid_type==unstructured) THEN 2057 CALL chemini( pplay, & 2058 nbp_lon, nbp_lat, & 2059 latitude_deg, & 2060 longitude_deg, & 2061 presnivs, & 2062 calday, & 2063 klon, & 2064 nqtot, & 2065 nqo+nqCO2, & 2066 pdtphys, & 2067 annee_ref, & 2068 year_cur, & 2069 day_ref, & 2070 day_ini, & 2071 start_time, & 2072 itau_phy, & 2073 date0, & 2074 chemistry_couple, & 2075 init_source, & 2076 init_tauinca, & 2077 init_pizinca, & 2078 init_cginca, & 2079 init_ccminca) 2080 ELSE 2081 CALL chemini( pplay, & 2082 nbp_lon, nbp_lat, & 2083 latitude_deg, & 2084 longitude_deg, & 2085 presnivs, & 2086 calday, & 2087 klon, & 2088 nqtot, & 2089 nqo+nqCO2, & 2090 pdtphys, & 2091 annee_ref, & 2092 year_cur, & 2093 day_ref, & 2094 day_ini, & 2095 start_time, & 2096 itau_phy, & 2097 date0, & 2098 chemistry_couple, & 2099 init_source, & 2100 init_tauinca, & 2101 init_pizinca, & 2102 init_cginca, & 2103 init_ccminca, & 2104 io_lon, & 2105 io_lat) 2106 ENDIF 1940 2107 1941 2108 … … 1952 2119 #endif 1953 2120 ENDIF 1954 IF (type_trac == 'repr') THEN 2121 ! 2122 IF (ANY(types_trac == 'repr')) THEN 1955 2123 #ifdef REPROBUS 1956 2124 CALL chemini_rep( & … … 2000 2168 SFRWL(6)=3.02191470E-02 2001 2169 END SELECT 2002 2003 2004 2170 !albedo SB <<< 2005 2171 … … 2040 2206 2041 2207 2208 2042 2209 ENDIF 2043 2210 ! … … 2055 2222 ENDIF 2056 2223 ENDIF 2224 ! switch to XIOS LMDZ physics context just in case 2225 !$OMP MASTER 2226 !!!!#ifdef CPP_XIOS 2227 !!!! WRITE(*,*)'PHYSICS XIOS Context :', g_ctx 2228 !!!! CALL xios_set_current_context(g_ctx) 2229 !!!!#endif 2230 !$OMP END MASTER 2231 2057 2232 ! 2058 2233 ! … … 2066 2241 2067 2242 ! Update time and other variables in Reprobus 2068 IF ( type_trac == 'repr') THEN2243 IF (ANY(types_trac == 'repr')) THEN 2069 2244 #ifdef REPROBUS 2070 2245 CALL Init_chem_rep_xjour(jD_cur-jD_ref+day_ref) … … 2124 2299 ! RomP <<< 2125 2300 ENDIF 2126 2127 2301 ! 2128 2302 ! Ne pas affecter les valeurs entrees de u, v, h, et q … … 2136 2310 ql_seri(i,k) = qx(i,k,iliq) 2137 2311 !CR: ATTENTION, on rajoute la variable glace 2138 IF (nqo. eq.2) THEN2312 IF (nqo.EQ.2) THEN !--vapour and liquid only 2139 2313 qs_seri(i,k) = 0. 2140 ELSE IF (nqo.eq.3) THEN 2314 rneb_seri(i,k) = 0. 2315 ELSE IF (nqo.EQ.3) THEN !--vapour, liquid and ice 2141 2316 qs_seri(i,k) = qx(i,k,isol) 2317 rneb_seri(i,k) = 0. 2318 ELSE IF (nqo.EQ.4) THEN !--vapour, liquid, ice and rneb 2319 qs_seri(i,k) = qx(i,k,isol) 2320 rneb_seri(i,k) = qx(i,k,irneb) 2142 2321 ENDIF 2143 2322 ENDDO … … 2155 2334 2156 2335 tke0(:,:)=pbl_tke(:,:,is_ave) 2157 !CR:Nombre de traceurs de l'eau: nqo 2158 ! IF (nqtot.GE.3) THEN 2159 IF (nqtot.GE.(nqo+1)) THEN 2160 ! DO iq = 3, nqtot 2161 DO iq = nqo+1, nqtot 2336 IF (nqtot > nqo) THEN 2337 ! water isotopes are not included in tr_seri 2338 itr = 0 2339 DO iq = 1, nqtot 2340 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2341 itr = itr+1 2162 2342 DO k = 1, klev 2163 2343 DO i = 1, klon 2164 ! tr_seri(i,k,iq-2) = qx(i,k,iq) 2165 tr_seri(i,k,iq-nqo) = qx(i,k,iq) 2344 tr_seri(i,k,itr) = qx(i,k,iq) 2166 2345 ENDDO 2167 2346 ENDDO 2168 2347 ENDDO 2169 2348 ELSE 2170 DO k = 1, klev 2171 DO i = 1, klon 2172 tr_seri(i,k,1) = 0.0 2173 ENDDO 2174 ENDDO 2349 ! DC: make sure the final "1" index was meant for 1st H2O phase (vapor) !!! 2350 tr_seri(:,:,strIdx(tracers(:)%name,addPhase('H2O','g'))) = 0.0 2175 2351 ENDIF 2176 2352 ! … … 2179 2355 IF (debut) THEN 2180 2356 WRITE(lunout,*)' WARNING: tr_ancien initialised to tr_seri' 2181 DO iq = nqo+1, nqtot 2182 tr_ancien(:,:,iq-nqo)=tr_seri(:,:,iq-nqo) 2183 ENDDO 2357 itr = 0 2358 do iq = 1, nqtot 2359 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2360 itr = itr+1 2361 tr_ancien(:,:,itr)=tr_seri(:,:,itr) 2362 enddo 2184 2363 ENDIF 2185 2364 ! … … 2212 2391 d_qs_dyn2d(:)=(zx_tmp_fi2d(:)-prsw_ancien(:))/phys_tstep 2213 2392 ! !! RomP >>> td dyn traceur 2214 IF (nqtot.GT.nqo) THEN ! jyg 2215 DO iq = nqo+1, nqtot ! jyg 2216 d_tr_dyn(:,:,iq-nqo)=(tr_seri(:,:,iq-nqo)-tr_ancien(:,:,iq-nqo))/phys_tstep ! jyg 2217 ENDDO 2218 ENDIF 2393 IF (nqtot > nqo) d_tr_dyn(:,:,:)=(tr_seri(:,:,:)-tr_ancien(:,:,:))/phys_tstep 2219 2394 ! !! RomP <<< 2395 !!d_rneb_dyn(:,:)=(rneb_seri(:,:)-rneb_ancien(:,:))/phys_tstep 2396 d_rneb_dyn(:,:)=0.0 2220 2397 ELSE 2221 2398 d_u_dyn(:,:) = 0.0 … … 2229 2406 d_qs_dyn2d(:) = 0.0 2230 2407 ! !! RomP >>> td dyn traceur 2231 IF (nqtot.GT.nqo) THEN ! jyg 2232 DO iq = nqo+1, nqtot ! jyg 2233 d_tr_dyn(:,:,iq-nqo)= 0.0 ! jyg 2234 ENDDO 2235 ENDIF 2408 IF (nqtot > nqo) d_tr_dyn(:,:,:)= 0.0 2236 2409 ! !! RomP <<< 2410 d_rneb_dyn(:,:)=0.0 2237 2411 ancien_ok = .TRUE. 2238 2412 ENDIF … … 2463 2637 ! s_therm, s_trmb1, s_trmb2, s_trmb3, 2464 2638 ! zu10m, zv10m, fder, 2465 ! zxqsurf, rh2m, zxfluxu, zxfluxv, 2639 ! zxqsurf, delta_qsurf, 2640 ! rh2m, zxfluxu, zxfluxv, 2466 2641 ! frugs, agesno, fsollw, fsolsw, 2467 2642 ! d_ts, fevap, fluxlat, t2m, … … 2513 2688 debut, lafin, & 2514 2689 longitude_deg, latitude_deg, rugoro, zrmu0, & 2515 zsig, sollwdown, pphi, cldt, &2516 rain_fall, snow_fall, solsw, sol lw, &2690 sollwdown, cldt, & 2691 rain_fall, snow_fall, solsw, solswfdiff, sollw, & 2517 2692 gustiness, & 2518 2693 t_seri, q_seri, u_seri, v_seri, & … … 2524 2699 !albedo SB <<< 2525 2700 cdragh, cdragm, u1, v1, & 2701 beta_aridity, & 2526 2702 !albedo SB >>> 2527 2703 ! albsol1, albsol2, sens, evap, & … … 2529 2705 !albedo SB <<< 2530 2706 albsol3_lic,runoff, snowhgt, qsnow, to_ice, sissnow, & 2531 zxtsol, zxfluxlat, zt2m, qsat2m, &2707 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 2532 2708 d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_t_diss, & 2533 2709 !nrlmd< … … 2550 2726 s_therm, s_trmb1, s_trmb2, s_trmb3, & 2551 2727 zustar, zu10m, zv10m, fder, & 2552 zxqsurf, rh2m, zxfluxu, zxfluxv, &2728 zxqsurf, delta_qsurf, rh2m, zxfluxu, zxfluxv, & 2553 2729 z0m, z0h, agesno, fsollw, fsolsw, & 2554 2730 d_ts, fevap, fluxlat, t2m, & … … 2576 2752 !>jyg 2577 2753 ENDIF 2578 2579 !add limitation for t,q at and wind at 10m2580 if ( iflag_bug_t2m_ipslcm61 == 0 ) THEN2581 CALL borne_var_surf( klon,klev,nbsrf, &2582 iflag_bug_t2m_stab_ipslcm61, &2583 t_seri(:,1),q_seri(:,1),u_seri(:,1),v_seri(:,1), &2584 ftsol,zxqsurf,pctsrf,paprs, &2585 t2m, q2m, u10m, v10m, &2586 zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor, &2587 zrh2m_cor, zqsat2m_cor)2588 ELSE2589 zt2m_cor(:)=zt2m(:)2590 zq2m_cor(:)=zq2m(:)2591 zu10m_cor(:)=zu10m(:)2592 zv10m_cor(:)=zv10m(:)2593 zqsat2m_cor=999.9992594 ENDIF2595 2754 2596 2755 !--------------------------------------------------------------------- … … 2797 2956 ENDDO 2798 2957 ELSE 2799 t_w(:,:) = t_seri(:,:)2958 t_w(:,:) = t_seri(:,:) 2800 2959 q_w(:,:) = q_seri(:,:) 2801 2960 t_x(:,:) = t_seri(:,:) … … 2873 3032 ! 2874 3033 !>jyg 2875 IF ( type_trac == 'repr') THEN3034 IF (ANY(types_trac == 'repr')) THEN 2876 3035 nbtr_tmp=ntra 2877 3036 ELSE … … 3013 3172 3014 3173 DO i = 1, klon 3015 ema_pcb(i) = paprs(i,ibas_con(i)) 3174 ! C Risi modif: pour éviter pb de dépassement d'indice dans les cas 3175 ! où i n'est pas un point convectif et donc ibas_con(i)=0 3176 ! c'est un pb indépendant des isotopes 3177 if (ibas_con(i) > 0) then 3178 ema_pcb(i) = paprs(i,ibas_con(i)) 3179 else 3180 ema_pcb(i) = 0.0 3181 endif 3016 3182 ENDDO 3017 3183 DO i = 1, klon … … 3439 3605 ! Computation of ratqs, the width (normalized) of the subrid scale 3440 3606 ! water distribution 3607 3608 tke_dissip_ave(:,:)=0. 3609 l_mix_ave(:,:)=0. 3610 wprime_ave(:,:)=0. 3611 3612 DO nsrf = 1, nbsrf 3613 DO i = 1, klon 3614 tke_dissip_ave(i,:) = tke_dissip_ave(i,:) + tke_dissip(i,:,nsrf)*pctsrf(i,nsrf) 3615 l_mix_ave(i,:) = l_mix_ave(i,:) + l_mix(i,:,nsrf)*pctsrf(i,nsrf) 3616 wprime_ave(i,:) = wprime_ave(i,:) + wprime(i,:,nsrf)*pctsrf(i,nsrf) 3617 ENDDO 3618 ENDDO 3619 3441 3620 CALL calcratqs(klon,klev,prt_level,lunout, & 3442 3621 iflag_ratqs,iflag_con,iflag_cld_th,pdtphys, & 3443 3622 ratqsbas,ratqshaut,ratqsp0, ratqsdp, & 3444 tau_ratqs,fact_cldcon, &3623 tau_ratqs,fact_cldcon,wake_s, wake_deltaq, & 3445 3624 ptconv,ptconvth,clwcon0th, rnebcon0th, & 3446 paprs,pplay, q_seri,zqsat,fm_therm, &3447 ratqs,ratqsc)3448 3625 paprs,pplay,t_seri,q_seri, qtc_cv, sigt_cv, zqsat, & 3626 pbl_tke(:,:,is_ave),tke_dissip_ave,l_mix_ave,wprime_ave,t2m,q2m,fm_therm, & 3627 ratqs,ratqsc,ratqs_inter) 3449 3628 3450 3629 ! … … 3456 3635 ENDIF 3457 3636 ! 3637 3638 picefra(:,:)=0. 3639 3640 IF (ok_new_lscp) THEN 3641 3642 !--mise à jour de flight_m et flight_h2o dans leur module 3643 IF (ok_plane_h2o .OR. ok_plane_contrail) THEN 3644 CALL airplane(debut,pphis,pplay,paprs,t_seri) 3645 ENDIF 3646 3647 CALL lscp(phys_tstep,missing_val,paprs,pplay, & 3648 t_seri, q_seri,ptconv,ratqs, & 3649 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneb_seri, & 3650 cldliq, picefra, rain_lsc, snow_lsc, & 3651 pfrac_impa, pfrac_nucl, pfrac_1nucl, & 3652 frac_impa, frac_nucl, beta_prec_fisrt, & 3653 prfl, psfl, rhcl, & 3654 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3655 iflag_ice_thermo, ok_ice_sursat) 3656 3657 ELSE 3658 3458 3659 CALL fisrtilp(phys_tstep,paprs,pplay, & 3459 3660 t_seri, q_seri,ptconv,ratqs, & … … 3465 3666 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3466 3667 iflag_ice_thermo) 3668 3669 ENDIF 3467 3670 ! 3468 3671 WHERE (rain_lsc < 0) rain_lsc = 0. … … 3487 3690 ENDDO 3488 3691 ENDDO 3489 IF (nqo ==3) THEN3692 IF (nqo >= 3) THEN 3490 3693 DO k = 1, klev 3491 3694 DO i = 1, klon … … 3704 3907 ENDIF 3705 3908 zx_rh(i,k) = q_seri(i,k)/zx_qs 3909 IF (iflag_ice_thermo .GT. 0) THEN 3910 zx_rhl(i,k) = q_seri(i,k)/(qsatl(zx_t)/pplay(i,k)) 3911 zx_rhi(i,k) = q_seri(i,k)/(qsats(zx_t)/pplay(i,k)) 3912 ENDIF 3706 3913 zqsat(i,k)=zx_qs 3707 3914 ENDDO … … 3730 3937 ENDDO 3731 3938 3732 IF ( type_trac == 'inca') THEN3939 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 3733 3940 #ifdef INCA 3734 3941 CALL VTe(VTphysiq) … … 3773 3980 nbp_lon, & 3774 3981 nbp_lat-1, & 3775 tr_seri , &3982 tr_seri(:,:,1+nqCO2:nbtr), & 3776 3983 ftsol, & 3777 3984 paprs, & … … 3784 3991 CALL VTe(VTinca) 3785 3992 CALL VTb(VTphysiq) 3786 #endif 3787 ENDIF !type_trac = inca 3788 IF ( type_trac == 'repr') THEN3993 #endif 3994 ENDIF !type_trac = inca or inco 3995 IF (ANY(types_trac == 'repr')) THEN 3789 3996 #ifdef REPROBUS 3790 3997 !CALL chemtime_rep(itap+itau_phy-1, date0, dtime, itap) … … 3956 4163 3957 4164 IF (ok_newmicro) then 3958 IF (iflag_rrtm.NE.0) THEN 4165 ! AI IF (iflag_rrtm.NE.0) THEN 4166 IF (iflag_rrtm.EQ.1) THEN 3959 4167 #ifdef CPP_RRTM 3960 4168 IF (ok_cdnc.AND.NRADLP.NE.3) THEN … … 3970 4178 ENDIF 3971 4179 CALL newmicro (flag_aerosol, ok_cdnc, bl95_b0, bl95_b1, & 3972 paprs, pplay, t_seri, cldliq, cldfra, &4180 paprs, pplay, t_seri, cldliq, picefra, cldfra, & 3973 4181 cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, & 3974 4182 flwp, fiwp, flwc, fiwc, & 3975 4183 mass_solu_aero, mass_solu_aero_pi, & 3976 cldtaupi, re, fl, ref_liq, ref_ice, &4184 cldtaupi, latitude_deg, re, fl, ref_liq, ref_ice, & 3977 4185 ref_liq_pi, ref_ice_pi) 3978 4186 ELSE 3979 4187 CALL nuage (paprs, pplay, & 3980 t_seri, cldliq, cldfra, cldtau, cldemi, &4188 t_seri, cldliq, picefra, cldfra, cldtau, cldemi, & 3981 4189 cldh, cldl, cldm, cldt, cldq, & 3982 4190 ok_aie, & … … 4114 4322 ! 4115 4323 !--interactive CO2 in ppm from carbon cycle 4116 IF (carbon_cycle_rad.AND..NOT.debut) THEN 4117 RCO2=RCO2_glo 4118 ENDIF 4324 IF (carbon_cycle_rad) RCO2=RCO2_glo 4119 4325 ! 4120 4326 IF (prt_level .GE.10) THEN … … 4130 4336 t_seri,q_seri,wo, & 4131 4337 cldfrarad, cldemirad, cldtaurad, & 4132 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 4133 flag_aerosol, & 4134 flag_aerosol_strat, flag_aer_feedback, & 4338 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, & 4339 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 4135 4340 tau_aero, piz_aero, cg_aero, & 4136 4341 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 4143 4348 heat,heat0,cool,cool0,albpla, & 4144 4349 heat_volc,cool_volc, & 4145 topsw,toplw,solsw,sol lw, &4350 topsw,toplw,solsw,solswfdiff,sollw, & 4146 4351 sollwdown, & 4147 4352 topsw0,toplw0,solsw0,sollw0, & … … 4217 4422 t_seri,q_seri,wo, & 4218 4423 cldfrarad, cldemirad, cldtaurad, & 4219 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 4220 flag_aerosol, & 4221 flag_aerosol_strat, flag_aer_feedback, & 4424 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, & 4425 flag_aerosol, flag_aerosol_strat, flag_aer_feedback, & 4222 4426 tau_aero, piz_aero, cg_aero, & 4223 4427 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 4230 4434 heatp,heat0p,coolp,cool0p,albplap, & 4231 4435 heat_volc,cool_volc, & 4232 topswp,toplwp,solswp,sol lwp, &4436 topswp,toplwp,solswp,solswfdiffp,sollwp, & 4233 4437 sollwdownp, & 4234 4438 topsw0p,toplw0p,solsw0p,sollw0p, & … … 4248 4452 ZLWFT0_i, ZFLDN0, ZFLUP0, & 4249 4453 ZSWFT0_i, ZFSDN0, ZFSUP0) 4250 endif!ok_4xCO2atm4454 ENDIF !ok_4xCO2atm 4251 4455 ENDIF ! aerosol_couple 4252 4456 itaprad = 0 … … 4629 4833 4630 4834 CALL tend_to_tke(pdtphys,paprs,exner,t_seri,u_seri,v_seri,dtadd,duadd,dvadd,pctsrf,pbl_tke) 4631 4835 ! 4836 ! Prevent pbl_tke_w from becoming negative 4837 wake_delta_pbl_tke(:,:,:) = max(wake_delta_pbl_tke(:,:,:), -pbl_tke(:,:,:)) 4838 ! 4632 4839 4633 4840 ENDIF … … 4700 4907 #ifdef CPP_COSPV2 4701 4908 IF (itap.eq.1.or.MOD(itap,NINT(freq_cosp/phys_tstep)).EQ.0) THEN 4909 ! IF (MOD(itap,NINT(freq_cosp/phys_tstep)).EQ.0) THEN 4702 4910 4703 4911 IF (prt_level .GE.10) THEN 4704 4912 print*,'freq_cosp',freq_cosp 4705 4913 ENDIF 4914 DO k = 1, klev 4915 DO i = 1, klon 4916 phicosp(i,k) = pphi(i,k) + pphis(i) 4917 ENDDO 4918 ENDDO 4706 4919 mr_ozone=wo(:, :, 1) * dobson_u * 1e3 / zmasse 4707 4920 print*,'Dans physiq.F avant appel ' … … 4755 4968 ! 4756 4969 4757 IF ( type_trac=='repr') THEN4970 IF (ANY(types_trac=='repr')) THEN 4758 4971 !MM pas d'impact, car on recupere q_seri,tr_seri,t_seri via phys_local_var_mod 4759 4972 !MM dans Reprobus … … 4766 4979 ELSE 4767 4980 sh_in(:,:) = qx(:,:,ivap) 4768 ch_in(:,:) = qx(:,:,iliq) 4769 ENDIF 4770 4771 IF (iflag_phytrac == 1 ) THEN 4981 IF (nqo >= 3) THEN 4982 ch_in(:,:) = qx(:,:,iliq) + qx(:,:,isol) 4983 ELSE 4984 ch_in(:,:) = qx(:,:,iliq) 4985 ENDIF 4986 ENDIF 4772 4987 4773 4988 #ifdef CPP_Dust 4774 CALL phytracr_spl ( debut,lafin , jD_cur,jH_cur,iflag_con, & ! I 4989 ! Avec SPLA, iflag_phytrac est forcé =1 4990 CALL phytracr_spl ( debut,lafin , jD_cur,jH_cur,iflag_con, & ! I 4775 4991 pdtphys,ftsol, & ! I 4776 4992 t,q_seri,paprs,pplay,RHcl, & ! I … … 4788 5004 4789 5005 #else 4790 4791 CALL phytrac ( &5006 IF (iflag_phytrac == 1 ) THEN 5007 CALL phytrac ( & 4792 5008 itap, days_elapsed+1, jH_cur, debut, & 4793 5009 lafin, phys_tstep, u, v, t, & … … 4826 5042 4827 5043 #endif 5044 ENDIF ! (iflag_phytrac=1) 4828 5045 4829 5046 #endif 4830 ENDIF ! (iflag_phytrac=1)5047 !ENDIF ! (iflag_phytrac=1) 4831 5048 4832 5049 IF (offline) THEN … … 4849 5066 ! Calculer le transport de l'eau et de l'energie (diagnostique) 4850 5067 ! 4851 CALL transp (paprs,zxtsol, & 4852 t_seri, q_seri, ql_seri, qs_seri, u_seri, v_seri, zphi, & 4853 ve, vq, ue, uq, vwat, uwat) 5068 CALL transp (paprs,zxtsol, t_seri, q_seri, ql_seri, qs_seri, u_seri, v_seri, zphi, & 5069 ue, ve, uq, vq, uwat, vwat) 4854 5070 ! 4855 5071 !IM global posePB BEG 4856 5072 IF(1.EQ.0) THEN 4857 5073 ! 4858 CALL transp_lay (paprs,zxtsol, & 4859 t_seri, q_seri, u_seri, v_seri, zphi, & 5074 CALL transp_lay (paprs,zxtsol, t_seri, q_seri, u_seri, v_seri, zphi, & 4860 5075 ve_lay, vq_lay, ue_lay, uq_lay) 4861 5076 ! 4862 5077 ENDIF !(1.EQ.0) THEN 4863 5078 !IM global posePB END 5079 ! 4864 5080 ! Accumuler les variables a stocker dans les fichiers histoire: 4865 5081 ! … … 4872 5088 d_t_ec(:,:)=0. 4873 5089 forall (k=1: nbp_lev) exner(:, k) = (pplay(:, k)/paprs(:,1))**RKAPPA 4874 CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx (:,:,ivap),qx(:,:,iliq),qx(:,:,isol), &5090 CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx,ivap,iliq,isol, & 4875 5091 u_seri,v_seri,t_seri,q_seri,ql_seri,qs_seri,pbl_tke(:,:,is_ave)-tke0(:,:), & 4876 5092 zmasse,exner,d_t_ec) … … 4905 5121 ENDDO 4906 5122 ! 4907 IF ( type_trac == 'inca') THEN5123 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 4908 5124 #ifdef INCA 4909 5125 CALL VTe(VTphysiq) … … 4914 5130 pplay, & 4915 5131 t_seri, & 4916 tr_seri , &5132 tr_seri(:,:,1+nqCO2:nbtr), & 4917 5133 nbtr, & 4918 5134 paprs, & … … 4922 5138 pphis, & 4923 5139 zx_rh, & 4924 aps, bps, ap, bp )5140 aps, bps, ap, bp, lafin) 4925 5141 4926 5142 CALL VTe(VTinca) … … 4929 5145 ENDIF 4930 5146 5147 IF (ANY(types_trac == 'repr')) THEN 5148 #ifdef REPROBUS 5149 CALL coord_hyb_rep(paprs, pplay, aps, bps, ap, bp, cell_area) 5150 #endif 5151 ENDIF 4931 5152 4932 5153 ! … … 4952 5173 d_qx(i,k,iliq) = ( ql_seri(i,k) - qx(i,k,iliq) ) / phys_tstep 4953 5174 !CR: on ajoute le contenu en glace 4954 IF (nqo .eq.3) THEN5175 IF (nqo >= 3) THEN 4955 5176 d_qx(i,k,isol) = ( qs_seri(i,k) - qx(i,k,isol) ) / phys_tstep 5177 ENDIF 5178 !--ice_sursat: nqo=4, on ajoute rneb 5179 IF (nqo == 4) THEN 5180 d_qx(i,k,irneb) = ( rneb_seri(i,k) - qx(i,k,irneb) ) / phys_tstep 4956 5181 ENDIF 4957 5182 ENDDO 4958 5183 ENDDO 4959 5184 ! 4960 !CR: nb de traceurs eau: nqo4961 ! IF (nqtot.GE.3) THEN4962 IF (nqtot.GE.(nqo+1)) THEN4963 ! DO iq = 3, nqtot4964 DO iq = nqo+1, nqtot5185 IF (nqtot > nqo) THEN 5186 itr = 0 5187 DO iq = 1, nqtot 5188 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 5189 itr = itr+1 4965 5190 DO k = 1, klev 4966 5191 DO i = 1, klon 4967 ! d_qx(i,k,iq) = ( tr_seri(i,k,iq-2) - qx(i,k,iq) ) / phys_tstep 4968 d_qx(i,k,iq) = ( tr_seri(i,k,iq-nqo) - qx(i,k,iq) ) / phys_tstep 5192 d_qx(i,k,iq) = ( tr_seri(i,k,itr) - qx(i,k,iq) ) / phys_tstep 4969 5193 ENDDO 4970 5194 ENDDO … … 5003 5227 ql_ancien(:,:) = ql_seri(:,:) 5004 5228 qs_ancien(:,:) = qs_seri(:,:) 5229 rneb_ancien(:,:) = rneb_seri(:,:) 5005 5230 CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien) 5006 5231 CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien) 5007 5232 CALL water_int(klon,klev,qs_ancien,zmasse,prsw_ancien) 5008 5233 ! !! RomP >>> 5009 !CR: nb de traceurs eau: nqo 5010 IF (nqtot.GT.nqo) THEN 5011 DO iq = nqo+1, nqtot 5012 tr_ancien(:,:,iq-nqo) = tr_seri(:,:,iq-nqo) 5013 ENDDO 5014 ENDIF 5234 IF (nqtot > nqo) tr_ancien(:,:,:) = tr_seri(:,:,:) 5015 5235 ! !! RomP <<< 5016 5236 !========================================================================== … … 5128 5348 CALL phys_output_write_spl(itap, pdtphys, paprs, pphis, & 5129 5349 pplay, lmax_th, aerosol_couple, & 5130 ok_ade, ok_aie, ivap, ok_sync, &5350 ok_ade, ok_aie, ivap, ok_sync, & 5131 5351 ptconv, read_climoz, clevSTD, & 5132 5352 ptconvth, d_t, qx, d_qx, d_tr_dyn, zmasse, & … … 5147 5367 #endif 5148 5368 5149 ! On remet des variables a .false. apres un premier appel5150 IF (debut) THEN5151 #ifdef CPP_XIOS5152 swaero_diag=.FALSE.5153 swaerofree_diag=.FALSE.5154 dryaod_diag=.FALSE.5155 ok_4xCO2atm= .FALSE.5156 ! write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm5157 5158 IF (is_master) THEN5159 !--setting up swaero_diag to TRUE in XIOS case5160 IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. &5161 xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. &5162 xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR. &5163 (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. &5164 xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0")))) &5165 !!!--for now these fields are not in the XML files so they are omitted5166 !!! xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) &5167 swaero_diag=.TRUE.5168 5169 !--setting up swaerofree_diag to TRUE in XIOS case5170 IF (xios_field_is_active("SWdnSFCcleanclr").OR.xios_field_is_active("SWupSFCcleanclr").OR. &5171 xios_field_is_active("SWupTOAcleanclr").OR.xios_field_is_active("rsucsaf").OR. &5172 xios_field_is_active("rsdcsaf") .OR. xios_field_is_active("LWdnSFCcleanclr").OR. &5173 xios_field_is_active("LWupTOAcleanclr")) &5174 swaerofree_diag=.TRUE.5175 5176 !--setting up dryaod_diag to TRUE in XIOS case5177 DO naero = 1, naero_tot-15178 IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE.5179 ENDDO5180 !5181 !--setting up ok_4xCO2atm to TRUE in XIOS case5182 IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. &5183 xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. &5184 xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. &5185 xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. &5186 xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. &5187 xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) &5188 ok_4xCO2atm=.TRUE.5189 ENDIF5190 !$OMP BARRIER5191 CALL bcast(swaero_diag)5192 CALL bcast(swaerofree_diag)5193 CALL bcast(dryaod_diag)5194 CALL bcast(ok_4xCO2atm)5195 ! write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm5196 #endif5197 ENDIF5198 5199 5369 !==================================================================== 5200 5370 ! Arret du modele apres hgardfou en cas de detection d'un … … 5214 5384 ! 5215 5385 5386 ! Disabling calls to the prt_alerte function 5387 alert_first_call = .FALSE. 5388 5216 5389 IF (lafin) THEN 5217 5390 itau_phy = itau_phy + itap … … 5232 5405 #ifdef CPP_XIOS 5233 5406 IF (is_omp_master) CALL xios_context_finalize 5407 5408 #ifdef INCA 5409 if (ANY(types_trac == 'inca' )) then 5410 IF (is_omp_master .and. grid_type==unstructured) THEN 5411 CALL finalize_inca 5412 ENDIF 5413 endif 5414 #endif 5415 5234 5416 #endif 5235 5417 WRITE(lunout,*) ' physiq fin, nombre de steps ou cvpas = 1 : ', Ncvpaseq1
Note: See TracChangeset
for help on using the changeset viewer.