Changeset 1658 in lmdz_wrf
- Timestamp:
- Sep 27, 2017, 6:22:00 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/module_generic.f90
r1655 r1658 19 19 !!! 20 20 ! create_NCfile: Subroutine to create a netCDF file 21 ! handle_err: Subroutine to provide the error message when something with netCDF went wrong 22 ! handle_errf: Subroutine to provide the error message when something with netCDF went wrong (including fname) 21 23 ! isin_file: Function to tell if a given variable is inside a file 22 24 ! isin_ncunit: Function to tell if a given variable is inside a netcdf file unit … … 412 414 USE netcdf 413 415 414 INTEGER, INTENT(IN) :: st 416 INTEGER, INTENT(in) :: st 417 418 !!!!!!! Variables 419 ! fn: function name from which it is used 415 420 416 421 IF (st /= nf90_noerr) THEN 417 422 PRINT *, TRIM(emsg) 418 PRINT *, TRIM(nf90_strerror(st))423 PRINT *, ' ' // TRIM(nf90_strerror(st)) 419 424 STOP "Stopped" 420 425 END IF 421 426 422 427 END SUBROUTINE handle_err 428 429 ! From UNIDATA: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html 430 SUBROUTINE handle_errf(st, fn) 431 ! Subroutine to provide the error message when something with netCDF went wrong (including fname) 432 433 USE netcdf 434 435 INTEGER, INTENT(in) :: st 436 CHARACTER(len=*), INTENT(in) :: fn 437 438 !!!!!!! Variables 439 ! st: netCDF status number 440 ! fn: function name from which it is used 441 442 IF (st /= nf90_noerr) THEN 443 PRINT *, TRIM(emsg) 444 PRINT *, ' ' // TRIM(fn) // ': ' // TRIM(nf90_strerror(st)) 445 STOP "Stopped" 446 END IF 447 448 END SUBROUTINE handle_errf 423 449 424 450 SUBROUTINE create_NCfile(filename, dimsfile, namelistfile, varsfile, ncid) … … 460 486 ! Opening creation status 461 487 rcode = nf90_create(TRIM(filename), NF90_NETCDF4, ncid) 462 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)488 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 463 489 464 490 ! Reading dimensions file … … 504 530 END IF 505 531 rcode = nf90_def_dim(ncid, TRIM(valsline(1)), dimsize, dimid) 506 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)532 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 507 533 vs = valsline(2) 508 534 CALL removeChar(vs, ' ') … … 578 604 579 605 rcode = nf90_def_var(ncid, vname, vartype, dimsvar, idvarnew) 580 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)606 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 581 607 582 608 ! Adding attributes 583 609 rcode = nf90_put_att(ncid, idvarnew, 'standard_name', TRIM(valsline(2))) 584 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)610 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 585 611 rcode = nf90_put_att(ncid, idvarnew, 'long_name', TRIM(valsline(3))) 586 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)612 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 587 613 rcode = nf90_put_att(ncid, idvarnew, 'units', TRIM(valsline(4))) 588 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)614 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 589 615 590 616 idvarnew = idvarnew + 1 … … 596 622 597 623 rcode = NF90_ENDDEF(ncid) 598 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)624 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 599 625 600 626 DEALLOCATE(valsline) … … 624 650 625 651 fname = 'get_var2dims_file' 626 PRINT *,TRIM(fname)652 !PRINT *,TRIM(fname) 627 653 628 654 ! Opening creation status 629 655 rcode = nf90_open(TRIM(filename), NF90_NOWRITE, nid) 630 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)656 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 631 657 632 658 rcode = nf90_inq_varid(nid, varname, vid) 633 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)659 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 634 660 635 661 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 636 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)662 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 637 663 638 664 IF (Ndims /= 2) THEN … … 642 668 643 669 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 644 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)670 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 645 671 646 672 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var2dims_file(1)) 647 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)673 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 648 674 649 675 rcode = nf90_inquire_dimension(nid, dimsid(2), LEN = get_var2dims_file(2)) 650 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)676 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 651 677 652 678 rcode = NF90_CLOSE(nid) 653 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)679 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 654 680 655 681 END FUNCTION get_var2dims_file … … 670 696 INTEGER :: rcode 671 697 INTEGER, DIMENSION(3) :: dimsid 672 CHARACTER(LEN=250) :: msg 698 673 699 674 700 !!!!!!! Variables … … 677 703 678 704 fname = 'get_var3dims_file' 679 PRINT *,TRIM(fname)705 !PRINT *,TRIM(fname) 680 706 681 707 ! Opening creation status 682 708 rcode = nf90_open(TRIM(filename), NF90_NOWRITE, nid) 683 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)709 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 684 710 685 711 rcode = nf90_inq_varid(nid, varname, vid) 686 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)712 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 687 713 688 714 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 689 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)715 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 690 716 691 717 IF (Ndims /= 3) THEN … … 695 721 696 722 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 697 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)723 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 698 724 699 725 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var3dims_file(1)) 700 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)726 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 701 727 702 728 rcode = nf90_inquire_dimension(nid, dimsid(2), LEN = get_var3dims_file(2)) 703 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)729 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 704 730 705 731 rcode = nf90_inquire_dimension(nid, dimsid(3), LEN = get_var3dims_file(3)) 706 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)732 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 707 733 708 734 rcode = NF90_CLOSE(nid) 709 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)735 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 710 736 711 737 END FUNCTION get_var3dims_file … … 727 753 INTEGER :: rcode 728 754 INTEGER, DIMENSION(1) :: dimsid 729 CHARACTER(LEN=250) :: msg 755 730 756 731 757 !!!!!!! Variables … … 734 760 735 761 fname = 'get_var1dims_ncunit' 736 PRINT *,TRIM(fname)762 !PRINT *,TRIM(fname) 737 763 738 764 rcode = nf90_inq_varid(nid, varname, vid) 739 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)765 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 740 766 741 767 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 742 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)768 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 743 769 744 770 IF (Ndims /= 1) THEN … … 748 774 749 775 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 750 IF (rcode /= NF90_NOERR) CALL handle_err(rcode) 776 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 777 778 rcode = nf90_inquire_dimension(nid, dimsid(1), name=msg) 751 779 752 780 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var1dims_ncunit(1)) 753 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)781 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 754 782 755 783 END FUNCTION get_var1dims_ncunit … … 771 799 INTEGER :: rcode 772 800 INTEGER, DIMENSION(2) :: dimsid 773 CHARACTER(LEN=250) :: msg 801 774 802 775 803 !!!!!!! Variables … … 778 806 779 807 fname = 'get_var2dims_ncunit' 780 PRINT *,TRIM(fname)808 !PRINT *,TRIM(fname) 781 809 782 810 rcode = nf90_inq_varid(nid, varname, vid) 783 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)811 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 784 812 785 813 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 786 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)814 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 787 815 788 816 IF (Ndims /= 2) THEN … … 792 820 793 821 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 794 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)822 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 795 823 796 824 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var2dims_ncunit(1)) 797 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)825 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 798 826 799 827 rcode = nf90_inquire_dimension(nid, dimsid(2), LEN = get_var2dims_ncunit(2)) 800 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)828 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 801 829 802 830 END FUNCTION get_var2dims_ncunit … … 818 846 INTEGER :: rcode 819 847 INTEGER, DIMENSION(3) :: dimsid 820 CHARACTER(LEN=250) :: msg 848 821 849 822 850 !!!!!!! Variables … … 825 853 826 854 fname = 'get_var3dims_ncunit' 827 PRINT *,TRIM(fname)855 !PRINT *,TRIM(fname) 828 856 829 857 rcode = nf90_inq_varid(nid, varname, vid) 830 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)858 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 831 859 832 860 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 833 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)861 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 834 862 835 863 IF (Ndims /= 3) THEN … … 839 867 840 868 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 841 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)869 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 842 870 843 871 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var3dims_ncunit(1)) 844 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)872 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 845 873 846 874 rcode = nf90_inquire_dimension(nid, dimsid(2), LEN = get_var3dims_ncunit(2)) 847 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)875 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 848 876 849 877 rcode = nf90_inquire_dimension(nid, dimsid(3), LEN = get_var3dims_ncunit(3)) 850 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)878 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 851 879 852 880 END FUNCTION get_var3dims_ncunit … … 867 895 INTEGER :: rcode 868 896 INTEGER, DIMENSION(4) :: dimsid 869 CHARACTER(LEN=250) :: msg 897 870 898 871 899 !!!!!!! Variables … … 874 902 875 903 fname = 'get_var4dims_file' 876 PRINT *,TRIM(fname)904 !PRINT *,TRIM(fname) 877 905 878 906 ! Opening creation status 879 907 rcode = nf90_open(TRIM(filename), NF90_NOWRITE, nid) 880 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)908 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 881 909 882 910 rcode = nf90_inq_varid(nid, varname, vid) 883 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)911 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 884 912 885 913 rcode = nf90_inquire_variable(nid, vid, NDIMS = Ndims) 886 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)914 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 887 915 888 916 IF (Ndims /= 4) THEN … … 892 920 893 921 rcode = nf90_inquire_variable(nid, vid, DIMIDS = dimsid) 894 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)922 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 895 923 896 924 rcode = nf90_inquire_dimension(nid, dimsid(1), LEN = get_var4dims_file(1)) 897 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)925 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 898 926 899 927 rcode = nf90_inquire_dimension(nid, dimsid(2), LEN = get_var4dims_file(2)) 900 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)928 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 901 929 902 930 rcode = nf90_inquire_dimension(nid, dimsid(3), LEN = get_var4dims_file(3)) 903 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)931 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 904 932 905 933 rcode = nf90_inquire_dimension(nid, dimsid(4), LEN = get_var4dims_file(4)) 906 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)934 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 907 935 908 936 rcode = NF90_CLOSE(nid) 909 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)937 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 910 938 911 939 END FUNCTION get_var4dims_file … … 929 957 930 958 fname = 'get_varNdims_file' 931 PRINT *,TRIM(fname)959 !PRINT *,TRIM(fname) 932 960 933 961 ! Opening creation status 934 962 rcode = nf90_open(TRIM(filename), NF90_NOWRITE, nid) 935 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)963 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 936 964 937 965 rcode = nf90_inq_varid(nid, varname, vid) 938 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)966 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 939 967 940 968 rcode = nf90_inquire_variable(nid, vid, NDIMS = get_varNdims_file) 941 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)969 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 942 970 943 971 rcode = NF90_CLOSE(nid) 944 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)972 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 945 973 946 974 END FUNCTION get_varNdims_file … … 965 993 966 994 fname = 'get_varNdims_ncunit' 967 PRINT *,TRIM(fname)995 !PRINT *,TRIM(fname) 968 996 969 997 rcode = nf90_inq_varid(nid, varname, vid) 970 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)998 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 971 999 972 1000 rcode = nf90_inquire_variable(nid, vid, NDIMS = get_varNdims_ncunit) 973 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1001 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 974 1002 975 1003 END FUNCTION get_varNdims_ncunit … … 988 1016 INTEGER :: iv, rcode 989 1017 CHARACTER(LEN=1000) :: varinfile 990 CHARACTER(LEN=250) :: msg991 1018 992 1019 !!!!!!! Variables … … 998 1025 ! Opening creation status 999 1026 rcode = nf90_open(TRIM(filename), NF90_NOWRITE, nid) 1000 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1027 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1001 1028 1002 1029 rcode = nf90_inquire(nid, Ndims, Nvars) 1003 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1030 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1004 1031 1005 1032 DO iv=1, Nvars 1006 1033 rcode = nf90_inquire_variable(nid, iv, name=varinfile) 1007 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1034 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1008 1035 IF (TRIM(varinfile) == TRIM(varname)) THEN 1009 1036 isin_file = .TRUE. … … 1015 1042 1016 1043 rcode = NF90_CLOSE(nid) 1017 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1044 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1018 1045 1019 1046 END FUNCTION isin_file … … 1033 1060 INTEGER :: iv, rcode 1034 1061 CHARACTER(LEN=1000) :: varinfile 1035 CHARACTER(LEN=250) :: msg1036 1062 1037 1063 !!!!!!! Variables … … 1042 1068 1043 1069 rcode = nf90_inquire(nid, Ndims, Nvars) 1044 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1070 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1045 1071 1046 1072 DO iv=1, Nvars 1047 1073 rcode = nf90_inquire_variable(nid, iv, name=varinfile) 1048 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1074 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1049 1075 IF (TRIM(varinfile) == TRIM(varname)) THEN 1050 1076 isin_ncunit = .TRUE. … … 1103 1129 CALL removeChar(ncvarname, ' ') 1104 1130 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1105 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1131 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1106 1132 1107 1133 rcode = nf90_put_var(ncid, varid, vals) 1108 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1134 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1109 1135 vfound = .TRUE. 1110 1136 CYCLE … … 1170 1196 CALL removeChar(ncvarname, ' ') 1171 1197 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1172 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1198 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1173 1199 1174 1200 rcode = nf90_put_var(ncid, varid, vals) 1175 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1201 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1176 1202 vfound = .TRUE. 1177 1203 CYCLE … … 1237 1263 CALL removeChar(ncvarname, ' ') 1238 1264 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1239 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1265 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1240 1266 1241 1267 rcode = nf90_put_var(ncid, varid, vals) 1242 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1268 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1243 1269 vfound = .TRUE. 1244 1270 CYCLE … … 1306 1332 CALL removeChar(ncvarname, ' ') 1307 1333 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1308 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1334 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1309 1335 1310 1336 rcode = nf90_put_var(ncid, varid, vals, start=(/1,it/), count=(/d1,1/)) 1311 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1337 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1312 1338 vfound = .TRUE. 1313 1339 CYCLE … … 1375 1401 CALL removeChar(ncvarname, ' ') 1376 1402 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1377 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1403 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1378 1404 1379 1405 rcode = nf90_put_var(ncid, varid, vals, start=(/1,1,it/), count=(/d1,d2,1/)) 1380 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1406 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1381 1407 vfound = .TRUE. 1382 1408 CYCLE … … 1444 1470 CALL removeChar(ncvarname, ' ') 1445 1471 rcode = nf90_inq_varid(ncid, ncvarname, varid) 1446 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1472 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1447 1473 1448 1474 rcode = nf90_put_var(ncid, varid, vals, start=(/1,1,1,it/), count=(/d1,d2,d3,1/)) 1449 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1475 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1450 1476 vfound = .TRUE. 1451 1477 CYCLE … … 1484 1510 ! d1: shape of the matrix 1485 1511 ! vals: values to get 1486 ! vname: name of the variable to get 1512 ! vname: name of the variable to getºº 1487 1513 1488 1514 fname = 'get_varI1D_ncunit' … … 1496 1522 1497 1523 rcode = nf90_inq_varid(ncid, vname, varid) 1498 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1524 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1499 1525 1500 1526 rcode = nf90_get_var(ncid, varid, vals) 1501 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1527 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1502 1528 1503 1529 END SUBROUTINE get_varI1D_ncunit 1504 1505 1530 1506 1531 SUBROUTINE get_varI2D_ncunit(ncid, d1, d2, vname, vals) … … 1535 1560 1536 1561 rcode = nf90_inq_varid(ncid, vname, varid) 1537 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1562 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1538 1563 1539 1564 rcode = nf90_get_var(ncid, varid, vals) 1540 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1565 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1541 1566 1542 1567 END SUBROUTINE get_varI2D_ncunit 1568 1569 SUBROUTINE get_varI3D_ncunit(ncid, d1, d2, d3, vname, vals) 1570 ! Subroutine to get a 2D integer variable from a netCDF file unit 1571 1572 USE netcdf 1573 1574 IMPLICIT NONE 1575 1576 INTEGER, INTENT(in) :: ncid, d1, d2, d3 1577 CHARACTER(LEN=*), INTENT(in) :: vname 1578 INTEGER, DIMENSION(d1,d2,d3), INTENT(out) :: vals 1579 1580 ! Local 1581 INTEGER :: rcode, varid 1582 LOGICAL :: vfound 1583 1584 !!!!!!! Variables 1585 ! ncid: netCDF file identifier 1586 ! d1: shape of the matrix 1587 ! vals: values to get 1588 ! vname: name of the variable to get 1589 1590 fname = 'get_varI3D_ncunit' 1591 1592 vfound = isin_ncunit(ncid, vname) 1593 1594 IF (.NOT.vfound) THEN 1595 msg = "Unit file does not have variable '" // TRIM(vname) // "'" 1596 CALL ErrMsg(msg, fname, -1) 1597 END IF 1598 1599 rcode = nf90_inq_varid(ncid, vname, varid) 1600 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1601 1602 rcode = nf90_get_var(ncid, varid, vals) 1603 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1604 1605 END SUBROUTINE get_varI3D_ncunit 1543 1606 1544 1607 SUBROUTINE get_varRK0D_ncunit(ncid, vname, vals) … … 1572 1635 1573 1636 rcode = nf90_inq_varid(ncid, vname, varid) 1574 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1637 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1575 1638 1576 1639 rcode = nf90_get_var(ncid, varid, vals) 1577 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1640 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1578 1641 1579 1642 END SUBROUTINE get_varRK0D_ncunit … … 1610 1673 1611 1674 rcode = nf90_inq_varid(ncid, vname, varid) 1612 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1675 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1613 1676 1614 1677 rcode = nf90_get_var(ncid, varid, vals) 1615 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1678 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1616 1679 1617 1680 END SUBROUTINE get_varRK1D_ncunit … … 1648 1711 1649 1712 rcode = nf90_inq_varid(ncid, vname, varid) 1650 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1713 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1651 1714 1652 1715 rcode = nf90_get_var(ncid, varid, vals) 1653 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1716 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1654 1717 1655 1718 END SUBROUTINE get_varRK2D_ncunit … … 1686 1749 1687 1750 rcode = nf90_inq_varid(ncid, vname, varid) 1688 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1751 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1689 1752 1690 1753 rcode = nf90_get_var(ncid, varid, vals) 1691 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1754 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1692 1755 1693 1756 END SUBROUTINE get_varRK3D_ncunit … … 1724 1787 1725 1788 rcode = nf90_inq_varid(ncid, vname, varid) 1726 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1789 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1727 1790 1728 1791 rcode = nf90_get_var(ncid, varid, vals) 1729 IF (rcode /= NF90_NOERR) CALL handle_err (rcode)1792 IF (rcode /= NF90_NOERR) CALL handle_errf(rcode, fname) 1730 1793 1731 1794 END SUBROUTINE get_varRK4D_ncunit
Note: See TracChangeset
for help on using the changeset viewer.