Ignore:
Timestamp:
09/26/16 14:09:01 (8 years ago)
Author:
ymipsl
Message:
  • Add functionnality to input/output field of type U (value on the edges)
  • Management of start/restart files by XIOS

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/xios_mod.F90

    r482 r483  
    1212  INTEGER,SAVE :: ncell_v 
    1313!$OMP THREADPRIVATE(ncell_v) 
    14  
    15   PRIVATE ncell_i,ncell_v 
     14  INTEGER,SAVE :: ncell_e 
     15!$OMP THREADPRIVATE(ncell_e) 
     16 
     17  PRIVATE ncell_i,ncell_v,ncell_e 
    1618 
    1719#ifdef CPP_USING_XIOS 
     
    4446 USE mpi_mod 
    4547 USE time_mod 
    46  USE metric, ONLY : vup,vdown 
     48 USE metric, ONLY : vup,vdown, cell_glo 
    4749 IMPLICIT NONE 
    4850  TYPE(xios_context) :: ctx_hdl 
     
    5153  REAL(rstd) :: lev_valuep1(llm+1) 
    5254  INTEGER :: ncell, ncell_tot, ncell_glo(0:mpi_size-1), displ 
    53   INTEGER :: ind, i,j,k,l 
     55  INTEGER :: ind, i,j,k,l,ij 
    5456  REAL(rstd),ALLOCATABLE    :: lon(:), lat(:), bounds_lon(:,:), bounds_lat(:,:) 
     57  INTEGER, ALLOCATABLE      :: ind_glo(:) 
    5558  TYPE(t_domain),POINTER :: d 
    5659 
     
    6467   CALL xios_set_axis_attr("lev",n_glo=llm ,value=lev_value) ; 
    6568   CALL xios_set_axis_attr("levp1",n_glo=llm+1 ,value=lev_valuep1) ; 
     69   CALL xios_set_axis_attr("nq",n_glo=nqtot) ; 
    6670    
    6771   ncell=0 
     
    8690   ncell_tot=sum(ncell_glo(:)) 
    8791    
    88    ALLOCATE(lon(ncell), lat(ncell), bounds_lon(0:5,ncell), bounds_lat(0:5,ncell))  
     92   ALLOCATE(lon(ncell), lat(ncell), bounds_lon(0:5,ncell), bounds_lat(0:5,ncell), ind_glo(ncell))  
    8993    
    9094   ncell=0 
     
    104108             bounds_lon(k,ncell)=bounds_lon(k,ncell)*180/Pi 
    105109           ENDDO 
     110           ind_glo(ncell)=domain(ind)%assign_cell_glo(i,j)-1  
    106111         ENDIF 
    107112       ENDDO 
     
    109114   ENDDO          
    110115 
    111    
    112116   CALL xios_set_domaingroup_attr("i",ni_glo=ncell_tot, ibegin=displ, ni=ncell) 
    113    CALL xios_set_domaingroup_attr("i", data_dim=1, type='unstructured' , nvertex=6) 
     117   CALL xios_set_domaingroup_attr("i", data_dim=1, type='unstructured' , nvertex=6, i_index=ind_glo) 
    114118   CALL xios_set_domaingroup_attr("i",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    115119    
    116    DEALLOCATE(lon, lat, bounds_lon, bounds_lat)  
     120   DEALLOCATE(lon, lat, bounds_lon, bounds_lat,ind_glo)  
    117121     
     122 
     123 
     124   ncell=0 
     125   DO ind=1,ndomain 
     126     d=>domain(ind) 
     127 
     128     DO j=d%jj_begin,d%jj_end 
     129       DO i=d%ii_begin,d%ii_end 
     130         DO k=0,5 
     131            IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     132                                                                                 .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     133               ncell=ncell+1 
     134            ENDIF 
     135         ENDDO 
     136       ENDDO 
     137     ENDDO 
     138   ENDDO 
     139   ncell_e=ncell 
     140    
     141   CALL MPI_ALLGATHER(ncell_e,1,MPI_INTEGER,ncell_glo,1,MPI_INTEGER,comm_icosa,ierr) 
     142   displ=0 
     143   DO i=1,mpi_rank 
     144     displ=displ+ncell_glo(i-1) 
     145   ENDDO 
     146   ncell_tot=sum(ncell_glo(:)) 
     147    
     148   ALLOCATE(lon(ncell), lat(ncell), bounds_lon(0:1,ncell), bounds_lat(0:1,ncell),ind_glo(ncell))  
     149 
     150 
     151   ncell=0 
     152   DO ind=1,ndomain 
     153     d=>domain(ind) 
     154     CALL swap_dimensions(ind) 
     155     CALL swap_geometry(ind) 
     156 
     157     DO j=d%jj_begin,d%jj_end 
     158       DO i=d%ii_begin,d%ii_end 
     159         DO k=0,5 
     160           IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     161                                                                                 .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     162              ncell=ncell+1 
     163              ij=(j-1)*iim+i 
     164 
     165              lon(ncell)=lon_e(ij+u_pos(k+1))*180/Pi 
     166              lat(ncell)=lat_e(ij+u_pos(k+1))*180/Pi 
     167                
     168              CALL xyz2lonlat(d%vertex(:,MOD((k-1)+6,6),i,j),bounds_lon(0,ncell), bounds_lat(0,ncell)) 
     169              CALL xyz2lonlat(d%vertex(:,k,i,j),bounds_lon(1,ncell), bounds_lat(1,ncell)) 
     170              bounds_lon(:,ncell)=bounds_lon(:,ncell)*180/Pi 
     171              bounds_lat(:,ncell)=bounds_lat(:,ncell)*180/Pi 
     172              ind_glo(ncell)=cell_glo(d%assign_cell_glo(i,j))%edge(MOD(k+d%delta(i,j)+6,6))-1  
     173           ENDIF                
     174         ENDDO 
     175       ENDDO 
     176     ENDDO 
     177   ENDDO 
     178   CALL xios_set_domain_attr("u",ni_glo=ncell_tot, ibegin=displ, ni=ncell) 
     179   CALL xios_set_domain_attr("u", data_dim=1, type='unstructured' , nvertex=2, i_index=ind_glo) 
     180   CALL xios_set_domain_attr("u",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
     181 
     182   DEALLOCATE(lon, lat, bounds_lon, bounds_lat,ind_glo)  
     183 
     184 
    118185   ncell=0 
    119186   DO ind=1,ndomain 
     
    219286   IF (Field(1)%field_type==field_T) THEN 
    220287     IF (field(1)%ndim==2) THEN 
    221         CALL xios_write_field_scalar(name,field,1) 
     288        CALL xios_write_field_scalar(name,field,1,1) 
     289     ELSE IF (field(1)%ndim==3) THEN 
     290        CALL xios_write_field_scalar(name,field,size(field(1)%rval3d,2),1) 
     291     ELSE IF (field(1)%ndim==4) THEN 
     292!        DO iq=1,size(field(1)%rval4d,3) 
     293!          WRITE(str_number,'(i10)') iq 
     294!          CALL xios_write_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq) 
     295          CALL xios_write_field_scalar(name,field,size(field(1)%rval4d,2),size(field(1)%rval4d,3)) 
     296!        ENDDO 
     297     ELSE 
     298        PRINT *, "xios_write_field : dimension > 4 are not supported for now" 
     299     ENDIF 
     300 
     301   ELSE IF (Field(1)%field_type==field_U) THEN 
     302      IF (field(1)%ndim==2) THEN 
     303        CALL xios_write_field_U(name,field,1,1) 
    222304      ELSE IF (field(1)%ndim==3) THEN 
    223         CALL xios_write_field_scalar(name,field,size(field(1)%rval3d,2)) 
     305        CALL xios_write_field_U(name,field,size(field(1)%rval3d,2),1) 
    224306      ELSE IF (field(1)%ndim==4) THEN 
    225         DO iq=1,size(field(1)%rval4d,3) 
    226           WRITE(str_number,'(i10)') iq 
    227           CALL xios_write_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq) 
    228         ENDDO 
     307        CALL xios_write_field_U(name,field,size(field(1)%rval4d,2),size(field(1)%rval4d,3)) 
    229308      ELSE 
    230309        PRINT *, "xios_write_field : dimension > 4 are not supported for now" 
    231310      ENDIF 
     311 
    232312    ELSE IF (Field(1)%field_type==field_Z) THEN 
    233313     IF (field(1)%ndim==2) THEN 
     
    262342   IF (Field(1)%field_type==field_T) THEN 
    263343     IF (field(1)%ndim==2) THEN 
    264         CALL xios_read_field_scalar(name,field,1) 
     344        CALL xios_read_field_scalar(name,field,1,1) 
    265345      ELSE IF (field(1)%ndim==3) THEN 
    266         CALL xios_read_field_scalar(name,field,size(field(1)%rval3d,2)) 
     346        CALL xios_read_field_scalar(name,field,size(field(1)%rval3d,2),1) 
    267347      ELSE IF (field(1)%ndim==4) THEN 
    268         DO iq=1,size(field(1)%rval4d,3) 
    269           WRITE(str_number,'(i10)') iq 
    270           CALL xios_read_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq) 
    271         ENDDO 
     348!        DO iq=1,size(field(1)%rval4d,3) 
     349!          WRITE(str_number,'(i10)') iq 
     350!          CALL xios_read_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq) 
     351!        ENDDO 
     352          CALL xios_read_field_scalar(name,field,size(field(1)%rval4d,2),size(field(1)%rval4d,3)) 
     353      ELSE 
     354        PRINT *, "xios_write_field : dimension > 4 are not supported for now" 
     355      ENDIF 
     356   ELSE IF (Field(1)%field_type==field_U) THEN 
     357     IF (field(1)%ndim==2) THEN 
     358        CALL xios_read_field_u(name,field,1,1) 
     359      ELSE IF (field(1)%ndim==3) THEN 
     360        CALL xios_read_field_u(name,field,size(field(1)%rval3d,2),1) 
     361      ELSE IF (field(1)%ndim==4) THEN 
     362          CALL xios_read_field_u(name,field,size(field(1)%rval4d,2),size(field(1)%rval4d,3)) 
    272363      ELSE 
    273364        PRINT *, "xios_write_field : dimension > 4 are not supported for now" 
     
    294385 
    295386  
    296  SUBROUTINE xios_write_field_scalar(name,field,nlev,iq) 
     387 SUBROUTINE xios_write_field_scalar(name,field,nlev,nq) 
    297388 USE genmod 
    298389 USE mpipara 
     
    308399   TYPE(t_field), POINTER :: field(:) 
    309400   INTEGER,INTENT(IN) :: nlev 
    310    INTEGER,INTENT(IN),OPTIONAL :: iq 
    311     
    312    REAL(rstd) :: field_tmp(ncell_i,nlev) 
     401   INTEGER,INTENT(IN) :: nq 
     402    
     403   REAL(rstd) :: field_tmp(ncell_i,nlev,nq) 
    313404   TYPE(t_domain),POINTER :: d 
    314405   INTEGER :: n,i,j,ij,ind 
     
    325416             n=n+1 
    326417             ij=d%iim*(j-1)+i 
    327              field_tmp(n,1)=field(ind)%rval2d(ij) 
     418             field_tmp(n,1,1)=field(ind)%rval2d(ij) 
    328419           ENDIF 
    329420         ENDDO 
     
    340431             n=n+1 
    341432             ij=d%iim*(j-1)+i 
    342              field_tmp(n,:)=field(ind)%rval3d(ij,:) 
     433             field_tmp(n,:,1)=field(ind)%rval3d(ij,:) 
    343434           ENDIF 
    344435         ENDDO 
     
    355446             n=n+1 
    356447             ij=d%iim*(j-1)+i 
    357              field_tmp(n,:)=field(ind)%rval4d(ij,:,iq) 
     448             field_tmp(n,:,:)=field(ind)%rval4d(ij,:,:) 
    358449           ENDIF 
    359450         ENDDO 
     
    367458 
    368459 
    369  SUBROUTINE xios_read_field_scalar(name,field,nlev,iq) 
     460 SUBROUTINE xios_read_field_scalar(name,field,nlev,nq) 
    370461 USE genmod 
    371462 USE mpipara 
     
    381472   TYPE(t_field), POINTER :: field(:) 
    382473   INTEGER,INTENT(IN) :: nlev 
    383    INTEGER,INTENT(IN),OPTIONAL :: iq 
    384     
    385    REAL(rstd) :: field_tmp(ncell_i,nlev) 
     474   INTEGER,INTENT(IN) :: nq 
     475    
     476   REAL(rstd) :: field_tmp(ncell_i,nlev,nq) 
    386477   TYPE(t_domain),POINTER :: d 
    387478   INTEGER :: n,i,j,ij,ind 
     
    400491             n=n+1 
    401492             ij=d%iim*(j-1)+i 
    402              field(ind)%rval2d(ij)=field_tmp(n,1) 
     493             field(ind)%rval2d(ij)=field_tmp(n,1,1) 
    403494           ENDIF 
    404495         ENDDO 
     
    415506             n=n+1 
    416507             ij=d%iim*(j-1)+i 
    417              field(ind)%rval3d(ij,:)=field_tmp(n,:) 
     508             field(ind)%rval3d(ij,:)=field_tmp(n,:,1) 
    418509           ENDIF 
    419510         ENDDO 
     
    430521             n=n+1 
    431522             ij=d%iim*(j-1)+i 
    432              field(ind)%rval4d(ij,:,iq)=field_tmp(n,:) 
     523             field(ind)%rval4d(ij,:,:)=field_tmp(n,:,:) 
    433524           ENDIF 
    434525         ENDDO 
     
    438529  
    439530 END SUBROUTINE xios_read_field_scalar 
     531 
     532 SUBROUTINE xios_write_field_U(name,field,nlev,nq) 
     533 USE genmod 
     534 USE mpipara 
     535 USE xios 
     536 USE grid_param 
     537 USE domain_mod 
     538 USE dimensions 
     539 USE spherical_geom_mod 
     540 USE geometry 
     541 USE mpi_mod 
     542 IMPLICIT NONE  
     543   CHARACTER(LEN=*),INTENT(IN) :: name 
     544   TYPE(t_field), POINTER :: field(:) 
     545   INTEGER,INTENT(IN) :: nlev 
     546   INTEGER,INTENT(IN) :: nq 
     547    
     548   REAL(rstd) :: field_tmp(ncell_e,nlev,nq) 
     549   TYPE(t_domain),POINTER :: d 
     550   INTEGER :: n,i,j,k,ij,ind 
     551    
     552   IF (field(1)%ndim==2) THEN 
     553     n=0 
     554     DO ind=1,ndomain 
     555       d=>domain(ind) 
     556       CALL swap_dimensions(ind) 
     557       CALL swap_geometry(ind) 
     558 
     559       DO j=d%jj_begin,d%jj_end 
     560         DO i=d%ii_begin,d%ii_end 
     561           DO k=0,5 
     562             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     563                                                                                 .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     564               n=n+1 
     565               ij=iim*(j-1)+i 
     566               Field_tmp(n,1,1)=d%edge_assign_sign(k,i,j)*field(ind)%rval2d(ij+d%u_pos(k+1)) 
     567             ENDIF 
     568           ENDDO 
     569         ENDDO 
     570       ENDDO 
     571     ENDDO        
     572   
     573   ELSE IF (field(1)%ndim==3) THEN 
     574 
     575     n=0 
     576     DO ind=1,ndomain 
     577       d=>domain(ind) 
     578       CALL swap_dimensions(ind) 
     579       CALL swap_geometry(ind) 
     580 
     581       DO j=d%jj_begin,d%jj_end 
     582         DO i=d%ii_begin,d%ii_end 
     583           DO k=0,5 
     584             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     585                                                                                  .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     586               n=n+1 
     587               ij=iim*(j-1)+i 
     588               Field_tmp(n,:,1)=d%edge_assign_sign(k,i,j)*field(ind)%rval3d(ij+d%u_pos(k+1),:) 
     589             ENDIF 
     590           ENDDO 
     591         ENDDO 
     592       ENDDO 
     593     ENDDO        
     594 
     595   ELSE IF (field(1)%ndim==4) THEN 
     596 
     597     n=0 
     598     DO ind=1,ndomain 
     599       d=>domain(ind) 
     600       CALL swap_dimensions(ind) 
     601       CALL swap_geometry(ind) 
     602 
     603       DO j=d%jj_begin,d%jj_end 
     604         DO i=d%ii_begin,d%ii_end 
     605           DO k=0,5 
     606             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     607                                                                                  .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     608               n=n+1 
     609               ij=iim*(j-1)+i 
     610               Field_tmp(n,:,:)=d%edge_assign_sign(k,i,j)*field(ind)%rval4d(ij+d%u_pos(k+1),:,:) 
     611             ENDIF 
     612           ENDDO 
     613         ENDDO 
     614       ENDDO 
     615     ENDDO        
     616 
     617   ENDIF 
     618    
     619   CALL xios_send_field(name,field_tmp) 
     620  
     621 END SUBROUTINE xios_write_field_u  
     622 
     623 
     624 SUBROUTINE xios_read_field_u(name,field,nlev,nq) 
     625 USE genmod 
     626 USE mpipara 
     627 USE xios 
     628 USE grid_param 
     629 USE domain_mod 
     630 USE dimensions 
     631 USE spherical_geom_mod 
     632 USE geometry 
     633 USE mpi_mod 
     634 IMPLICIT NONE  
     635   CHARACTER(LEN=*),INTENT(IN) :: name 
     636   TYPE(t_field), POINTER :: field(:) 
     637   INTEGER,INTENT(IN) :: nlev 
     638   INTEGER,INTENT(IN) :: nq 
     639    
     640   REAL(rstd) :: field_tmp(ncell_e,nlev,nq) 
     641   TYPE(t_domain),POINTER :: d 
     642   INTEGER :: n,i,j,k,ij,ind 
     643 
     644   CALL xios_recv_field(name,field_tmp) 
     645    
     646   IF (field(1)%ndim==2) THEN 
     647     n=0 
     648     DO ind=1,ndomain 
     649       d=>domain(ind) 
     650       CALL swap_dimensions(ind) 
     651       CALL swap_geometry(ind) 
     652 
     653       DO j=d%jj_begin,d%jj_end 
     654         DO i=d%ii_begin,d%ii_end 
     655           DO k=0,5 
     656             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     657                                                                                 .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     658               n=n+1 
     659               ij=iim*(j-1)+i 
     660               field(ind)%rval2d(ij+d%u_pos(k+1))=Field_tmp(n,1,1)*d%edge_assign_sign(k,i,j) 
     661             ENDIF 
     662           ENDDO 
     663         ENDDO 
     664       ENDDO 
     665     ENDDO        
     666   
     667   ELSE IF (field(1)%ndim==3) THEN 
     668 
     669     n=0 
     670     DO ind=1,ndomain 
     671       d=>domain(ind) 
     672       CALL swap_dimensions(ind) 
     673       CALL swap_geometry(ind) 
     674 
     675       DO j=d%jj_begin,d%jj_end 
     676         DO i=d%ii_begin,d%ii_end 
     677           DO k=0,5 
     678             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     679                                                                                  .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     680               n=n+1 
     681               ij=iim*(j-1)+i 
     682               field(ind)%rval3d(ij+d%u_pos(k+1),:)=Field_tmp(n,:,1)*d%edge_assign_sign(k,i,j) 
     683             ENDIF 
     684           ENDDO 
     685         ENDDO 
     686       ENDDO 
     687     ENDDO        
     688 
     689   ELSE IF (field(1)%ndim==4) THEN 
     690 
     691     n=0 
     692     DO ind=1,ndomain 
     693       d=>domain(ind) 
     694       CALL swap_dimensions(ind) 
     695       CALL swap_geometry(ind) 
     696 
     697       DO j=d%jj_begin,d%jj_end 
     698         DO i=d%ii_begin,d%ii_end 
     699           DO k=0,5 
     700             IF (d%edge_assign_domain(k,i,j)==domloc_glo_ind(ind) .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 
     701                                                                                  .AND. d%edge_assign_pos(k,i,j)==k) THEN 
     702               n=n+1 
     703               ij=iim*(j-1)+i 
     704               field(ind)%rval4d(ij+d%u_pos(k+1),:,:)=Field_tmp(n,:,:)*d%edge_assign_sign(k,i,j) 
     705             ENDIF 
     706           ENDDO 
     707         ENDDO 
     708       ENDDO 
     709     ENDDO        
     710 
     711   ENDIF 
     712    
     713  
     714 END SUBROUTINE xios_read_field_u  
     715 
    440716 
    441717 
     
    673949END INTERFACE  xios_send_field 
    674950 
     951INTEGER,PARAMETER :: xios_timestep=1 
    675952 
    676953CONTAINS   
     
    7241001  END SUBROUTINE xios_set_context 
    7251002   
    726   SUBROUTINE xios_set_fieldgroup_attr(name,enabled) 
     1003  SUBROUTINE xios_set_fieldgroup_attr(name,enabled,freq_op) 
    7271004    CHARACTER(LEN=*) :: name 
    7281005    LOGICAL,OPTIONAL          :: enabled 
     1006    INTEGER,OPTIONAL          :: freq_op 
    7291007  END SUBROUTINE xios_set_fieldgroup_attr 
    7301008 
     
    7331011    LOGICAL,OPTIONAL          :: enabled 
    7341012  END SUBROUTINE xios_set_filegroup_attr 
     1013 
     1014  SUBROUTINE xios_set_file_attr(id,name,enabled, output_freq) 
     1015    CHARACTER(LEN=*) :: id 
     1016    CHARACTER(LEN=*),OPTIONAL :: name 
     1017    LOGICAL,OPTIONAL          :: enabled 
     1018    INTEGER,OPTIONAL          :: output_freq 
     1019  END SUBROUTINE xios_set_file_attr 
    7351020 
    7361021  SUBROUTINE xios_get_axis_attr(name,n_glo,value) 
     
    7401025  END SUBROUTINE xios_get_axis_attr 
    7411026 
     1027  SUBROUTINE xios_set_axis_attr(id,n_glo,value) 
     1028    CHARACTER(LEN=*) :: id 
     1029    INTEGER,OPTIONAL          :: n_glo 
     1030    REAL,OPTIONAL             :: value(:) 
     1031  END SUBROUTINE xios_set_axis_attr 
     1032 
    7421033#endif   
    7431034 
Note: See TracChangeset for help on using the changeset viewer.