Ignore:
Timestamp:
02/03/10 16:54:51 (14 years ago)
Author:
bellier
Message:
  • Changed ALLOCATABLE attribute to POINTER for a structure element
  • Modified Netcdf external type for _FillValue, valid_min and valid_max
File:
1 edited

Legend:

Unmodified
Added
Removed
  • IOIPSL/trunk/src/fliocom.f90

    r760 r881  
    13801380!--- 
    13811381    IF (PRESENT(v_t)) THEN 
    1382       IF      (v_t == flio_i) THEN 
     1382      SELECT CASE (v_t) 
     1383      CASE(flio_i) 
    13831384        IF (i_std == i_8) THEN 
    1384 !-------- Not yet supported by NETCDF 
     1385!-------- I8 not yet supported by NETCDF 
    13851386!-------- m_k = flio_i8 
    13861387          m_k = flio_i4 
     
    13881389          m_k = flio_i4 
    13891390        ENDIF 
    1390       ELSE IF (v_t == flio_r) THEN 
     1391      CASE(flio_r) 
    13911392        IF (r_std == r_8) THEN 
    13921393          m_k = flio_r8 
     
    13941395          m_k = flio_r4 
    13951396        ENDIF 
    1396       ELSE 
     1397      CASE(flio_c,flio_i1,flio_i2,flio_i4,flio_r4,flio_r8) 
    13971398        m_k = v_t 
    1398       ENDIF 
     1399      CASE DEFAULT 
     1400        CALL ipslerr (3,'fliodefv', & 
     1401 &        'Variable '//TRIM(v_n),'External type','not supported') 
     1402      END SELECT 
    13991403    ELSE IF (r_std == r_8) THEN 
    14001404      m_k = flio_r8 
     
    14021406      m_k = flio_r4 
    14031407    ENDIF 
     1408!--- 
    14041409    IF (n_d > 0) THEN 
    14051410      i_rc = NF90_DEF_VAR(f_e,v_n,m_k,a_i(1:n_d),i_v) 
     
    14271432    ENDIF 
    14281433    IF (PRESENT(valid_min)) THEN 
    1429       i_rc = NF90_PUT_ATT(f_e,i_v,'valid_min',valid_min) 
     1434      SELECT CASE (m_k) 
     1435      CASE(flio_i1,flio_i2) 
     1436        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_min',NINT(valid_min,KIND=i_2)) 
     1437      CASE(flio_i4) 
     1438        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_min',NINT(valid_min,KIND=i_4)) 
     1439      CASE(flio_r4) 
     1440        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_min',REAL(valid_min,KIND=r_4)) 
     1441      CASE(flio_r8) 
     1442        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_min',REAL(valid_min,KIND=r_8)) 
     1443      CASE DEFAULT 
     1444        CALL ipslerr (2,'fliodefv', & 
     1445   &      'Variable '//TRIM(v_n),'attribute valid_min', & 
     1446   &      'not supported for this external type') 
     1447      END SELECT 
    14301448    ENDIF 
    14311449    IF (PRESENT(valid_max)) THEN 
    1432       i_rc = NF90_PUT_ATT(f_e,i_v,'valid_max',valid_max) 
     1450      SELECT CASE (m_k) 
     1451      CASE(flio_i1,flio_i2) 
     1452        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_max',NINT(valid_max,KIND=i_2)) 
     1453      CASE(flio_i4) 
     1454        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_max',NINT(valid_max,KIND=i_4)) 
     1455      CASE(flio_r4) 
     1456        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_max',REAL(valid_max,KIND=r_4)) 
     1457      CASE(flio_r8) 
     1458        i_rc = NF90_PUT_ATT(f_e,i_v,'valid_max',REAL(valid_max,KIND=r_8)) 
     1459      CASE DEFAULT 
     1460        CALL ipslerr (2,'fliodefv', & 
     1461   &      'Variable '//TRIM(v_n),'attribute valid_max', & 
     1462   &      'not supported for this external type') 
     1463      END SELECT 
    14331464    ENDIF 
    14341465!--- 
Note: See TracChangeset for help on using the changeset viewer.