Changeset 3773


Ignore:
Timestamp:
May 21, 2025, 6:37:41 PM (5 weeks ago)
Author:
afalco
Message:

Generic: allow to write controle in XIOS output.
AF

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/LMDZ.GENERIC/libf/phystd/iniwrite.F

    r1621 r3773  
    22
    33      use comsoil_h, only: mlayer, nsoilmx
    4       USE comcstfi_mod, only: g, mugaz, omeg, rad, rcp, pi 
     4      USE comcstfi_mod, only: g, mugaz, omeg, rad, rcp, pi
    55      USE vertical_layers_mod, ONLY: ap,bp,aps,bps,pseudoalt
    66!      USE logic_mod, ONLY: fxyhypb,ysinus
     
    1010      USE regular_lonlat_mod, ONLY: lon_reg, lat_reg
    1111      USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev
     12      use tabfi_mod, only: tab_cntrl_mod
    1213      IMPLICIT NONE
    1314
     
    4142c   Local:
    4243c   ------
    43       INTEGER length,l
    44       parameter (length = 100)
    45       REAL tab_cntrl(length) ! run parameters are stored in this array
     44    !   INTEGER length,l
     45    !   parameter (length = 100)
     46    !   REAL tab_cntrl(length) ! run parameters are stored in this array
    4647      INTEGER ierr
    4748      REAl,ALLOCATABLE :: lon_reg_ext(:) ! extended longitudes
     
    5051      integer :: idim_rlatu,idim_llmp1,idim_llm
    5152      integer :: idim_nsoilmx ! "subsurface_layers" dimension ID #
    52       integer, dimension(2) :: id 
     53      integer, dimension(2) :: id
    5354c-----------------------------------------------------------------------
    5455
     
    6162      ENDIF
    6263
    63       DO l=1,length
    64          tab_cntrl(l)=0.
    65       ENDDO
    66       tab_cntrl(1)  = real(nbp_lon)
    67       tab_cntrl(2)  = real(nbp_lat-1)
    68       tab_cntrl(3)  = real(nbp_lev)
    69       tab_cntrl(4)  = real(idayref)
    70       tab_cntrl(5)  = rad
    71       tab_cntrl(6)  = omeg
    72       tab_cntrl(7)  = g
    73       tab_cntrl(8)  = mugaz
    74       tab_cntrl(9)  = rcp
    75       tab_cntrl(10) = daysec
    76       tab_cntrl(11) = dtphys
     64    !   DO l=1,length
     65    !      tab_cntrl(l)=0.
     66    !   ENDDO
     67    !   tab_cntrl(1)  = real(nbp_lon)
     68    !   tab_cntrl(2)  = real(nbp_lat-1)
     69    !   tab_cntrl(3)  = real(nbp_lev)
     70    !   tab_cntrl(4)  = real(idayref)
     71    !   tab_cntrl(5)  = rad
     72    !   tab_cntrl(6)  = omeg
     73    !   tab_cntrl(7)  = g
     74    !   tab_cntrl(8)  = mugaz
     75    !   tab_cntrl(9)  = rcp
     76    !   tab_cntrl(10) = daysec
     77    !   tab_cntrl(11) = dtphys
    7778!      tab_cntrl(12) = etot0
    7879!      tab_cntrl(13) = ptot0
     
    8283c
    8384c    ..........    P.Le Van  ( ajout le 8/04/96 )    .........
    84 c         .....        parametres  pour le zoom          ......   
     85c         .....        parametres  pour le zoom          ......
    8586!      tab_cntrl(17)  = clon
    8687!      tab_cntrl(18)  = clat
     
    105106
    106107! Define dimensions
    107    
    108       ierr = NF_REDEF (nid)
    109 
    110       ierr = NF_DEF_DIM (nid, "index", length, idim_index)
     108
     109      ierr = NF_REDEF (nid)
     110
     111      ierr = NF_DEF_DIM (nid, "index", SIZE(tab_cntrl_mod), idim_index)
    111112!      ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
    112113      ierr = NF_DEF_DIM (nid, "latitude", nbp_lat, idim_rlatu)
     
    126127      ierr = NF_REDEF (nid)
    127128#ifdef NC_DOUBLE
    128       ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1, 
     129      ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1,
    129130     .       idim_index,nvarid)
    130131#else
    131       ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1, 
     132      ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1,
    132133     .       idim_index,nvarid)
    133134#endif
     
    136137      ierr = NF_ENDDEF(nid)
    137138#ifdef NC_DOUBLE
    138       ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
    139 #else
    140       ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
     139      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl_mod)
     140#else
     141      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl_mod)
    141142#endif
    142143
     
    177178c
    178179c --------------------------
    179      
     180
    180181      lon_reg_ext(1:nbp_lon)=lon_reg(1:nbp_lon)
    181182      IF (nbp_lon*nbp_lat/=1) THEN
     
    204205      ierr = NF_REDEF (nid)
    205206#ifdef NC_DOUBLE
    206       ierr = NF_DEF_VAR (nid, "altitude", NF_DOUBLE, 1, 
     207      ierr = NF_DEF_VAR (nid, "altitude", NF_DOUBLE, 1,
    207208     .       idim_llm,nvarid)
    208209#else
    209       ierr = NF_DEF_VAR (nid, "altitude", NF_FLOAT, 1, 
     210      ierr = NF_DEF_VAR (nid, "altitude", NF_FLOAT, 1,
    210211     .       idim_llm,nvarid)
    211212#endif
  • TabularUnified trunk/LMDZ.GENERIC/libf/phystd/phyetat0_mod.F90

    r3552 r3773  
    2222  use write_field_phy, only: Writefield_phy
    2323!!
    24   use tabfi_mod, only: tabfi
     24  use tabfi_mod, only: tabfi,ini_tab_controle_dyn_xios
    2525  USE tracer_h, ONLY: noms, igcm_h2o_vap
    2626  USE radinc_h, ONLY: L_NSPECTV
     
    485485   endif
    486486endif ! of if (startphy_file)
     487
     488call ini_tab_controle_dyn_xios(day_ini)
     489
     490
    487491!
    488492! close file:
     
    492496end subroutine phyetat0
    493497
    494 !======================================================================
    495 subroutine ini_tab_controle_dyn_xios(idayref)
    496 
    497 use comcstfi_mod,        only: g, mugaz, omeg, rad, rcp
    498 use time_phylmdz_mod,  only: daysec, dtphys
    499 use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat, nbp_lev
    500 
    501 implicit none
    502 
    503 integer*4, intent(in) :: idayref ! date (initial date for this run)
    504 
    505 integer :: length, l
    506 parameter (length = 100)
    507 real    :: tab_cntrl(length) ! run parameters are stored in this array
    508 
    509 do l = 1,length
    510     tab_cntrl(l) = 0.
    511 enddo
    512 tab_cntrl(1)  = real(nbp_lon)
    513 tab_cntrl(2)  = real(nbp_lat-1)
    514 tab_cntrl(3)  = real(nbp_lev)
    515 tab_cntrl(4)  = real(idayref)
    516 tab_cntrl(5)  = rad
    517 tab_cntrl(6)  = omeg
    518 tab_cntrl(7)  = g
    519 tab_cntrl(8)  = mugaz
    520 tab_cntrl(9)  = rcp
    521 tab_cntrl(10) = daysec
    522 tab_cntrl(11) = dtphys
    523 
    524 tab_cntrl_mod = tab_cntrl
    525 
    526 end subroutine ini_tab_controle_dyn_xios
    527 
    528498end module phyetat0_mod
  • TabularUnified trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90

    r3725 r3773  
    3838                          igcm_co2_ice, nesp, is_chim, is_condensable,constants_epsi_generic
    3939      use time_phylmdz_mod, only: diagfi_output_rate, nday
    40       use phyetat0_mod, only: phyetat0,tab_cntrl_mod
     40      use phyetat0_mod, only: phyetat0
     41      use tabfi_mod, only: tab_cntrl_mod
    4142      use surfini_mod, only: surfini
    4243      use wstats_mod, only: callstats, wstats, mkstats
     
    20762077  !   VI.7. Radioactive Tracers
    20772078  ! -----------------------------
    2078          
     2079
    20792080         call radioactive_tracers(ngrid,nlayer,nq,ptimestep,pq,zdqradio)
    20802081         pdq(1:ngrid,1:nlayer,1:nq) = pdq(1:ngrid,1:nlayer,1:nq) + zdqradio(1:ngrid,1:nlayer,1:nq)
  • TabularUnified trunk/LMDZ.GENERIC/libf/phystd/tabfi_mod.F90

    r3728 r3773  
    22
    33IMPLICIT NONE
     4
     5real, save :: tab_cntrl_mod(100)
     6!$OMP THREADPRIVATE(tab_cntrl_mod)
     7
    48
    59CONTAINS
     
    1216!   C. Hourdin 15/11/96
    1317!
    14 !   Object:        Lecture du tab_cntrl physique dans un fichier 
     18!   Object:        Lecture du tab_cntrl physique dans un fichier
    1519!   ------            et initialisation des constantes physiques
    1620!
     
    568572      END SUBROUTINE tabfi
    569573
     574      subroutine ini_tab_controle_dyn_xios(idayref)
     575      ! Initialize controle variable for XIOS & diagfi
     576
     577        use comcstfi_mod,        only: g, mugaz, omeg, rad, rcp
     578        use time_phylmdz_mod,  only: daysec, dtphys
     579        use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat, nbp_lev
     580
     581        implicit none
     582
     583        integer*4, intent(in) :: idayref ! date (initial date for this run)
     584
     585        integer :: length, l
     586        parameter (length = 100)
     587        real    :: tab_cntrl(length) ! run parameters are stored in this array
     588
     589        do l = 1,length
     590            tab_cntrl(l) = 0.
     591        enddo
     592        tab_cntrl(1)  = real(nbp_lon)
     593        tab_cntrl(2)  = real(nbp_lat-1)
     594        tab_cntrl(3)  = real(nbp_lev)
     595        tab_cntrl(4)  = real(idayref)
     596        tab_cntrl(5)  = rad
     597        tab_cntrl(6)  = omeg
     598        tab_cntrl(7)  = g
     599        tab_cntrl(8)  = mugaz
     600        tab_cntrl(9)  = rcp
     601        tab_cntrl(10) = daysec
     602        tab_cntrl(11) = dtphys
     603
     604        tab_cntrl_mod = tab_cntrl
     605
     606      end subroutine ini_tab_controle_dyn_xios
     607
    570608end module tabfi_mod
Note: See TracChangeset for help on using the changeset viewer.