Ignore:
Timestamp:
May 30, 2017 5:47:52 PM (4 years ago)
Author:
suehring
Message:

Adjustments according new topography and surface-modelling concept implemented

File:
1 edited

Legend:

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

    r2191 r2232  
    2020! Current revisions:
    2121! -----------------
     22! Adjustments to new surface concept
    2223!
    2324!
     
    162163
    163164    USE arrays_3d,                                                             &
    164         ONLY:  dzw, e, nr, ol, p, pt, precipitation_amount, precipitation_rate,&
    165                prr,q, qc, ql, ql_c, ql_v, ql_vp, qr, qsws, rho_ocean, s, sa, shf,    &
    166                ssws, tend, ts, u, us, v, vpt, w, z0, z0h, z0q, zu, zw
     165        ONLY:  dzw, e, nr, p, pt, precipitation_amount, precipitation_rate,    &
     166               prr, q, qc, ql, ql_c, ql_v, ql_vp, qr, rho_ocean, s, sa,        &
     167               tend, u, v, vpt, w, zu, zw
    167168       
    168169    USE averaging
     
    177178               do2d_xz_last_time, do2d_xz_n, do2d_xz_time_count,               &
    178179               do2d_yz_last_time, do2d_yz_n, do2d_yz_time_count,               &
    179                ibc_uv_b, io_blocks, io_group, message_string,                  &
     180               ibc_uv_b, io_blocks, io_group, land_surface, message_string,    &
    180181               ntdim_2d_xy, ntdim_2d_xz, ntdim_2d_yz,                          &
    181182               psolver, section, simulated_time, simulated_time_chr,           &
     
    195196   
    196197    USE land_surface_model_mod,                                                &
    197         ONLY:  land_surface, lsm_data_output_2d, zs
     198        ONLY:  lsm_data_output_2d, zs
    198199   
    199200#if defined( __netcdf )
     
    214215    USE radiation_model_mod,                                                   &
    215216        ONLY:  radiation, radiation_data_output_2d
     217
     218    USE surface_mod,                                                           &
     219        ONLY:  surf_def_h, surf_lsm_h, surf_usm_h
    216220
    217221    IMPLICIT NONE
     
    234238    INTEGER(iwp) ::  l         !<
    235239    INTEGER(iwp) ::  layer_xy  !<
     240    INTEGER(iwp) ::  m         !<
    236241    INTEGER(iwp) ::  n         !<
    237242    INTEGER(iwp) ::  nis       !<
     
    255260    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d            !<
    256261    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d_l          !<
     262    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  tmp_2d              !< temporary field used to exchange surface-related quantities
     263
    257264    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf            !<
    258265    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_2d_sections   !<
     
    417424!-- Allocate a temporary array for resorting (kji -> ijk).
    418425    ALLOCATE( local_pf(nxlg:nxrg,nysg:nyng,nzb:nzt+1) )
     426    local_pf = 0.0
     427!
     428!-- Allocate temporary array used for exchanging ghoist points of surface-data
     429    ALLOCATE( tmp_2d(nysg:nyng,nxlg:nxrg) )
     430    tmp_2d = 0.0
    419431
    420432!
     
    485497             CASE ( 'ol*_xy' )        ! 2d-array
    486498                IF ( av == 0 ) THEN
    487                    DO  i = nxlg, nxrg
    488                       DO  j = nysg, nyng
    489                          local_pf(i,j,nzb+1) = ol(j,i)
    490                       ENDDO
    491                    ENDDO
     499                   DO  m = 1, surf_def_h(0)%ns
     500                      i = surf_def_h(0)%i(m)
     501                      j = surf_def_h(0)%j(m)
     502                      tmp_2d(j,i) = surf_def_h(0)%ol(m)
     503                   ENDDO
     504                   DO  m = 1, surf_lsm_h%ns
     505                      i = surf_lsm_h%i(m)
     506                      j = surf_lsm_h%j(m)
     507                      tmp_2d(j,i) = surf_lsm_h%ol(m)
     508                   ENDDO
     509                   DO  m = 1, surf_usm_h%ns
     510                      i = surf_usm_h%i(m)
     511                      j = surf_usm_h%j(m)
     512                      tmp_2d(j,i) = surf_usm_h%ol(m)
     513                   ENDDO
     514
     515                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     516
     517                   DO  i = nxlg, nxrg
     518                      DO  j = nysg, nyng
     519                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
     520                      ENDDO
     521                   ENDDO
     522
    492523                ELSE
    493524                   DO  i = nxlg, nxrg
     
    740771             CASE ( 'qsws*_xy' )        ! 2d-array
    741772                IF ( av == 0 ) THEN
    742                    DO  i = nxlg, nxrg
    743                       DO  j = nysg, nyng
    744                          local_pf(i,j,nzb+1) =  qsws(j,i)
     773                   DO  m = 1, surf_def_h(0)%ns
     774                      i = surf_def_h(0)%i(m)
     775                      j = surf_def_h(0)%j(m)
     776                      tmp_2d(j,i) = surf_def_h(0)%qsws(m)
     777                   ENDDO
     778                   DO  m = 1, surf_lsm_h%ns
     779                      i = surf_lsm_h%i(m)
     780                      j = surf_lsm_h%j(m)
     781                      tmp_2d(j,i) = surf_lsm_h%qsws(m)
     782                   ENDDO
     783                   DO  m = 1, surf_usm_h%ns
     784                      i = surf_usm_h%i(m)
     785                      j = surf_usm_h%j(m)
     786                      tmp_2d(j,i) = surf_usm_h%qsws(m)
     787                   ENDDO
     788
     789                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     790
     791                   DO  i = nxlg, nxrg
     792                      DO  j = nysg, nyng
     793                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    745794                      ENDDO
    746795                   ENDDO
     
    796845             CASE ( 'shf*_xy' )        ! 2d-array
    797846                IF ( av == 0 ) THEN
    798                    DO  i = nxlg, nxrg
    799                       DO  j = nysg, nyng
    800                          local_pf(i,j,nzb+1) =  shf(j,i)
     847                   DO  m = 1, surf_def_h(0)%ns
     848                      i = surf_def_h(0)%i(m)
     849                      j = surf_def_h(0)%j(m)
     850                      tmp_2d(j,i) = surf_def_h(0)%shf(m)
     851                   ENDDO
     852                   DO  m = 1, surf_lsm_h%ns
     853                      i = surf_lsm_h%i(m)
     854                      j = surf_lsm_h%j(m)
     855                      tmp_2d(j,i) = surf_lsm_h%shf(m)
     856                   ENDDO
     857                   DO  m = 1, surf_usm_h%ns
     858                      i = surf_usm_h%i(m)
     859                      j = surf_usm_h%j(m)
     860                      tmp_2d(j,i) = surf_usm_h%shf(m)
     861                   ENDDO
     862
     863                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     864
     865                   DO  i = nxlg, nxrg
     866                      DO  j = nysg, nyng
     867                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    801868                      ENDDO
    802869                   ENDDO
     
    814881             CASE ( 'ssws*_xy' )        ! 2d-array
    815882                IF ( av == 0 ) THEN
    816                    DO  i = nxlg, nxrg
    817                       DO  j = nysg, nyng
    818                          local_pf(i,j,nzb+1) =  ssws(j,i)
     883                   DO  m = 1, surf_def_h(0)%ns
     884                      i = surf_def_h(0)%i(m)
     885                      j = surf_def_h(0)%j(m)
     886                      tmp_2d(j,i) = surf_def_h(0)%ssws(m)
     887                   ENDDO
     888                   DO  m = 1, surf_lsm_h%ns
     889                      i = surf_lsm_h%i(m)
     890                      j = surf_lsm_h%j(m)
     891                      tmp_2d(j,i) = surf_lsm_h%ssws(m)
     892                   ENDDO
     893                   DO  m = 1, surf_usm_h%ns
     894                      i = surf_usm_h%i(m)
     895                      j = surf_usm_h%j(m)
     896                      tmp_2d(j,i) = surf_usm_h%ssws(m)
     897                   ENDDO
     898
     899                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     900
     901                   DO  i = nxlg, nxrg
     902                      DO  j = nysg, nyng
     903                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    819904                      ENDDO
    820905                   ENDDO
     
    832917             CASE ( 't*_xy' )        ! 2d-array
    833918                IF ( av == 0 )  THEN
    834                    DO  i = nxlg, nxrg
    835                       DO  j = nysg, nyng
    836                          local_pf(i,j,nzb+1) = ts(j,i)
    837                       ENDDO
    838                    ENDDO
     919                   DO  m = 1, surf_def_h(0)%ns
     920                      i = surf_def_h(0)%i(m)
     921                      j = surf_def_h(0)%j(m)
     922                      tmp_2d(j,i) = surf_def_h(0)%ts(m)
     923                   ENDDO
     924                   DO  m = 1, surf_lsm_h%ns
     925                      i = surf_lsm_h%i(m)
     926                      j = surf_lsm_h%j(m)
     927                      tmp_2d(j,i) = surf_lsm_h%ts(m)
     928                   ENDDO
     929                   DO  m = 1, surf_usm_h%ns
     930                      i = surf_usm_h%i(m)
     931                      j = surf_usm_h%j(m)
     932                      tmp_2d(j,i) = surf_usm_h%ts(m)
     933                   ENDDO
     934
     935                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     936
     937                   DO  i = nxlg, nxrg
     938                      DO  j = nysg, nyng
     939                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
     940                      ENDDO
     941                   ENDDO
     942
    839943                ELSE
    840944                   DO  i = nxlg, nxrg
     
    864968             CASE ( 'u*_xy' )        ! 2d-array
    865969                IF ( av == 0 )  THEN
    866                    DO  i = nxlg, nxrg
    867                       DO  j = nysg, nyng
    868                          local_pf(i,j,nzb+1) = us(j,i)
     970                   DO  m = 1, surf_def_h(0)%ns
     971                      i = surf_def_h(0)%i(m)
     972                      j = surf_def_h(0)%j(m)
     973                      tmp_2d(j,i) = surf_def_h(0)%us(m)
     974                   ENDDO
     975                   DO  m = 1, surf_lsm_h%ns
     976                      i = surf_lsm_h%i(m)
     977                      j = surf_lsm_h%j(m)
     978                      tmp_2d(j,i) = surf_lsm_h%us(m)
     979                   ENDDO
     980                   DO  m = 1, surf_usm_h%ns
     981                      i = surf_usm_h%i(m)
     982                      j = surf_usm_h%j(m)
     983                      tmp_2d(j,i) = surf_usm_h%us(m)
     984                   ENDDO
     985
     986                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     987
     988                   DO  i = nxlg, nxrg
     989                      DO  j = nysg, nyng
     990                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    869991                      ENDDO
    870992                   ENDDO
     
    9121034             CASE ( 'z0*_xy' )        ! 2d-array
    9131035                IF ( av == 0 ) THEN
    914                    DO  i = nxlg, nxrg
    915                       DO  j = nysg, nyng
    916                          local_pf(i,j,nzb+1) =  z0(j,i)
    917                       ENDDO
    918                    ENDDO
     1036                   DO  m = 1, surf_def_h(0)%ns
     1037                      i = surf_def_h(0)%i(m)
     1038                      j = surf_def_h(0)%j(m)
     1039                      tmp_2d(j,i) = surf_def_h(0)%z0(m)
     1040                   ENDDO
     1041                   DO  m = 1, surf_lsm_h%ns
     1042                      i = surf_lsm_h%i(m)
     1043                      j = surf_lsm_h%j(m)
     1044                      tmp_2d(j,i) = surf_lsm_h%z0(m)
     1045                   ENDDO
     1046                   DO  m = 1, surf_usm_h%ns
     1047                      i = surf_usm_h%i(m)
     1048                      j = surf_usm_h%j(m)
     1049                      tmp_2d(j,i) = surf_usm_h%z0(m)
     1050                   ENDDO
     1051
     1052                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     1053
     1054                   DO  i = nxlg, nxrg
     1055                      DO  j = nysg, nyng
     1056                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
     1057                      ENDDO
     1058                   ENDDO
     1059
    9191060                ELSE
    9201061                   DO  i = nxlg, nxrg
     
    9301071             CASE ( 'z0h*_xy' )        ! 2d-array
    9311072                IF ( av == 0 ) THEN
    932                    DO  i = nxlg, nxrg
    933                       DO  j = nysg, nyng
    934                          local_pf(i,j,nzb+1) =  z0h(j,i)
     1073                   DO  m = 1, surf_def_h(0)%ns
     1074                      i = surf_def_h(0)%i(m)
     1075                      j = surf_def_h(0)%j(m)
     1076                      tmp_2d(j,i) = surf_def_h(0)%z0h(m)
     1077                   ENDDO
     1078                   DO  m = 1, surf_lsm_h%ns
     1079                      i = surf_lsm_h%i(m)
     1080                      j = surf_lsm_h%j(m)
     1081                      tmp_2d(j,i) = surf_lsm_h%z0h(m)
     1082                   ENDDO
     1083                   DO  m = 1, surf_usm_h%ns
     1084                      i = surf_usm_h%i(m)
     1085                      j = surf_usm_h%j(m)
     1086                      tmp_2d(j,i) = surf_usm_h%z0h(m)
     1087                   ENDDO
     1088
     1089                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     1090
     1091                   DO  i = nxlg, nxrg
     1092                      DO  j = nysg, nyng
     1093                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    9351094                      ENDDO
    9361095                   ENDDO
     
    9481107             CASE ( 'z0q*_xy' )        ! 2d-array
    9491108                IF ( av == 0 ) THEN
    950                    DO  i = nxlg, nxrg
    951                       DO  j = nysg, nyng
    952                          local_pf(i,j,nzb+1) =  z0q(j,i)
     1109                   DO  m = 1, surf_def_h(0)%ns
     1110                      i = surf_def_h(0)%i(m)
     1111                      j = surf_def_h(0)%j(m)
     1112                      tmp_2d(j,i) = surf_def_h(0)%z0q(m)
     1113                   ENDDO
     1114                   DO  m = 1, surf_lsm_h%ns
     1115                      i = surf_lsm_h%i(m)
     1116                      j = surf_lsm_h%j(m)
     1117                      tmp_2d(j,i) = surf_lsm_h%z0q(m)
     1118                   ENDDO
     1119                   DO  m = 1, surf_usm_h%ns
     1120                      i = surf_usm_h%i(m)
     1121                      j = surf_usm_h%j(m)
     1122                      tmp_2d(j,i) = surf_usm_h%z0q(m)
     1123                   ENDDO
     1124
     1125                   CALL exchange_horiz_2d( tmp_2d, nbgp )
     1126
     1127                   DO  i = nxlg, nxrg
     1128                      DO  j = nysg, nyng
     1129                         local_pf(i,j,nzb+1) = tmp_2d(j,i)
    9531130                      ENDDO
    9541131                   ENDDO
Note: See TracChangeset for help on using the changeset viewer.