- 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/file.f90
r5037 r6440 137 137 !> J.Paul 138 138 ! REVISION HISTORY: 139 !> @date November, 2013- Initial Version 140 !> @date November, 2014 - Fix memory leaks bug 139 !> @date November, 2013 - Initial Version 140 !> @date November, 2014 141 !> - Fix memory leaks bug 141 142 !> 142 143 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 288 289 !> 289 290 !> @author J.Paul 290 !> - November, 2013- Initial Version291 !> @date November, 2013 - Initial Version 291 292 !> @date November, 2014 292 !> 293 !> - use function instead of overload assignment operator 293 294 !> (to avoid memory leak) 294 295 ! … … 409 410 !> 410 411 !> @author J.Paul 411 !> - November, 2013- Initial Version412 !> @date November, 2013 - Initial Version 412 413 !> @date November, 2014 413 !> 414 !> - use function instead of overload assignment operator 414 415 !> (to avoid memory leak) 415 416 ! … … 448 449 ! 449 450 !> @author J.Paul 450 !> - November, 2013- Initial Version451 !> @date November, 2013 - Initial Version 451 452 ! 452 453 !> @param[in] cd_file file name … … 553 554 ! 554 555 !> @author J.Paul 555 !> - November, 2013- Initial Version556 !> @date November, 2013 - Initial Version 556 557 ! 557 558 !> @param[in] cd_file file name … … 589 590 ! 590 591 !> @author J.Paul 591 !> - November, 2013- Initial Version592 !> @date November, 2013 - Initial Version 592 593 ! 593 594 !> @param[in] td_file file structure … … 604 605 CHARACTER(LEN=lc) :: cl_dim 605 606 LOGICAL :: ll_error 606 607 INTEGER(i4) :: il_ind 607 LOGICAL :: ll_warn 608 609 INTEGER(i4) :: il_ind 608 610 609 611 ! loop indices … … 614 616 ! check used dimension 615 617 ll_error=.FALSE. 618 ll_warn=.FALSE. 616 619 DO ji=1,ip_maxdim 617 620 il_ind=dim_get_index( td_file%t_dim(:), & … … 619 622 & TRIM(td_var%t_dim(ji)%c_sname)) 620 623 IF( il_ind /= 0 )THEN 621 IF( td_var%t_dim(ji)%l_use .AND. & 622 & td_file%t_dim(il_ind)%l_use .AND. & 623 & td_var%t_dim(ji)%i_len /= td_file%t_dim(il_ind)%i_len )THEN 624 ll_error=.TRUE. 625 ENDIF 624 IF( td_var%t_dim(ji)%l_use .AND. & 625 & td_file%t_dim(il_ind)%l_use .AND. & 626 & td_var%t_dim(ji)%i_len /= td_file%t_dim(il_ind)%i_len )THEN 627 IF( INDEX( TRIM(td_var%c_axis), & 628 & TRIM(fct_upper(td_var%t_dim(ji)%c_name))) == 0 )THEN 629 ll_warn=.TRUE. 630 ELSE 631 ll_error=.TRUE. 632 ENDIF 633 ENDIF 626 634 ENDIF 627 635 ENDDO 628 636 629 637 IF( ll_error )THEN 630 631 file_check_var_dim=.FALSE.632 633 CALL logger_error( &634 & " FILE CHECK VAR DIM: variable and file dimension differ"//&635 & " for variable "//TRIM(td_var%c_name)//&636 & " and file "//TRIM(td_file%c_name))637 638 638 639 639 cl_dim='(/' … … 659 659 CALL logger_debug( " variable dimension: "//TRIM(cl_dim) ) 660 660 661 file_check_var_dim=.FALSE. 662 663 CALL logger_error( & 664 & " FILE CHECK VAR DIM: variable and file dimension differ"//& 665 & " for variable "//TRIM(td_var%c_name)//& 666 & " and file "//TRIM(td_file%c_name)) 667 668 ELSEIF( ll_warn )THEN 669 CALL logger_warn( & 670 & " FILE CHECK VAR DIM: variable and file dimension differ"//& 671 & " for variable "//TRIM(td_var%c_name)//& 672 & " and file "//TRIM(td_file%c_name)//". you should use"//& 673 & " var_check_dim to remove useless dimension.") 661 674 ELSE 662 675 … … 679 692 ! 680 693 !> @author J.Paul 681 !> - November, 2013- Initial Version694 !> @date November, 2013 - Initial Version 682 695 !> @date September, 2014 683 !> - add dimension tofile if need be696 !> - add dimension in file if need be 684 697 !> - do not reorder dimension from variable, before put in file 698 !> @date September, 2015 699 !> - check variable dimension expected 685 700 ! 686 701 !> @param[inout] td_file file structure … … 692 707 ! Argument 693 708 TYPE(TFILE), INTENT(INOUT) :: td_file 694 TYPE(TVAR) , INTENT(IN 709 TYPE(TVAR) , INTENT(INOUT) :: td_var 695 710 696 711 ! local variable … … 707 722 IF( TRIM(td_file%c_name) == '' )THEN 708 723 709 CALL logger_error( " FILE ADD VAR: structure file unknown" )710 724 CALL logger_debug( " FILE ADD VAR: you should have used file_init before "//& 711 725 & "running file_add_var" ) 726 CALL logger_error( " FILE ADD VAR: structure file unknown" ) 712 727 713 728 ELSE … … 723 738 & td_var%c_stdname ) 724 739 ENDIF 725 740 CALL logger_debug( & 741 & " FILE ADD VAR: ind "//TRIM(fct_str(il_ind)) ) 726 742 IF( il_ind /= 0 )THEN 727 743 … … 739 755 ELSE 740 756 741 CALL logger_ trace( &757 CALL logger_debug( & 742 758 & " FILE ADD VAR: add variable "//TRIM(td_var%c_name)//& 743 759 & ", standard name "//TRIM(td_var%c_stdname)//& … … 746 762 ! check used dimension 747 763 IF( file_check_var_dim(td_file, td_var) )THEN 764 765 ! check variable dimension expected 766 CALL var_check_dim(td_var) 748 767 749 768 ! update dimension if need be … … 770 789 !il_rec=td_file%t_dim(3)%i_len 771 790 END SELECT 772 CALL logger_info( &773 & " FILE ADD VAR: variable index "//TRIM(fct_str(il_ind)))774 791 775 792 IF( td_file%i_nvar > 0 )THEN … … 806 823 ENDIF 807 824 808 IF( il_ind < td_file%i_nvar )THEN825 IF( il_ind < td_file%i_nvar+1 )THEN 809 826 ! variable with more dimension than new variable 810 827 td_file%t_var( il_ind+1 : td_file%i_nvar+1 ) = & … … 893 910 ! 894 911 !> @author J.Paul 895 !> - November, 2013- Initial Version 912 !> @date November, 2013 - Initial Version 913 !> @date February, 2015 914 !> - define local variable structure to avoid mistake with pointer 896 915 ! 897 916 !> @param[inout] td_file file structure … … 907 926 ! local variable 908 927 INTEGER(i4) :: il_ind 928 TYPE(TVAR) :: tl_var 909 929 !---------------------------------------------------------------- 910 930 … … 928 948 IF( il_ind /= 0 )THEN 929 949 930 CALL file_del_var(td_file, td_file%t_var(il_ind)) 950 tl_var=var_copy(td_file%t_var(il_ind)) 951 CALL file_del_var(td_file, tl_var) 931 952 932 953 ELSE 933 954 934 CALL logger_ warn( &955 CALL logger_debug( & 935 956 & " FILE DEL VAR NAME: there is no variable with name or "//& 936 957 & "standard name "//TRIM(cd_name)//" in file "//& … … 953 974 !> 954 975 !> @author J.Paul 955 !> - November, 2013- Initial Version976 !> @date November, 2013 - Initial Version 956 977 !> 957 978 !> @param[inout] td_file file structure … … 1034 1055 ! new number of variable in file 1035 1056 td_file%i_nvar=td_file%i_nvar-1 1036 1037 1057 SELECT CASE(td_var%i_ndim) 1038 1058 CASE(0) … … 1096 1116 ! 1097 1117 !> @author J.Paul 1098 !> - November, 2013- Initial Version1118 !> @date November, 2013 - Initial Version 1099 1119 ! 1100 1120 !> @param[inout] td_file file structure … … 1131 1151 ! 1132 1152 !> @author J.Paul 1133 !> - November, 2013- Initial Version1153 !> @date November, 2013 - Initial Version 1134 1154 ! 1135 1155 !> @param[inout] td_file file structure … … 1247 1267 ! 1248 1268 !> @author J.Paul 1249 !> - November, 2013- Initial Version 1269 !> @date November, 2013 - Initial Version 1270 !> @date February, 2015 1271 !> - define local attribute structure to avoid mistake 1272 !> with pointer 1250 1273 ! 1251 1274 !> @param[inout] td_file file structure … … 1261 1284 ! local variable 1262 1285 INTEGER(i4) :: il_ind 1286 TYPE(TATT) :: tl_att 1263 1287 !---------------------------------------------------------------- 1264 1288 … … 1282 1306 IF( il_ind /= 0 )THEN 1283 1307 1284 CALL file_del_att(td_file, td_file%t_att(il_ind)) 1308 tl_att=att_copy(td_file%t_att(il_ind)) 1309 CALL file_del_att(td_file, tl_att) 1285 1310 1286 1311 ELSE 1287 1312 1288 CALL logger_ warn( &1313 CALL logger_debug( & 1289 1314 & " FILE DEL ATT NAME: there is no attribute with name "//& 1290 1315 & TRIM(cd_name)//" in file "//TRIM(td_file%c_name)) … … 1305 1330 ! 1306 1331 !> @author J.Paul 1307 !> - November, 2013- Initial Version1332 !> @date November, 2013 - Initial Version 1308 1333 ! 1309 1334 !> @param[inout] td_file file structure … … 1403 1428 ! 1404 1429 !> @author J.Paul 1405 !> - November, 2013- Initial Version1430 !> @date November, 2013 - Initial Version 1406 1431 ! 1407 1432 !> @param[inout] td_file file structure … … 1444 1469 ! 1445 1470 !> @author J.Paul 1446 !> - November, 2013- Initial Version1471 !> @date November, 2013 - Initial Version 1447 1472 !> @date September, 2014 1448 1473 !> - do not reorder dimension, before put in file … … 1529 1554 !> 1530 1555 !> @author J.Paul 1531 !> - November, 2013- Initial Version1556 !> @date November, 2013 - Initial Version 1532 1557 ! 1533 1558 !> @param[inout] td_file file structure … … 1609 1634 ! 1610 1635 !> @author J.Paul 1611 !> - November, 2013- Initial Version1636 !> @date November, 2013 - Initial Version 1612 1637 ! 1613 1638 !> @param[inout] td_file file structure … … 1652 1677 ! 1653 1678 !> @author J.Paul 1654 !> - November, 2013- Initial Version1679 !> @date November, 2013 - Initial Version 1655 1680 ! 1656 1681 !> @param[in] td_file file structure … … 1717 1742 WRITE(*,'(/a)') " File variable" 1718 1743 DO ji=1,td_file%i_nvar 1719 CALL var_print(td_file%t_var(ji) )!,.FALSE.)1744 CALL var_print(td_file%t_var(ji),.FALSE.) 1720 1745 ENDDO 1721 1746 ENDIF … … 1730 1755 ! 1731 1756 !> @author J.Paul 1732 !> - November, 2013- Initial Version1757 !> @date November, 2013 - Initial Version 1733 1758 ! 1734 1759 !> @param[in] cd_file file structure … … 1769 1794 ! 1770 1795 !> @author J.Paul 1771 !> - November, 2013- Initial Version 1796 !> @date November, 2013 - Initial Version 1797 !> @date February, 2015 1798 !> - add case to not return date (yyyymmdd) at the end of filename 1799 !> @date February, 2015 1800 !> - add case to not return release number 1801 !> we assume release number only on one digit (ex : file_v3.5.nc) 1772 1802 ! 1773 1803 !> @param[in] cd_file file name (without suffix) … … 1803 1833 IF( .NOT. fct_is_num(file__get_number(2:)) )THEN 1804 1834 file__get_number='' 1835 ELSEIF( LEN(TRIM(file__get_number))-1 == 8 )THEN 1836 ! date case yyyymmdd 1837 file__get_number='' 1838 ELSEIF( LEN(TRIM(file__get_number))-1 == 1 )THEN 1839 ! release number case 1840 file__get_number='' 1805 1841 ENDIF 1806 1842 ELSE … … 1816 1852 ! 1817 1853 !> @author J.Paul 1818 !> - November, 2013- Initial Version1854 !> @date November, 2013 - Initial Version 1819 1855 ! 1820 1856 !> @param[in] td_file file structure … … 1879 1915 ! 1880 1916 !> @author J.Paul 1881 !> - November, 2013- Initial Version1917 !> @date November, 2013 - Initial Version 1882 1918 ! 1883 1919 !> @param[in] td_file file structure … … 1906 1942 ! 1907 1943 !> @author J.Paul 1908 !> - November, 2013- Initial Version1944 !> @date November, 2013 - Initial Version 1909 1945 ! 1910 1946 !> @param[in] td_file file structure … … 2019 2055 ! 2020 2056 !> @author J.Paul 2021 !> - November, 2013- Initial Version2057 !> @date November, 2013 - Initial Version 2022 2058 ! 2023 2059 !> @param[in] td_file array of file structure … … 2057 2093 !> 2058 2094 !> @author J.Paul 2059 !> - September, 2014- Initial Version2095 !> @date September, 2014 - Initial Version 2060 2096 ! 2061 2097 !> @param[in] td_file array of file
Note: See TracChangeset
for help on using the changeset viewer.