Ignore:
Timestamp:
Jan 22, 2019, 4:21:59 PM (5 years ago)
Author:
Laurent Fairhead
Message:

"Historic" :-) commit merging the physics branch used for DYNAMICO with the LMDZ trunk.
The same physics branch can now be used seamlessly with the traditional lon-lat LMDZ
dynamical core and DYNAMICO.
Testing consisted in running a lon-lat LMDZ bucket simulation with the NPv6.1 physics package
with the original trunk sources and the merged sources. Tests were succesful in the sense that
numeric continuity was preserved in the restart files from both simulation. Further tests
included running both versions of the physics codes for one year in a LMDZOR setting in which
the restart files also came out identical.

Caution:

  • as the physics package now manages unstructured grids, grid information needs to be transmitted

to the surface scheme ORCHIDEE. This means that the interface defined in surf_land_orchidee_mod.F90
is only compatible with ORCHIDEE version orchidee2.1 and later versions. If previous versions of
ORCHIDEE need to be used, the CPP key ORCHIDEE_NOUNSTRUCT needs to be set at compilation time.
This is done automatically if makelmdz/makelmdz_fcm are called with the veget orchidee2.0 switch

  • due to a limitation in XIOS, the time at which limit conditions will be read in by DYNAMICO will be

delayed by one physic timestep with respect to the time it is read in by the lon-lat model. This is caused
by the line

IF (MOD(itime-1, lmt_pas) == 0 .OR. (jour_lu /= jour .AND. grid_type /= unstructured)) THEN ! time to read

in limit_read_mod.F90

Work still needed on COSP integration and XML files for DYNAMICO

