Ignore:
Timestamp:
Sep 9, 2020 8:27:58 PM (4 years ago)
Author:
pavelkrc
Message:

Radiative transfer model RTM version 4.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/virtual_measurement_mod.f90

    r4645 r4671  
    2525! -----------------
    2626! $Id$
     27! Implementation of downward facing USM and LSM surfaces
     28!
     29! 4645 2020-08-24 13:55:58Z suehring
    2730! Bugfix in output of E_UTM_soil coordinate
    2831!
     
    12011204                DO  j = nys, nyn
    12021205                   IF ( ANY( BTEST( meas_flag(:,j,i), 0 ) ) )  THEN
    1203                       IF ( surf_lsm_h%start_index(j,i) <= surf_lsm_h%end_index(j,i) )  THEN
     1206                      IF ( surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) )  THEN
    12041207                         vmea(l)%ns_soil = vmea(l)%ns_soil + nzt_soil - nzb_soil + 1
    12051208                      ENDIF
    1206                       IF ( surf_usm_h%start_index(j,i) <= surf_usm_h%end_index(j,i) )  THEN
     1209                      IF ( surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) )  THEN
    12071210                         vmea(l)%ns_soil = vmea(l)%ns_soil + nzt_wall - nzb_wall + 1
    12081211                      ENDIF
     
    12261229                DO  j = nys, nyn
    12271230                   IF ( ANY( BTEST( meas_flag(:,j,i), 0 ) ) )  THEN
    1228                       IF ( surf_lsm_h%start_index(j,i) <= surf_lsm_h%end_index(j,i) )  THEN
    1229                          m = surf_lsm_h%start_index(j,i)
     1231                      IF ( surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) )  THEN
     1232                         m = surf_lsm_h(0)%start_index(j,i)
    12301233                         DO  k = nzb_soil, nzt_soil
    12311234                            ns = ns + 1
     
    12371240                      ENDIF
    12381241
    1239                       IF ( surf_usm_h%start_index(j,i) <= surf_usm_h%end_index(j,i) )  THEN
    1240                          m = surf_usm_h%start_index(j,i)
     1242                      IF ( surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) )  THEN
     1243                         m = surf_usm_h(0)%start_index(j,i)
    12411244                         DO  k = nzb_wall, nzt_wall
    12421245                            ns = ns + 1
     
    12441247                            vmea(l)%j_soil(ns) = j
    12451248                            vmea(l)%k_soil(ns) = k
    1246                             vmea(l)%depth(ns)  = - surf_usm_h%zw(k,m)
     1249                            vmea(l)%depth(ns)  = - surf_usm_h(0)%zw(k,m)
    12471250                         ENDDO
    12481251                      ENDIF
     
    25522555                       vmea(l)%measured_vars(m,n) = surf_def_h(0)%us(mm)
    25532556                    ENDDO
    2554                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2555                        vmea(l)%measured_vars(m,n) = surf_lsm_h%us(mm)
    2556                     ENDDO
    2557                     DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2558                        vmea(l)%measured_vars(m,n) = surf_usm_h%us(mm)
     2557                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2558                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%us(mm)
     2559                    ENDDO
     2560                    DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2561                       vmea(l)%measured_vars(m,n) = surf_usm_h(0)%us(mm)
    25592562                    ENDDO
    25602563                 ENDDO
     
    25732576                       vmea(l)%measured_vars(m,n) = surf_def_h(0)%ts(mm)
    25742577                    ENDDO
    2575                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2576                        vmea(l)%measured_vars(m,n) = surf_lsm_h%ts(mm)
    2577                     ENDDO
    2578                     DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2579                        vmea(l)%measured_vars(m,n) = surf_usm_h%ts(mm)
     2578                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2579                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%ts(mm)
     2580                    ENDDO
     2581                    DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2582                       vmea(l)%measured_vars(m,n) = surf_usm_h(0)%ts(mm)
    25802583                    ENDDO
    25812584                 ENDDO
     
    25942597                       vmea(l)%measured_vars(m,n) = surf_def_h(0)%qsws(mm)
    25952598                    ENDDO
    2596                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2597                        vmea(l)%measured_vars(m,n) = surf_lsm_h%qsws(mm)
    2598                     ENDDO
    2599                     DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2600                        vmea(l)%measured_vars(m,n) = surf_usm_h%qsws(mm)
     2599                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2600                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%qsws(mm)
     2601                    ENDDO
     2602                    DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2603                       vmea(l)%measured_vars(m,n) = surf_usm_h(0)%qsws(mm)
    26012604                    ENDDO
    26022605                 ENDDO
     
    26152618                       vmea(l)%measured_vars(m,n) = surf_def_h(0)%shf(mm)
    26162619                    ENDDO
    2617                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2618                        vmea(l)%measured_vars(m,n) = surf_lsm_h%shf(mm)
    2619                     ENDDO
    2620                     DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2621                        vmea(l)%measured_vars(m,n) = surf_usm_h%shf(mm)
     2620                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2621                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%shf(mm)
     2622                    ENDDO
     2623                    DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2624                       vmea(l)%measured_vars(m,n) = surf_usm_h(0)%shf(mm)
    26222625                    ENDDO
    26232626                 ENDDO
     
    26332636                    i = MERGE( i           , nxr, i            < nxr )
    26342637
    2635                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2636                        vmea(l)%measured_vars(m,n) = surf_lsm_h%ghf(mm)
     2638                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2639                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%ghf(mm)
    26372640                    ENDDO
    26382641                 ENDDO
     
    26482651!                     i = MERGE( i           , nxr, i            < nxr )
    26492652!
    2650 !                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
     2653!                     DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
    26512654!                        vmea(l)%measured_vars(m,n) = ?
    26522655!                     ENDDO
     
    26642667                       i = MERGE( i           , nxr, i            < nxr )
    26652668
    2666                        DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2667                           vmea(l)%measured_vars(m,n) = surf_lsm_h%rad_net(mm)
     2669                       DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2670                          vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%rad_net(mm)
    26682671                       ENDDO
    2669                        DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2670                           vmea(l)%measured_vars(m,n) = surf_usm_h%rad_net(mm)
     2672                       DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2673                          vmea(l)%measured_vars(m,n) = surf_usm_h(0)%rad_net(mm)
    26712674                       ENDDO
    26722675                    ENDDO
     
    26842687                       i = MERGE( i           , nxr, i            < nxr )
    26852688
    2686                        DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2687                           vmea(l)%measured_vars(m,n) = surf_lsm_h%rad_sw_out(mm)
     2689                       DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2690                          vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%rad_sw_out(mm)
    26882691                       ENDDO
    2689                        DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2690                           vmea(l)%measured_vars(m,n) = surf_usm_h%rad_sw_out(mm)
     2692                       DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2693                          vmea(l)%measured_vars(m,n) = surf_usm_h(0)%rad_sw_out(mm)
    26912694                       ENDDO
    26922695                    ENDDO
     
    27042707                       i = MERGE( i           , nxr, i            < nxr )
    27052708
    2706                        DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2707                           vmea(l)%measured_vars(m,n) = surf_lsm_h%rad_sw_in(mm)
     2709                       DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2710                          vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%rad_sw_in(mm)
    27082711                       ENDDO
    2709                        DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2710                           vmea(l)%measured_vars(m,n) = surf_usm_h%rad_sw_in(mm)
     2712                       DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2713                          vmea(l)%measured_vars(m,n) = surf_usm_h(0)%rad_sw_in(mm)
    27112714                       ENDDO
    27122715                    ENDDO
     
    27242727                       i = MERGE( i           , nxr, i            < nxr )
    27252728
    2726                        DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2727                           vmea(l)%measured_vars(m,n) = surf_lsm_h%rad_lw_out(mm)
     2729                       DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2730                          vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%rad_lw_out(mm)
    27282731                       ENDDO
    2729                        DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2730                           vmea(l)%measured_vars(m,n) = surf_usm_h%rad_lw_out(mm)
     2732                       DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2733                          vmea(l)%measured_vars(m,n) = surf_usm_h(0)%rad_lw_out(mm)
    27312734                       ENDDO
    27322735                    ENDDO
     
    27442747                       i = MERGE( i           , nxr, i            < nxr )
    27452748
    2746                        DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2747                           vmea(l)%measured_vars(m,n) = surf_lsm_h%rad_lw_in(mm)
     2749                       DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2750                          vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%rad_lw_in(mm)
    27482751                       ENDDO
    2749                        DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2750                           vmea(l)%measured_vars(m,n) = surf_usm_h%rad_lw_in(mm)
     2752                       DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2753                          vmea(l)%measured_vars(m,n) = surf_usm_h(0)%rad_lw_in(mm)
    27512754                       ENDDO
    27522755                    ENDDO
     
    28532856                    k = vmea(l)%k_soil(m)
    28542857
    2855                     match_lsm = surf_lsm_h%start_index(j,i) <= surf_lsm_h%end_index(j,i)
    2856                     match_usm = surf_usm_h%start_index(j,i) <= surf_usm_h%end_index(j,i)
     2858                    match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i)
     2859                    match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i)
    28572860
    28582861                    IF ( match_lsm )  THEN
    2859                        mm = surf_lsm_h%start_index(j,i)
    2860                        vmea(l)%measured_vars_soil(m,n) = t_soil_h%var_2d(k,mm)
     2862                       mm = surf_lsm_h(0)%start_index(j,i)
     2863                       vmea(l)%measured_vars_soil(m,n) = t_soil_h(0)%var_2d(k,mm)
    28612864                    ENDIF
    28622865
    28632866                    IF ( match_usm )  THEN
    2864                        mm = surf_usm_h%start_index(j,i)
    2865                        vmea(l)%measured_vars_soil(m,n) = t_wall_h(k,mm)
     2867                       mm = surf_usm_h(0)%start_index(j,i)
     2868                       vmea(l)%measured_vars_soil(m,n) = t_wall_h(0)%val(k,mm)
    28662869                    ENDIF
    28672870                 ENDDO
     
    28752878                    k = vmea(l)%k_soil(m)
    28762879
    2877                     match_lsm = surf_lsm_h%start_index(j,i) <= surf_lsm_h%end_index(j,i)
     2880                    match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i)
    28782881
    28792882                    IF ( match_lsm )  THEN
    2880                        mm = surf_lsm_h%start_index(j,i)
    2881                        vmea(l)%measured_vars_soil(m,n) = m_soil_h%var_2d(k,mm)
     2883                       mm = surf_lsm_h(0)%start_index(j,i)
     2884                       vmea(l)%measured_vars_soil(m,n) = m_soil_h(0)%var_2d(k,mm)
    28822885                    ENDIF
    28832886
     
    28972900                       vmea(l)%measured_vars(m,n) = surf_def_h(0)%pt_surface(mm)
    28982901                    ENDDO
    2899                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2900                        vmea(l)%measured_vars(m,n) = surf_lsm_h%pt_surface(mm)
    2901                     ENDDO
    2902                     DO  mm = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    2903                        vmea(l)%measured_vars(m,n) = surf_usm_h%pt_surface(mm)
     2902                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2903                       vmea(l)%measured_vars(m,n) = surf_lsm_h(0)%pt_surface(mm)
     2904                    ENDDO
     2905                    DO  mm = surf_usm_h(0)%start_index(j,i), surf_usm_h(0)%end_index(j,i)
     2906                       vmea(l)%measured_vars(m,n) = surf_usm_h(0)%pt_surface(mm)
    29042907                    ENDDO
    29052908                 ENDDO
     
    29352938                    i = MERGE( i           , nxr, i            < nxr )
    29362939
    2937                     DO  mm = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    2938                        IF ( surf_lsm_h%water_surface(m) )                                          &
    2939                             vmea(l)%measured_vars(m,n) = t_soil_h%var_2d(nzt,m)
     2940                    DO  mm = surf_lsm_h(0)%start_index(j,i), surf_lsm_h(0)%end_index(j,i)
     2941                       IF ( surf_lsm_h(0)%water_surface(m) )                                          &
     2942                            vmea(l)%measured_vars(m,n) = t_soil_h(0)%var_2d(nzt,m)
    29402943                    ENDDO
    29412944
Note: See TracChangeset for help on using the changeset viewer.