New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 6440 for branches/UKMO/dev_r5518_GC3p0_package/NEMOGCM/TOOLS/SIREN/src/iom_rstdimg.f90 – NEMO

Ignore:
Timestamp:
2016-04-07T16:32:24+02:00 (8 years ago)
Author:
dancopsey
Message:

Merged in nemo_v3_6_STABLE_copy up to revision 6436.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GC3p0_package/NEMOGCM/TOOLS/SIREN/src/iom_rstdimg.f90

    r5037 r6440  
    131131   !> 
    132132   !> @author J.Paul 
    133    !> - November, 2013- Initial Version 
     133   !> @date November, 2013 - Initial Version 
    134134   ! 
    135135   !> @param[inout] td_file   file structure 
     
    284284   !> 
    285285   !> @author J.Paul 
    286    !> - November, 2013- Initial Version 
     286   !> @date November, 2013 - Initial Version 
    287287   ! 
    288288   !> @param[inout] td_file   file structure 
     
    328328   !> 
    329329   !> @author J.Paul 
    330    !> - November, 2013- Initial Version 
     330   !> @date November, 2013 - Initial Version 
    331331   ! 
    332332   !> @param[inout] td_file   file structure 
     
    394394   !> 
    395395   !> @author J.Paul 
    396    !> - November, 2013- Initial Version 
    397    ! 
     396   !> @date November, 2013 - Initial Version 
     397   !> @date January, 2016 
     398   !> - mismatch with "halo" indices 
     399   !> 
    398400   !> @param[inout] td_file   file structure 
    399401   !------------------------------------------------------------------- 
     
    494496      ENDIF 
    495497 
    496       tl_att=att_init( "DOMAIN_position_first", (/il_impp(il_area), il_jmpp(il_area)/)) 
     498      tl_att=att_init( "SUBDOMAIN_I_left_bottom_indices", il_impp(:) ) 
    497499      CALL file_move_att(td_file, tl_att) 
    498  
    499       tl_att=att_init( "DOMAIN_position_last", (/il_lci(il_area), il_lcj(il_area)/)) 
     500      tl_att=att_init( "SUBDOMAIN_J_left_bottom_indices", il_jmpp(:) ) 
    500501      CALL file_move_att(td_file, tl_att) 
    501502 
    502       tl_att=att_init( "DOMAIN_halo_size_start", (/il_ldi(il_area), il_ldj(il_area)/)) 
     503      tl_att=att_init( "SUBDOMAIN_I_dimensions", il_lci(:)) 
    503504      CALL file_move_att(td_file, tl_att) 
    504  
    505       tl_att=att_init( "DOMAIN_halo_size_end", (/il_lei(il_area), il_lej(il_area)/)) 
     505      tl_att=att_init( "SUBDOMAIN_J_dimensions", il_lcj(:)) 
    506506      CALL file_move_att(td_file, tl_att) 
    507507 
    508       tl_att=att_init( "DOMAIN_I_position_first", il_impp(:) ) 
     508      tl_att=att_init( "SUBDOMAIN_I_first_indoor_indices", il_ldi(:)) 
    509509      CALL file_move_att(td_file, tl_att) 
    510       tl_att=att_init( "DOMAIN_J_position_first", il_jmpp(:) ) 
     510      tl_att=att_init( "SUBDOMAIN_J_first_indoor_indices", il_ldj(:)) 
    511511      CALL file_move_att(td_file, tl_att) 
    512512 
    513       tl_att=att_init( "DOMAIN_I_position_last", il_lci(:) ) 
     513      tl_att=att_init( "SUBDOMAIN_I_last_indoor_indices", il_lei(:)) 
    514514      CALL file_move_att(td_file, tl_att) 
    515       tl_att=att_init( "DOMAIN_J_position_last", il_lcj(:) ) 
    516       CALL file_move_att(td_file, tl_att) 
    517  
    518       tl_att=att_init( "DOMAIN_I_halo_size_start", il_ldi(:) ) 
    519       CALL file_move_att(td_file, tl_att) 
    520       tl_att=att_init( "DOMAIN_J_halo_size_start", il_ldj(:) ) 
    521       CALL file_move_att(td_file, tl_att) 
    522  
    523       tl_att=att_init( "DOMAIN_I_halo_size_end", il_lei(:) ) 
    524       CALL file_move_att(td_file, tl_att) 
    525       tl_att=att_init( "DOMAIN_J_halo_size_end", il_lej(:) ) 
     515      tl_att=att_init( "SUBDOMAIN_J_last_indoor_indices", il_lej(:)) 
    526516      CALL file_move_att(td_file, tl_att) 
    527517 
     
    544534   ! 
    545535   !> @author J.Paul 
    546    !> - November, 2013- Initial Version 
     536   !> @date November, 2013 - Initial Version 
    547537   ! 
    548538   !> @param[inout] td_file   file structure 
     
    636626   ! 
    637627   !> @author J.Paul 
    638    !> - November, 2013- Initial Version 
     628   !> @date November, 2013 - Initial Version 
    639629   ! 
    640630   !> @param[inout] td_file   file structure 
     
    688678   ! 
    689679   !> @author J.Paul 
    690    !> - November, 2013- Initial Version 
     680   !> @date November, 2013 - Initial Version 
    691681   ! 
    692682   !> @param[inout] td_file   file structure 
     
    733723   ! 
    734724   !> @author J.Paul 
    735    !> - November, 2013- Initial Version 
     725   !> @date November, 2013 - Initial Version 
    736726   ! 
    737727   !> @param[inout] td_file   file structure 
     
    778768   ! 
    779769   !> @author J.Paul 
    780    !> - November, 2013- Initial Version 
     770   !> @date November, 2013 - Initial Version 
    781771   ! 
    782772   !> @param[inout] td_file   file structure 
     
    820810   ! 
    821811   !> @author J.Paul 
    822    !> - Nov, 2013- Initial Version 
     812   !> @date November, 2013 - Initial Version 
    823813   ! 
    824814   !> @param[in] td_file   file structure 
     
    863853   ! 
    864854   !> @author J.Paul 
    865    !> - Nov, 2013- Initial Version 
     855   !> @date November, 2013 - Initial Version 
    866856   ! 
    867857   !> @param[in] td_file   file structure 
     
    907897   ! 
    908898   !> @author J.Paul 
    909    !> - November, 2013- Initial Version 
     899   !> @date November, 2013 - Initial Version 
    910900   ! 
    911901   !> @param[in] td_file   file structure 
     
    972962   ! 
    973963   !> @author J.Paul 
    974    !> - November, 2013- Initial Version 
     964   !> @date November, 2013 - Initial Version 
    975965   ! 
    976966   !> @param[in] td_file   file structure 
     
    10371027   !> 
    10381028   !> @author J.Paul 
    1039    !> - November, 2013- Initial Version 
     1029   !> @date November, 2013 - Initial Version 
     1030   !> @date February, 2016 
     1031   !> - use temporary array to read value from file 
    10401032   ! 
    10411033   !> @param[in] td_file   file structure 
     
    10581050      INTEGER(i4), DIMENSION(ip_maxdim)            :: il_start 
    10591051      INTEGER(i4), DIMENSION(ip_maxdim)            :: il_count 
     1052 
     1053      REAL(dp),    DIMENSION(:,:,:)  , ALLOCATABLE :: dl_tmp 
    10601054      REAL(dp),    DIMENSION(:,:,:,:), ALLOCATABLE :: dl_value 
    10611055 
     
    11411135         IF( ALL(td_var%t_dim(1:3)%l_use) )THEN 
    11421136            ! 3D variable (X,Y,Z) 
     1137            ALLOCATE(dl_tmp( td_var%t_dim(1)%i_len, & 
     1138            &                td_var%t_dim(2)%i_len, & 
     1139            &                td_var%t_dim(4)%i_len) )            
    11431140            DO ji=1,td_var%t_dim(3)%i_len 
    11441141               READ(td_file%i_id, IOSTAT=il_status, REC=td_var%i_rec +ji-1) & 
    1145                &  dl_value(:,:,ji,:) 
     1142               &  dl_tmp(:,:,:) 
    11461143               CALL fct_err(il_status) 
    11471144               IF( il_status /= 0 )THEN 
     
    11491146                  &              TRIM(td_var%c_name)) 
    11501147               ENDIF 
     1148               dl_value(:,:,ji,:)=dl_tmp(:,:,:) 
    11511149            ENDDO 
     1150            DEALLOCATE(dl_tmp) 
    11521151         ELSEIF( ALL(td_var%t_dim(1:2)%l_use) )THEN 
    11531152            ! 2D variable (X,Y) 
     
    12041203      ENDIF 
    12051204 
     1205      ! force to change _FillValue to avoid mistake  
     1206      ! with dummy zero _FillValue 
     1207      IF( td_var%d_fill == 0._dp )THEN 
     1208         CALL var_chg_FillValue(td_var) 
     1209      ENDIF 
     1210 
     1211      ! use scale factor and offset 
     1212      WHERE( td_var%d_value(:,:,:,:) /= td_var%d_fill ) 
     1213         td_var%d_value(:,:,:,:) = & 
     1214         &  td_var%d_value(:,:,:,:)*td_var%d_scf + td_var%d_ofs 
     1215      END WHERE 
     1216 
    12061217   END SUBROUTINE iom_rstdimg__read_var_value 
    12071218   !------------------------------------------------------------------- 
     
    12121223   !> 
    12131224   !> @author J.Paul 
    1214    !> - November, 2013- Initial Version 
     1225   !> @date November, 2013 - Initial Version 
    12151226   !> @date September, 2014 
    12161227   !> - use iom_rstdimg__get_rec 
     
    13081319   !> 
    13091320   !> @author J.Paul 
    1310    !> - September, 2014- Initial Version 
     1321   !> @date September, 2014 - Initial Version 
    13111322   ! 
    13121323   !> @param[inout] td_file   file structure 
     
    14131424   ! 
    14141425   !> @author J.Paul 
    1415    !> - November, 2013- Initial Version 
    1416    ! 
     1426   !> @date November, 2013 - Initial Version 
     1427   !> @date January, 2016 
     1428   !> - mismatch with "halo" indices 
     1429   !> 
    14171430   !> @param[inout] td_file   file structure 
    14181431   !------------------------------------------------------------------- 
     
    15291542      &         il_lei(il_nproc),  il_lej(il_nproc) ) 
    15301543 
    1531       ! get domain first poistion 
    1532       il_ind=att_get_index( td_file%t_att, "DOMAIN_I_position_first" ) 
     1544      ! get left bottom indices 
     1545      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_I_left_bottom_indices" ) 
    15331546      il_impp(:) = 0 
    15341547      IF( il_ind /= 0 )THEN 
     
    15361549      ENDIF 
    15371550 
    1538       il_ind=att_get_index( td_file%t_att, "DOMAIN_J_position_first" ) 
     1551      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_J_left_bottom_indices" ) 
    15391552      il_jmpp(:) = 0 
    15401553      IF( il_ind /= 0 )THEN 
     
    15421555      ENDIF 
    15431556       
    1544       ! check domain first poistion 
     1557      ! check left bottom indices 
    15451558      IF( ANY(il_impp(:)==0) .OR. ANY(il_jmpp(:)==0) )THEN 
    1546          CALL logger_warn("WRITE FILE: no data for domain first position") 
    1547       ENDIF 
    1548  
    1549       ! get domain last poistion 
    1550       il_ind=att_get_index( td_file%t_att, "DOMAIN_I_position_last" ) 
     1559         CALL logger_warn("WRITE FILE: no data for subdomain left bottom indices") 
     1560      ENDIF 
     1561 
     1562      ! get subdomain dimensions 
     1563      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_I_dimensions" ) 
    15511564      il_lci(:) = 0 
    15521565      IF( il_ind /= 0 )THEN 
     
    15541567      ENDIF 
    15551568 
    1556       il_ind=att_get_index( td_file%t_att, "DOMAIN_J_position_last" ) 
     1569      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_J_dimensions" ) 
    15571570      il_lcj(:) = 0 
    15581571      IF( il_ind /= 0 )THEN 
     
    15601573      ENDIF 
    15611574 
    1562       ! check domain last poistion 
     1575      ! check subdomain dimension 
    15631576      IF( ANY(il_lci(:)==0) .OR. ANY(il_lcj(:)==0) )THEN 
    1564          CALL logger_warn("WRITE FILE: no data for domain last position") 
    1565       ENDIF 
    1566  
    1567       ! get halo size start 
    1568       il_ind=att_get_index( td_file%t_att, "DOMAIN_I_halo_size_start" ) 
     1577         CALL logger_warn("WRITE FILE: no data for subdomain dimensions") 
     1578      ENDIF 
     1579 
     1580      ! get first indoor indices 
     1581      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_I_first_indoor_indices" ) 
    15691582      il_ldi(:) = 0 
    15701583      IF( il_ind /= 0 )THEN 
     
    15721585      ENDIF 
    15731586 
    1574       il_ind=att_get_index( td_file%t_att, "DOMAIN_J_halo_size_start" ) 
     1587      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_J_first_indoor_indices" ) 
    15751588      il_ldj(:) = 0 
    15761589      IF( il_ind /= 0 )THEN 
     
    15781591      ENDIF 
    15791592       
    1580       ! check halo size start 
     1593      ! check first indoor indices 
    15811594      IF( ANY(il_ldi(:)==0) .OR. ANY(il_ldj(:)==0) )THEN 
    1582          CALL logger_warn("WRITE FILE: no data for halo size start") 
    1583       ENDIF 
    1584  
    1585       ! get halo size end 
    1586       il_ind=att_get_index( td_file%t_att, "DOMAIN_I_halo_size_end" ) 
     1595         CALL logger_warn("WRITE FILE: no data for subdomain first indoor indices") 
     1596      ENDIF 
     1597 
     1598      ! get last indoor indices 
     1599      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_I_last_indoor_indices" ) 
    15871600      il_lei(:) = 0 
    15881601      IF( il_ind /= 0 )THEN 
     
    15901603      ENDIF 
    15911604 
    1592       il_ind=att_get_index( td_file%t_att, "DOMAIN_J_halo_size_end" ) 
     1605      il_ind=att_get_index( td_file%t_att, "SUBDOMAIN_J_last_indoor_indices" ) 
    15931606      il_lej(:) = 0 
    15941607      IF( il_ind /= 0 )THEN 
     
    15961609      ENDIF 
    15971610 
    1598       ! check halo size end 
     1611      ! check last indoor indices 
    15991612      IF( ANY(il_lei(:)==0) .OR. ANY(il_lej(:)==0) )THEN 
    1600          CALL logger_warn("WRITE FILE: no data for halo size end") 
     1613         CALL logger_warn("WRITE FILE: no data for subdomain last indoor indices") 
    16011614      ENDIF       
    16021615 
     
    16301643   !> 
    16311644   !> @author J.Paul 
    1632    !> - November, 2013- Initial Version 
     1645   !> @date November, 2013 - Initial Version 
     1646   !> @date July, 2015 
     1647   !> - bug fix: do not use scale factor an offset for case no0d, no1d... 
    16331648   !> 
    1634    !> @param[in] id_fileid file id 
     1649   !> @param[in] td_file file structure 
    16351650   !------------------------------------------------------------------- 
    16361651   SUBROUTINE iom_rstdimg__write_var(td_file) 
     
    16671682            CASE('no0d','no1d','no2d','no3d') 
    16681683            CASE DEFAULT 
     1684                
     1685               ! use scale factor and offset 
     1686               WHERE( td_file%t_var(ji)%d_value(:,:,:,:) /= & 
     1687               &      td_file%t_var(ji)%d_fill ) 
     1688                  td_file%t_var(ji)%d_value(:,:,:,:) = & 
     1689                  &   ( td_file%t_var(ji)%d_value(:,:,:,:) - & 
     1690                  &     td_file%t_var(ji)%d_ofs ) / & 
     1691                  &   td_file%t_var(ji)%d_scf 
     1692               END WHERE 
     1693 
    16691694               DO jk=1,td_file%t_var(ji)%t_dim(3)%i_len 
    16701695                  SELECT CASE (td_file%t_var(ji)%i_ndim) 
Note: See TracChangeset for help on using the changeset viewer.