EM, YM, LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3381 r3435  
    367367    ! ug Pour les sorties XIOS
    368368    USE xios
    369     USE wxios, ONLY: wxios_closedef, missing_val
     369    USE wxios, ONLY: wxios_closedef, missing_val, wxios_set_context
    370370#endif
    371371    USE phys_cal_mod, ONLY : mth_len
     
    437437    CALL set_itau_iophy(itau_w)
    438438
    439     IF (.NOT.vars_defined) THEN
    440        iinitend = 2
    441     ELSE
     439 !   IF (.NOT.vars_defined) THEN
    442440       iinitend = 1
    443     ENDIF
     441 !   ELSE
     442 !      iinitend = 1
     443 !   ENDIF
     444
     445#ifdef CPP_XIOS
     446    CALL wxios_set_context
     447#endif
    444448
    445449    DO ilev=1,klev
     
    712716       CALL histwrite_phy(o_fsnow, zfra_o)
    713717       CALL histwrite_phy(o_evap, evap)
    714        CALL histwrite_phy(o_tops, topsw*swradcorr)
    715        CALL histwrite_phy(o_tops0, topsw0*swradcorr)
     718
     719       IF (vars_defined) THEN
     720         zx_tmp_fi2d = topsw*swradcorr
     721       ENDIF
     722       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
     723
     724       IF (vars_defined) THEN
     725         zx_tmp_fi2d = topsw0*swradcorr
     726       ENDIF
     727       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
     728
    716729       CALL histwrite_phy(o_topl, toplw)
    717730       CALL histwrite_phy(o_topl0, toplw0)
     
    746759       ENDIF
    747760       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
    748        CALL histwrite_phy(o_SWup200, SWup200*swradcorr)
    749        CALL histwrite_phy(o_SWup200clr, SWup200clr*swradcorr)
    750        CALL histwrite_phy(o_SWdn200, SWdn200*swradcorr)
    751        CALL histwrite_phy(o_SWdn200clr, SWdn200clr*swradcorr)
     761       
     762       IF (vars_defined) THEN
     763          zx_tmp_fi2d = SWup200*swradcorr
     764       ENDIF
     765       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
     766       
     767       IF (vars_defined) THEN
     768          zx_tmp_fi2d = SWup200clr*swradcorr
     769       ENDIF
     770       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
     771       
     772       IF (vars_defined) THEN
     773          zx_tmp_fi2d = SWdn200*swradcorr
     774       ENDIF
     775       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
     776       
     777       
     778       IF (vars_defined) THEN
     779          zx_tmp_fi2d = SWdn200clr*swradcorr
     780       ENDIF
     781       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
     782       
    752783       CALL histwrite_phy(o_LWup200, LWup200)
    753784       CALL histwrite_phy(o_LWup200clr, LWup200clr)
    754785       CALL histwrite_phy(o_LWdn200, LWdn200)
    755786       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
    756        CALL histwrite_phy(o_sols, solsw*swradcorr)
    757        CALL histwrite_phy(o_sols0, solsw0*swradcorr)
     787       
     788       IF (vars_defined) THEN
     789          zx_tmp_fi2d = solsw*swradcorr
     790       ENDIF
     791       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
     792       
     793       
     794       IF (vars_defined) THEN
     795          zx_tmp_fi2d = solsw0*swradcorr
     796       ENDIF
     797       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
    758798       CALL histwrite_phy(o_soll, sollw)
    759799       CALL histwrite_phy(o_soll0, sollw0)
     
    950990       CALL histwrite_phy(o_cldt, cldt)
    951991       CALL histwrite_phy(o_JrNt, JrNt)
    952        CALL histwrite_phy(o_cldljn, cldl*JrNt)
    953        CALL histwrite_phy(o_cldmjn, cldm*JrNt)
    954        CALL histwrite_phy(o_cldhjn, cldh*JrNt)
    955        CALL histwrite_phy(o_cldtjn, cldt*JrNt)
     992       
     993       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
     994       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
     995       
     996       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
     997       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
     998       
     999       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
     1000       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
     1001       
     1002       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
     1003       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
     1004       
    9561005       CALL histwrite_phy(o_cldq, cldq)
    9571006       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
     
    11541203             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
    11551204             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
    1156              CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1205             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    11571206             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
    11581207          ENDIF ! iflag_wake>=1
     
    13181367
    13191368! ThL -- In the following, we assume read_climoz == 1
    1320        zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
    1321        DO k=1, klev
    1322           zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
    1323        END DO
     1369       IF (vars_defined) THEN
     1370         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
     1371         DO k=1, klev
     1372            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
     1373         END DO
     1374       ENDIF
    13241375       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
    1325        zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
    1326        DO k=1, klev
    1327           zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
    1328        END DO
     1376
     1377       IF (vars_defined) THEN
     1378         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
     1379         DO k=1, klev
     1380            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
     1381         END DO
     1382       ENDIF
    13291383       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
    13301384! end add ThL
     
    13671421#endif
    13681422       IF (ok_ade) THEN
    1369           CALL histwrite_phy(o_topswad, topswad_aero*swradcorr)
    1370           CALL histwrite_phy(o_topswad0, topswad0_aero*swradcorr)
    1371           CALL histwrite_phy(o_solswad, solswad_aero*swradcorr)
    1372           CALL histwrite_phy(o_solswad0, solswad0_aero*swradcorr)
     1423          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
     1424          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
     1425         
     1426          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
     1427          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
     1428                   
     1429          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
     1430          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
     1431                   
     1432          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
     1433          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
     1434         
    13731435          CALL histwrite_phy(o_toplwad, toplwad_aero)
    13741436          CALL histwrite_phy(o_toplwad0, toplwad0_aero)
     
    13771439          !====MS forcing diagnostics
    13781440          IF (new_aod) THEN
    1379              zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
     1441          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
     1442          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
     1443
     1444             IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
    13801445             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
    1381              zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
     1446             IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
    13821447             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
    1383              zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
     1448             IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
    13841449             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
    1385              zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
     1450             IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
    13861451             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
    13871452             !ant
    1388              zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
     1453             IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
    13891454             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
    1390              zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
     1455             IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
    13911456             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
    1392              zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
     1457             IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
    13931458             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
    1394              zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
     1459             IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
    13951460             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
    13961461             !cf
    13971462             IF (.not. aerosol_couple) THEN
    1398                 zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
     1463                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
    13991464                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
    1400                 zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
     1465                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
    14011466                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
    1402                 zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
     1467                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
    14031468                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
    1404                 zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
     1469                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
    14051470                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
    1406                 zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
     1471                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
    14071472                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
    1408                 zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
     1473                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
    14091474                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
    14101475             ENDIF
     
    14131478       ENDIF
    14141479       IF (ok_aie) THEN
    1415           CALL histwrite_phy(o_topswai, topswai_aero*swradcorr)
    1416           CALL histwrite_phy(o_toplwai, toplwai_aero*swradcorr)
    1417           CALL histwrite_phy(o_solswai, solswai_aero*swradcorr)
    1418           CALL histwrite_phy(o_sollwai, sollwai_aero*swradcorr)
     1480          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
     1481          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
     1482         
     1483          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
     1484          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
     1485         
     1486          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
     1487          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
     1488         
     1489          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
     1490          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
    14191491       ENDIF
    14201492       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
     
    14461518       CALL histwrite_phy(o_ovap, q_seri)
    14471519       CALL histwrite_phy(o_oliq, ql_seri)
    1448        CALL histwrite_phy(o_ocond, ql_seri+qs_seri)
     1520
     1521       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
     1522       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
     1523
    14491524       CALL histwrite_phy(o_geop, zphi)
    14501525       CALL histwrite_phy(o_vitu, u_seri)
     
    14531528       CALL histwrite_phy(o_pres, pplay)
    14541529       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
    1455        CALL histwrite_phy(o_zfull,zphi/RG)
     1530       
     1531       IF (vars_defined) zx_tmp_fi3d = zphi/RG
     1532       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
    14561533
    14571534#ifdef CPP_XIOS
     
    14981575       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
    14991576       CALL histwrite_phy(o_rhum, zx_rh)
    1500        CALL histwrite_phy(o_ozone, &
    1501             wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
     1577       
     1578       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
     1579       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
    15021580
    15031581       IF (read_climoz == 2) THEN
    1504           CALL histwrite_phy(o_ozone_light, &
    1505                wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
     1582         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
     1583         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
    15061584       ENDIF
    15071585
     
    15111589
    15121590       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
    1513        CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
     1591       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
    15141592       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
    15151593
    15161594       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
    1517        CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
     1595       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
    15181596       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
    15191597
    15201598       IF (nqo.EQ.3) THEN
    15211599       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
    1522        CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
     1600       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
    15231601       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
    15241602       ELSE
     
    16051683       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
    16061684       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
    1607        CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1685       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    16081686       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
    16091687
     
    16271705       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
    16281706       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
    1629        CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1707       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    16301708       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
    16311709       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
     
    16401718          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
    16411719          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
    1642           CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1720          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    16431721          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
    16441722          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
    16451723          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
    1646           CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1724          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    16471725          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
    16481726          CALL histwrite_phy(o_plulth, plul_th)
     
    16981776       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
    16991777       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
    1700        CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1778       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    17011779       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
    17021780       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
     
    17041782       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
    17051783       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
    1706        CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1784       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    17071785       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
    17081786       CALL histwrite_phy(o_ratqs, ratqs)
     
    17431821          ENDIF
    17441822          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
    1745           CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1823          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    17461824          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
    17471825       ENDIF !iflag_thermals
     
    17501828       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
    17511829       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
    1752        CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
     1830       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
    17531831       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
    17541832       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
     
    17861864
    17871865       IF (ok_hines) THEN
    1788           CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines/pdtphys)
    1789           CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines/pdtphys)
     1866          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
     1867          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
     1868
     1869          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
     1870          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
     1871         
    17901872          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
    17911873          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
     
    17951877
    17961878       IF (.not. ok_hines .and. ok_gwd_rando) THEN
    1797           CALL histwrite_phy(o_du_gwd_front, du_gwd_front / pdtphys)
    1798           CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front / pdtphys)
     1879          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
     1880          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
     1881         
     1882          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
     1883          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
     1884         
    17991885          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
    18001886          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
     
    18021888
    18031889       IF (ok_gwd_rando) THEN
    1804           CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
    1805           CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
     1890          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
     1891          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
     1892         
     1893          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
     1894          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
    18061895          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
    18071896          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
     
    18111900
    18121901       IF (ok_qch4) THEN
    1813           CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
    1814        ENDIF
    1815 
    1816        DO k=1, klevp1
    1817          zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
    1818        ENDDO
     1902          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
     1903          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
     1904       ENDIF
     1905       
     1906       IF (vars_defined) THEN
     1907         DO k=1, klevp1
     1908           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
     1909         ENDDO
     1910       ENDIF
     1911       
    18191912       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
    1820        DO k=1, klevp1
    1821          zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
    1822        ENDDO
     1913
     1914
     1915       IF (vars_defined) THEN
     1916         DO k=1, klevp1
     1917           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
     1918         ENDDO
     1919       ENDIF
     1920       
    18231921       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
    1824        DO k=1, klevp1
    1825          zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
    1826        ENDDO
     1922
     1923       IF (vars_defined) THEN
     1924         DO k=1, klevp1
     1925           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
     1926         ENDDO
     1927       ENDIF
     1928       
    18271929       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
    1828        DO k=1, klevp1
    1829          zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
    1830        ENDDO
     1930
     1931       IF (vars_defined) THEN
     1932         DO k=1, klevp1
     1933           zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
     1934         ENDDO
     1935       ENDIF
    18311936       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
    1832        DO k=1, klevp1
    1833          zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
    1834        ENDDO
     1937
     1938       IF (vars_defined) THEN
     1939         DO k=1, klevp1
     1940           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
     1941         ENDDO
     1942       ENDIF
    18351943       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
    1836        DO k=1, klevp1
    1837          zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
    1838        ENDDO
     1944
     1945
     1946       IF (vars_defined) THEN
     1947         DO k=1, klevp1
     1948           zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
     1949         ENDDO
     1950       ENDIF
    18391951       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
    18401952
     
    18902002       ELSE IF (iflag_con == 2) THEN
    18912003          CALL histwrite_phy(o_mcd,  pmfd)
    1892           CALL histwrite_phy(o_dmc,  pmfu + pmfd)
     2004          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
     2005          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
    18932006       ENDIF
    18942007       CALL histwrite_phy(o_ref_liq, ref_liq)
     
    19042017          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
    19052018          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
    1906           DO k=1, klevp1
    1907             zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
    1908           ENDDO
     2019          IF (vars_defined) THEN
     2020            DO k=1, klevp1
     2021              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
     2022            ENDDO
     2023          ENDIF
    19092024          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
    1910           DO k=1, klevp1
    1911             zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
    1912           ENDDO
     2025          IF (vars_defined) THEN
     2026            DO k=1, klevp1
     2027              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
     2028            ENDDO
     2029          ENDIF
    19132030          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
    1914           DO k=1, klevp1
    1915             zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
    1916           ENDDO
     2031          IF (vars_defined) THEN
     2032            DO k=1, klevp1
     2033              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
     2034            ENDDO
     2035          ENDIF
    19172036          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
    1918           DO k=1, klevp1
    1919             zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
    1920           ENDDO
     2037          IF (vars_defined) THEN
     2038            DO k=1, klevp1
     2039              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
     2040            ENDDO
     2041          ENDIF
    19212042          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
    19222043          CALL histwrite_phy(o_rlu4co2, lwupp)
     
    20712192            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
    20722193             !--3D fields
    2073              CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
    2074              CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
    2075              CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
    2076              CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
    2077              CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
    2078              CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
    2079              CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
    2080              CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
    2081              CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
    2082              CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
    2083              CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
    2084              CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
    2085              CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
    2086              CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
     2194!             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
     2195!             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
     2196!             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
     2197!             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
     2198!             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
     2199!             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
     2200!             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
     2201!             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
     2202!             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
     2203!             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
     2204!             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
     2205!             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
     2206!             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
     2207!             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
    20872208             !--2D fields
    2088              CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
     2209!             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
    20892210             zx_tmp_fi2d=0.
    20902211             IF (vars_defined) THEN
Note: See TracChangeset for help on using the changeset viewer.