Ignore:
Timestamp:
Apr 15, 2019, 4:55:13 PM (5 years ago)
Author:
Laurent Fairhead
Message:

Adding proper hybrid coordinates coefficients as per the CMIP6 data request
r3284 of IPSLCM6.0.15 branch
Also added Cecill license information to a bunch of DefLists? files

Location:
LMDZ6/trunk/libf/phylmd
Files:
4 edited

Legend:

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

    r3465 r3474  
    10371037
    10381038    !Et sinon on.... écrit
    1039     IF (SIZE(field)/=klon .AND. SIZE(field)/=klev) CALL abort_physic('iophy::histwrite2d_phy','Field first DIMENSION not equal to klon/klev',1)   
     1039    IF (SIZE(field)/=klon .AND. SIZE(field)/=klev .AND. SIZE(field)/=klev+1) CALL abort_physic('iophy::histwrite2d_phy','Field first DIMENSION not equal to klon/klev',1)   
    10401040    IF (prt_level >= 10) THEn
    10411041      WRITE (lunout,*)"histwrite2d_phy: .not.vars_defined ; time to gather and write ", trim(var%name)
     
    12151215    !Et sinon on.... écrit
    12161216
    1217     IF (SIZE(field,1)/=klon .AND. SIZE(field,1)/=klev) CALL abort_physic('iophy::histwrite3d_xios','Field first DIMENSION not equal to klon/klev',1)
     1217    IF (SIZE(field,1)/=klon .AND. SIZE(field,1)/=klev .AND. SIZE(field,1)/=klev+1) CALL abort_physic('iophy::histwrite3d_phy','Field first DIMENSION not equal to klon/klev',1)
    12181218
    12191219    nlev=SIZE(field,2)
     
    13601360  IF (prt_level >= 10) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name
    13611361
    1362   !Et sinon on.... écrit
    1363   IF (SIZE(field)/=klon .AND. SIZE(field)/=klev) CALL abort_physic('iophy::histwrite2d_xios','Field first DIMENSION not equal to klon/klev',1)
    1364    
    1365   IF (SIZE(field) == klev) then
     1362    !Et sinon on.... écrit
     1363    IF (SIZE(field)/=klon .AND. SIZE(field)/=klev .AND. SIZE(field)/=klev+1) CALL abort_physic('iophy::histwrite2d_xios','Field first DIMENSION not equal to klon/klev',1)
     1364   
     1365    IF (SIZE(field) == klev .OR. SIZE(field) == klev+1) then
    13661366!$OMP MASTER
    13671367        CALL xios_send_field(field_name,field)
     
    14421442  IF (prt_level >= 10) write(lunout,*)'Begin histrwrite3d_xios ',field_name
    14431443
    1444   !Et on.... écrit
    1445   IF (SIZE(field,1)/=klon .AND. SIZE(field,1)/=klev) CALL abort_physic('iophy::histwrite3d_xios','Field first DIMENSION not equal to klon/klev',1)
    1446    
    1447   IF (SIZE(field,1) == klev) then
     1444    !Et on.... écrit
     1445    IF (SIZE(field,1)/=klon .AND. SIZE(field,1)/=klev .AND. SIZE(field,1)/=klev+1) then
     1446      write(lunout,*)' histrwrite3d_xios ', field_name, SIZE(field)
     1447      CALL abort_physic('iophy::histwrite3d_xios','Field first DIMENSION not equal to klon/klev',1)
     1448    ENDIF
     1449   
     1450    IF (SIZE(field,1) == klev .OR. SIZE(field,1) == klev+1) then
    14481451!$OMP MASTER
    14491452        CALL xios_send_field(field_name,field)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r3453 r3474  
    2424    'io_lat', '', '', (/ ('once', i=1, 10) /))
    2525
    26 !!! Comosantes de la coordonnee sigma-hybride
     26!!! Composantes de la coordonnee sigma-hybride
    2727!!! Ap et Bp et interfaces
    2828  TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
    29     'Ahyb', '', '', (/ ('once', i=1, 10) /))
     29    'Ahyb', 'Ahyb at level interface', '', (/ ('once', i=1, 10) /))
    3030  TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
    31     'Bhyb', '', '', (/ ('once', i=1, 10) /))
    32   TYPE(ctrl_out), SAVE :: o_Ahyb_inter = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
    33     'Ahyb_inter', '', '', (/ ('once', i=1, 10) /))
    34   TYPE(ctrl_out), SAVE :: o_Bhyb_inter = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
    35     'Bhyb_inter', '', '', (/ ('once', i=1, 10) /))
     31    'Bhyb', 'Bhyb at level interface', '', (/ ('once', i=1, 10) /))
     32  TYPE(ctrl_out), SAVE :: o_Ahyb_bounds = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     33    'Ahyb_bounds', '', '', (/ ('once', i=1, 10) /))
     34  TYPE(ctrl_out), SAVE :: o_Bhyb_bounds = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     35    'Bhyb_bounds', '', '', (/ ('once', i=1, 10) /))
     36!!! Composantes de la coordonnee sigma-hybride  au milieu des couches
     37!!! Aps et Bps et interfaces
     38  TYPE(ctrl_out), SAVE :: o_Ahyb_mid = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     39    'Ahyb_mid', 'Ahyb at the middle of the level', '', (/ ('once', i=1, 10) /))
     40  TYPE(ctrl_out), SAVE :: o_Bhyb_mid = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     41    'Bhyb_mid', 'Bhyb at the middle of the level', '', (/ ('once', i=1, 10) /))
     42  TYPE(ctrl_out), SAVE :: o_Ahyb_mid_bounds = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     43    'Ahyb_mid_bounds', '', '', (/ ('once', i=1, 10) /))
     44  TYPE(ctrl_out), SAVE :: o_Bhyb_mid_bounds = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
     45    'Bhyb_mid_bounds', '', '', (/ ('once', i=1, 10) /))
     46
    3647  TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11, 11/), &
    3748    'Alt', '', '', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_mod.F90

    r3125 r3474  
    131131                                                                       90.,   90.,   90.,   90.,   90. /)
    132132    REAL, DIMENSION(klev,2) :: Ahyb_bounds, Bhyb_bounds
    133     REAL, DIMENSION(klev)   :: lev_index
     133    REAL, DIMENSION(klev+1)   :: lev_index
    134134               
    135135#ifdef CPP_XIOS
     
    156156      lev_index(ilev) = REAL(ilev)
    157157    END DO
     158      lev_index(klev+1) = REAL(klev+1)
    158159
    159160    IF (.NOT. ALLOCATED(o_trac)) ALLOCATE(o_trac(nqtot))
     
    361362    CALL wxios_add_vaxis("klev", levmax(iff) - levmin(iff) + 1, &
    362363                          lev_index(levmin(iff):levmax(iff)))
     364    CALL wxios_add_vaxis("klevp1", klev+1, &
     365                          lev_index(1:klev+1))
    363366    CALL wxios_add_vaxis("bnds", 2, (/1.,2./))
    364367
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3453 r3474  
    3232    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
    3333         o_longitude, o_latitude, &
    34          o_Ahyb, o_Bhyb,o_Ahyb_inter, o_Bhyb_inter, &
     34         o_Ahyb, o_Bhyb,o_Ahyb_bounds, o_Bhyb_bounds, &
     35         o_Ahyb_mid, o_Bhyb_mid,o_Ahyb_mid_bounds, o_Bhyb_mid_bounds, &
    3536         is_ave, is_sic, o_contfracATM, o_contfracOR, &
    3637         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
     
    418419    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
    419420!   REAL, PARAMETER :: missing_val=nf90_fill_real
    420     REAL, DIMENSION(klev,2) :: Ahyb_bounds, Bhyb_bounds
     421    REAL, DIMENSION(klev+1,2) :: Ahyb_bounds, Bhyb_bounds
     422    REAL, DIMENSION(klev,2) :: Ahyb_mid_bounds, Bhyb_mid_bounds
    421423    INTEGER :: ilev
    422424#ifndef CPP_XIOS
     
    451453#endif
    452454
    453     DO ilev=1,klev
    454       Ahyb_bounds(ilev,1) = ap(ilev)
    455       Ahyb_bounds(ilev,2) = ap(ilev+1)
    456       Bhyb_bounds(ilev,1) = bp(ilev)
    457       Bhyb_bounds(ilev,2) = bp(ilev+1)
     455    Ahyb_bounds(1,1) = 0.
     456    Ahyb_bounds(1,2) = aps(1)
     457    Bhyb_bounds(1,1) = 1.
     458    Bhyb_bounds(1,2) = bps(1)   
     459    DO ilev=2,klev
     460      Ahyb_bounds(ilev,1) = aps(ilev-1)
     461      Ahyb_bounds(ilev,2) = aps(ilev)
     462      Bhyb_bounds(ilev,1) = bps(ilev-1)
     463      Bhyb_bounds(ilev,2) = bps(ilev)
     464    ENDDO
     465     Ahyb_bounds(klev+1,1) = aps(klev)
     466     Ahyb_bounds(klev+1,2) = 0.
     467     Bhyb_bounds(klev+1,1) = bps(klev)
     468     Bhyb_bounds(klev+1,2) = 0.
     469
     470    DO ilev=1, klev
     471      Ahyb_mid_bounds(ilev,1) = ap(ilev)
     472      Ahyb_mid_bounds(ilev,2) = ap(ilev+1)
     473      Bhyb_mid_bounds(ilev,1) = bp(ilev)
     474      Bhyb_mid_bounds(ilev,2) = bp(ilev+1)
    458475    END DO
    459476
     
    570587       CALL histwrite_phy("R_incl",R_incl)
    571588       CALL histwrite_phy("solaire",solaire)
    572        CALL histwrite_phy(o_Ahyb, aps)
    573        CALL histwrite_phy(o_Bhyb, bps)
    574        CALL histwrite_phy(o_Ahyb_inter, Ahyb_bounds)
    575        CALL histwrite_phy(o_Bhyb_inter, Bhyb_bounds)
     589       CALL histwrite_phy(o_Ahyb, ap)
     590       CALL histwrite_phy(o_Bhyb, bp)
     591       CALL histwrite_phy(o_Ahyb_bounds, Ahyb_bounds)
     592       CALL histwrite_phy(o_Bhyb_bounds, Bhyb_bounds)
     593       CALL histwrite_phy(o_Ahyb_mid, aps)
     594       CALL histwrite_phy(o_Bhyb_mid, bps)
     595       CALL histwrite_phy(o_Ahyb_mid_bounds, Ahyb_mid_bounds)
     596       CALL histwrite_phy(o_Bhyb_mid_bounds, Bhyb_mid_bounds)
    576597       CALL histwrite_phy(o_longitude, longitude_deg)
    577598       CALL histwrite_phy(o_latitude, latitude_deg)
Note: See TracChangeset for help on using the changeset viewer.