- Timestamp:
- 2016-04-07T16:32:24+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GC3p0_package/NEMOGCM/TOOLS/SIREN/src/iom_rstdimg.f90
r5037 r6440 131 131 !> 132 132 !> @author J.Paul 133 !> - November, 2013- Initial Version133 !> @date November, 2013 - Initial Version 134 134 ! 135 135 !> @param[inout] td_file file structure … … 284 284 !> 285 285 !> @author J.Paul 286 !> - November, 2013- Initial Version286 !> @date November, 2013 - Initial Version 287 287 ! 288 288 !> @param[inout] td_file file structure … … 328 328 !> 329 329 !> @author J.Paul 330 !> - November, 2013- Initial Version330 !> @date November, 2013 - Initial Version 331 331 ! 332 332 !> @param[inout] td_file file structure … … 394 394 !> 395 395 !> @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 !> 398 400 !> @param[inout] td_file file structure 399 401 !------------------------------------------------------------------- … … 494 496 ENDIF 495 497 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(:) ) 497 499 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(:) ) 500 501 CALL file_move_att(td_file, tl_att) 501 502 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(:)) 503 504 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(:)) 506 506 CALL file_move_att(td_file, tl_att) 507 507 508 tl_att=att_init( " DOMAIN_I_position_first", il_impp(:))508 tl_att=att_init( "SUBDOMAIN_I_first_indoor_indices", il_ldi(:)) 509 509 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(:)) 511 511 CALL file_move_att(td_file, tl_att) 512 512 513 tl_att=att_init( " DOMAIN_I_position_last", il_lci(:))513 tl_att=att_init( "SUBDOMAIN_I_last_indoor_indices", il_lei(:)) 514 514 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(:)) 526 516 CALL file_move_att(td_file, tl_att) 527 517 … … 544 534 ! 545 535 !> @author J.Paul 546 !> - November, 2013- Initial Version536 !> @date November, 2013 - Initial Version 547 537 ! 548 538 !> @param[inout] td_file file structure … … 636 626 ! 637 627 !> @author J.Paul 638 !> - November, 2013- Initial Version628 !> @date November, 2013 - Initial Version 639 629 ! 640 630 !> @param[inout] td_file file structure … … 688 678 ! 689 679 !> @author J.Paul 690 !> - November, 2013- Initial Version680 !> @date November, 2013 - Initial Version 691 681 ! 692 682 !> @param[inout] td_file file structure … … 733 723 ! 734 724 !> @author J.Paul 735 !> - November, 2013- Initial Version725 !> @date November, 2013 - Initial Version 736 726 ! 737 727 !> @param[inout] td_file file structure … … 778 768 ! 779 769 !> @author J.Paul 780 !> - November, 2013- Initial Version770 !> @date November, 2013 - Initial Version 781 771 ! 782 772 !> @param[inout] td_file file structure … … 820 810 ! 821 811 !> @author J.Paul 822 !> - Nov, 2013- Initial Version812 !> @date November, 2013 - Initial Version 823 813 ! 824 814 !> @param[in] td_file file structure … … 863 853 ! 864 854 !> @author J.Paul 865 !> - Nov, 2013- Initial Version855 !> @date November, 2013 - Initial Version 866 856 ! 867 857 !> @param[in] td_file file structure … … 907 897 ! 908 898 !> @author J.Paul 909 !> - November, 2013- Initial Version899 !> @date November, 2013 - Initial Version 910 900 ! 911 901 !> @param[in] td_file file structure … … 972 962 ! 973 963 !> @author J.Paul 974 !> - November, 2013- Initial Version964 !> @date November, 2013 - Initial Version 975 965 ! 976 966 !> @param[in] td_file file structure … … 1037 1027 !> 1038 1028 !> @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 1040 1032 ! 1041 1033 !> @param[in] td_file file structure … … 1058 1050 INTEGER(i4), DIMENSION(ip_maxdim) :: il_start 1059 1051 INTEGER(i4), DIMENSION(ip_maxdim) :: il_count 1052 1053 REAL(dp), DIMENSION(:,:,:) , ALLOCATABLE :: dl_tmp 1060 1054 REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: dl_value 1061 1055 … … 1141 1135 IF( ALL(td_var%t_dim(1:3)%l_use) )THEN 1142 1136 ! 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) ) 1143 1140 DO ji=1,td_var%t_dim(3)%i_len 1144 1141 READ(td_file%i_id, IOSTAT=il_status, REC=td_var%i_rec +ji-1) & 1145 & dl_ value(:,:,ji,:)1142 & dl_tmp(:,:,:) 1146 1143 CALL fct_err(il_status) 1147 1144 IF( il_status /= 0 )THEN … … 1149 1146 & TRIM(td_var%c_name)) 1150 1147 ENDIF 1148 dl_value(:,:,ji,:)=dl_tmp(:,:,:) 1151 1149 ENDDO 1150 DEALLOCATE(dl_tmp) 1152 1151 ELSEIF( ALL(td_var%t_dim(1:2)%l_use) )THEN 1153 1152 ! 2D variable (X,Y) … … 1204 1203 ENDIF 1205 1204 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 1206 1217 END SUBROUTINE iom_rstdimg__read_var_value 1207 1218 !------------------------------------------------------------------- … … 1212 1223 !> 1213 1224 !> @author J.Paul 1214 !> - November, 2013- Initial Version1225 !> @date November, 2013 - Initial Version 1215 1226 !> @date September, 2014 1216 1227 !> - use iom_rstdimg__get_rec … … 1308 1319 !> 1309 1320 !> @author J.Paul 1310 !> - September, 2014- Initial Version1321 !> @date September, 2014 - Initial Version 1311 1322 ! 1312 1323 !> @param[inout] td_file file structure … … 1413 1424 ! 1414 1425 !> @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 !> 1417 1430 !> @param[inout] td_file file structure 1418 1431 !------------------------------------------------------------------- … … 1529 1542 & il_lei(il_nproc), il_lej(il_nproc) ) 1530 1543 1531 ! get domain first poistion1532 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" ) 1533 1546 il_impp(:) = 0 1534 1547 IF( il_ind /= 0 )THEN … … 1536 1549 ENDIF 1537 1550 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" ) 1539 1552 il_jmpp(:) = 0 1540 1553 IF( il_ind /= 0 )THEN … … 1542 1555 ENDIF 1543 1556 1544 ! check domain first poistion1557 ! check left bottom indices 1545 1558 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 poistion1550 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" ) 1551 1564 il_lci(:) = 0 1552 1565 IF( il_ind /= 0 )THEN … … 1554 1567 ENDIF 1555 1568 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" ) 1557 1570 il_lcj(:) = 0 1558 1571 IF( il_ind /= 0 )THEN … … 1560 1573 ENDIF 1561 1574 1562 ! check domain last poistion1575 ! check subdomain dimension 1563 1576 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 start1568 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" ) 1569 1582 il_ldi(:) = 0 1570 1583 IF( il_ind /= 0 )THEN … … 1572 1585 ENDIF 1573 1586 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" ) 1575 1588 il_ldj(:) = 0 1576 1589 IF( il_ind /= 0 )THEN … … 1578 1591 ENDIF 1579 1592 1580 ! check halo size start1593 ! check first indoor indices 1581 1594 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 end1586 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" ) 1587 1600 il_lei(:) = 0 1588 1601 IF( il_ind /= 0 )THEN … … 1590 1603 ENDIF 1591 1604 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" ) 1593 1606 il_lej(:) = 0 1594 1607 IF( il_ind /= 0 )THEN … … 1596 1609 ENDIF 1597 1610 1598 ! check halo size end1611 ! check last indoor indices 1599 1612 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") 1601 1614 ENDIF 1602 1615 … … 1630 1643 !> 1631 1644 !> @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... 1633 1648 !> 1634 !> @param[in] id_fileid file id1649 !> @param[in] td_file file structure 1635 1650 !------------------------------------------------------------------- 1636 1651 SUBROUTINE iom_rstdimg__write_var(td_file) … … 1667 1682 CASE('no0d','no1d','no2d','no3d') 1668 1683 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 1669 1694 DO jk=1,td_file%t_var(ji)%t_dim(3)%i_len 1670 1695 SELECT CASE (td_file%t_var(ji)%i_ndim)
Note: See TracChangeset
for help on using the changeset viewer.