Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90

    r17 r29  
    33  USE mod_sorted_list 
    44  USE mod_domain 
     5  USE mod_zoom 
     6 
    57  IMPLICIT NONE 
    68 
     
    1921    INTEGER                     :: nj 
    2022    LOGICAL                     :: has_dimension 
     23    TYPE(vector_zoom),POINTER   :: associated_zoom 
     24    TYPE(zoom),POINTER          :: global_zoom 
    2125  END TYPE grid 
    2226 
     
    2933  INCLUDE 'vector_grid_contains.inc' 
    3034 
     35  SUBROUTINE grid__swap_context(saved_grid_Ids,saved_Ids) 
     36  IMPLICIT NONE 
     37    TYPE(vector_grid),POINTER          :: saved_grid_Ids 
     38    TYPE(sorted_list),POINTER          :: saved_Ids  
     39     
     40    grid_ids=>saved_grid_ids 
     41    ids=>saved_ids 
     42  END SUBROUTINE grid__swap_context 
     43   
     44   
    3145  SUBROUTINE grid__init 
    3246  IMPLICIT NONE 
    33      
    34     ALLOCATE(grid_Ids) 
    35     ALLOCATE(Ids) 
    3647     
    3748    CALL vector_grid__new(grid_Ids) 
     
    6879   ALLOCATE(pt_grid%subdomain) 
    6980   ALLOCATE(pt_grid%rank_ids) 
     81   ALLOCATE(pt_grid%associated_zoom) 
     82    
    7083   CALL domain__new(pt_grid%domain) 
    7184   CALL vector_domain__new(pt_grid%subdomain) 
    7285   CALL sorted_list__new(pt_grid%rank_ids) 
     86   CALL vector_zoom__new(pt_grid%associated_zoom) 
    7387    
    7488   pt_grid%has_id          = .FALSE. 
     
    8397     CALL sorted_list__Add(Ids,hash(id),Pos) 
    8498   ENDIF 
     99    
     100   CALL grid__get_new_zoom(pt_grid,pt_grid%global_zoom,id) 
    85101 
    86102 END SUBROUTINE grid__new 
     
    153169    TYPE(grid), POINTER  :: pt_grid 
    154170    TYPE(domain),POINTER :: subdomain 
     171    TYPE(zoom),POINTER :: pt_zoom 
    155172     
    156173    REAL,ALLOCATABLE :: lon(:,:) 
    157174    REAL,ALLOCATABLE :: lat(:,:) 
    158     INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin 
     175    INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin,iend,jend 
    159176    INTEGER :: i 
    160177     
     
    196213       
    197214      CALL domain__set(pt_grid%domain,0,ni,nj,ibegin,jbegin,lon,lat) 
    198  
    199        
     215      iend=ibegin+ni-1 
     216      jend=jbegin+nj-1 
     217       
     218       
     219      pt_grid%global_zoom%ni_glo=pt_grid%ni 
     220      pt_grid%global_zoom%nj_glo=pt_grid%nj 
     221      pt_grid%global_zoom%ibegin_glo=1       
     222      pt_grid%global_zoom%jbegin_glo=1 
     223       
     224      DO i=1,pt_grid%associated_zoom%size 
     225        pt_zoom=>pt_grid%associated_zoom%at(i)%pt 
     226         
     227        ib=MAX(pt_zoom%ibegin_glo-ibegin+1,1) 
     228        ie=MIN(pt_zoom%ibegin_glo+pt_zoom%ni_glo-ibegin,ni) 
     229        pt_zoom%ni_loc=MAX(ie-ib+1,0) 
     230        pt_zoom%ibegin_loc=ib 
     231 
     232        jb=MAX(pt_zoom%jbegin_glo-jbegin+1,1) 
     233        je=MIN(pt_zoom%jbegin_glo+pt_zoom%nj_glo-jbegin,nj) 
     234        pt_zoom%nj_loc=MAX(je-jb+1,0) 
     235        pt_zoom%jbegin_loc=jb 
     236      ENDDO 
     237                  
     238             
    200239      DEALLOCATE(lon) 
    201240      DEALLOCATE(lat) 
     
    204243       
    205244             
    206          
     245  SUBROUTINE grid__get_new_zoom(pt_grid,pt_zoom,zoom_id) 
     246  USE string_function 
     247  IMPLICIT NONE 
     248    TYPE(grid), POINTER                      :: pt_grid 
     249    TYPE(zoom),POINTER                       :: pt_zoom 
     250    CHARACTER(LEN=*),INTENT(IN),OPTIONAL     :: zoom_id 
     251    LOGICAL                                  :: success 
     252     
     253     CALL vector_zoom__get_new(pt_grid%associated_zoom,Pt_zoom) 
     254     CALL zoom__new(Pt_zoom,zoom_id) 
     255     
     256   END SUBROUTINE grid__get_new_zoom 
     257      
    207258  SUBROUTINE grid__print(pt_grid) 
    208259  IMPLICIT NONE 
Note: See TracChangeset for help on using the changeset viewer.