Ignore:
Timestamp:
Oct 6, 2008, 11:11:53 AM (16 years ago)
Author:
Laurent Fairhead
Message:
  • Modifs sur le parallelisme: masquage dans la physique
  • Inclusion strato
  • mise en coherence etat0
  • le mode offline fonctionne maintenant en parallele,
  • les fichiers de la dynamiques sont correctement sortis et peuvent etre reconstruit avec rebuild
  • la version parallele de la dynamique peut s'executer sans MPI (sur 1 proc)
  • L'OPENMP fonctionne maintenant sans la parallelisation MPI.

YM
LF

File:
1 edited

Legend:

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

    r931 r1001  
    1616  INTERFACE histwrite_phy
    1717    MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy
    18   END INTERFACE
     18  END INTERFACE
     19
    1920
    2021contains
     22
     23  subroutine init_iophy_new(rlat,rlon)
     24  USE dimphy
     25  USE mod_phys_lmdz_para
     26  USE mod_grid_phy_lmdz
     27  USE ioipsl
     28  implicit none
     29  include 'dimensions.h'   
     30    real,dimension(klon),intent(in) :: rlon
     31    real,dimension(klon),intent(in) :: rlat
     32
     33    REAL,dimension(klon_glo)        :: rlat_glo
     34    REAL,dimension(klon_glo)        :: rlon_glo
     35   
     36    INTEGER,DIMENSION(2) :: ddid
     37    INTEGER,DIMENSION(2) :: dsg
     38    INTEGER,DIMENSION(2) :: dsl
     39    INTEGER,DIMENSION(2) :: dpf
     40    INTEGER,DIMENSION(2) :: dpl
     41    INTEGER,DIMENSION(2) :: dhs
     42    INTEGER,DIMENSION(2) :: dhe
     43    INTEGER :: i   
     44
     45    CALL gather(rlat,rlat_glo)
     46    CALL bcast(rlat_glo)
     47    CALL gather(rlon,rlon_glo)
     48    CALL bcast(rlon_glo)
     49   
     50!$OMP MASTER 
     51    ALLOCATE(io_lat(jjm+1-1/iim))
     52    io_lat(1)=rlat_glo(1)
     53    io_lat(jjm+1-1/iim)=rlat_glo(klon_glo)
     54    IF (iim > 1) then
     55      DO i=2,jjm
     56        io_lat(i)=rlat_glo(2+(i-2)*iim)
     57      ENDDO
     58    ENDIF
     59
     60    ALLOCATE(io_lon(iim))
     61    io_lon(:)=rlon_glo(2-1/iim:iim+1-1/iim)
     62
     63
     64    allocate(tmp_tab2d(iim,jj_nb))
     65    allocate(tmp_tab3d(iim,jj_nb,klev))
     66    allocate(ndex2d(iim*jj_nb))
     67    allocate(ndex3d(iim*jj_nb*klev))
     68    ndex2d(:)=0
     69    ndex3d(:)=0
     70   
     71    ddid=(/ 1,2 /)
     72    dsg=(/ iim, jjm+1-1/iim /)
     73    dsl=(/ iim, jj_nb /)
     74    dpf=(/ 1,jj_begin /)
     75    dpl=(/ iim, jj_end /)
     76    dhs=(/ ii_begin-1,0 /)
     77    if (mpi_rank==mpi_size-1) then
     78      dhe=(/0,0/)
     79    else
     80      dhe=(/ iim-ii_end,0 /) 
     81    endif
     82   
     83    call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
     84                      'APPLE',phys_domain_id)
     85
     86!$OMP END MASTER
     87     
     88  end subroutine init_iophy_new
    2189
    2290  subroutine init_iophy(lat,lon)
     
    139207 
    140208 
    141 !  subroutine phy2dyn(field_phy,field_dyn,nlev)
    142 !  USE dimphy_old
    143 !  implicit none
    144 !  include 'dimensions.h'
    145 
    146 !    real,dimension(klon_mpi,nlev),intent(in) :: field_phy
    147 !    real,dimension(iim,jjphy_nb,nlev),intent(out) :: field_dyn
    148 !    integer,intent(in) :: nlev
    149 !   
    150 !    integer :: next
    151 !    integer :: j,l
    152 !   
    153 !      do l=1,nlev
    154 !               
    155 !       if (jjphy_begin==jjphy_end) then
    156 !         field_dyn(:,1,l)=0.
    157 !         field_dyn(iiphy_begin:iiphy_end,1,l)=field_phy(1:klon_mpi,l)
    158 !       else
    159 !       
    160 !        if (jjphy_begin==1) then
    161 !           field_dyn(:,1,l)=field_phy(1,l)
    162 !           next=2
    163 !        else
    164 !          field_dyn(:,1,l)=0.
    165 !          next=iim-iiphy_begin+2
    166 !          field_dyn(iiphy_begin:iim,1,l)=field_phy(1:next-1,l)   
    167 !        endif
    168 !       
    169 !         do j=2,jjphy_nb-1
    170 !           field_dyn(:,j,l)=field_phy(next:next+iim-1,l)
    171 !           next=next+iim
    172 !         enddo
    173 !         
    174 !         if (jjphy_end==jjm+1-1/iim) then
    175 !             field_dyn(:,jjphy_nb,l)=field_phy(klon_mpi,l)
    176 !         else
    177 !          field_dyn(:,jjphy_nb,l)=0.
    178 !          field_dyn(1:iiphy_end,jjphy_nb,l)=field_phy(next:next+iiphy_end-1,l)   
    179 !         endif
    180 !         
    181 !       endif
    182 !     
    183 !     enddo
    184 !       
    185 !    end subroutine phy2dyn         
    186  
    187          
     209
    188210end module iophy
Note: See TracChangeset for help on using the changeset viewer.