Changeset 1897 for LMDZ5/trunk/libf/phylmd
- Timestamp:
- Oct 25, 2013, 10:12:38 AM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/iophy.F90
r1852 r1897 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 MODULE iophy 5 6 USE phys_output_var_mod7 #ifdef CPP_XIOS8 USE wxios9 #endif10 11 #ifdef CPP_XIOS12 USE wxios13 #endif14 5 15 6 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lat … … 49 40 50 41 SUBROUTINE init_iophy_new(rlat,rlon) 51 USE dimphy 52 USE mod_phys_lmdz_para 53 USE mod_grid_phy_lmdz 54 USE ioipsl 55 42 USE dimphy, only: klon 43 USE mod_phys_lmdz_para, only: gather, bcast, & 44 jj_nb, jj_begin, jj_end, ii_begin, ii_end, & 45 mpi_size, mpi_rank, klon_mpi, & 46 is_sequential, is_south_pole 47 USE mod_grid_phy_lmdz, only: nbp_lon, nbp_lat, klon_glo 48 #ifdef CPP_IOIPSL 49 USE ioipsl, only: flio_dom_set 50 #endif 51 #ifdef CPP_XIOS 52 use wxios, only: wxios_domain_param 53 #endif 56 54 IMPLICIT NONE 57 INCLUDE 'dimensions.h' 55 INCLUDE 'dimensions.h' 56 include 'iniprint.h' 58 57 REAL,DIMENSION(klon),INTENT(IN) :: rlon 59 58 REAL,DIMENSION(klon),INTENT(IN) :: rlat … … 121 120 #endif 122 121 #ifdef CPP_XIOS 123 ! Pour els soucis en MPI, réglage du masque:122 ! Set values for the mask: 124 123 IF (mpi_rank == 0) THEN 125 124 data_ibegin = 0 … … 134 133 END IF 135 134 136 WRITE(*,*) "TOTO mpirank=",mpi_rank,"iibeg=",ii_begin , "jjbeg=",jj_begin,"jjnb=",jj_nb,"jjend=",jj_end 137 138 !On initialise le domaine xios, maintenant que tout est connu: 139 !SUBROUTINE wxios_domain_param(dom_id, is_sequential, ni, nj, ni_glo, nj_glo, & 140 ! ibegin, iend, jbegin, jend, & 141 ! data_ni, data_ibegin, & 142 ! io_lat, io_lon) 135 if (prt_level>=10) then 136 write(lunout,*) "init_iophy_new: mpirank=",mpi_rank," iibegin=",ii_begin , " ii_end=",ii_end," jjbegin=",jj_begin," jj_nb=",jj_nb," jj_end=",jj_end 137 write(lunout,*) "init_iophy_new: mpirank=",mpi_rank," nbp_lon=",nbp_lon," nbp_lat=",nbp_lat 138 write(lunout,*) "init_iophy_new: mpirank=",mpi_rank," data_ibegin=",data_ibegin," data_iend=",data_iend 139 write(lunout,*) "init_iophy_new: mpirank=",mpi_rank," data_ibegin=",data_ibegin," data_iend=",data_iend 140 write(lunout,*) "init_iophy_new: mpirank=",mpi_rank," is_south_pole=",is_south_pole 141 endif 142 143 ! Initialize the XIOS domain coreesponding to this process: 143 144 CALL wxios_domain_param("dom_glo", is_sequential, nbp_lon, jj_nb, nbp_lon, nbp_lat, & 144 145 1, nbp_lon, ii_begin, ii_end, jj_begin, jj_end, & 145 146 klon_mpi+2*(nbp_lon-1), data_ibegin, data_iend, & 146 io_lat, io_lon )147 io_lat, io_lon,is_south_pole,mpi_rank) 147 148 #endif 148 149 !$OMP END MASTER … … 151 152 152 153 SUBROUTINE init_iophy(lat,lon) 153 USE dimphy154 USE mod_phys_lmdz_para155 USE ioipsl 154 USE mod_phys_lmdz_para, only: jj_begin, jj_end, ii_begin, ii_end, jj_nb, & 155 mpi_size, mpi_rank 156 USE ioipsl, only: flio_dom_set 156 157 IMPLICIT NONE 157 158 INCLUDE 'dimensions.h' … … 194 195 195 196 SUBROUTINE histbeg_phyxios(name,itau0,zjulian,dtime,ffreq,lev,nhori,nid_day) 196 USE dimphy 197 USE mod_phys_lmdz_para 198 use ioipsl 199 use write_field 197 ! USE dimphy 198 USE mod_phys_lmdz_para, only: is_sequential, is_using_mpi, is_mpi_root, & 199 jj_begin, jj_end, jj_nb 200 use ioipsl, only: histbeg 201 #ifdef CPP_XIOS 202 use wxios, only: wxios_add_file 203 #endif 200 204 IMPLICIT NONE 201 205 include 'dimensions.h' … … 231 235 232 236 SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day) 233 USE dimphy 234 USE mod_phys_lmdz_para 235 use ioipsl 236 use write_field 237 238 USE mod_phys_lmdz_para, only: jj_begin, jj_end, jj_nb, is_sequential 239 use ioipsl, only: histbeg 240 237 241 IMPLICIT NONE 238 242 include 'dimensions.h' … … 263 267 plon,plat,plon_bounds,plat_bounds, & 264 268 nname,itau0,zjulian,dtime,nnhori,nnid_day) 265 USE dimphy 266 USE mod_phys_lmdz_para 267 USE mod_grid_phy_lmdz 268 use ioipsl 269 use write_field 269 USE dimphy, only: klon 270 USE mod_phys_lmdz_para, only: gather, bcast, & 271 is_sequential, klon_mpi_begin, klon_mpi_end, & 272 mpi_rank 273 USE mod_grid_phy_lmdz, only: klon_glo 274 use ioipsl, only: histbeg 275 270 276 IMPLICIT NONE 271 277 include 'dimensions.h' … … 383 389 ! 384 390 ENDDO 385 ! print*,'iophy is_sequential nname, nnhori, nnid_day=',trim(nname),nnhori,nnid_day 391 386 392 #ifndef CPP_NO_IOIPSL 387 393 call histbeg(nname,pim,plon,plon_bounds, & … … 438 444 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 439 445 440 USE ioipsl 441 USE dimphy442 USE mod_phys_lmdz_para443 446 USE ioipsl, only: histdef 447 USE mod_phys_lmdz_para, only: jj_nb 448 use phys_output_var_mod, only: type_ecri, zoutm, zdtime_moy, lev_files, & 449 nid_files, nhorim, swaero_diag, nfiles 444 450 IMPLICIT NONE 445 451 … … 492 498 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 493 499 494 USE ioipsl 495 USE dimphy 496 USE mod_phys_lmdz_para 497 500 USE ioipsl, only: histdef 501 USE dimphy, only: klev 502 USE mod_phys_lmdz_para, only: jj_nb 503 use phys_output_var_mod, only: type_ecri, zoutm, lev_files, nid_files, & 504 nhorim, zdtime_moy, levmin, levmax, & 505 nvertm, nfiles 498 506 IMPLICIT NONE 499 507 … … 547 555 SUBROUTINE histdef2d (iff,var) 548 556 549 USE ioipsl 550 USE dimphy 551 USE mod_phys_lmdz_para 552 557 USE ioipsl, only: histdef 558 USE mod_phys_lmdz_para, only: jj_nb 559 use phys_output_var_mod, only: ctrl_out, type_ecri_files, zoutm, zdtime_moy, & 560 clef_stations, phys_out_filenames, lev_files, & 561 nid_files, nhorim, swaero_diag 562 #ifdef CPP_XIOS 563 use wxios, only: wxios_add_field_to_file 564 #endif 553 565 IMPLICIT NONE 554 566 … … 618 630 SUBROUTINE histdef3d (iff,var) 619 631 620 USE ioipsl 621 USE dimphy 622 USE mod_phys_lmdz_para 623 632 USE ioipsl, only: histdef 633 USE dimphy, only: klev 634 USE mod_phys_lmdz_para, only: jj_nb 635 use phys_output_var_mod, only: ctrl_out, type_ecri_files, zoutm, zdtime_moy, & 636 clef_stations, phys_out_filenames, lev_files, & 637 nid_files, nhorim, swaero_diag, levmin, & 638 levmax, nvertm 639 #ifdef CPP_XIOS 640 use wxios, only: wxios_add_field_to_file 641 #endif 624 642 IMPLICIT NONE 625 643 … … 686 704 !!! Lecture des noms et niveau de sortie des variables dans output.def 687 705 ! en utilisant les routines getin de IOIPSL 688 use ioipsl 689 706 use ioipsl, only: getin 707 use phys_output_var_mod, only: nfiles 690 708 IMPLICIT NONE 691 709 … … 705 723 706 724 SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field) 707 USE dimphy 708 USE mod_phys_lmdz_para 709 USE ioipsl 725 USE dimphy, only: klon 726 USE mod_phys_lmdz_para, only: Gather_omp, grid1Dto2D_mpi, & 727 is_sequential, klon_mpi_begin, klon_mpi_end, & 728 jj_nb, klon_mpi 729 USE ioipsl, only: histwrite 710 730 IMPLICIT NONE 711 731 include 'dimensions.h' … … 733 753 ALLOCATE(index2d(iim*jj_nb)) 734 754 ALLOCATE(fieldok(iim*jj_nb)) 735 IF (prt_level >= 9) write(lunout,*)'Sending ',name,' to IOIPSL'755 IF (prt_level >= 10) write(lunout,*)'Sending ',name,' to IOIPSL' 736 756 CALL histwrite(nid,name,itau,Field2d,iim*jj_nb,index2d) 737 IF (prt_level >= 9) write(lunout,*)'Finished sending ',name,' to IOIPSL'757 IF (prt_level >= 10) write(lunout,*)'Finished sending ',name,' to IOIPSL' 738 758 else 739 759 ALLOCATE(fieldok(npstn)) … … 755 775 ENDDO 756 776 endif 757 IF (prt_level >= 9) write(lunout,*)'Sending ',name,' to IOIPSL'777 IF (prt_level >= 10) write(lunout,*)'Sending ',name,' to IOIPSL' 758 778 CALL histwrite(nid,name,itau,fieldok,npstn,index2d) 759 IF (prt_level >= 9) write(lunout,*)'Finished sending ',name,' to IOIPSL'779 IF (prt_level >= 10) write(lunout,*)'Finished sending ',name,' to IOIPSL' 760 780 ! 761 781 endif … … 768 788 769 789 SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field) 770 USE dimphy 771 USE mod_phys_lmdz_para 772 773 use ioipsl 790 USE dimphy, only: klon 791 USE mod_phys_lmdz_para, only: Gather_omp, grid1Dto2D_mpi, & 792 is_sequential, klon_mpi_begin, klon_mpi_end, & 793 jj_nb, klon_mpi 794 use ioipsl, only: histwrite 774 795 IMPLICIT NONE 775 796 include 'dimensions.h' … … 791 812 nlev=size(field,2) 792 813 793 ! print*,'hist3d_phy mpi_rank npstn=',mpi_rank,npstn794 795 ! DO ip=1, npstn796 ! print*,'hist3d_phy mpi_rank nptabij',mpi_rank,nptabij(ip)797 ! ENDDO798 799 814 CALL Gather_omp(field,buffer_omp) 800 815 !$OMP MASTER … … 803 818 ALLOCATE(index3d(iim*jj_nb*nlev)) 804 819 ALLOCATE(fieldok(iim*jj_nb,nlev)) 805 IF (prt_level >= 9) write(lunout,*)'Sending ',name,' to IOIPSL'820 IF (prt_level >= 10) write(lunout,*)'Sending ',name,' to IOIPSL' 806 821 CALL histwrite(nid,name,itau,Field3d,iim*jj_nb*nlev,index3d) 807 IF (prt_level >= 9) write(lunout,*)'Finished sending ',name,' to IOIPSL'822 IF (prt_level >= 10) write(lunout,*)'Finished sending ',name,' to IOIPSL' 808 823 else 809 824 nlev=size(field,2) … … 829 844 ENDDO 830 845 endif 831 IF (prt_level >= 9) write(lunout,*)'Sending ',name,' to IOIPSL'846 IF (prt_level >= 10) write(lunout,*)'Sending ',name,' to IOIPSL' 832 847 CALL histwrite(nid,name,itau,fieldok,npstn*nlev,index3d) 833 IF (prt_level >= 9) write(lunout,*)'Finished sending ',name,' to IOIPSL'848 IF (prt_level >= 10) write(lunout,*)'Finished sending ',name,' to IOIPSL' 834 849 endif 835 850 deallocate(index3d) … … 844 859 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 845 860 SUBROUTINE histwrite2d_phy(var,field, STD_iff) 846 USE dimphy 847 USE mod_phys_lmdz_para 848 USE ioipsl 849 850 851 852 #ifdef CPP_XIOS 853 USE wxios 861 USE dimphy, only: klon 862 USE mod_phys_lmdz_para, only: gather_omp, grid1dto2d_mpi, & 863 jj_nb, klon_mpi, klon_mpi_begin, & 864 klon_mpi_end, is_sequential 865 USE ioipsl, only: histwrite 866 use phys_output_var_mod, only: ctrl_out, clef_files, lev_files, & 867 nfiles, vars_defined, clef_stations, & 868 nid_files 869 #ifdef CPP_XIOS 870 USE wxios, only: wxios_write_2D 854 871 #endif 855 872 … … 872 889 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 873 890 874 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d ',var%name891 IF (prt_level >= 10) WRITE(lunout,*)'Begin histwrite2d_phy ',trim(var%name) 875 892 876 893 ! ug RUSTINE POUR LES STD LEVS..... … … 896 913 897 914 !Et sinon on.... écrit 898 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d ','Field first DIMENSION not equal to klon',1)915 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d_phy','Field first DIMENSION not equal to klon',1) 899 916 900 CALL Gather_omp(field,buffer_omp) 917 if (prt_level >= 10) then 918 write(lunout,*)"histwrite2d_phy: .not.vars_defined ; time to gather and write ", & 919 trim(var%name) 920 endif 921 922 CALL Gather_omp(field,buffer_omp) 901 923 !$OMP MASTER 902 924 CALL grid1Dto2D_mpi(buffer_omp,Field2d) 903 925 904 926 ! La boucle sur les fichiers: 905 927 DO iff=iff_beg, iff_end … … 914 936 #ifdef CPP_XIOS 915 937 IF (iff == iff_beg) THEN 916 CALL wxios_write_2D(var%name, Field2d) 938 if (prt_level >= 10) then 939 write(lunout,*)"histwrite2d_phy: .NOT.clef_stations(iff) and iff==iff_beg, call wxios_write_2D" 940 endif 941 CALL wxios_write_2D(var%name, Field2d) 917 942 ENDIF 918 943 #endif … … 922 947 923 948 IF (is_sequential) THEN 949 DO ip=1, npstn 950 fieldok(ip)=buffer_omp(nptabij(ip)) 951 ENDDO 952 ELSE 924 953 DO ip=1, npstn 925 fieldok(ip)=buffer_omp(nptabij(ip)) 926 ENDDO 927 ELSE 928 DO ip=1, npstn 929 PRINT*,'histwrite2d is_sequential npstn ip namenptabij',npstn,ip,var%name,nptabij(ip) 954 write(lunout,*)'histwrite2d_phy is_sequential npstn ip namenptabij',npstn,ip,var%name,nptabij(ip) 930 955 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 931 956 nptabij(ip).LE.klon_mpi_end) THEN … … 933 958 ENDIF 934 959 ENDDO 935 ENDIF 960 ENDIF ! of IF (is_sequential) 936 961 #ifndef CPP_NO_IOIPSL 962 if (prt_level >= 10) then 963 write(lunout,*)"histwrite2d_phy: clef_stations(iff) and iff==iff_beg, call wxios_write_2D" 964 endif 937 965 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn,index2d) 938 966 #endif 939 ENDIF 967 ENDIF ! of IF(.NOT.clef_stations(iff)) 940 968 941 969 deallocate(index2d) 942 970 deallocate(fieldok) 943 971 ENDIF !levfiles 944 ENDDO 972 ENDDO ! of DO iff=iff_beg, iff_end 945 973 !$OMP END MASTER 946 974 ENDIF ! vars_defined 947 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d ',var%name975 IF (prt_level >= 10) WRITE(lunout,*)'End histwrite2d_phy ',trim(var%name) 948 976 END SUBROUTINE histwrite2d_phy 949 977 … … 951 979 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 952 980 SUBROUTINE histwrite3d_phy(var, field, STD_iff) 953 USE dimphy 954 USE mod_phys_lmdz_para 955 USE ioipsl 956 957 958 #ifdef CPP_XIOS 959 ! USE WXIOS 981 USE dimphy, only: klon, klev 982 USE mod_phys_lmdz_para, only: gather_omp, grid1dto2d_mpi, & 983 jj_nb, klon_mpi, klon_mpi_begin, & 984 klon_mpi_end, is_sequential 985 USE ioipsl, only: histwrite 986 use phys_output_var_mod, only: ctrl_out, clef_files, lev_files, & 987 nfiles, vars_defined, clef_stations, & 988 nid_files 989 #ifdef CPP_XIOS 990 USE wxios, only: wxios_write_3D 960 991 #endif 961 992 … … 977 1008 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 978 1009 979 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d ',var%name1010 IF (prt_level >= 10) write(lunout,*)'Begin histrwrite3d ',var%name 980 1011 981 1012 ! ug RUSTINE POUR LES STD LEVS..... … … 1057 1088 !$OMP END MASTER 1058 1089 ENDIF ! vars_defined 1059 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d ',var%name1090 IF (prt_level >= 10) write(lunout,*)'End histrwrite3d ',var%name 1060 1091 END SUBROUTINE histwrite3d_phy 1061 1092 … … 1064 1095 #ifdef CPP_XIOS 1065 1096 SUBROUTINE histwrite2d_xios(field_name,field) 1066 USE dimphy 1067 USE mod_phys_lmdz_para 1068 USE wxios 1097 USE dimphy, only: klon 1098 USE mod_phys_lmdz_para, only: gather_omp, grid1Dto2D_mpi, & 1099 is_sequential, klon_mpi_begin, klon_mpi_end, & 1100 jj_nb, klon_mpi 1101 USE wxios, only: wxios_write_2D 1069 1102 1070 1103 … … 1083 1116 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 1084 1117 1085 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name1118 IF (prt_level >= 10) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name 1086 1119 1087 1120 !Et sinon on.... écrit … … 1127 1160 !$OMP END MASTER 1128 1161 1129 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d_xios ',field_name1162 IF (prt_level >= 10) WRITE(lunout,*)'End histrwrite2d_xios ',field_name 1130 1163 END SUBROUTINE histwrite2d_xios 1131 1164 … … 1133 1166 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 1134 1167 SUBROUTINE histwrite3d_xios(field_name, field) 1135 USE dimphy 1136 USE mod_phys_lmdz_para 1137 USE wxios 1168 USE dimphy, only: klon, klev 1169 USE mod_phys_lmdz_para, only: gather_omp, grid1Dto2D_mpi, & 1170 is_sequential, klon_mpi_begin, klon_mpi_end, & 1171 jj_nb, klon_mpi 1172 USE wxios, only: wxios_write_3D 1138 1173 1139 1174 … … 1151 1186 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 1152 1187 1153 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d_xios ',field_name1188 IF (prt_level >= 10) write(lunout,*)'Begin histrwrite3d_xios ',field_name 1154 1189 1155 1190 !Et on.... écrit … … 1197 1232 !$OMP END MASTER 1198 1233 1199 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d_xios ',field_name1234 IF (prt_level >= 10) write(lunout,*)'End histrwrite3d_xios ',field_name 1200 1235 END SUBROUTINE histwrite3d_xios 1201 1236 #endif -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r1865 r1897 26 26 ! defined and initialised in phys_output_mod.F90 27 27 28 USE dimphy 29 USE control_mod 30 USE phys_output_ctrlout_mod 31 USE phys_state_var_mod 32 USE phys_local_var_mod 33 USE phys_output_var_mod 34 USE indice_sol_mod 35 USE infotrac 36 USE comgeomphy 37 USE surface_data, ONLY : type_ocean, ok_veget, ok_snow 38 USE aero_mod 39 USE ioipsl 40 USE write_field_phy 41 USE iophy 42 USE mod_phys_lmdz_para 43 USE netcdf, ONLY : nf90_fill_real 28 USE dimphy, only: klon, klev, klevp1 29 USE control_mod, only: day_step, iphysiq 30 USE phys_output_ctrlout_mod, only: o_phis, o_aire, is_ter, is_lic, is_oce, & 31 is_ave, is_sic, o_contfracATM, o_contfracOR, & 32 o_aireTER, o_flat, o_slp, o_tsol, & 33 o_t2m, o_t2m_min, o_t2m_max, & 34 o_q2m, o_ustar, o_u10m, o_v10m, & 35 o_wind10m, o_wind10max, o_sicf, & 36 o_psol, o_mass, o_qsurf, o_qsol, & 37 o_precip, o_ndayrain, o_plul, o_pluc, & 38 o_snow, o_msnow, o_fsnow, o_evap, & 39 o_tops, o_tops0, o_topl, o_topl0, & 40 o_SWupTOA, o_SWupTOAclr, o_SWdnTOA, & 41 o_SWdnTOAclr, o_nettop, o_SWup200, & 42 o_SWup200clr, o_SWdn200, o_SWdn200clr, & 43 o_LWup200, o_LWup200clr, o_LWdn200, & 44 o_LWdn200clr, o_sols, o_sols0, & 45 o_soll, o_radsol, o_soll0, o_SWupSFC, & 46 o_SWupSFCclr, o_SWdnSFC, o_SWdnSFCclr, & 47 o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, & 48 o_LWdnSFCclr, o_bils, o_bils_diss, & 49 o_bils_ec, o_bils_tke, o_bils_kinetic, & 50 o_bils_latent, o_bils_enthalp, o_sens, & 51 o_fder, o_ffonte, o_fqcalving, o_fqfonte, & 52 o_taux, o_tauy, o_snowsrf, o_qsnow, & 53 o_snowhgt, o_toice, o_sissnow, o_runoff, & 54 o_albslw3, o_pourc_srf, o_fract_srf, & 55 o_taux_srf, o_tauy_srf, o_tsol_srf, & 56 o_evappot_srf, o_ustar_srf, o_u10m_srf, & 57 o_v10m_srf, o_t2m_srf, o_evap_srf, & 58 o_sens_srf, o_lat_srf, o_flw_srf, & 59 o_fsw_srf, o_wbils_srf, o_wbilo_srf, & 60 o_tke_srf, o_tke_max_srf, o_wstar, & 61 o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, & 62 o_cldt, o_cldq, o_lwp, o_iwp, o_ue, & 63 o_ve, o_uq, o_vq, o_cape, o_pbase, & 64 o_ptop, o_fbase, o_plcl, o_plfc, & 65 o_wbeff, o_cape_max, o_upwd, o_Ma, & 66 o_dnwd, o_dnwd0, o_ftime_con, o_mc, & 67 o_prw, o_s_pblh, o_s_pblt, o_s_lcl, & 68 o_s_therm, o_uSTDlevs, o_vSTDlevs, & 69 o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, & 70 o_tSTDlevs, epsfra, o_t_oce_sic, & 71 o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, & 72 o_ale, o_alp, o_cin, o_WAPE, o_wake_h, & 73 o_wake_s, o_wake_deltat, o_wake_deltaq, & 74 o_wake_omg, o_dtwak, o_dqwak, o_Vprecip, & 75 o_ftd, o_fqd, o_wdtrainA, o_wdtrainM, & 76 o_n2, o_s2, o_proba_notrig, & 77 o_random_notrig, o_ale_bl_stat, & 78 o_ale_bl_trig, o_alp_bl_det, & 79 o_alp_bl_fluct_m, o_alp_bl_fluct_tke, & 80 o_alp_bl_conv, o_alp_bl_stat, o_slab_bils, & 81 o_weakinv, o_dthmin, o_cldtau, & 82 o_cldemi, o_pr_con_l, o_pr_con_i, & 83 o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, & 84 o_rh2m, o_rh2m_min, o_rh2m_max, & 85 o_qsat2m, o_tpot, o_tpote, o_SWnetOR, & 86 o_SWdownOR, o_LWdownOR, o_snowl, & 87 o_solldown, o_dtsvdfo, o_dtsvdft, & 88 o_dtsvdfg, o_dtsvdfi, o_rugs, o_od550aer, & 89 o_od865aer, o_absvisaer, o_od550lt1aer, & 90 o_sconcso4, o_sconcoa, o_sconcbc, & 91 o_sconcss, o_sconcdust, o_concso4, & 92 o_concoa, o_concbc, o_concss, o_concdust, & 93 o_loadso4, o_loadoa, o_loadbc, o_loadss, & 94 o_loaddust, o_tausumaero, o_topswad, & 95 o_topswad0, o_solswad, o_solswad0, & 96 o_swtoaas_nat, o_swsrfas_nat, & 97 o_swtoacs_nat, o_swtoaas_ant, & 98 o_swsrfas_ant, o_swtoacs_ant, & 99 o_swsrfcs_ant, o_swtoacf_nat, & 100 o_swsrfcf_nat, o_swtoacf_ant, & 101 o_swsrfcs_nat, o_swsrfcf_ant, & 102 o_swtoacf_zero, o_swsrfcf_zero, & 103 o_topswai, o_solswai, o_scdnc, & 104 o_cldncl, o_reffclws, o_reffclwc, & 105 o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, & 106 o_lcc3dstra, o_reffclwtop, o_ec550aer, & 107 o_lwcon, o_iwcon, o_temp, o_theta, & 108 o_ovapinit, o_ovap, o_oliq, o_geop, & 109 o_vitu, o_vitv, o_vitw, o_pres, o_paprs, & 110 o_zfull, o_zhalf, o_rneb, o_rnebcon, & 111 o_rnebls, o_rhum, o_ozone, o_ozone_light, & 112 o_dtphy, o_dqphy, o_albe_srf, o_rugs_srf, & 113 o_ages_srf, o_alb1, o_alb2, o_tke, & 114 o_tke_max, o_kz, o_kz_max, o_clwcon, & 115 o_dtdyn, o_dqdyn, o_dudyn, o_dvdyn, & 116 o_dtcon, o_tntc, o_ducon, o_dvcon, & 117 o_dqcon, o_tnhusc, o_tnhusc, o_dtlsc, & 118 o_dtlschr, o_dqlsc, o_beta_prec, & 119 o_dtlscth, o_dtlscst, o_dqlscth, & 120 o_dqlscst, o_plulth, o_plulst, & 121 o_ptconvth, o_lmaxth, o_dtvdf, & 122 o_dtdis, o_dqvdf, o_dteva, o_dqeva, & 123 o_ptconv, o_ratqs, o_dtthe, o_ftime_th, & 124 o_f_th, o_e_th, o_w_th, o_q_th, & 125 o_a_th, o_d_th, o_f0_th, o_zmax_th, & 126 o_dqthe, o_dtajs, o_dqajs, o_dtswr, & 127 o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, & 128 o_duvdf, o_dvvdf, o_duoro, o_dvoro, & 129 o_dtoro, o_dulif, o_dvlif, o_dtlif, & 130 o_duhin, o_dvhin, o_dthin, o_rsu, & 131 o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, & 132 o_rlucs, o_rldcs, o_tnt, o_tntr, & 133 o_tntscpbl, o_tnhus, o_tnhusscpbl, & 134 o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, & 135 o_ref_ice, o_rsut4co2, o_rlut4co2, & 136 o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, & 137 o_rlu4co2, o_rsucs4co2, o_rlucs4co2, & 138 o_rsd4co2, o_rld4co2, o_rsdcs4co2, & 139 o_rldcs4co2, o_tnondef, o_ta, o_zg, & 140 o_hus, o_hur, o_ua, o_va, o_wap, & 141 o_psbg, o_tro3, o_tro3_daylight, & 142 o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, & 143 o_wxT, o_uxu, o_vxv, o_TxT, o_trac, & 144 o_dtr_vdf, o_dtr_the, o_dtr_con, & 145 o_dtr_lessi_impa, o_dtr_lessi_nucl, & 146 o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, & 147 o_dtr_ls, o_dtr_trsp, o_dtr_sscav, & 148 o_dtr_sat, o_dtr_uscav, o_trac_cum 149 150 USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, & 151 nday_rain, rain_con, snow_con, & 152 topsw, toplw, toplw0, swup, swdn, & 153 topsw0, swup0, swdn0, SWup200, SWup200clr, & 154 SWdn200, SWdn200clr, LWup200, LWup200clr, & 155 LWdn200, LWdn200clr, solsw, solsw0, sollw, & 156 radsol, sollw0, sollwdown, sollw, & 157 sollwdownclr, lwdn0, ftsol, ustar, u10m, & 158 v10m, pbl_tke, wstar, cape, ema_pcb, ema_pct, & 159 ema_cbmf, Ma, fm_therm, ale_bl, alp_bl, ale, & 160 alp, cin, wake_pe, wake_s, wake_deltat, & 161 wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, & 162 rnebcon, wo, falb1, albsol2, coefh, clwcon0, & 163 ratqs, entr_therm, zqasc, detr_therm, f0, heat, & 164 heat0, cool, cool0, lwup, lwdn, lwup0, coefm, & 165 swupp, lwupp, swup0p, lwup0p, swdnp, lwdnp, & 166 swdn0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, & 167 vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, & 168 vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, & 169 T2sumSTD, nlevSTD 170 171 USE phys_local_var_mod, only: zxfluxlat, slp, zxtsol, zt2m, & 172 zu10m, zv10m, zq2m, zustar, zxqsurf, qsol, & 173 rain_lsc, snow_lsc, evap, bils, sens, fder, & 174 zxffonte, zxfqcalving, zxfqfonte, fluxu, & 175 fluxv, zxsnow, qsnow, snowhgt, to_ice, & 176 sissnow, runoff, albsol3_lic, evap_pot, & 177 t2m, fevap, fluxt, fluxlat, fsollw, fsolsw, & 178 wfbils, wfbilo, cdragm, cdragh, cldl, cldm, & 179 cldh, cldt, cldq, flwp, fiwp, ue, ve, uq, vq, & 180 plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, & 181 s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, & 182 vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, & 183 twriteSTD, ale_wake, alp_wake, wake_h, & 184 wake_omg, d_t_wake, d_q_wake, Vprecip, & 185 wdtrainA, wdtrainM, n2, s2, proba_notrig, & 186 random_notrig, ale_bl_stat, & 187 alp_bl_det, alp_bl_fluct_m, alp_bl_conv, & 188 alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, & 189 weak_inversion, dthmin, cldtau, cldemi, & 190 pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, & 191 qsat2m, tpote, tpot, d_ts, zxrugs, od550aer, & 192 od865aer, absvisaer, od550lt1aer, sconcso4, & 193 sconcoa, sconcbc, sconcss, sconcdust, concso4, & 194 concoa, concbc, concss, concdust, loadso4, & 195 loadoa, loadbc, loadss, loaddust, tausum_aero, & 196 topswad_aero, topswad0_aero, solswad_aero, & 197 solswad0_aero, topsw_aero, solsw_aero, & 198 topsw0_aero, solsw0_aero, topswcf_aero, & 199 solswcf_aero, topswai_aero, solswai_aero, & 200 scdnc, cldncl, reffclws, reffclwc, cldnvi, & 201 lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, & 202 ec550aer, flwc, fiwc, t_seri, theta, q_seri, & 203 ql_seri, zphi, u_seri, v_seri, omega, cldfra, & 204 rneb, zx_rh, frugs, agesno, d_t_dyn, d_q_dyn, & 205 d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, & 206 d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, & 207 d_t_eva, d_q_lsc, beta_prec, d_t_lscth, & 208 d_t_lscst, d_q_lscth, d_q_lscst, plul_th, & 209 plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, & 210 zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, & 211 d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, & 212 d_v_lif, d_t_lif, d_u_hin, d_v_hin, d_t_hin, & 213 pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD 214 215 USE phys_output_var_mod, only: vars_defined, snow_o, zfra_o, bils_diss, & 216 bils_ec, bils_tke, bils_kinetic, bils_latent, & 217 bils_enthalp, itau_con, nfiles, clef_files, & 218 nid_files 219 USE indice_sol_mod, only: nbsrf 220 USE infotrac, only: nqtot 221 USE comgeomphy, only: airephy 222 USE surface_data, only: type_ocean, ok_veget, ok_snow 223 USE aero_mod, only: naero_spc 224 USE ioipsl, only: histend, histsync 225 USE iophy, only: set_itau_iophy, histwrite_phy 226 USE netcdf, only: nf90_fill_real 44 227 45 228 #ifdef CPP_XIOS 46 229 ! ug Pour les sorties XIOS 47 USE wxios 48 USE xios 230 USE wxios, only: wxios_update_calendar, wxios_closedef 49 231 #endif 50 232 … … 57 239 INCLUDE "YOMCST.h" 58 240 INCLUDE "dimensions.h" 241 include "iniprint.h" 59 242 60 243 ! Input … … 101 284 DO iinit=1, iinitend 102 285 #ifdef CPP_XIOS 103 IF (vars_defined) THEN 104 CALL wxios_update_calendar(itau_w) 286 !$OMP MASTER 287 IF (vars_defined) THEN 288 if (prt_level >= 10) then 289 write(lunout,*)"phys_output_write: call wxios_update_calendar, itau_w=",itau_w 290 endif 291 CALL wxios_update_calendar(itau_w) 105 292 END IF 293 !$OMP END MASTER 294 !$OMP BARRIER 106 295 #endif 107 296 ! On procède à l'écriture ou à la définition des nombreuses variables:
Note: See TracChangeset
for help on using the changeset viewer.