Changeset 1972 for palm/trunk/SOURCE/data_output_2d.f90
- Timestamp:
- Jul 26, 2016 7:52:02 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/data_output_2d.f90
r1961 r1972 19 19 ! Current revisions: 20 20 ! ----------------- 21 ! 21 ! Output of land surface quantities is now done directly in the respective module 22 22 ! 23 23 ! Former revisions: … … 174 174 175 175 USE land_surface_model_mod, & 176 ONLY: c_liq, c_liq_av, c_soil_av, c_veg, c_veg_av, ghf_eb, & 177 ghf_eb_av, lai, lai_av, m_liq_eb, m_liq_eb_av, m_soil, & 178 m_soil_av, nzb_soil, nzt_soil, qsws_eb, qsws_eb_av, & 179 qsws_liq_eb, qsws_liq_eb_av, qsws_soil_eb, qsws_soil_eb_av, & 180 qsws_veg_eb, qsws_veg_eb_av, r_a, r_a_av, r_s, r_s_av, shf_eb, & 181 shf_eb_av, t_soil, t_soil_av, zs 176 ONLY: land_surface, lsm_data_output_2d, zs 182 177 183 178 #if defined( __netcdf ) … … 290 285 CALL check_open( 101+av*10 ) 291 286 ENDIF 292 293 287 IF ( data_output_2d_on_each_pe ) THEN 294 288 CALL check_open( 21 ) … … 433 427 IF ( mode == 'xy' ) level_z = zu 434 428 435 CASE ( 'c_liq*_xy' ) ! 2d-array 436 IF ( av == 0 ) THEN 437 DO i = nxlg, nxrg 438 DO j = nysg, nyng 439 local_pf(i,j,nzb+1) = c_liq(j,i) * c_veg(j,i) 440 ENDDO 441 ENDDO 442 ELSE 443 DO i = nxlg, nxrg 444 DO j = nysg, nyng 445 local_pf(i,j,nzb+1) = c_liq_av(j,i) 429 CASE ( 'lpt_xy', 'lpt_xz', 'lpt_yz' ) 430 IF ( av == 0 ) THEN 431 to_be_resorted => pt 432 ELSE 433 to_be_resorted => lpt_av 434 ENDIF 435 IF ( mode == 'xy' ) level_z = zu 436 437 CASE ( 'lwp*_xy' ) ! 2d-array 438 IF ( av == 0 ) THEN 439 DO i = nxlg, nxrg 440 DO j = nysg, nyng 441 local_pf(i,j,nzb+1) = SUM( ql(nzb:nzt,j,i) * & 442 dzw(1:nzt+1) ) 443 ENDDO 444 ENDDO 445 ELSE 446 DO i = nxlg, nxrg 447 DO j = nysg, nyng 448 local_pf(i,j,nzb+1) = lwp_av(j,i) 446 449 ENDDO 447 450 ENDDO … … 450 453 two_d = .TRUE. 451 454 level_z(nzb+1) = zu(nzb+1) 452 453 CASE ( 'c_soil*_xy' ) ! 2d-array454 IF ( av == 0 ) THEN455 DO i = nxlg, nxrg456 DO j = nysg, nyng457 local_pf(i,j,nzb+1) = 1.0_wp - c_veg(j,i)458 ENDDO459 ENDDO460 ELSE461 DO i = nxlg, nxrg462 DO j = nysg, nyng463 local_pf(i,j,nzb+1) = c_soil_av(j,i)464 ENDDO465 ENDDO466 ENDIF467 resorted = .TRUE.468 two_d = .TRUE.469 level_z(nzb+1) = zu(nzb+1)470 471 CASE ( 'c_veg*_xy' ) ! 2d-array472 IF ( av == 0 ) THEN473 DO i = nxlg, nxrg474 DO j = nysg, nyng475 local_pf(i,j,nzb+1) = c_veg(j,i)476 ENDDO477 ENDDO478 ELSE479 DO i = nxlg, nxrg480 DO j = nysg, nyng481 local_pf(i,j,nzb+1) = c_veg_av(j,i)482 ENDDO483 ENDDO484 ENDIF485 resorted = .TRUE.486 two_d = .TRUE.487 level_z(nzb+1) = zu(nzb+1)488 489 CASE ( 'ghf_eb*_xy' ) ! 2d-array490 IF ( av == 0 ) THEN491 DO i = nxlg, nxrg492 DO j = nysg, nyng493 local_pf(i,j,nzb+1) = ghf_eb(j,i)494 ENDDO495 ENDDO496 ELSE497 DO i = nxlg, nxrg498 DO j = nysg, nyng499 local_pf(i,j,nzb+1) = ghf_eb_av(j,i)500 ENDDO501 ENDDO502 ENDIF503 resorted = .TRUE.504 two_d = .TRUE.505 level_z(nzb+1) = zu(nzb+1)506 507 CASE ( 'lai*_xy' ) ! 2d-array508 IF ( av == 0 ) THEN509 DO i = nxlg, nxrg510 DO j = nysg, nyng511 local_pf(i,j,nzb+1) = lai(j,i)512 ENDDO513 ENDDO514 ELSE515 DO i = nxlg, nxrg516 DO j = nysg, nyng517 local_pf(i,j,nzb+1) = lai_av(j,i)518 ENDDO519 ENDDO520 ENDIF521 resorted = .TRUE.522 two_d = .TRUE.523 level_z(nzb+1) = zu(nzb+1)524 525 CASE ( 'lpt_xy', 'lpt_xz', 'lpt_yz' )526 IF ( av == 0 ) THEN527 to_be_resorted => pt528 ELSE529 to_be_resorted => lpt_av530 ENDIF531 IF ( mode == 'xy' ) level_z = zu532 533 CASE ( 'lwp*_xy' ) ! 2d-array534 IF ( av == 0 ) THEN535 DO i = nxlg, nxrg536 DO j = nysg, nyng537 local_pf(i,j,nzb+1) = SUM( ql(nzb:nzt,j,i) * &538 dzw(1:nzt+1) )539 ENDDO540 ENDDO541 ELSE542 DO i = nxlg, nxrg543 DO j = nysg, nyng544 local_pf(i,j,nzb+1) = lwp_av(j,i)545 ENDDO546 ENDDO547 ENDIF548 resorted = .TRUE.549 two_d = .TRUE.550 level_z(nzb+1) = zu(nzb+1)551 552 CASE ( 'm_liq_eb*_xy' ) ! 2d-array553 IF ( av == 0 ) THEN554 DO i = nxlg, nxrg555 DO j = nysg, nyng556 local_pf(i,j,nzb+1) = m_liq_eb(j,i)557 ENDDO558 ENDDO559 ELSE560 DO i = nxlg, nxrg561 DO j = nysg, nyng562 local_pf(i,j,nzb+1) = m_liq_eb_av(j,i)563 ENDDO564 ENDDO565 ENDIF566 resorted = .TRUE.567 two_d = .TRUE.568 level_z(nzb+1) = zu(nzb+1)569 570 CASE ( 'm_soil_xy', 'm_soil_xz', 'm_soil_yz' )571 nzb_do = nzb_soil572 nzt_do = nzt_soil573 IF ( av == 0 ) THEN574 to_be_resorted => m_soil575 ELSE576 to_be_resorted => m_soil_av577 ENDIF578 IF ( mode == 'xy' ) level_z = zs579 455 580 456 CASE ( 'nr_xy', 'nr_xz', 'nr_yz' ) … … 859 735 level_z(nzb+1) = zu(nzb+1) 860 736 861 CASE ( 'qsws_eb*_xy' ) ! 2d-array 737 CASE ( 'qv_xy', 'qv_xz', 'qv_yz' ) 738 IF ( av == 0 ) THEN 739 DO i = nxlg, nxrg 740 DO j = nysg, nyng 741 DO k = nzb, nzt+1 742 local_pf(i,j,k) = q(k,j,i) - ql(k,j,i) 743 ENDDO 744 ENDDO 745 ENDDO 746 resorted = .TRUE. 747 ELSE 748 to_be_resorted => qv_av 749 ENDIF 750 IF ( mode == 'xy' ) level_z = zu 751 752 CASE ( 'rad_net*_xy' ) ! 2d-array 862 753 IF ( av == 0 ) THEN 863 754 DO i = nxlg, nxrg 864 755 DO j = nysg, nyng 865 local_pf(i,j,nzb+1) = qsws_eb(j,i)756 local_pf(i,j,nzb+1) = rad_net(j,i) 866 757 ENDDO 867 758 ENDDO … … 869 760 DO i = nxlg, nxrg 870 761 DO j = nysg, nyng 871 local_pf(i,j,nzb+1) = qsws_eb_av(j,i)762 local_pf(i,j,nzb+1) = rad_net_av(j,i) 872 763 ENDDO 873 764 ENDDO … … 877 768 level_z(nzb+1) = zu(nzb+1) 878 769 879 CASE ( 'qsws_liq_eb*_xy' ) ! 2d-array880 IF ( av == 0 ) THEN881 DO i = nxlg, nxrg882 DO j = nysg, nyng883 local_pf(i,j,nzb+1) = qsws_liq_eb(j,i)884 ENDDO885 ENDDO886 ELSE887 DO i = nxlg, nxrg888 DO j = nysg, nyng889 local_pf(i,j,nzb+1) = qsws_liq_eb_av(j,i)890 ENDDO891 ENDDO892 ENDIF893 resorted = .TRUE.894 two_d = .TRUE.895 level_z(nzb+1) = zu(nzb+1)896 897 CASE ( 'qsws_soil_eb*_xy' ) ! 2d-array898 IF ( av == 0 ) THEN899 DO i = nxlg, nxrg900 DO j = nysg, nyng901 local_pf(i,j,nzb+1) = qsws_soil_eb(j,i)902 ENDDO903 ENDDO904 ELSE905 DO i = nxlg, nxrg906 DO j = nysg, nyng907 local_pf(i,j,nzb+1) = qsws_soil_eb_av(j,i)908 ENDDO909 ENDDO910 ENDIF911 resorted = .TRUE.912 two_d = .TRUE.913 level_z(nzb+1) = zu(nzb+1)914 915 CASE ( 'qsws_veg_eb*_xy' ) ! 2d-array916 IF ( av == 0 ) THEN917 DO i = nxlg, nxrg918 DO j = nysg, nyng919 local_pf(i,j,nzb+1) = qsws_veg_eb(j,i)920 ENDDO921 ENDDO922 ELSE923 DO i = nxlg, nxrg924 DO j = nysg, nyng925 local_pf(i,j,nzb+1) = qsws_veg_eb_av(j,i)926 ENDDO927 ENDDO928 ENDIF929 resorted = .TRUE.930 two_d = .TRUE.931 level_z(nzb+1) = zu(nzb+1)932 933 CASE ( 'qv_xy', 'qv_xz', 'qv_yz' )934 IF ( av == 0 ) THEN935 DO i = nxlg, nxrg936 DO j = nysg, nyng937 DO k = nzb, nzt+1938 local_pf(i,j,k) = q(k,j,i) - ql(k,j,i)939 ENDDO940 ENDDO941 ENDDO942 resorted = .TRUE.943 ELSE944 to_be_resorted => qv_av945 ENDIF946 IF ( mode == 'xy' ) level_z = zu947 948 CASE ( 'rad_net*_xy' ) ! 2d-array949 IF ( av == 0 ) THEN950 DO i = nxlg, nxrg951 DO j = nysg, nyng952 local_pf(i,j,nzb+1) = rad_net(j,i)953 ENDDO954 ENDDO955 ELSE956 DO i = nxlg, nxrg957 DO j = nysg, nyng958 local_pf(i,j,nzb+1) = rad_net_av(j,i)959 ENDDO960 ENDDO961 ENDIF962 resorted = .TRUE.963 two_d = .TRUE.964 level_z(nzb+1) = zu(nzb+1)965 966 770 967 771 CASE ( 'rad_lw_in_xy', 'rad_lw_in_xz', 'rad_lw_in_yz' ) … … 1035 839 to_be_resorted => rho_av 1036 840 ENDIF 1037 1038 CASE ( 'r_a*_xy' ) ! 2d-array1039 IF ( av == 0 ) THEN1040 DO i = nxlg, nxrg1041 DO j = nysg, nyng1042 local_pf(i,j,nzb+1) = r_a(j,i)1043 ENDDO1044 ENDDO1045 ELSE1046 DO i = nxlg, nxrg1047 DO j = nysg, nyng1048 local_pf(i,j,nzb+1) = r_a_av(j,i)1049 ENDDO1050 ENDDO1051 ENDIF1052 resorted = .TRUE.1053 two_d = .TRUE.1054 level_z(nzb+1) = zu(nzb+1)1055 1056 CASE ( 'r_s*_xy' ) ! 2d-array1057 IF ( av == 0 ) THEN1058 DO i = nxlg, nxrg1059 DO j = nysg, nyng1060 local_pf(i,j,nzb+1) = r_s(j,i)1061 ENDDO1062 ENDDO1063 ELSE1064 DO i = nxlg, nxrg1065 DO j = nysg, nyng1066 local_pf(i,j,nzb+1) = r_s_av(j,i)1067 ENDDO1068 ENDDO1069 ENDIF1070 resorted = .TRUE.1071 two_d = .TRUE.1072 level_z(nzb+1) = zu(nzb+1)1073 841 1074 842 CASE ( 's_xy', 's_xz', 's_yz' ) … … 1097 865 DO j = nysg, nyng 1098 866 local_pf(i,j,nzb+1) = shf_av(j,i) 1099 ENDDO1100 ENDDO1101 ENDIF1102 resorted = .TRUE.1103 two_d = .TRUE.1104 level_z(nzb+1) = zu(nzb+1)1105 1106 CASE ( 'shf_eb*_xy' ) ! 2d-array1107 IF ( av == 0 ) THEN1108 DO i = nxlg, nxrg1109 DO j = nysg, nyng1110 local_pf(i,j,nzb+1) = shf_eb(j,i)1111 ENDDO1112 ENDDO1113 ELSE1114 DO i = nxlg, nxrg1115 DO j = nysg, nyng1116 local_pf(i,j,nzb+1) = shf_eb_av(j,i)1117 867 ENDDO 1118 868 ENDDO … … 1158 908 level_z(nzb+1) = zu(nzb+1) 1159 909 1160 CASE ( 't_soil_xy', 't_soil_xz', 't_soil_yz' )1161 nzb_do = nzb_soil1162 nzt_do = nzt_soil1163 IF ( av == 0 ) THEN1164 to_be_resorted => t_soil1165 ELSE1166 to_be_resorted => t_soil_av1167 ENDIF1168 IF ( mode == 'xy' ) level_z = zs1169 1170 910 CASE ( 'u_xy', 'u_xz', 'u_yz' ) 1171 911 IF ( av == 0 ) THEN … … 1285 1025 1286 1026 CASE DEFAULT 1027 1028 ! 1029 !-- Land surface model quantity 1030 IF ( land_surface ) THEN 1031 CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,& 1032 local_pf, two_d, nzb_do, nzt_do ) 1033 ENDIF 1034 1287 1035 ! 1288 1036 !-- User defined quantity 1289 CALL user_data_output_2d( av, do2d(av,if), found, grid, & 1290 local_pf, two_d, nzb_do, nzt_do ) 1037 IF ( .NOT. found ) THEN 1038 CALL user_data_output_2d( av, do2d(av,if), found, grid, & 1039 local_pf, two_d, nzb_do, nzt_do ) 1040 ENDIF 1041 1291 1042 resorted = .TRUE. 1292 1043
Note: See TracChangeset
for help on using the changeset viewer.