Ignore:
Timestamp:
Aug 2, 2013, 4:36:53 PM (11 years ago)
Author:
Ehouarn Millour
Message:

Première étape de l'implémentation de XIOS. Modifications isolées dans des flags CPP_XIOS. Sorties opérationnelles (sauf stations et régionalisation) en modes séquentiel et omp, pas mpi.
UG
...........................................
First step of the XIOS implementation. Modifications are confined into CPP_XIOS flags. Output is operationnal (except for stations and regionalization) in sequential and omp modes (not mpi).
UG

File:
1 edited

Legend:

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

    r1821 r1825  
    55
    66  USE phys_output_var_mod
     7
     8#ifdef CPP_XIOS
     9  USE wxios
     10#endif
    711
    812! abd  REAL,private,allocatable,DIMENSION(:),save :: io_lat
     
    2226
    2327  INTERFACE histbeg_phy_all
    24     MODULE PROCEDURE histbeg_phy,histbeg_phy_points
     28    MODULE PROCEDURE histbeg_phy,histbeg_phyxios,histbeg_phy_points
    2529  END INTERFACE
    2630
     
    4044  USE mod_grid_phy_lmdz
    4145  USE ioipsl
     46 
    4247  IMPLICIT NONE
    4348  INCLUDE 'dimensions.h'   
     
    8994    CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
    9095                      'APPLE',phys_domain_id)
    91 
     96#ifdef CPP_XIOS
     97    !On initialise le domaine xios, maintenant que tout est connu:
     98    CALL wxios_domain_param("dom_glo", is_sequential, iim, jjm+1, io_lat, io_lon)
     99#endif
    92100!$OMP END MASTER
    93101     
     
    135143     
    136144  end SUBROUTINE init_iophy
     145
     146 SUBROUTINE histbeg_phyxios(name,itau0,zjulian,dtime,ffreq,lev,nhori,nid_day)
     147  USE dimphy
     148  USE mod_phys_lmdz_para
     149  use ioipsl
     150  use write_field
     151  IMPLICIT NONE
     152  include 'dimensions.h'
     153   
     154    character*(*), INTENT(IN) :: name
     155    integer, INTENT(IN) :: itau0
     156    REAL,INTENT(IN) :: zjulian
     157    REAL,INTENT(IN) :: dtime
     158    character(LEN=*), INTENT(IN) :: ffreq
     159    INTEGER,INTENT(IN) :: lev
     160    integer,intent(out) :: nhori
     161    integer,intent(out) :: nid_day
     162
     163!$OMP MASTER   
     164    if (is_sequential) then
     165      call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), &
     166                   1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day)
     167    else
     168      call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), &
     169                   1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id)
     170    endif
     171
     172#ifdef CPP_XIOS
     173    ! ug OMP en chantier...
     174    IF((.NOT. is_using_mpi) .OR. is_mpi_root) THEN
     175        ! ug Création du fichier
     176        CALL wxios_add_file(name, ffreq, lev)
     177    END IF
     178#endif
     179!$OMP END MASTER
     180 
     181  END SUBROUTINE histbeg_phyxios
    137182 
    138183  SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)
     
    159204                   1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id)
    160205    endif
     206
    161207!$OMP END MASTER
    162208 
    163209  END SUBROUTINE histbeg_phy
     210
    164211
    165212  SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &
     
    487534
    488535    IF(.NOT.clef_stations(iff)) THEN 
     536#ifdef CPP_XIOS
     537        CALL wxios_add_field_to_file(var%name, 2, nid_files(iff), phys_out_filenames(iff), &
     538        var%description, var%unit, var%flag(iff), typeecrit)
     539#endif
     540
    489541       IF ( var%flag(iff)<=lev_files(iff) ) THEN
    490542          CALL histdef (nid_files(iff), var%name, var%description, var%unit, &
     
    550602
    551603    IF(.NOT.clef_stations(iff)) THEN
     604#ifdef CPP_XIOS
     605        CALL wxios_add_field_to_file(var%name, 3, nid_files(iff), phys_out_filenames(iff), &
     606        var%description, var%unit, var%flag(iff), typeecrit)
     607#endif
     608
    552609       IF ( var%flag(iff)<=lev_files(iff) ) THEN
    553610          CALL histdef (nid_files(iff), var%name, var%description, var%unit, &
     
    734791
    735792#ifdef CPP_XIOS
    736 !  USE WXIOS
     793  USE wxios
    737794#endif
     795
    738796
    739797  IMPLICIT NONE
     
    794852                        CALL histwrite(nid_files(iff),var%name,itau_iophy,Field2d,iim*jj_nb,index2d)
    795853#ifdef CPP_XIOS
    796 !                        IF (iff .EQ. 1) THEN
    797 !                              CALL wxios_write_2D(var%name, Field2d)
    798 !                        ENDIF
     854                        IF (iff == iff_beg) THEN
     855                              CALL wxios_write_2D(var%name, Field2d)
     856                        ENDIF
    799857#endif
    800858                  ELSE
     
    887945                        ALLOCATE(fieldok(iim*jj_nb,nlev))
    888946                        CALL histwrite(nid_files(iff),var%name,itau_iophy,Field3d,iim*jj_nb*nlev,index3d)
     947
    889948#ifdef CPP_XIOS
    890 !                        IF (iff .EQ. 1) THEN
    891 !                              CALL wxios_write_3D(var%name, Field3d(:,:,1:klev))
    892 !                        ENDIF
     949                        IF (iff == 1) THEN
     950                              CALL wxios_write_3D(var%name, Field3d(:,:,1:klev))
     951                        ENDIF
    893952#endif
    894953                       
Note: See TracChangeset for help on using the changeset viewer.