Changeset 4727 for LMDZ6/branches/LMDZ_ECRad/libf/misc
- Timestamp:
- Oct 19, 2023, 4:02:57 PM (9 months ago)
- Location:
- LMDZ6/branches/LMDZ_ECRad
- Files:
-
- 3 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ_ECRad
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ_ECRad/libf/misc/readTracFiles_mod.f90
r4482 r4727 114 114 !--- SOME PARAMETERS THAT ARE NOT LIKELY TO CHANGE OFTEN 115 115 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 initials116 CHARACTER(LEN=maxlen), PARAMETER :: old_phases = 'vlirb' !--- Old phases for water (no separator) 117 CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsrb' !--- Known phases initials 118 118 INTEGER, PARAMETER :: nphases = LEN_TRIM(known_phases) !--- Number of phases 119 119 CHARACTER(LEN=maxlen), SAVE :: phases_names(nphases) & !--- Known phases names 120 = ['gaseous', 'liquid ', 'solid ', 'cloud']120 = ['gaseous', 'liquid ', 'solid ', 'cloud ','blosno '] 121 121 CHARACTER(LEN=1), SAVE :: phases_sep = '_' !--- Phase separator 122 122 LOGICAL, SAVE :: tracs_merge = .TRUE. !--- Merge/stack tracers lists -
LMDZ6/branches/LMDZ_ECRad/libf/misc/wxios.F90
r4482 r4727 1 1 ! $Id$ 2 #ifdef CPP_XIOS 2 3 3 MODULE 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 13 5 14 6 !Variables disponibles pendant toute l'execution du programme: … … 159 151 g_ctx = xios_ctx 160 152 153 CALL wxios_add_group_init 154 161 155 IF (prt_level >= 10) THEN 162 156 WRITE(lunout,*) "wxios_context_init: Current context is ",trim(g_ctx_name) … … 168 162 END SUBROUTINE wxios_context_init 169 163 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 170 276 171 277 SUBROUTINE wxios_set_context() … … 297 403 298 404 !On récupère le handle: 299 CALL xios_get_ domain_handle(dom_id, dom)405 CALL xios_get_handle(dom_id, dom) 300 406 301 407 !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)) 305 411 CALL xios_set_domain_attr("dom_out", domain_ref=dom_id) 306 412 … … 324 430 WRITE(lunout,*) "wxios_domain_param: mpirank=",mpi_rank," mask(:,jj_nb)=",mask(:,jj_nb) 325 431 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) 330 436 !Vérification: 331 437 IF (xios_is_valid_domain(dom_id)) THEN … … 366 472 367 473 !$OMP MASTER 368 CALL xios_get_ domain_handle(dom_id, dom)474 CALL xios_get_handle(dom_id, dom) 369 475 370 476 !On parametrise le domaine: … … 466 572 IF (.NOT.xios_is_valid_file(fname)) THEN 467 573 !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) 470 576 471 577 !On reformate la fréquence: … … 473 579 474 580 !On configure: 475 CALL xios_set_ file_attr_hdl(x_file, name="X"//fname,&581 CALL xios_set_attr(x_file, name="X"//fname,& 476 582 output_freq=nffreq, output_level=flvl, enabled=.TRUE.) 477 583 … … 522 628 523 629 !On ajoute le champ: 524 CALL xios_add_ field(fieldgroup, field, fieldname)630 CALL xios_add_child(fieldgroup, field, fieldname) 525 631 !IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: ",fieldname,fieldgroup, fieldlongname, fieldunit 526 632 527 633 !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) 529 635 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: Field ",trim(fieldname), "cree:" 530 636 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: long_name=",trim(fieldlongname),"; unit=",trim(newunit),"; default_value=",nf90_fill_real … … 577 683 !On selectionne le bon groupe de champs: 578 684 IF (fdim.EQ.2) THEN 579 CALL xios_get_ fieldgroup_handle("fields_2D", fieldgroup)685 CALL xios_get_handle("fields_2D", fieldgroup) 580 686 ELSE 581 CALL xios_get_ fieldgroup_handle("fields_3D", fieldgroup)687 CALL xios_get_handle("fields_3D", fieldgroup) 582 688 ENDIF 583 689 … … 608 714 !Champ existe déjà, mais pas XML, alors on l'ajoute 609 715 !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) 612 718 613 719 614 720 !L'operation, sa frequence: 615 721 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) 617 723 618 724 619 725 !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.) 621 727 622 728 IF (fdim.EQ.2) THEN … … 630 736 !Si 3D : 631 737 !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))) 633 739 634 740 IF (prt_level >= 10) THEN … … 678 784 END SUBROUTINE wxios_close 679 785 END MODULE wxios 680 #endif 786
Note: See TracChangeset
for help on using the changeset viewer.