Changeset 384 for XIOS/trunk/src/test


Ignore:
Timestamp:
10/25/12 10:12:20 (12 years ago)
Author:
ymipsl
Message:

Cartesian/Regular? grid are now working correctly.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/test/test_cs.f90

    r369 r384  
    1010  CALL MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr) 
    1111   
    12   IF (rank<7) THEN 
    13    CALL client("client",rank,7) 
     12  IF (rank<11) THEN 
     13   CALL client("client",rank,11) 
    1414  ELSE  
    1515    CALL server 
     
    4343  DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 
    4444  DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm) 
    45   DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), lonvalue(:) ; 
    46   INTEGER :: ni,ibegin,iend,nj,jbegin,jend 
    47   INTEGER :: i,j,l,ts,n 
     45  DOUBLE PRECISION,ALLOCATABLE :: lon(:),lat(:),field_A(:,:), lonvalue(:) ; 
     46  LOGICAL,ALLOCATABLE :: mask(:,:) 
     47  INTEGER :: ni,ibegin,iend,nj,jbegin,jend,data_ibegin,data_ni 
     48  INTEGER :: i,j,k,l,ts,n,nij_begin 
     49   
    4850   
    4951  CALL init_wait 
     
    6163  ni=ni_glo ; ibegin=1 
    6264 
    63   jbegin=1 
     65   
     66  nij_begin=1 
    6467  DO n=0,size-1 
    65     nj=nj_glo/size 
    66     IF (n<MOD(nj_glo,size)) nj=nj+1 
    67     IF (n==rank) exit  
    68     jbegin=jbegin+nj 
     68    data_ni=(ni_glo*nj_glo)/size 
     69    IF (n < MOD (ni_glo*nj_glo,size)) data_ni=data_ni+1 
     70    IF (n==rank) THEN 
     71      ibegin=1 ; iend=ni_glo ; ni=iend-ibegin+1 
     72      jbegin=(nij_begin-1)/ni_glo +1  
     73      jend=MOD(nij_begin-1 + data_ni-1,ni_glo) +1 
     74      nj = jend-jbegin+1 
     75      data_ibegin=MOD(nij_begin-1,ni_glo) 
     76      exit 
     77    ELSE 
     78      nij_begin=nij_begin+data_ni 
     79    ENDIF 
    6980  ENDDO 
    7081   
    71   iend=ibegin+ni-1 ; jend=jbegin+nj-1 
    7282 
    73   ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2,llm),lonvalue(ni*nj)) 
    74   lon(:,:)=lon_glo(ibegin:iend,jbegin:jend) 
    75   lat(:,:)=lat_glo(ibegin:iend,jbegin:jend) 
    76   field_A(1:ni,1:nj,:)=field_A_glo(ibegin:iend,jbegin:jend,:) 
     83  ALLOCATE(lon(ni),lat(nj),field_A(data_ni,llm),lonvalue(ni*nj)) 
     84  ALLOCATE(mask(ni,nj)) 
     85  lon(:)=lon_glo(ibegin:iend,1) 
     86  lat(:)=lat_glo(1,jbegin:jend) 
     87 
     88  DO k=1,data_ni 
     89    n=k-1+(jbegin-1)*ni_glo+data_ibegin 
     90    i=MOD(n,ni_glo)+1 
     91    j=n/ni_glo+1 
     92    field_A(k,:)=field_A_glo(i,j,:) 
     93  ENDDO 
     94   
     95  mask(:,:)=.TRUE. 
     96  mask(1:ni,6)=.TRUE. 
    7797   
    7898 
     
    89109  CALL xios_set_context_attr("test",calendar_type="Gregorian")  
    90110  CALL xios_set_axis_attr("axis_A",size=llm ,value=lval) ; 
    91   CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj) 
    92 !  CALL xios_set_domain_attr("domain_A",zoom_ni=10,zoom_ibegin=5,zoom_nj=20,zoom_jbegin=10) 
    93   CALL xios_set_domain_attr("domain_A",data_dim=2, data_ibegin=-1, data_ni=ni+2, data_jbegin=-2, data_nj=nj+4) 
    94   CALL xios_set_domain_attr("domain_A",lonvalue=RESHAPE(lon,(/ni*nj/)),latvalue=RESHAPE(lat,(/ni*nj/))) 
     111  CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, iend=iend,jbegin=jbegin,jend=jend) 
     112!  CALL xios_set_domain_attr("domain_A",zoom_ni=10,zoom_ibegin=5,zoom_nj=nj_glo,zoom_jbegin=1) 
     113  CALL xios_set_domain_attr("domain_A",data_dim=1, data_ibegin=data_ibegin, data_ni=data_ni) 
     114  CALL xios_set_domain_attr("domain_A",lonvalue=lon,latvalue=lat) 
     115!  CALL xios_set_domain_attr("domain_A",mask=mask) 
    95116  CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 
    96117   
     
    107128    CALL xios_set_timestep(dtime)  
    108129     
    109     ni=0 ; lonvalue(:)=0 
    110     CALL xios_get_domain_attr("domain_A",ni=ni,lonvalue=lonvalue) 
     130!    ni=0 ; lonvalue(:)=0 
     131!    CALL xios_get_domain_attr("domain_A",ni=ni,lonvalue=lonvalue) 
    111132     
    112     print *,"ni",ni 
    113     print *,"lonvalue",lonvalue ; 
     133!    print *,"ni",ni 
     134!    print *,"lonvalue",lonvalue ; 
    114135 
    115136    CALL xios_close_context_definition() 
Note: See TracChangeset for help on using the changeset viewer.