Ignore:
Timestamp:
Oct 19, 2023, 4:02:57 PM (9 months ago)
Author:
idelkadi
Message:

Merged trunk changes -r4488:4726 LMDZ_ECRad branch

Location:
LMDZ6/branches/LMDZ_ECRad
Files:
3 edited
3 copied

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/LMDZ_ECRad

  • LMDZ6/branches/LMDZ_ECRad/libf/misc/readTracFiles_mod.f90

    r4482 r4727  
    114114  !--- SOME PARAMETERS THAT ARE NOT LIKELY TO CHANGE OFTEN
    115115  CHARACTER(LEN=maxlen), SAVE      :: tran0        = 'air'      !--- Default transporting fluid
    116   CHARACTER(LEN=maxlen), PARAMETER :: old_phases   = 'vlir'     !--- Old phases for water (no separator)
    117   CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsr'     !--- Known phases initials
     116  CHARACTER(LEN=maxlen), PARAMETER :: old_phases   = 'vlirb'     !--- Old phases for water (no separator)
     117  CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsrb'     !--- Known phases initials
    118118  INTEGER, PARAMETER :: nphases = LEN_TRIM(known_phases)        !--- Number of phases
    119119  CHARACTER(LEN=maxlen), SAVE      :: phases_names(nphases) &   !--- Known phases names
    120                                              = ['gaseous', 'liquid ', 'solid  ', 'cloud ']
     120                                = ['gaseous', 'liquid ', 'solid  ', 'cloud  ','blosno ']
    121121  CHARACTER(LEN=1), SAVE :: phases_sep  =  '_'                  !--- Phase separator
    122122  LOGICAL,          SAVE :: tracs_merge = .TRUE.                !--- Merge/stack tracers lists
  • LMDZ6/branches/LMDZ_ECRad/libf/misc/wxios.F90

    r4482 r4727  
    11! $Id$
    2 #ifdef CPP_XIOS
     2
    33MODULE wxios
    4     USE xios
    5     USE iaxis
    6     USE iaxis_attr
    7     USE icontext_attr
    8     USE idate
    9     USE idomain_attr
    10     USE ifield_attr
    11     USE ifile_attr
    12     USE ixml_tree
     4    USE lmdz_xios
    135
    146    !Variables disponibles pendant toute l'execution du programme:
     
    159151        g_ctx = xios_ctx
    160152
     153        CALL wxios_add_group_init
     154       
    161155        IF (prt_level >= 10) THEN
    162156          WRITE(lunout,*) "wxios_context_init: Current context is ",trim(g_ctx_name)
     
    168162    END SUBROUTINE wxios_context_init
    169163
     164
     165   
     166    SUBROUTINE wxios_add_group_init
     167
     168      ! routine create by Anne Cozic (2023)
     169      ! This routine will create field associated to group defined without description of fields in field.xml file
     170      ! This routine need to be call before "xios_sole_inheritance" after an !$OMP MASTER directive
     171     
     172      USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, ntiso
     173      USE strings_mod,  ONLY: maxlen
     174
     175      IMPLICIT NONE
     176
     177      TYPE(xios_fieldgroup) :: group_handle, philev_hdl
     178      TYPE(xios_field) :: child
     179      INTEGER :: k, iq
     180      CHARACTER(len=12) :: nvar, name_phi   
     181      CHARACTER(LEN=maxlen) :: varname, dn
     182      CHARACTER(LEN=maxlen) :: unt
     183   
     184
     185      ! group create for StratAER variables
     186      !On ajoute les variables 3D traceurs par l interface fortran
     187      CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
     188      ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
     189      DO iq = 1, nqtot
     190         IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     191         dn = 'd'//TRIM(tracers(iq)%name)//'_'
     192
     193         unt = "kg kg-1"
     194         varname=trim(tracers(iq)%name)
     195         CALL xios_add_child(group_handle, child, varname)
     196         CALL xios_set_attr(child, name=varname, unit=unt)
     197         
     198         unt = "kg kg-1 s-1"
     199         varname=TRIM(dn)//'vdf'
     200         CALL xios_add_child(group_handle, child, varname)
     201         CALL xios_set_attr(child, name=varname, unit=unt)
     202         varname=TRIM(dn)//'the'
     203         CALL xios_add_child(group_handle, child, varname)
     204         CALL xios_set_attr(child, name=varname, unit=unt)
     205         varname=TRIM(dn)//'con'
     206         CALL xios_add_child(group_handle, child, varname)
     207         CALL xios_set_attr(child, name=varname, unit=unt)
     208         varname=TRIM(dn)//'lessi_impa'
     209         CALL xios_add_child(group_handle, child, varname)
     210         CALL xios_set_attr(child, name=varname, unit=unt)
     211         varname=TRIM(dn)//'lessi_nucl'
     212         CALL xios_add_child(group_handle, child, varname)
     213         CALL xios_set_attr(child, name=varname, unit=unt)
     214         varname=TRIM(dn)//'insc'
     215         CALL xios_add_child(group_handle, child, varname)
     216         CALL xios_set_attr(child, name=varname, unit=unt)
     217         varname=TRIM(dn)//'bcscav'
     218         CALL xios_add_child(group_handle, child, varname)
     219         CALL xios_set_attr(child, name=varname, unit=unt)
     220         varname=TRIM(dn)//'evapls'
     221         CALL xios_add_child(group_handle, child, varname)
     222         CALL xios_set_attr(child, name=varname, unit=unt)
     223         varname=TRIM(dn)//'ls'
     224         CALL xios_add_child(group_handle, child, varname)
     225         CALL xios_set_attr(child, name=varname, unit=unt)
     226         varname=TRIM(dn)//'trsp'
     227         CALL xios_add_child(group_handle, child, varname)
     228         CALL xios_set_attr(child, name=varname, unit=unt)
     229         varname=TRIM(dn)//'sscav'
     230         CALL xios_add_child(group_handle, child, varname)
     231         CALL xios_set_attr(child, name=varname, unit=unt)
     232         varname=TRIM(dn)//'sat'
     233         CALL xios_add_child(group_handle, child, varname)
     234         CALL xios_set_attr(child, name=varname, unit=unt)
     235         varname=TRIM(dn)//'uscav'
     236         CALL xios_add_child(group_handle, child, varname)
     237         CALL xios_set_attr(child, name=varname, unit=unt)
     238      END DO
     239      !On ajoute les variables 2D traceurs par l interface fortran
     240      CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
     241      ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
     242      DO iq = 1, nqtot
     243         IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     244         
     245         unt = "kg m-2"
     246         varname='cum'//trim(tracers(iq)%name)
     247         
     248         CALL xios_add_child(group_handle, child, varname)
     249         CALL xios_set_attr(child, name=varname, unit=unt)
     250         
     251         unt = "kg m-2 s-1"
     252         varname='cumd'//trim(tracers(iq)%name)//'_dry'
     253         CALL xios_add_child(group_handle, child, varname)
     254         CALL xios_set_attr(child, name=varname, unit=unt)
     255      ENDDO
     256     
     257
     258      ! group create for offline mass flow variables
     259      CALL xios_get_handle("philev_grp", philev_hdl)
     260
     261      DO k=1,79
     262         IF (k<10) THEN
     263            WRITE(nvar,'(i1)') k
     264         ELSE IF (k<100) THEN
     265            WRITE(nvar,'(i2)') k
     266         ELSE
     267            WRITE(nvar,'(i3)') k
     268         END IF
     269         name_phi= "phi_lev"//TRIM(nvar)
     270         CALL xios_add_child(philev_hdl, child, "phi_lev"//TRIM(nvar))
     271         CALL xios_set_attr(child, name=trim(name_phi))
     272      ENDDO
     273
     274
     275    END SUBROUTINE wxios_add_group_init
    170276
    171277    SUBROUTINE wxios_set_context()
     
    297403       
    298404        !On récupère le handle:
    299         CALL xios_get_domain_handle(dom_id, dom)
     405        CALL xios_get_handle(dom_id, dom)
    300406       
    301407        !On parametrise le domaine:
    302         CALL xios_set_domain_attr_hdl(dom, ni_glo=nbp_lon, ibegin=0, ni=nbp_lon, type="rectilinear")
    303         CALL xios_set_domain_attr_hdl(dom, nj_glo=nbp_lat, jbegin=jj_begin-1, nj=jj_nb, data_dim=2)
    304         CALL xios_set_domain_attr_hdl(dom, lonvalue_1d=io_lon(1:nbp_lon), latvalue_1d=io_lat(jj_begin:jj_end))
     408        CALL xios_set_attr(dom, ni_glo=nbp_lon, ibegin=0, ni=nbp_lon, type="rectilinear")
     409        CALL xios_set_attr(dom, nj_glo=nbp_lat, jbegin=jj_begin-1, nj=jj_nb, data_dim=2)
     410        CALL xios_set_attr(dom, lonvalue_1d=io_lon(1:nbp_lon), latvalue_1d=io_lat(jj_begin:jj_end))
    305411        CALL xios_set_domain_attr("dom_out", domain_ref=dom_id)
    306412
     
    324430              WRITE(lunout,*) "wxios_domain_param: mpirank=",mpi_rank," mask(:,jj_nb)=",mask(:,jj_nb)
    325431            ENDIF
    326             CALL xios_set_domain_attr_hdl(dom, mask_2d=mask)
    327         END IF
    328 
    329          CALL xios_is_defined_domain_attr_hdl(dom,ni_glo=boool)
     432            CALL xios_set_attr(dom, mask_2d=mask)
     433        END IF
     434
     435         CALL xios_is_defined_attr(dom,ni_glo=boool)
    330436        !Vérification:
    331437        IF (xios_is_valid_domain(dom_id)) THEN
     
    366472
    367473!$OMP MASTER
    368         CALL xios_get_domain_handle(dom_id, dom)
     474        CALL xios_get_handle(dom_id, dom)
    369475       
    370476        !On parametrise le domaine:
     
    466572        IF (.NOT.xios_is_valid_file(fname)) THEN
    467573            !On créé le noeud:
    468             CALL xios_get_filegroup_handle("defile", x_fg)
    469             CALL xios_add_file(x_fg, x_file, fname)
     574            CALL xios_get_handle("defile", x_fg)
     575            CALL xios_add_child(x_fg, x_file, fname)
    470576       
    471577            !On reformate la fréquence:
     
    473579       
    474580            !On configure:
    475             CALL xios_set_file_attr_hdl(x_file, name="X"//fname,&
     581            CALL xios_set_attr(x_file, name="X"//fname,&
    476582                output_freq=nffreq, output_level=flvl, enabled=.TRUE.)
    477583       
     
    522628       
    523629        !On ajoute le champ:
    524         CALL xios_add_field(fieldgroup, field, fieldname)
     630        CALL xios_add_child(fieldgroup, field, fieldname)
    525631        !IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: ",fieldname,fieldgroup, fieldlongname, fieldunit
    526632       
    527633        !On rentre ses paramètres:
    528         CALL xios_set_field_attr_hdl(field, standard_name=fieldlongname, unit=newunit, default_value=def)
     634        CALL xios_set_attr(field, standard_name=fieldlongname, unit=newunit, default_value=def)
    529635        IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: Field ",trim(fieldname), "cree:"
    530636        IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: long_name=",trim(fieldlongname),"; unit=",trim(newunit),";  default_value=",nf90_fill_real
     
    577683        !On selectionne le bon groupe de champs:
    578684        IF (fdim.EQ.2) THEN
    579           CALL xios_get_fieldgroup_handle("fields_2D", fieldgroup)
     685          CALL xios_get_handle("fields_2D", fieldgroup)
    580686        ELSE
    581           CALL xios_get_fieldgroup_handle("fields_3D", fieldgroup)
     687          CALL xios_get_handle("fields_3D", fieldgroup)
    582688        ENDIF
    583689       
     
    608714            !Champ existe déjà, mais pas XML, alors on l'ajoute
    609715            !On ajoute le champ:
    610             CALL xios_get_file_handle(fname, f)
    611             CALL xios_add_fieldtofile(f, field)
     716            CALL xios_get_handle(fname, f)
     717            CALL xios_add_child(f, field)
    612718           
    613719           
    614720            !L'operation, sa frequence:
    615721            freq_op%timestep=1
    616             CALL xios_set_field_attr_hdl(field, field_ref=fieldname, operation=TRIM(ADJUSTL(operation)), freq_op=freq_op, prec=4)
     722            CALL xios_set_attr(field, field_ref=fieldname, operation=TRIM(ADJUSTL(operation)), freq_op=freq_op, prec=4)
    617723
    618724           
    619725            !On rentre ses paramètres:
    620             CALL xios_set_field_attr_hdl(field, level=field_level, enabled=.TRUE.)
     726            CALL xios_set_attr(field, level=field_level, enabled=.TRUE.)
    621727           
    622728            IF (fdim.EQ.2) THEN
     
    630736                !Si 3D :
    631737                !On ajoute l'axe vertical qui va bien:
    632                 CALL xios_set_field_attr_hdl(field, axis_ref=TRIM(ADJUSTL(axis_id)))
     738                CALL xios_set_attr(field, axis_ref=TRIM(ADJUSTL(axis_id)))
    633739               
    634740                IF (prt_level >= 10) THEN
     
    678784     END SUBROUTINE wxios_close
    679785END MODULE wxios
    680 #endif
     786
Note: See TracChangeset for help on using the changeset viewer.