Changeset 3146 for palm/trunk


Ignore:
Timestamp:
Jul 18, 2018 10:36:19 PM (6 years ago)
Author:
maronga
Message:

major bugfix in calculation of Obukhov length and subsequent handling of surface information

Location:
palm/trunk/SOURCE
Files:
3 edited

Legend:

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

    r3143 r3146  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Adjustments for new surface structure
    2323!
    2424! Former revisions:
     
    23202320!
    23212321!--       Update virtual potential temperature
    2322           vpt(k+k_off,j+j_off,i+i_off) = pt(k+k_off,j+j_off,i+i_off) *         &
     2322          surf%vpt_surface(m) = surf%pt_surface(m) *         &
    23232323                     ( 1.0_wp + 0.61_wp * q(k+k_off,j+j_off,i+i_off) )
    23242324
     2325       
     2326                     
    23252327       ENDDO
    23262328
  • palm/trunk/SOURCE/surface_layer_fluxes_mod.f90

    r3130 r3146  
    2121! Current revisions:
    2222! ------------------
    23 !
     23! Major bugfix in calculation of Obukhov length
    2424!
    2525! Former revisions:
     
    329329             surf => surf_def_h(l)
    330330             CALL calc_pt_q
    331              IF ( .NOT. neutral )  CALL calc_pt_surface
     331             IF ( .NOT. neutral )  THEN
     332                CALL calc_pt_surface
     333                IF ( humidity )  THEN
     334                   CALL calc_vpt_surface
     335                ENDIF
     336             ENDIF
    332337          ENDIF
    333338       ENDDO
     
    354359          ENDIF
    355360
    356 !
    357 !--    Call for urban-type vertical surfaces
     361!--       Call for urban-type vertical surfaces
    358362          IF ( surf_usm_v(l)%ns >= 1  )  THEN
    359363             surf => surf_usm_v(l)
     
    11841188          IF ( ibc_pt_b /= 1 )  THEN
    11851189             IF ( humidity )  THEN
    1186                 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1190                !$OMP PARALLEL DO PRIVATE( z_mo )
    11871191                DO  m = 1, surf%ns
    11881192
    1189                    i   = surf%i(m)           
    1190                    j   = surf%j(m)
    1191                    k   = surf%k(m)
    1192 
    11931193                   z_mo = surf%z_mo(m)
    11941194
    1195                    surf%rib(m) = g * z_mo *                                    &
    1196                                          ( vpt(k,j,i) - vpt(k-1,j,i) ) /       &
    1197                       ( surf%uvw_abs(m)**2 * vpt(k,j,i) + 1.0E-20_wp )
     1195                   surf%rib(m) = g * z_mo                                      &
     1196                                 * ( surf%vpt1(m) - surf%vpt_surface(m) )      &
     1197                                 / ( surf%uvw_abs(m)**2 * surf%vpt1(m)         &
     1198                                 + 1.0E-20_wp )
    11981199                ENDDO
    11991200             ELSE
    1200                 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1201                !$OMP PARALLEL DO PRIVATE( z_mo )
    12011202                DO  m = 1, surf%ns
    12021203
    1203                    i   = surf%i(m)           
    1204                    j   = surf%j(m)
    1205                    k   = surf%k(m)
    1206 
    12071204                   z_mo = surf%z_mo(m)
    12081205
    1209                    surf%rib(m) = g * z_mo *                                    &
    1210                                          ( pt(k,j,i) - pt(k-1,j,i)   ) /       &
    1211                       ( surf%uvw_abs(m)**2 * pt(k,j,i)  + 1.0E-20_wp )
     1206                   surf%rib(m) = g * z_mo                                      &
     1207                                 * ( surf%pt1(m) - surf%pt_surface(m) )        &
     1208                                 / ( surf%uvw_abs(m)**2 * surf%pt1(m)          &
     1209                                 + 1.0E-20_wp )
    12121210                ENDDO
    12131211             ENDIF
    12141212          ELSE
    12151213             IF ( humidity )  THEN
    1216                 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1214                !$OMP PARALLEL DO PRIVATE( k, z_mo )
    12171215                DO  m = 1, surf%ns
    12181216
    1219                    i   = surf%i(m)           
    1220                    j   = surf%j(m)
    12211217                   k   = surf%k(m)
    12221218
     
    12241220
    12251221                   surf%rib(m) = - g * z_mo * ( ( 1.0_wp + 0.61_wp             &
    1226                            * q(k,j,i) ) * surf%shf(m) + 0.61_wp                &
    1227                            * pt(k,j,i) * surf%qsws(m) ) *                      &
     1222                           * surf%qv1(m) ) * surf%shf(m) + 0.61_wp             &
     1223                           * surf%pt1(m) * surf%qsws(m) ) *                    &
    12281224                             drho_air_zw(k-1)                /                 &
    1229                          ( surf%uvw_abs(m)**3 * vpt(k,j,i) * kappa**2          &
     1225                         ( surf%uvw_abs(m)**3 * surf%vpt1(m) * kappa**2        &
    12301226                           + 1.0E-20_wp )
    12311227                ENDDO
    12321228             ELSE
    1233                 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1229                !$OMP PARALLEL DO PRIVATE( k, z_mo )
    12341230                DO  m = 1, surf%ns
    12351231
    1236                    i   = surf%i(m)           
    1237                    j   = surf%j(m)
    12381232                   k   = surf%k(m)
    12391233
     
    12421236                   surf%rib(m) = - g * z_mo * surf%shf(m) *                    &
    12431237                                        drho_air_zw(k-1)            /          &
    1244                         ( surf%uvw_abs(m)**3 * pt(k,j,i) * kappa**2            &
     1238                        ( surf%uvw_abs(m)**3 * surf%pt1(m) * kappa**2          &
    12451239                           + 1.0E-20_wp )
    12461240                ENDDO
     
    14181412
    14191413          IF ( .NOT. humidity )  THEN
    1420              !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1414             !$OMP PARALLEL DO PRIVATE( z_mo )
    14211415             DO  m = 1, surf%ns
    14221416
    1423                 i   = surf%i(m)           
    1424                 j   = surf%j(m)
    1425                 k   = surf%k(m)
    1426 
    14271417                z_mo = surf%z_mo(m)
    14281418
    1429                 surf%ol(m) =  ( pt(k,j,i) *  surf%us(m)**2 ) /                 &
     1419                surf%ol(m) =  ( surf%pt1(m) *  surf%us(m)**2 ) /               &
    14301420                                       ( kappa * g *                           &
    14311421                                         surf%ts(m) + 1E-30_wp )
     
    14531443
    14541444
    1455                 surf%ol(m) =  ( vpt(k,j,i) * surf%us(m)**2 ) /                 &
     1445                surf%ol(m) =  ( surf%vpt1(m) * surf%us(m)**2 ) /               &
    14561446                    ( kappa * g * ( surf%ts(m) +                               &
    14571447                         0.61_wp * surf%pt1(m) * surf%us(m)                    &
     
    14721462          ELSE
    14731463
    1474              !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo )
     1464             !$OMP PARALLEL DO PRIVATE( z_mo )
    14751465             DO  m = 1, surf%ns
    14761466
    1477                 i   = surf%i(m)           
    1478                 j   = surf%j(m)
    1479                 k   = surf%k(m)
    1480 
    14811467                z_mo = surf%z_mo(m)
    14821468
    1483                 surf%ol(m) =  ( vpt(k,j,i) *  surf%us(m)**2 ) /                &
    1484                     ( kappa * g * ( surf%ts(m) + 0.61_wp * pt(k,j,i) *         &
    1485                                     surf%qs(m) + 0.61_wp * q(k,j,i)  *         &
     1469                surf%ol(m) =  ( surf%vpt1(m) *  surf%us(m)**2 ) /              &
     1470                    ( kappa * g * ( surf%ts(m) + 0.61_wp * surf%pt1(m) *       &
     1471                                    surf%qs(m) + 0.61_wp * surf%qv1(m) *       &
    14861472                                    surf%ts(m) ) + 1E-30_wp )
    14871473
     
    15601546
    15611547!
    1562 !-- Calculate potential temperature and specific humidity at first grid level
     1548!-- Calculate potential temperature, specific humidity, and virtual potential
     1549!-- temperature at first grid level
    15631550!-- ( only for upward-facing surfs )
    15641551    SUBROUTINE calc_pt_q
     
    15901577          ENDIF
    15911578
     1579          IF ( humidity )  THEN
     1580             surf%vpt1(m) = pt(k,j,i) * ( 1.0_wp + 0.61_wp * q(k,j,i) )
     1581          ENDIF
     1582         
    15921583       ENDDO
    15931584
     
    15961587
    15971588!
    1598 !-- Calculate potential temperature and specific humidity at first grid level
     1589!-- Calculate potential temperature at first grid level
    15991590!-- ( only for upward-facing surfs )
    16001591    SUBROUTINE calc_pt_surface
     
    16021593       IMPLICIT NONE
    16031594
    1604        INTEGER(iwp) ::  koff    !< index offset between surface and atmosphere grid point (-1 for upward-, +1 for downward-facing walls)
     1595       INTEGER(iwp) ::  k_off    !< index offset between surface and atmosphere grid point (-1 for upward-, +1 for downward-facing walls)
    16051596       INTEGER(iwp) ::  m       !< loop variable over all horizontal surf elements
    16061597       
    1607        koff = surf%koff
     1598       k_off = surf%koff
    16081599       !$OMP PARALLEL DO PRIVATE( i, j, k )
    16091600       DO  m = 1, surf%ns
     
    16131604          k   = surf%k(m)
    16141605
    1615           surf%pt_surface(m) = pt(k+koff,j,i)
     1606          surf%pt_surface(m) = pt(k+k_off,j,i)
    16161607
    16171608       ENDDO
     
    16191610    END SUBROUTINE calc_pt_surface
    16201611
     1612!
     1613!-- Calculate virtual potential temperature at first grid level
     1614!-- ( only for upward-facing surfs )
     1615    SUBROUTINE calc_vpt_surface
     1616
     1617       IMPLICIT NONE
     1618
     1619       INTEGER(iwp) ::  k_off    !< index offset between surface and atmosphere grid point (-1 for upward-, +1 for downward-facing walls)
     1620       INTEGER(iwp) ::  m       !< loop variable over all horizontal surf elements
     1621       
     1622       k_off = surf%koff
     1623       !$OMP PARALLEL DO PRIVATE( i, j, k )
     1624       DO  m = 1, surf%ns
     1625
     1626          i   = surf%i(m)           
     1627          j   = surf%j(m)
     1628          k   = surf%k(m)
     1629
     1630          surf%vpt_surface(m) = vpt(k+k_off,j,i)
     1631
     1632       ENDDO
     1633
     1634    END SUBROUTINE calc_vpt_surface
     1635   
    16211636!
    16221637!-- Calculate the other MOST scaling parameters theta*, q*, (qc*, qr*, nc*, nr*)
  • palm/trunk/SOURCE/surface_mod.f90

    r3055 r3146  
    2121! Current revisions:
    2222! ------------------
    23 !
     23! Added vpt_surface and vpt1
    2424!
    2525! Former revisions:
     
    251251       REAL(wp), DIMENSION(:), ALLOCATABLE ::  z0q       !< roughness length for humidity
    252252
    253        REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt1       !< Potential temperature at first grid level
     253       REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt1       !< potential temperature at first grid level
    254254       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qv1       !< mixing ratio at first grid level
     255       REAL(wp), DIMENSION(:), ALLOCATABLE ::  vpt1      !< virtual potential temperature at first grid level
     256       
    255257       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  css     !< scaling parameter chemical species
    256258!
     
    302304
    303305       REAL(wp), DIMENSION(:), ALLOCATABLE   ::  pt_surface        !< skin-surface temperature
     306       REAL(wp), DIMENSION(:), ALLOCATABLE   ::  vpt_surface       !< skin-surface virtual temperature
    304307       REAL(wp), DIMENSION(:), ALLOCATABLE   ::  rad_net           !< net radiation
    305308       REAL(wp), DIMENSION(:), ALLOCATABLE   ::  rad_net_l         !< net radiation, used in USM
     
    10471050       DEALLOCATE ( surfaces%pt1 )
    10481051       DEALLOCATE ( surfaces%qv1 )
     1052       DEALLOCATE ( surfaces%vpt1 )
     1053       
    10491054!
    10501055!--       
     
    11491154       ALLOCATE ( surfaces%pt_surface(1:surfaces%ns) )
    11501155!
    1151 !--    Characteristic humidity and surface flux of latent heat
     1156!--    Characteristic humidity, surface flux of latent heat, and surface virtual potential temperature
    11521157       IF ( humidity )  THEN
    11531158          ALLOCATE ( surfaces%qs(1:surfaces%ns)   )
    11541159          ALLOCATE ( surfaces%qsws(1:surfaces%ns) )     
     1160          ALLOCATE ( surfaces%vpt_surface(1:surfaces%ns) )
    11551161       ENDIF
    11561162!
     
    11711177       ALLOCATE ( surfaces%pt1(1:surfaces%ns) )
    11721178       ALLOCATE ( surfaces%qv1(1:surfaces%ns) )
     1179       ALLOCATE ( surfaces%vpt1(1:surfaces%ns) )
    11731180!
    11741181!--       
     
    14061413       IF ( humidity )  THEN
    14071414          DEALLOCATE ( surfaces%qs )
    1408           DEALLOCATE ( surfaces%qsws )     
     1415          DEALLOCATE ( surfaces%qsws ) 
     1416          DEALLOCATE ( surfaces%vpt_surface )
    14091417       ENDIF
    14101418!
     
    14251433       DEALLOCATE ( surfaces%pt1 )
    14261434       DEALLOCATE ( surfaces%qv1 )
     1435       DEALLOCATE ( surfaces%vpt1 )
    14271436
    14281437       IF ( cloud_physics .AND. microphysics_seifert)  THEN
     
    15271536!--    Characteristic humidity and surface flux of latent heat
    15281537       IF ( humidity )  THEN
    1529           ALLOCATE ( surfaces%qs(1:surfaces%ns)   )
    1530           ALLOCATE ( surfaces%qsws(1:surfaces%ns) )     
     1538          ALLOCATE ( surfaces%qs(1:surfaces%ns)          )
     1539          ALLOCATE ( surfaces%qsws(1:surfaces%ns)        )   
     1540          ALLOCATE ( surfaces%vpt_surface(1:surfaces%ns) )           
    15311541       ENDIF
    15321542!
     
    15471557       ALLOCATE ( surfaces%pt1(1:surfaces%ns) )
    15481558       ALLOCATE ( surfaces%qv1(1:surfaces%ns) )
     1559       ALLOCATE ( surfaces%vpt1(1:surfaces%ns) )
    15491560
    15501561       IF ( cloud_physics .AND. microphysics_seifert)  THEN
     
    20972108                   surf%nrsws(num_h) = 0.0_wp
    20982109
    2099                    surf%pt1(num_h) = 0.0_wp
    2100                    surf%qv1(num_h) = 0.0_wp
    2101 
     2110                   surf%pt1(num_h)  = 0.0_wp
     2111                   surf%qv1(num_h)  = 0.0_wp
     2112                   surf%vpt1(num_h) = 0.0_wp
     2113                   
    21022114                ENDIF
    21032115             ENDIF
     
    26042616                   IF ( ALLOCATED( surf_def_h(l)%pt_surface ) )                &
    26052617                      surf_h(l)%pt_surface(mm(l)) = surf_def_h(l)%pt_surface(m)
     2618                   IF ( ALLOCATED( surf_def_h(l)%vpt_surface ) )               &
     2619                      surf_h(l)%vpt_surface(mm(l)) = surf_def_h(l)%vpt_surface(m)                     
    26062620                   IF ( ALLOCATED( surf_def_h(l)%usws ) )                      &
    26072621                      surf_h(l)%usws(mm(l))    = surf_def_h(l)%usws(m)
     
    26592673                      IF ( ALLOCATED( surf_lsm_h%pt_surface ) )                &
    26602674                         surf_h(l)%pt_surface(mm(l)) = surf_lsm_h%pt_surface(m)
     2675                      IF ( ALLOCATED( surf_def_h(l)%vpt_surface ) )            &
     2676                      surf_h(l)%vpt_surface(mm(l)) = surf_def_h(l)%vpt_surface(m)
    26612677                      IF ( ALLOCATED( surf_lsm_h%usws ) )                      &
    26622678                         surf_h(0)%usws(mm(0))    = surf_lsm_h%usws(m)
     
    27142730                      IF ( ALLOCATED( surf_usm_h%pt_surface ) )                &
    27152731                         surf_h(l)%pt_surface(mm(l)) = surf_usm_h%pt_surface(m)
     2732                      IF ( ALLOCATED( surf_usm_h%vpt_surface ) )               &
     2733                         surf_h(l)%vpt_surface(mm(l)) = surf_usm_h%vpt_surface(m)
    27162734                      IF ( ALLOCATED( surf_usm_h%usws ) )                      &
    27172735                         surf_h(0)%usws(mm(0))    = surf_usm_h%usws(m)
     
    28102828                   IF ( ALLOCATED( surf_def_v(l)%pt_surface ) )                &
    28112829                      surf_v(l)%pt_surface(mm(l)) = surf_def_v(l)%pt_surface(m)
     2830                   IF ( ALLOCATED( surf_def_v(l)%vpt_surface ) )               &
     2831                      surf_v(l)%vpt_surface(mm(l)) = surf_def_v(l)%vpt_surface(m)
    28122832                   IF ( ALLOCATED( surf_def_v(l)%shf ) )                       &
    28132833                      surf_v(l)%shf(mm(l))     = surf_def_v(l)%shf(m)
     
    28662886                   IF ( ALLOCATED( surf_lsm_v(l)%pt_surface ) )                &
    28672887                      surf_v(l)%pt_surface(mm(l)) = surf_lsm_v(l)%pt_surface(m)
     2888                   IF ( ALLOCATED( surf_lsm_v(l)%vpt_surface ) )               &
     2889                      surf_v(l)%vpt_surface(mm(l)) = surf_lsm_v(l)%vpt_surface(m)
    28682890                   IF ( ALLOCATED( surf_lsm_v(l)%usws ) )                      &
    28692891                      surf_v(l)%usws(mm(l))    = surf_lsm_v(l)%usws(m)
     
    29262948                   IF ( ALLOCATED( surf_usm_v(l)%pt_surface ) )                &
    29272949                      surf_v(l)%pt_surface(mm(l)) = surf_usm_v(l)%pt_surface(m)
     2950                   IF ( ALLOCATED( surf_usm_v(l)%vpt_surface ) )               &
     2951                      surf_v(l)%vpt_surface(mm(l)) = surf_usm_v(l)%vpt_surface(m)
    29282952                   IF ( ALLOCATED( surf_usm_v(l)%usws ) )                      &
    29292953                      surf_v(l)%usws(mm(l))    = surf_usm_v(l)%usws(m)
     
    30663090          ENDIF
    30673091
     3092          IF ( ALLOCATED ( surf_h(l)%vpt_surface ) )  THEN
     3093             CALL wrd_write_string( 'surf_h(' // dum // ')%vpt_surface' )
     3094             WRITE ( 14 )  surf_h(l)%vpt_surface
     3095          ENDIF
     3096
    30683097          IF ( ALLOCATED ( surf_h(l)%usws ) )  THEN
    30693098             CALL wrd_write_string( 'surf_h(' // dum // ')%usws' )
     
    31913220             CALL wrd_write_string( 'surf_v(' // dum // ')%pt_surface' )
    31923221             WRITE ( 14 )  surf_v(l)%pt_surface
     3222          ENDIF
     3223
     3224          IF ( ALLOCATED ( surf_v(l)%vpt_surface ) )  THEN
     3225             CALL wrd_write_string( 'surf_v(' // dum // ')%vpt_surface' )
     3226             WRITE ( 14 )  surf_v(l)%vpt_surface
    31933227          ENDIF
    31943228
     
    34303464             IF ( ALLOCATED( surf_h(0)%pt_surface )  .AND.  kk == 1 )          &
    34313465                READ ( 13 )  surf_h(0)%pt_surface
     3466          CASE ( 'surf_h(0)%vpt_surface' )         
     3467             IF ( ALLOCATED( surf_h(0)%vpt_surface )  .AND.  kk == 1 )         &
     3468                READ ( 13 )  surf_h(0)%vpt_surface
    34323469          CASE ( 'surf_h(0)%usws' )         
    34333470             IF ( ALLOCATED( surf_h(0)%usws )  .AND.  kk == 1 )                &
     
    35073544             IF ( ALLOCATED( surf_h(1)%pt_surface )  .AND.  kk == 1 )          &
    35083545                READ ( 13 )  surf_h(1)%pt_surface
     3546          CASE ( 'surf_h(1)%vpt_surface' )         
     3547             IF ( ALLOCATED( surf_h(1)%vpt_surface )  .AND.  kk == 1 )          &
     3548                READ ( 13 )  surf_h(1)%vpt_surface
    35093549          CASE ( 'surf_h(1)%usws' )         
    35103550             IF ( ALLOCATED( surf_h(1)%usws )  .AND.  kk == 1 )                &
     
    35843624             IF ( ALLOCATED( surf_h(2)%pt_surface )  .AND.  kk == 1 )          &
    35853625                READ ( 13 )  surf_h(2)%pt_surface
     3626          CASE ( 'surf_h(2)%vpt_surface' )         
     3627             IF ( ALLOCATED( surf_h(2)%vpt_surface )  .AND.  kk == 1 )          &
     3628                READ ( 13 )  surf_h(2)%vpt_surface
    35863629          CASE ( 'surf_h(2)%usws' )         
    35873630             IF ( ALLOCATED( surf_h(2)%usws )  .AND.  kk == 1 )                &
     
    36633706             IF ( ALLOCATED( surf_v(0)%pt_surface )  .AND.  kk == 1 )          &
    36643707                READ ( 13 )  surf_v(0)%pt_surface
     3708          CASE ( 'surf_v(0)%vpt_surface' )         
     3709             IF ( ALLOCATED( surf_v(0)%vpt_surface )  .AND.  kk == 1 )          &
     3710                READ ( 13 )  surf_v(0)%vpt_surface
    36653711          CASE ( 'surf_v(0)%shf' )         
    36663712             IF ( ALLOCATED( surf_v(0)%shf )  .AND.  kk == 1 )                 &
     
    37433789             IF ( ALLOCATED( surf_v(1)%pt_surface )  .AND.  kk == 1 )          &
    37443790                READ ( 13 )  surf_v(1)%pt_surface
     3791          CASE ( 'surf_v(1)%vpt_surface' )         
     3792             IF ( ALLOCATED( surf_v(1)%vpt_surface )  .AND.  kk == 1 )         &
     3793                READ ( 13 )  surf_v(1)%vpt_surface
    37453794          CASE ( 'surf_v(1)%shf' )         
    37463795             IF ( ALLOCATED( surf_v(1)%shf )  .AND.  kk == 1 )                 &
     
    38233872             IF ( ALLOCATED( surf_v(2)%pt_surface )  .AND.  kk == 1 )          &
    38243873                READ ( 13 )  surf_v(2)%pt_surface
     3874          CASE ( 'surf_v(2)%vpt_surface' )         
     3875             IF ( ALLOCATED( surf_v(2)%vpt_surface )  .AND.  kk == 1 )          &
     3876                READ ( 13 )  surf_v(2)%vpt_surface
    38253877          CASE ( 'surf_v(2)%shf' )         
    38263878             IF ( ALLOCATED( surf_v(2)%shf )  .AND.  kk == 1 )                 &
     
    39033955             IF ( ALLOCATED( surf_v(3)%pt_surface )  .AND.  kk == 1 )          &
    39043956                READ ( 13 )  surf_v(3)%pt_surface
     3957          CASE ( 'surf_v(3)%vpt_surface' )         
     3958             IF ( ALLOCATED( surf_v(3)%vpt_surface )  .AND.  kk == 1 )          &
     3959                READ ( 13 )  surf_v(3)%vpt_surface
    39053960          CASE ( 'surf_v(3)%shf' )         
    39063961             IF ( ALLOCATED( surf_v(3)%shf )  .AND.  kk == 1 )                 &
     
    40974152             ENDIF
    40984153
     4154             IF ( INDEX( restart_string(1:length), '%vpt_surface' ) /= 0 )  THEN
     4155                IF ( ALLOCATED( surf_target%vpt_surface )  .AND.               &
     4156                     ALLOCATED( surf_file%vpt_surface   ) )                    &
     4157                   surf_target%vpt_surface(m_target) = surf_file%vpt_surface(m_file)
     4158             ENDIF
     4159             
    40994160             IF ( INDEX( restart_string(1:length), '%usws' ) /= 0 )  THEN
    41004161                IF ( ALLOCATED( surf_target%usws )  .AND.                      &
Note: See TracChangeset for help on using the changeset viewer.