Changeset 4682


Ignore:
Timestamp:
Sep 17, 2020 2:13:27 PM (4 years ago)
Author:
pavelkrc
Message:

Fix indexing of horizontal surfaces in write restart for full-3D cases

File:
1 edited

Legend:

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

    r4671 r4682  
    2525! -----------------
    2626! $Id$
     27! Fix indexing of horizontal surfaces in write restart for full-3D cases
     28!
     29! 4671 2020-09-09 20:27:58Z pavelkrc
    2730! Implementation of downward facing USM and LSM surfaces
    2831!
     
    31753178             IF ( l < 2 )  THEN
    31763179                DO  m = surf_lsm_h(l)%start_index(j,i), surf_lsm_h(l)%end_index(j,i)
    3177                    IF ( ALLOCATED( surf_lsm_h(l)%us ) )  surf_h(0)%us(mm(0)) = surf_lsm_h(l)%us(m)
    3178                    IF ( ALLOCATED( surf_lsm_h(l)%ts ) )  surf_h(0)%ts(mm(0)) = surf_lsm_h(l)%ts(m)
    3179                    IF ( ALLOCATED( surf_lsm_h(l)%qs ) )  surf_h(0)%qs(mm(0)) = surf_lsm_h(l)%qs(m)
    3180                    IF ( ALLOCATED( surf_lsm_h(l)%ss ) )  surf_h(0)%ss(mm(0)) = surf_lsm_h(l)%ss(m)
    3181                    IF ( ALLOCATED( surf_lsm_h(l)%qcs ) )  surf_h(0)%qcs(mm(0)) = surf_lsm_h(l)%qcs(m)
    3182                    IF ( ALLOCATED( surf_lsm_h(l)%ncs ) )  surf_h(0)%ncs(mm(0)) = surf_lsm_h(l)%ncs(m)
    3183                    IF ( ALLOCATED( surf_lsm_h(l)%qis ) )  surf_h(0)%qis(mm(0)) = surf_lsm_h(l)%qis(m)
    3184                    IF ( ALLOCATED( surf_lsm_h(l)%nis ) )  surf_h(0)%nis(mm(0)) = surf_lsm_h(l)%nis(m)
    3185                    IF ( ALLOCATED( surf_lsm_h(l)%qrs ) )  surf_h(0)%qrs(mm(0)) = surf_lsm_h(l)%qrs(m)
    3186                    IF ( ALLOCATED( surf_lsm_h(l)%nrs ) )  surf_h(0)%nrs(mm(0)) = surf_lsm_h(l)%nrs(m)
    3187                    IF ( ALLOCATED( surf_lsm_h(l)%ol ) )  surf_h(0)%ol(mm(0)) = surf_lsm_h(l)%ol(m)
    3188                    IF ( ALLOCATED( surf_lsm_h(l)%rib ) )  surf_h(0)%rib(mm(0)) = surf_lsm_h(l)%rib(m)
     3180                   IF ( ALLOCATED( surf_lsm_h(l)%us ) )  surf_h(l)%us(mm(l)) = surf_lsm_h(l)%us(m)
     3181                   IF ( ALLOCATED( surf_lsm_h(l)%ts ) )  surf_h(l)%ts(mm(l)) = surf_lsm_h(l)%ts(m)
     3182                   IF ( ALLOCATED( surf_lsm_h(l)%qs ) )  surf_h(l)%qs(mm(l)) = surf_lsm_h(l)%qs(m)
     3183                   IF ( ALLOCATED( surf_lsm_h(l)%ss ) )  surf_h(l)%ss(mm(l)) = surf_lsm_h(l)%ss(m)
     3184                   IF ( ALLOCATED( surf_lsm_h(l)%qcs ) )  surf_h(l)%qcs(mm(l)) = surf_lsm_h(l)%qcs(m)
     3185                   IF ( ALLOCATED( surf_lsm_h(l)%ncs ) )  surf_h(l)%ncs(mm(l)) = surf_lsm_h(l)%ncs(m)
     3186                   IF ( ALLOCATED( surf_lsm_h(l)%qis ) )  surf_h(l)%qis(mm(l)) = surf_lsm_h(l)%qis(m)
     3187                   IF ( ALLOCATED( surf_lsm_h(l)%nis ) )  surf_h(l)%nis(mm(l)) = surf_lsm_h(l)%nis(m)
     3188                   IF ( ALLOCATED( surf_lsm_h(l)%qrs ) )  surf_h(l)%qrs(mm(l)) = surf_lsm_h(l)%qrs(m)
     3189                   IF ( ALLOCATED( surf_lsm_h(l)%nrs ) )  surf_h(l)%nrs(mm(l)) = surf_lsm_h(l)%nrs(m)
     3190                   IF ( ALLOCATED( surf_lsm_h(l)%ol ) )  surf_h(l)%ol(mm(l)) = surf_lsm_h(l)%ol(m)
     3191                   IF ( ALLOCATED( surf_lsm_h(l)%rib ) )  surf_h(l)%rib(mm(l)) = surf_lsm_h(l)%rib(m)
    31893192                   IF ( ALLOCATED( surf_lsm_h(l)%pt_surface ) )                                       &
    31903193                      surf_h(l)%pt_surface(mm(l)) = surf_lsm_h(l)%pt_surface(m)
     
    31933196                   IF ( ALLOCATED( surf_def_h(l)%vpt_surface ) )                                      &
    31943197                      surf_h(l)%vpt_surface(mm(l)) = surf_lsm_h(l)%vpt_surface(m)
    3195                    IF ( ALLOCATED( surf_lsm_h(l)%usws ) )  surf_h(0)%usws(mm(0)) = surf_lsm_h(l)%usws(m)
    3196                    IF ( ALLOCATED( surf_lsm_h(l)%vsws ) )  surf_h(0)%vsws(mm(0)) = surf_lsm_h(l)%vsws(m)
    3197                    IF ( ALLOCATED( surf_lsm_h(l)%shf ) )  surf_h(0)%shf(mm(0)) = surf_lsm_h(l)%shf(m)
    3198                    IF ( ALLOCATED( surf_lsm_h(l)%qsws ) )  surf_h(0)%qsws(mm(0)) = surf_lsm_h(l)%qsws(m)
    3199                    IF ( ALLOCATED( surf_lsm_h(l)%ssws ) )  surf_h(0)%ssws(mm(0)) = surf_lsm_h(l)%ssws(m)
     3198                   IF ( ALLOCATED( surf_lsm_h(l)%usws ) )  surf_h(l)%usws(mm(l)) = surf_lsm_h(l)%usws(m)
     3199                   IF ( ALLOCATED( surf_lsm_h(l)%vsws ) )  surf_h(l)%vsws(mm(l)) = surf_lsm_h(l)%vsws(m)
     3200                   IF ( ALLOCATED( surf_lsm_h(l)%shf ) )  surf_h(l)%shf(mm(l)) = surf_lsm_h(l)%shf(m)
     3201                   IF ( ALLOCATED( surf_lsm_h(l)%qsws ) )  surf_h(l)%qsws(mm(l)) = surf_lsm_h(l)%qsws(m)
     3202                   IF ( ALLOCATED( surf_lsm_h(l)%ssws ) )  surf_h(l)%ssws(mm(l)) = surf_lsm_h(l)%ssws(m)
    32003203                   IF ( ALLOCATED( surf_lsm_h(l)%css ) )  THEN
    32013204                      DO  lsp = 1, nvar
    3202                          surf_h(0)%css(lsp,mm(0)) = surf_lsm_h(l)%css(lsp,m)
     3205                         surf_h(l)%css(lsp,mm(l)) = surf_lsm_h(l)%css(lsp,m)
    32033206                      ENDDO
    32043207                   ENDIF
    32053208                   IF ( ALLOCATED( surf_lsm_h(l)%cssws ) )  THEN
    32063209                      DO  lsp = 1, nvar
    3207                          surf_h(0)%cssws(lsp,mm(0)) = surf_lsm_h(l)%cssws(lsp,m)
     3210                         surf_h(l)%cssws(lsp,mm(l)) = surf_lsm_h(l)%cssws(lsp,m)
    32083211                      ENDDO
    32093212                   ENDIF
    32103213                   IF ( ALLOCATED( surf_lsm_h(l)%qcsws ) )                                            &
    3211                       surf_h(0)%qcsws(mm(0)) = surf_lsm_h(l)%qcsws(m)
     3214                      surf_h(l)%qcsws(mm(l)) = surf_lsm_h(l)%qcsws(m)
    32123215                   IF ( ALLOCATED( surf_lsm_h(l)%qisws ) )                                            &
    3213                       surf_h(0)%qisws(mm(0)) = surf_lsm_h(l)%qisws(m)
     3216                      surf_h(l)%qisws(mm(l)) = surf_lsm_h(l)%qisws(m)
    32143217                   IF ( ALLOCATED( surf_lsm_h(l)%qrsws ) )                                            &
    3215                       surf_h(0)%qrsws(mm(0)) = surf_lsm_h(l)%qrsws(m)
     3218                      surf_h(l)%qrsws(mm(l)) = surf_lsm_h(l)%qrsws(m)
    32163219                   IF ( ALLOCATED( surf_lsm_h(l)%ncsws ) )                                            &
    3217                       surf_h(0)%ncsws(mm(0)) = surf_lsm_h(l)%ncsws(m)
     3220                      surf_h(l)%ncsws(mm(l)) = surf_lsm_h(l)%ncsws(m)
    32183221                   IF ( ALLOCATED( surf_lsm_h(l)%nisws ) )                                            &
    3219                       surf_h(0)%nisws(mm(0)) = surf_lsm_h(l)%nisws(m)
     3222                      surf_h(l)%nisws(mm(l)) = surf_lsm_h(l)%nisws(m)
    32203223                   IF ( ALLOCATED( surf_lsm_h(l)%nrsws ) )                                            &
    3221                       surf_h(0)%nrsws(mm(0)) = surf_lsm_h(l)%nrsws(m)
     3224                      surf_h(l)%nrsws(mm(l)) = surf_lsm_h(l)%nrsws(m)
    32223225                   IF ( ALLOCATED( surf_lsm_h(l)%sasws ) )                                            &
    3223                      surf_h(0)%sasws(mm(0)) = surf_lsm_h(l)%sasws(m)
     3226                     surf_h(l)%sasws(mm(l)) = surf_lsm_h(l)%sasws(m)
    32243227
    32253228                   mm(l) = mm(l) + 1
     
    32293232                DO  m = surf_usm_h(l)%start_index(j,i), surf_usm_h(l)%end_index(j,i)
    32303233                   IF ( ALLOCATED( surf_usm_h(l)%us ) )                                               &
    3231                       surf_h(0)%us(mm(0)) = surf_usm_h(l)%us(m)
     3234                      surf_h(l)%us(mm(l)) = surf_usm_h(l)%us(m)
    32323235                   IF ( ALLOCATED( surf_usm_h(l)%ts ) )                                               &
    3233                       surf_h(0)%ts(mm(0)) = surf_usm_h(l)%ts(m)
     3236                      surf_h(l)%ts(mm(l)) = surf_usm_h(l)%ts(m)
    32343237                   IF ( ALLOCATED( surf_usm_h(l)%qs ) )                                               &
    3235                       surf_h(0)%qs(mm(0)) = surf_usm_h(l)%qs(m)
     3238                      surf_h(l)%qs(mm(l)) = surf_usm_h(l)%qs(m)
    32363239                   IF ( ALLOCATED( surf_usm_h(l)%ss ) )                                               &
    3237                       surf_h(0)%ss(mm(0)) = surf_usm_h(l)%ss(m)
     3240                      surf_h(l)%ss(mm(l)) = surf_usm_h(l)%ss(m)
    32383241                   IF ( ALLOCATED( surf_usm_h(l)%qcs ) )                                              &
    3239                       surf_h(0)%qcs(mm(0)) = surf_usm_h(l)%qcs(m)
     3242                      surf_h(l)%qcs(mm(l)) = surf_usm_h(l)%qcs(m)
    32403243                   IF ( ALLOCATED( surf_usm_h(l)%ncs ) )                                              &
    3241                       surf_h(0)%ncs(mm(0)) = surf_usm_h(l)%ncs(m)
     3244                      surf_h(l)%ncs(mm(l)) = surf_usm_h(l)%ncs(m)
    32423245                   IF ( ALLOCATED( surf_usm_h(l)%qis ) )                                              &
    3243                       surf_h(0)%qis(mm(0)) = surf_usm_h(l)%qis(m)
     3246                      surf_h(l)%qis(mm(l)) = surf_usm_h(l)%qis(m)
    32443247                   IF ( ALLOCATED( surf_usm_h(l)%nis ) )                                              &
    3245                       surf_h(0)%nis(mm(0)) = surf_usm_h(l)%nis(m)
     3248                      surf_h(l)%nis(mm(l)) = surf_usm_h(l)%nis(m)
    32463249                   IF ( ALLOCATED( surf_usm_h(l)%qrs ) )                                              &
    3247                       surf_h(0)%qrs(mm(0)) = surf_usm_h(l)%qrs(m)
     3250                      surf_h(l)%qrs(mm(l)) = surf_usm_h(l)%qrs(m)
    32483251                   IF ( ALLOCATED( surf_usm_h(l)%nrs ) )                                              &
    3249                       surf_h(0)%nrs(mm(0)) = surf_usm_h(l)%nrs(m)
     3252                      surf_h(l)%nrs(mm(l)) = surf_usm_h(l)%nrs(m)
    32503253                   IF ( ALLOCATED( surf_usm_h(l)%ol ) )                                               &
    3251                       surf_h(0)%ol(mm(0)) = surf_usm_h(l)%ol(m)
     3254                      surf_h(l)%ol(mm(l)) = surf_usm_h(l)%ol(m)
    32523255                   IF ( ALLOCATED( surf_usm_h(l)%rib ) )                                              &
    3253                       surf_h(0)%rib(mm(0)) = surf_usm_h(l)%rib(m)
     3256                      surf_h(l)%rib(mm(l)) = surf_usm_h(l)%rib(m)
    32543257                   IF ( ALLOCATED( surf_usm_h(l)%pt_surface ) )                                       &
    32553258                      surf_h(l)%pt_surface(mm(l)) = surf_usm_h(l)%pt_surface(m)
     
    32593262                      surf_h(l)%vpt_surface(mm(l)) = surf_usm_h(l)%vpt_surface(m)
    32603263                   IF ( ALLOCATED( surf_usm_h(l)%usws ) )                                             &
    3261                       surf_h(0)%usws(mm(0)) = surf_usm_h(l)%usws(m)
     3264                      surf_h(l)%usws(mm(l)) = surf_usm_h(l)%usws(m)
    32623265                   IF ( ALLOCATED( surf_usm_h(l)%vsws ) )                                             &
    3263                       surf_h(0)%vsws(mm(0)) = surf_usm_h(l)%vsws(m)
     3266                      surf_h(l)%vsws(mm(l)) = surf_usm_h(l)%vsws(m)
    32643267                   IF ( ALLOCATED( surf_usm_h(l)%shf ) )                                              &
    3265                       surf_h(0)%shf(mm(0)) = surf_usm_h(l)%shf(m)
     3268                      surf_h(l)%shf(mm(l)) = surf_usm_h(l)%shf(m)
    32663269                   IF ( ALLOCATED( surf_usm_h(l)%qsws ) )                                             &
    3267                       surf_h(0)%qsws(mm(0)) = surf_usm_h(l)%qsws(m)
     3270                      surf_h(l)%qsws(mm(l)) = surf_usm_h(l)%qsws(m)
    32683271                   IF ( ALLOCATED( surf_usm_h(l)%ssws ) )                                             &
    3269                       surf_h(0)%ssws(mm(0)) = surf_usm_h(l)%ssws(m)
     3272                      surf_h(l)%ssws(mm(l)) = surf_usm_h(l)%ssws(m)
    32703273                   IF ( ALLOCATED( surf_usm_h(l)%css ) )  THEN
    32713274                      DO lsp = 1, nvar
    3272                          surf_h(0)%css(lsp,mm(0)) = surf_usm_h(l)%css(lsp,m)
     3275                         surf_h(l)%css(lsp,mm(l)) = surf_usm_h(l)%css(lsp,m)
    32733276                      ENDDO
    32743277                   ENDIF
    32753278                   IF ( ALLOCATED( surf_usm_h(l)%cssws ) )  THEN
    32763279                      DO lsp = 1, nvar
    3277                          surf_h(0)%cssws(lsp,mm(0)) = surf_usm_h(l)%cssws(lsp,m)
     3280                         surf_h(l)%cssws(lsp,mm(l)) = surf_usm_h(l)%cssws(lsp,m)
    32783281                      ENDDO
    32793282                   ENDIF
    32803283                   IF ( ALLOCATED( surf_usm_h(l)%qcsws ) )                                            &
    3281                       surf_h(0)%qcsws(mm(0)) = surf_usm_h(l)%qcsws(m)
     3284                      surf_h(l)%qcsws(mm(l)) = surf_usm_h(l)%qcsws(m)
    32823285                   IF ( ALLOCATED( surf_usm_h(l)%qisws ) )                                            &
    3283                       surf_h(0)%qisws(mm(0)) = surf_usm_h(l)%qisws(m)
     3286                      surf_h(l)%qisws(mm(l)) = surf_usm_h(l)%qisws(m)
    32843287                   IF ( ALLOCATED( surf_usm_h(l)%qrsws ) )                                            &
    3285                       surf_h(0)%qrsws(mm(0)) = surf_usm_h(l)%qrsws(m)
     3288                      surf_h(l)%qrsws(mm(l)) = surf_usm_h(l)%qrsws(m)
    32863289                   IF ( ALLOCATED( surf_usm_h(l)%ncsws ) )                                            &
    3287                       surf_h(0)%ncsws(mm(0))   = surf_usm_h(l)%ncsws(m)
     3290                      surf_h(l)%ncsws(mm(l))   = surf_usm_h(l)%ncsws(m)
    32883291                   IF ( ALLOCATED( surf_usm_h(l)%nrsws ) )                                            &
    3289                       surf_h(0)%nrsws(mm(0)) = surf_usm_h(l)%nrsws(m)
     3292                      surf_h(l)%nrsws(mm(l)) = surf_usm_h(l)%nrsws(m)
    32903293                   IF ( ALLOCATED( surf_usm_h(l)%nisws ) )                                            &
    3291                       surf_h(0)%nisws(mm(0)) = surf_usm_h(l)%nisws(m)
     3294                      surf_h(l)%nisws(mm(l)) = surf_usm_h(l)%nisws(m)
    32923295                   IF ( ALLOCATED( surf_usm_h(l)%sasws ) )                                            &
    3293                      surf_h(0)%sasws(mm(0)) = surf_usm_h(l)%sasws(m)
     3296                     surf_h(l)%sasws(mm(l)) = surf_usm_h(l)%sasws(m)
    32943297
    32953298                   mm(l) = mm(l) + 1
Note: See TracChangeset for help on using the changeset viewer.