Changeset 10025 for utils/tools/NESTING/src/io_netcdf.f90
- Timestamp:
- 2018-08-02T15:25:27+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
utils/tools/NESTING/src/io_netcdf.f90
r2143 r10025 25 25 USE agrif_types 26 26 ! 27 INTERFACE Read_Ncdf_var 28 MODULE PROCEDURE Read_Ncdf_var1d_Real, & 29 Read_Ncdf_var2d_Real, & 30 Read_Ncdf_var2d_Real_bis, & 31 Read_Ncdf_var3d_Real, & 32 Read_Ncdf_var4d_Real, & 33 Read_Ncdf_var3d_Real_t, & 34 Read_Ncdf_var4d_Real_t, & 35 Read_Ncdf_var4d_Real_nt, & 36 Read_Ncdf_var1d_Int, & 37 Read_Ncdf_var2d_Int, & 38 Read_Ncdf_var3d_Int, & 39 Read_Ncdf_var4d_Int, & 40 Read_Ncdf_var0d_Int, & 41 Read_Ncdf_var0d_Real 27 INTERFACE read_ncdf_var 28 MODULE PROCEDURE & 29 read_ncdf_var0d_real, read_ncdf_var1d_real, read_ncdf_var2d_real , read_ncdf_var2d_real_bis, & 30 read_ncdf_var3d_real, read_ncdf_var4d_real, read_ncdf_var3d_real_t, read_ncdf_var4d_real_t, read_ncdf_var4d_real_nt, & 31 read_ncdf_var0d_int, read_ncdf_var1d_int , read_ncdf_var2d_int , read_ncdf_var3d_int , read_ncdf_var4d_int 42 32 END INTERFACE 43 33 ! 44 INTERFACE Write_Ncdf_var 45 MODULE PROCEDURE Write_Ncdf_var1d_Real, & 46 Write_Ncdf_var2d_Real, & 47 Write_Ncdf_var3d_Real, & 48 Write_Ncdf_var4d_Real, & 49 Write_Ncdf_var3d_Real_t, & 50 Write_Ncdf_var4d_Real_t, & 51 Write_Ncdf_var4d_Real_nt, & 52 Write_Ncdf_var2d_Real_bis,& 53 Write_Ncdf_var1d_Int, & 54 Write_Ncdf_var2d_Int, & 55 Write_Ncdf_var3d_Int, & 56 Write_Ncdf_var4d_Int, & 57 Write_Ncdf_var0d_Real 34 INTERFACE write_ncdf_var 35 MODULE PROCEDURE & 36 write_ncdf_var0d_real, write_ncdf_var1d_real , write_ncdf_var2d_real , write_ncdf_var3d_real, & 37 write_ncdf_var4d_real, write_ncdf_var3d_real_t, write_ncdf_var4d_real_t, write_ncdf_var4d_real_nt, & 38 write_ncdf_var2d_real_bis , & 39 write_ncdf_var0d_int, write_ncdf_var1d_int, write_ncdf_var2d_int, write_ncdf_var3d_int, write_ncdf_var4d_int 58 40 END INTERFACE 59 41 ! 60 INTERFACE Copy_Ncdf_att61 MODULE PROCEDURE Copy_Ncdf_att_latlon,Copy_Ncdf_att_var42 INTERFACE copy_ncdf_att 43 MODULE PROCEDURE copy_ncdf_att_latlon,copy_ncdf_att_var 62 44 END INTERFACE 63 45 ! … … 65 47 ! 66 48 !**************************************************************** 67 ! subroutine Read_Ncdf_dim *49 ! subroutine read_ncdf_dim * 68 50 ! * 69 51 ! subroutine to retrieve value of a given dimension * … … 75 57 !**************************************************************** 76 58 ! 77 SUBROUTINE Read_Ncdf_dim(dimname,file,dimval)59 SUBROUTINE read_ncdf_dim(dimname,file,dimval) 78 60 ! 79 61 IMPLICIT NONE … … 97 79 status = nf90_close(ncid) 98 80 ! 99 END SUBROUTINE Read_Ncdf_dim81 END SUBROUTINE read_ncdf_dim 100 82 ! 101 83 !************************************************************** 102 ! end subroutine Read_Ncdf_dim84 ! end subroutine read_ncdf_dim 103 85 !************************************************************** 104 86 ! 105 87 !**************************************************************** 106 ! subroutine Write_Ncdf_dim *88 ! subroutine write_ncdf_dim * 107 89 ! * 108 90 ! subroutine to write a dimension in a given file * … … 114 96 !**************************************************************** 115 97 ! 116 SUBROUTINE Write_Ncdf_dim(dimname,file,dimval)98 SUBROUTINE write_ncdf_dim(dimname,file,dimval) 117 99 ! 118 100 IMPLICIT NONE … … 143 125 status = nf90_close(ncid) 144 126 ! 145 END SUBROUTINE Write_Ncdf_dim127 END SUBROUTINE write_ncdf_dim 146 128 ! 147 129 !************************************************************** 148 ! end subroutine Write_Ncdf_dim130 ! end subroutine write_ncdf_dim 149 131 !************************************************************** 150 132 ! 151 133 !**************************************************************** 152 ! subroutine Read_Ncdf_var *134 ! subroutine read_ncdf_var * 153 135 ! * 154 136 ! subroutine to retrieve values of a given variable * … … 159 141 ! * 160 142 !**************************************************************** 161 ! 162 !************************************************************** 163 ! subroutine Read_Ncdf_var1d_real 164 !************************************************************** 165 ! 166 SUBROUTINE Read_Ncdf_var1d_Real(varname,file,tabvar) 143 ! 144 SUBROUTINE read_ncdf_var1d_real(varname,file,tabvar) 167 145 ! 168 146 IMPLICIT NONE … … 202 180 status = nf90_close(ncid) 203 181 ! 204 END SUBROUTINE Read_Ncdf_var1d_Real182 END SUBROUTINE read_ncdf_var1d_real 205 183 ! 206 !************************************************************** 207 ! end subroutine Read_Ncdf_var1d_real 208 !************************************************************** 209 ! 210 ! 211 !************************************************************** 212 ! subroutine Read_Ncdf_var2d_real 213 !************************************************************** 214 ! 215 SUBROUTINE Read_Ncdf_var2d_Real(varname,file,tabvar) 184 ! 185 SUBROUTINE read_ncdf_var2d_real(varname,file,tabvar) 216 186 ! 217 187 IMPLICIT NONE … … 250 220 status = nf90_close(ncid) 251 221 ! 252 END SUBROUTINE Read_Ncdf_var2d_Real222 END SUBROUTINE read_ncdf_var2d_real 253 223 ! 254 !************************************************************** 255 ! end subroutine Read_Ncdf_var2d_real 256 !************************************************************** 257 ! 258 259 ! 260 !************************************************************** 261 ! subroutine Read_Ncdf_var2d_real_bis 262 !************************************************************** 263 ! 264 SUBROUTINE Read_Ncdf_var2d_Real_bis(varname,file,tabvar,strt,cnt) 224 ! 225 SUBROUTINE read_ncdf_var2d_real_bis(varname,file,tabvar,strt,cnt) 265 226 ! 266 227 IMPLICIT NONE … … 301 262 status = nf90_close(ncid) 302 263 ! 303 END SUBROUTINE Read_Ncdf_var2d_Real_bis264 END SUBROUTINE read_ncdf_var2d_real_bis 304 265 ! 305 !************************************************************** 306 ! end subroutine Read_Ncdf_var2d_real_bis 307 !************************************************************** 308 ! 309 310 311 ! 312 !************************************************************** 313 ! subroutine Read_Ncdf_var3d_real 314 !************************************************************** 315 ! 316 SUBROUTINE Read_Ncdf_var3d_Real(varname,file,tabvar) 266 ! 267 SUBROUTINE read_ncdf_var3d_real(varname,file,tabvar) 317 268 ! 318 269 IMPLICIT NONE … … 358 309 status = nf90_close(ncid) 359 310 ! 360 END SUBROUTINE Read_Ncdf_var3d_Real311 END SUBROUTINE read_ncdf_var3d_real 361 312 ! 362 !************************************************************** 363 ! end subroutine Read_Ncdf_var3d_real 364 !************************************************************** 365 ! 366 ! 367 !************************************************************** 368 ! subroutine Read_Ncdf_var4d_real 369 !************************************************************** 370 ! 371 SUBROUTINE Read_Ncdf_var4d_Real(varname,file,tabvar) 313 ! 314 SUBROUTINE read_ncdf_var4d_real(varname,file,tabvar) 372 315 ! 373 316 IMPLICIT NONE … … 410 353 status = nf90_close(ncid) 411 354 ! 412 END SUBROUTINE Read_Ncdf_var4d_Real413 414 SUBROUTINE Read_Ncdf_var0d_Real(varname,file,tabvar)355 END SUBROUTINE read_ncdf_var4d_real 356 357 SUBROUTINE read_ncdf_var0d_real(varname,file,tabvar) 415 358 ! 416 359 IMPLICIT NONE … … 438 381 status = nf90_close(ncid) 439 382 ! 440 END SUBROUTINE Read_Ncdf_var0d_Real441 442 SUBROUTINE Read_Ncdf_var0d_Int(varname,file,tabvar)383 END SUBROUTINE read_ncdf_var0d_real 384 385 SUBROUTINE read_ncdf_var0d_int(varname,file,tabvar) 443 386 ! 444 387 IMPLICIT NONE … … 466 409 status = nf90_close(ncid) 467 410 ! 468 END SUBROUTINE Read_Ncdf_var0d_Int411 END SUBROUTINE read_ncdf_var0d_int 469 412 ! 470 !************************************************************** 471 ! end subroutine Read_Ncdf_var4d_real 472 !************************************************************** 473 ! 474 ! 475 !************************************************************** 476 ! subroutine Read_Ncdf_var1d_int 477 !************************************************************** 478 ! 479 SUBROUTINE Read_Ncdf_var1d_Int(varname,file,tabvar) 413 ! 414 SUBROUTINE read_ncdf_var1d_int(varname,file,tabvar) 480 415 ! 481 416 IMPLICIT NONE … … 515 450 status = nf90_close(ncid) 516 451 ! 517 END SUBROUTINE Read_Ncdf_var1d_Int452 END SUBROUTINE read_ncdf_var1d_int 518 453 ! 519 !************************************************************** 520 ! end subroutine Read_Ncdf_var1d_int 521 !************************************************************** 522 ! 523 ! 524 !************************************************************** 525 ! subroutine Read_Ncdf_var2d_int 526 !************************************************************** 527 ! 528 SUBROUTINE Read_Ncdf_var2d_Int(varname,file,tabvar) 454 ! 455 SUBROUTINE read_ncdf_var2d_int(varname,file,tabvar) 529 456 ! 530 457 IMPLICIT NONE … … 563 490 status = nf90_close(ncid) 564 491 ! 565 END SUBROUTINE Read_Ncdf_var2d_Int492 END SUBROUTINE read_ncdf_var2d_int 566 493 ! 567 !************************************************************** 568 ! end subroutine Read_Ncdf_var2d_Int 569 !************************************************************** 570 ! 571 572 ! 573 !************************************************************** 574 ! subroutine Read_Ncdf_var3d_Int 575 !************************************************************** 576 ! 577 SUBROUTINE Read_Ncdf_var3d_Int(varname,file,tabvar) 494 ! 495 SUBROUTINE read_ncdf_var3d_int(varname,file,tabvar) 578 496 ! 579 497 IMPLICIT NONE … … 615 533 status = nf90_close(ncid) 616 534 ! 617 END SUBROUTINE Read_Ncdf_var3d_Int535 END SUBROUTINE read_ncdf_var3d_int 618 536 ! 619 !************************************************************** 620 ! end subroutine Read_Ncdf_var3d_int 621 !************************************************************** 622 ! 623 ! 624 ! 625 !************************************************************** 626 ! subroutine Read_Ncdf_var4d_int 627 !************************************************************** 628 ! 629 SUBROUTINE Read_Ncdf_var4d_Int(varname,file,tabvar) 537 ! 538 SUBROUTINE read_ncdf_var4d_int(varname,file,tabvar) 630 539 ! 631 540 IMPLICIT NONE … … 668 577 status = nf90_close(ncid) 669 578 ! 670 END SUBROUTINE Read_Ncdf_var4d_Int579 END SUBROUTINE read_ncdf_var4d_int 671 580 ! 672 !************************************************************** 673 ! end subroutine Read_Ncdf_var4d_real 674 !************************************************************** 675 ! 676 ! 677 !**************************************************************** 678 ! subroutine Write_Ncdf_var * 581 ! 582 !**************************************************************** 583 ! subroutine write_ncdf_var * 679 584 ! * 680 585 ! subroutine to write a variable in a given file * … … 688 593 ! 689 594 ! 690 !************************************************************** 691 ! subroutine Write_Ncdf_var1d_real 692 !************************************************************** 693 ! 694 SUBROUTINE Write_Ncdf_var1d_Real(varname,dimname,file,tabvar,typevar) 595 SUBROUTINE write_ncdf_var1d_real(varname,dimname,file,tabvar,typevar) 695 596 ! 696 597 IMPLICIT NONE 697 598 ! 698 599 CHARACTER(*),INTENT(in) :: varname,file,dimname,typevar 699 REAL*8, DIMENSION(:), POINTER:: tabvar600 REAL*8, DIMENSION(:), INTENT(in) :: tabvar 700 601 ! 701 602 ! local variables … … 711 612 ENDIF 712 613 ! 713 status = nf90_inq_dimid(ncid,dimname, 614 status = nf90_inq_dimid(ncid,dimname,dimid) 714 615 status = nf90_inq_varid(ncid,varname,varid) 715 616 status = nf90_redef(ncid) … … 725 626 status = nf90_close(ncid) 726 627 ! 727 END SUBROUTINE Write_Ncdf_var1d_Real 728 ! 729 !************************************************************** 730 ! end subroutine Write_Ncdf_var1d_real 731 !************************************************************** 732 ! 733 !************************************************************** 734 ! subroutine Write_Ncdf_var2d_real 735 !************************************************************** 736 ! 737 SUBROUTINE Write_Ncdf_var2d_Real_bis(varname,dimname,file,tabvar,nbdim,typevar) 628 END SUBROUTINE write_ncdf_var1d_real 629 ! 630 ! 631 SUBROUTINE write_ncdf_var2d_real_bis(varname,dimname,file,tabvar,nbdim,typevar) 738 632 ! 739 633 IMPLICIT NONE … … 743 637 CHARACTER(*), DIMENSION(4) :: dimname 744 638 REAL*8, DIMENSION(:,:) :: tabvar 745 REAL*8, DIMENSION(:,:,:),POINTER:: tabtemp3d746 REAL*8, DIMENSION(:,:,:,:),POINTER:: tabtemp4d639 REAL*8, ALLOCATABLE, DIMENSION(:,:,:) :: tabtemp3d 640 REAL*8, ALLOCATABLE, DIMENSION(:,:,:,:) :: tabtemp4d 747 641 ! 748 642 ! local variables … … 796 690 IF(nbdim==3) status = nf90_put_var(ncid,varid,tabtemp3d) 797 691 ! 798 IF(ASSOCIATED( tabtemp3d ) ) DEALLOCATE( tabtemp3d ) 799 IF(ASSOCIATED( tabtemp4d ) ) DEALLOCATE( tabtemp4d ) 800 ! 801 status = nf90_close(ncid) 802 ! 803 END SUBROUTINE Write_Ncdf_var2d_Real_bis 804 ! 805 !************************************************************** 806 ! end subroutine Write_Ncdf_var2d_real 807 !************************************************************** 808 ! 809 ! 810 !************************************************************** 811 ! subroutine Write_Ncdf_var2d_real 812 !************************************************************** 813 ! 814 SUBROUTINE Write_Ncdf_var2d_Real(varname,dimname,file,tabvar,typevar) 692 IF(ALLOCATED( tabtemp3d ) ) DEALLOCATE( tabtemp3d ) 693 IF(ALLOCATED( tabtemp4d ) ) DEALLOCATE( tabtemp4d ) 694 ! 695 status = nf90_close(ncid) 696 ! 697 END SUBROUTINE write_ncdf_var2d_real_bis 698 ! 699 ! 700 SUBROUTINE write_ncdf_var2d_real(varname,dimname,file,tabvar,typevar) 815 701 ! 816 702 ! implicit none … … 818 704 CHARACTER(*),INTENT(in) :: varname,file,typevar 819 705 CHARACTER(*), DIMENSION(2) :: dimname 820 REAL*8, DIMENSION(:,:), POINTER:: tabvar706 REAL*8, DIMENSION(:,:), INTENT(in) :: tabvar 821 707 ! 822 708 ! local variables … … 851 737 status = nf90_close(ncid) 852 738 ! 853 END SUBROUTINE Write_Ncdf_var2d_Real 854 ! 855 !************************************************************** 856 ! end subroutine Write_Ncdf_var2d_real 857 !************************************************************** 858 ! 859 ! 860 !************************************************************** 861 ! subroutine Write_Ncdf_var3d_real 862 !************************************************************** 863 ! 864 SUBROUTINE Write_Ncdf_var3d_Real(varname,dimname,file,tabvar,typevar) 739 END SUBROUTINE write_ncdf_var2d_real 740 ! 741 ! 742 SUBROUTINE write_ncdf_var3d_real(varname,dimname,file,tabvar,typevar) 865 743 ! 866 744 IMPLICIT NONE … … 868 746 CHARACTER(*),INTENT(in) :: varname,file,typevar 869 747 CHARACTER(*),DIMENSION(3),INTENT(in) :: dimname 870 REAL*8, DIMENSION(:,:,:), POINTER:: tabvar748 REAL*8, DIMENSION(:,:,:), INTENT(in) :: tabvar 871 749 ! 872 750 ! local variables … … 902 780 status = nf90_close(ncid) 903 781 ! 904 END SUBROUTINE Write_Ncdf_var3d_Real 905 ! 906 !************************************************************** 907 ! end subroutine Write_Ncdf_var3d_real 908 !************************************************************** 909 ! 910 ! 911 !************************************************************** 912 ! subroutine Write_Ncdf_var4d_real 913 !************************************************************** 914 ! 915 SUBROUTINE Write_Ncdf_var4d_Real(varname,dimname,file,tabvar,typevar) 782 END SUBROUTINE write_ncdf_var3d_real 783 ! 784 ! 785 SUBROUTINE write_ncdf_var4d_real(varname,dimname,file,tabvar,typevar) 916 786 ! 917 787 IMPLICIT NONE … … 919 789 CHARACTER(*),INTENT(in) :: varname,file,typevar 920 790 CHARACTER(*),DIMENSION(4),INTENT(in) :: dimname 921 REAL*8, DIMENSION(:,:,:,:), POINTER:: tabvar791 REAL*8, DIMENSION(:,:,:,:), INTENT(in) :: tabvar 922 792 ! 923 793 ! local variables … … 959 829 status = nf90_close(ncid) 960 830 ! 961 END SUBROUTINE Write_Ncdf_var4d_Real 962 ! 963 !************************************************************** 964 ! end subroutine Write_Ncdf_var4d_real 965 !************************************************************** 966 ! 967 ! 968 ! 969 !************************************************************** 970 ! subroutine Write_Ncdf_var1d_Int 971 !************************************************************** 972 ! 973 SUBROUTINE Write_Ncdf_var1d_Int(varname,dimname,file,tabvar) 974 ! 975 IMPLICIT NONE 976 ! 977 CHARACTER(*),INTENT(in) :: varname,file,dimname 978 INTEGER, DIMENSION(:), POINTER :: tabvar 831 END SUBROUTINE write_ncdf_var4d_real 832 ! 833 ! 834 SUBROUTINE write_ncdf_var1d_int(varname,dimname,file,tabvar,typevar) 835 ! 836 IMPLICIT NONE 837 ! 838 CHARACTER(*),INTENT(in) :: varname,file,dimname,typevar 839 INTEGER, DIMENSION(:), INTENT(in) :: tabvar 979 840 ! 980 841 ! local variables … … 1000 861 status = nf90_close(ncid) 1001 862 ! 1002 END SUBROUTINE Write_Ncdf_var1d_Int 1003 ! 1004 !************************************************************** 1005 ! end subroutine Write_Ncdf_var1d_Int 1006 !************************************************************** 1007 ! 1008 ! 1009 !************************************************************** 1010 ! subroutine Write_Ncdf_var2d_Int 1011 !************************************************************** 1012 ! 1013 SUBROUTINE Write_Ncdf_var2d_Int(varname,dimname,file,tabvar) 1014 ! 1015 IMPLICIT NONE 1016 ! 1017 CHARACTER(*),INTENT(in) :: varname,file 1018 CHARACTER(*), DIMENSION(2) :: dimname 1019 INTEGER, DIMENSION(:,:), POINTER :: tabvar 863 END SUBROUTINE write_ncdf_var1d_int 864 ! 865 ! 866 SUBROUTINE write_ncdf_var2d_int(varname,dimname,file,tabvar,typevar) 867 ! 868 IMPLICIT NONE 869 ! 870 CHARACTER(*), INTENT(in) :: varname,file,typevar 871 CHARACTER(*), DIMENSION(2), INTENT(in) :: dimname 872 INTEGER, DIMENSION(:,:), INTENT(in) :: tabvar 1020 873 ! 1021 874 ! local variables … … 1031 884 ENDIF 1032 885 ! 1033 status = nf90_inq_dimid(ncid,dimname(1), 1034 status = nf90_inq_dimid(ncid,dimname(2), 886 status = nf90_inq_dimid(ncid,dimname(1),dimid1) 887 status = nf90_inq_dimid(ncid,dimname(2),dimid2) 1035 888 status = nf90_inq_varid(ncid,varname,varid) 1036 889 status = nf90_redef(ncid) 1037 status = nf90_def_var(ncid,varname,nf90_int, & 1038 (/dimid1,dimid2/),varid) 890 status = nf90_def_var(ncid,varname,nf90_int,(/dimid1,dimid2/),varid) 1039 891 status = nf90_enddef(ncid) 1040 892 status = nf90_put_var(ncid,varid,tabvar) … … 1042 894 status = nf90_close(ncid) 1043 895 ! 1044 END SUBROUTINE Write_Ncdf_var2d_Int 1045 ! 1046 !************************************************************** 1047 ! end subroutine Write_Ncdf_var2d_Int 1048 !************************************************************** 1049 ! 1050 ! 1051 !************************************************************** 1052 ! subroutine Write_Ncdf_var3d_Int 1053 !************************************************************** 1054 ! 1055 SUBROUTINE Write_Ncdf_var3d_Int(varname,dimname,file,tabvar) 1056 ! 1057 IMPLICIT NONE 1058 ! 1059 CHARACTER(*),INTENT(in) :: varname,file 896 END SUBROUTINE write_ncdf_var2d_int 897 ! 898 ! 899 SUBROUTINE write_ncdf_var3d_int(varname,dimname,file,tabvar,typevar) 900 ! 901 IMPLICIT NONE 902 ! 903 CHARACTER(*),INTENT(in) :: varname,file,typevar 1060 904 CHARACTER(*),DIMENSION(3),INTENT(in) :: dimname 1061 INTEGER, DIMENSION(:,:,:), POINTER:: tabvar905 INTEGER, DIMENSION(:,:,:), INTENT(in) :: tabvar 1062 906 ! 1063 907 ! local variables … … 1085 929 status = nf90_close(ncid) 1086 930 ! 1087 END SUBROUTINE Write_Ncdf_var3d_Int 1088 ! 1089 !************************************************************** 1090 ! end subroutine Write_Ncdf_var3d_Int 1091 !************************************************************** 1092 ! 1093 ! 1094 !************************************************************** 1095 ! subroutine Write_Ncdf_var4d_Int 1096 !************************************************************** 1097 ! 1098 SUBROUTINE Write_Ncdf_var4d_Int(varname,dimname,file,tabvar) 1099 ! 1100 IMPLICIT NONE 1101 ! 1102 CHARACTER(*),INTENT(in) :: varname,file 931 END SUBROUTINE write_ncdf_var3d_int 932 ! 933 ! 934 SUBROUTINE write_ncdf_var4d_int(varname,dimname,file,tabvar,typevar) 935 ! 936 IMPLICIT NONE 937 ! 938 CHARACTER(*),INTENT(in) :: varname,file,typevar 1103 939 CHARACTER(*),DIMENSION(4),INTENT(in) :: dimname 1104 INTEGER, DIMENSION(:,:,:,:), POINTER:: tabvar940 INTEGER, DIMENSION(:,:,:,:), INTENT(in) :: tabvar 1105 941 ! 1106 942 ! local variables … … 1129 965 status = nf90_close(ncid) 1130 966 ! 1131 END SUBROUTINE Write_Ncdf_var4d_Int 1132 ! 1133 !************************************************************** 1134 ! end subroutine Write_Ncdf_var4d_Int 1135 !************************************************************** 1136 ! 1137 ! 1138 !**************************************************************** 1139 ! subroutine Read_Ncdf_var_t * 967 END SUBROUTINE write_ncdf_var4d_int 968 ! 969 ! 970 !**************************************************************** 971 ! subroutine read_ncdf_var_t * 1140 972 ! * 1141 973 ! subroutine to read a variable in a given file for time t * … … 1148 980 !**************************************************************** 1149 981 ! 1150 ! 1151 !************************************************************** 1152 ! subroutine Read_Ncdf_var3d_real_t 1153 !************************************************************** 1154 ! 1155 SUBROUTINE Read_Ncdf_var3d_Real_t(varname,file,tabvar,time) 982 ! 983 SUBROUTINE read_ncdf_var3d_real_t(varname,file,tabvar,time) 1156 984 ! 1157 985 USE agrif_types … … 1201 1029 status = nf90_close(ncid) 1202 1030 ! 1203 END SUBROUTINE Read_Ncdf_var3d_Real_t1031 END SUBROUTINE read_ncdf_var3d_real_t 1204 1032 ! 1205 !************************************************************** 1206 ! end subroutine Read_Ncdf_var3d_real_t 1207 !************************************************************** 1208 ! 1209 ! 1210 ! 1211 !**************************************************************** 1212 ! subroutine Write_Ncdf_var_t * 1033 ! 1034 !**************************************************************** 1035 ! subroutine write_ncdf_var_t * 1213 1036 ! * 1214 1037 ! subroutine to write a variable in a given file for time t * … … 1223 1046 ! 1224 1047 ! 1225 !************************************************************** 1226 ! subroutine Write_Ncdf_var3d_real_t 1227 !************************************************************** 1228 ! 1229 SUBROUTINE Write_Ncdf_var3d_Real_t(varname,dimname,file,tabvar,time,typevar) 1048 SUBROUTINE write_ncdf_var3d_real_t(varname,dimname,file,tabvar,time,typevar) 1230 1049 ! 1231 1050 IMPLICIT NONE … … 1234 1053 CHARACTER(*),DIMENSION(3),INTENT(in) :: dimname 1235 1054 INTEGER :: time 1236 REAL*8, DIMENSION(:,:,:), POINTER:: tabvar1055 REAL*8, DIMENSION(:,:,:), INTENT(in) :: tabvar 1237 1056 ! 1238 1057 ! local variables … … 1280 1099 status = nf90_close(ncid) 1281 1100 ! 1282 END SUBROUTINE Write_Ncdf_var3d_Real_t 1283 ! 1284 !************************************************************** 1285 ! end subroutine Write_Ncdf_var3d_real_t 1286 !************************************************************** 1287 ! 1288 ! 1289 !**************************************************************** 1290 ! subroutine Read_Ncdf_var_t * 1101 END SUBROUTINE write_ncdf_var3d_real_t 1102 ! 1103 ! 1104 !**************************************************************** 1105 ! subroutine read_ncdf_var_t * 1291 1106 ! * 1292 1107 ! subroutine to read a variable in a given file for time t * … … 1300 1115 !**************************************************************** 1301 1116 ! 1302 ! 1303 !************************************************************** 1304 ! subroutine Read_Ncdf_var4d_real_nt 1305 !************************************************************** 1306 ! 1307 SUBROUTINE Read_Ncdf_var4d_Real_nt(varname,file,tabvar,time,level) 1117 ! 1118 SUBROUTINE read_ncdf_var4d_real_nt(varname,file,tabvar,time,level) 1308 1119 ! 1309 1120 USE agrif_types … … 1353 1164 status = nf90_close(ncid) 1354 1165 ! 1355 END SUBROUTINE Read_Ncdf_var4d_Real_nt1166 END SUBROUTINE read_ncdf_var4d_real_nt 1356 1167 ! 1357 !************************************************************** 1358 ! end subroutine Read_Ncdf_var4d_real_nt 1359 !************************************************************** 1360 ! 1361 ! 1362 !************************************************************** 1363 ! subroutine Read_Ncdf_var4d_real_t 1364 !************************************************************** 1365 ! 1366 SUBROUTINE Read_Ncdf_var4d_Real_t(varname,file,tabvar,time) 1168 ! 1169 SUBROUTINE read_ncdf_var4d_real_t(varname,file,tabvar,time) 1367 1170 ! 1368 1171 USE agrif_types … … 1405 1208 status = nf90_close(ncid) 1406 1209 ! 1407 END SUBROUTINE Read_Ncdf_var4d_Real_t1210 END SUBROUTINE read_ncdf_var4d_real_t 1408 1211 ! 1409 !************************************************************** 1410 ! end subroutine Read_Ncdf_var4d_real_t 1411 !************************************************************** 1412 ! 1413 ! 1414 !**************************************************************** 1415 ! subroutine Write_Ncdf_var_t * 1212 !**************************************************************** 1213 ! subroutine write_ncdf_var_t * 1416 1214 ! * 1417 1215 ! subroutine to write a variable in a given file for time t * … … 1427 1225 ! 1428 1226 ! 1429 !************************************************************** 1430 ! subroutine Write_Ncdf_var4d_real_t 1431 !************************************************************** 1432 ! 1433 SUBROUTINE Write_Ncdf_var4d_Real_t(varname,dimname,file,tabvar,time,typevar) 1227 SUBROUTINE write_ncdf_var4d_real_t(varname,dimname,file,tabvar,time,typevar) 1434 1228 ! 1435 1229 IMPLICIT NONE … … 1438 1232 CHARACTER(*),DIMENSION(4),INTENT(in) :: dimname 1439 1233 INTEGER :: time,level 1440 REAL*8, DIMENSION(:,:,:,:), POINTER:: tabvar1234 REAL*8, DIMENSION(:,:,:,:), INTENT(in) :: tabvar 1441 1235 ! 1442 1236 ! local variables … … 1484 1278 status = nf90_close(ncid) 1485 1279 ! 1486 END SUBROUTINE Write_Ncdf_var4d_Real_t 1487 ! 1488 !************************************************************** 1489 ! end subroutine Write_Ncdf_var4d_real_t 1490 !************************************************************** 1491 ! 1492 ! 1493 !************************************************************** 1494 ! subroutine Write_Ncdf_var4d_real_nt 1495 !************************************************************** 1496 ! 1497 SUBROUTINE Write_Ncdf_var4d_Real_nt(varname,dimname,file,tabvar,time,level,typevar) 1280 END SUBROUTINE write_ncdf_var4d_real_t 1281 ! 1282 ! 1283 SUBROUTINE write_ncdf_var4d_real_nt(varname,dimname,file,tabvar,time,level,typevar) 1498 1284 ! 1499 1285 IMPLICIT NONE … … 1502 1288 CHARACTER(*),DIMENSION(4),INTENT(in) :: dimname 1503 1289 INTEGER :: time,level 1504 REAL*8, DIMENSION(:,:,:,:), POINTER:: tabvar1290 REAL*8, DIMENSION(:,:,:,:), INTENT(in) :: tabvar 1505 1291 ! 1506 1292 ! local variables … … 1548 1334 status = nf90_close(ncid) 1549 1335 ! 1550 END SUBROUTINE Write_Ncdf_var4d_Real_nt1551 1552 SUBROUTINE Write_Ncdf_var0d_Real(varname,file,tabvar,typevar)1336 END SUBROUTINE write_ncdf_var4d_real_nt 1337 1338 SUBROUTINE write_ncdf_var0d_real(varname,file,tabvar,typevar) 1553 1339 ! 1554 1340 IMPLICIT NONE … … 1593 1379 status = nf90_close(ncid) 1594 1380 ! 1595 END SUBROUTINE Write_Ncdf_var0d_Real 1596 ! 1597 !************************************************************** 1598 ! end subroutine Write_Ncdf_var4d_real_nt 1599 !************************************************************** 1600 ! 1601 !**************************************************************** 1602 ! subroutine Read_Ncdf_VarName * 1381 END SUBROUTINE write_ncdf_var0d_real 1382 1383 SUBROUTINE write_ncdf_var0d_int(varname,file,tabvar,typevar) 1384 ! 1385 IMPLICIT NONE 1386 ! 1387 CHARACTER(*),INTENT(in) :: varname,file,typevar 1388 INTEGER :: tabvar 1389 ! 1390 ! local variables 1391 ! 1392 INTEGER :: status,ncid 1393 INTEGER :: varid 1394 ! 1395 status = nf90_open(file,NF90_WRITE,ncid) 1396 IF (status/=nf90_noerr) THEN 1397 WRITE(*,*)"unable to open netcdf file : ",file 1398 STOP 1399 ENDIF 1400 ! 1401 status = nf90_redef(ncid) 1402 status = nf90_def_var(ncid,TRIM(varname),nf90_int,varid) 1403 status = nf90_enddef(ncid) 1404 status = nf90_put_var(ncid,varid,tabvar) 1405 ! 1406 IF (status/=nf90_noerr) THEN 1407 WRITE(*,*)"unable to store variable ",varname, & 1408 " in file ",file 1409 STOP 1410 ENDIF 1411 status = nf90_close(ncid) 1412 ! 1413 END SUBROUTINE write_ncdf_var0d_int 1414 1415 ! 1416 !**************************************************************** 1417 ! subroutine read_ncdf_VarName * 1603 1418 ! * 1604 1419 ! subroutine to retrieve of all variables * … … 1610 1425 !**************************************************************** 1611 1426 ! 1612 !************************************************************** 1613 ! subroutine Read_Ncdf_VarName 1614 !************************************************************** 1615 ! 1616 SUBROUTINE Read_Ncdf_VarName(filename,tabvarname) 1427 ! 1428 SUBROUTINE read_ncdf_VarName(filename,tabvarname) 1617 1429 ! 1618 1430 CHARACTER(*),INTENT(in) :: filename … … 1637 1449 END DO 1638 1450 1639 END SUBROUTINE Read_Ncdf_Varname 1640 ! 1641 !************************************************************** 1642 ! end subroutine Read_Ncdf_VarName 1643 !************************************************************** 1644 ! 1645 !************************************************************** 1646 ! subroutine Copy_Ncdf_att 1647 !************************************************************** 1648 ! 1649 SUBROUTINE Copy_Ncdf_att_var(varname,filein,fileout) 1451 END SUBROUTINE read_ncdf_Varname 1452 ! 1453 ! 1454 SUBROUTINE copy_ncdf_att_var(varname,filein,fileout) 1650 1455 ! 1651 1456 CHARACTER(*),INTENT(in) :: filein,fileout … … 1703 1508 ! print *,'ici2' 1704 1509 ! 1705 END SUBROUTINE Copy_Ncdf_att_var 1706 ! 1707 !************************************************************** 1708 ! end subroutine Copy_Ncdf_att 1709 !************************************************************** 1710 !************************************************************** 1711 ! subroutine Copy_Ncdf_att 1712 !************************************************************** 1713 ! 1714 SUBROUTINE Copy_Ncdf_att_latlon(varname,filein,fileout,min,max) 1510 END SUBROUTINE copy_ncdf_att_var 1511 ! 1512 ! 1513 SUBROUTINE copy_ncdf_att_latlon(varname,filein,fileout,min,max) 1715 1514 ! 1716 1515 CHARACTER(*),INTENT(in) :: filein,fileout … … 1760 1559 status = nf90_close(ncid_in) 1761 1560 status = nf90_close(ncid_out) 1762 END SUBROUTINE Copy_Ncdf_att_latlon 1561 END SUBROUTINE copy_ncdf_att_latlon 1562 1763 1563 !************************************************************* 1764 1564 !************************************************************** 1765 !**************************************************************1766 ! function Get_NbDims1767 !**************************************************************1768 1565 ! 1769 1566 INTEGER FUNCTION Get_NbDims( varname , filename ) … … 1784 1581 END FUNCTION Get_NbDims 1785 1582 ! 1786 !*************************************************************1787 !**************************************************************1788 ! function Get_NbDims1789 !**************************************************************1790 1583 ! 1791 1584 LOGICAL FUNCTION Dims_Existence( dimname , filename ) … … 1811 1604 END FUNCTION Dims_Existence 1812 1605 ! 1813 !*************************************************************1814 !**************************************************************1815 1606 END MODULE io_netcdf
Note: See TracChangeset
for help on using the changeset viewer.