Ignore:
Timestamp:
12/07/22 18:42:46 (19 months ago)
Author:
ymipsl
Message:

Add bounds management for rectilinear domain.
First try.
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS2/trunk/src/test/generic_testcase.f90

    r2348 r2440  
    14151415    INTEGER :: nbp,nbp_glo, offset 
    14161416    DOUBLE PRECISION, ALLOCATABLE :: lon_glo(:), lat_glo(:), lon(:), lat(:) 
     1417    DOUBLE PRECISION, ALLOCATABLE :: bounds_lon_glo(:,:), bounds_lat_glo(:,:), bounds_lon(:,:), bounds_lat(:,:) 
    14171418    LOGICAL,ALLOCATABLE :: mask(:) 
    14181419    LOGICAL,ALLOCATABLE :: dom_mask(:) 
     
    14441445     
    14451446    ALLOCATE(lon(0:ni-1), lat(0:nj-1), mask(0:ni*nj-1), dom_mask(0:ni*nj-1)) 
     1447    ALLOCATE(bounds_lon(2,0:ni-1), bounds_lat(2,0:nj-1)) 
    14461448    mask(:)=.FALSE. 
    14471449    mask(offset:offset+nbp-1)=.TRUE. 
    14481450     
    14491451    ALLOCATE(lon_glo(0:ni_glo-1), lat_glo(0:nj_glo-1)) 
    1450      
     1452    ALLOCATE(bounds_lon_glo(2,0:ni_glo-1), bounds_lat_glo(2,0:nj_glo-1)) 
     1453 
    14511454    DO i=0,ni_glo-1 
    14521455      lon_glo(i)=-180+(i+0.5)*(360./ni_glo) 
    14531456    ENDDO 
    14541457 
     1458    DO i=0,ni_glo-1 
     1459      IF (i==0) THEN 
     1460        bounds_lon_glo(1,0) = (lon_glo(ni_glo-1)-360 + lon_glo(i))/2 
     1461      ELSE 
     1462        bounds_lon_glo(1,i)=(lon_glo(i-1) + lon_glo(i))/2 
     1463      ENDIF 
     1464      IF (i==ni_glo-1) THEN 
     1465        bounds_lon_glo(2,ni_glo-1) = (lon_glo(ni_glo-1) + lon_glo(0)+360)/2 
     1466      ELSE 
     1467        bounds_lon_glo(2,i)=(lon_glo(i+1) + lon_glo(i))/2 
     1468      ENDIF 
     1469    ENDDO 
     1470 
    14551471    DO j=0,nj_glo-1 
    14561472      lat_glo(j)=-90+(j+0.5)*(180./nj_glo) 
    14571473    ENDDO 
    1458       
     1474   
     1475    DO j=0,nj_glo-1 
     1476      IF (j==0) THEN 
     1477        bounds_lat_glo(1,0) = -90 
     1478      ELSE 
     1479        bounds_lat_glo(1,j)=(lat_glo(j-1) + lat_glo(j))/2 
     1480      ENDIF 
     1481      IF (j==nj_glo-1) THEN 
     1482        bounds_lat_glo(2,nj_glo-1) = 90 
     1483      ELSE 
     1484        bounds_lat_glo(2,j)=(lat_glo(j+1) + lat_glo(j))/2 
     1485      ENDIF 
     1486    ENDDO 
     1487 
    14591488    lon(:)=lon_glo(:) 
    14601489    lat(:)=lat_glo(jbegin:jbegin+nj-1) 
     1490    bounds_lon(:,:)=bounds_lon_glo(:,:) 
     1491    bounds_lat(:,:)=bounds_lat_glo(:,jbegin:jbegin+nj-1) 
    14611492 
    14621493    ALLOCATE(return_lon(0:ni*nj-1)) 
     
    15091540                                jbegin=jbegin, nj=nj) 
    15101541      CALL xios_set_domain_attr(TRIM(domain_id), data_dim=2, lonvalue_1d=lon, latvalue_1d=lat, mask_1d=return_mask) 
     1542      CALL xios_set_domain_attr(TRIM(domain_id), bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    15111543    ENDIF 
    15121544     
Note: See TracChangeset for help on using the changeset viewer.