Ignore:
Timestamp:
Apr 22, 2014 3:03:56 PM (10 years ago)
Author:
boeske
Message:

large scale forcing enabled

File:
1 edited

Legend:

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

    r1354 r1365  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! Usage of large scale forcing for pt and q enabled:
     23! Added new subroutine ls_advec for horizontal large scale advection and large
     24! scale subsidence,
     25! error message in init_ls_forcing specified,
     26! variable t renamed nt
    2327!
    2428! Former revisions:
     
    6165
    6266    PRIVATE
    63     PUBLIC init_ls_forcing, ls_forcing_surf, ls_forcing_vert 
     67    PUBLIC init_ls_forcing, ls_forcing_surf, ls_forcing_vert, ls_advec
    6468    SAVE
    6569
     70    INTERFACE ls_advec
     71       MODULE PROCEDURE ls_advec
     72       MODULE PROCEDURE ls_advec_ij
     73    END INTERFACE ls_advec
    6674
    6775 CONTAINS
     
    7078
    7179       USE arrays_3d,                                                          &
    72            ONLY:  p_surf, pt_surf, q_surf, qsws_surf, shf_surf, time_surf,     &
    73                   time_vert, ug_vert, vg_vert, wsubs_vert, zu
     80           ONLY:  p_surf, pt_lsa, pt_subs, pt_surf, q_lsa, q_subs, q_surf,     &
     81                  qsws_surf, shf_surf, time_surf, time_vert, ug_vert, vg_vert, &
     82                  wsubs_vert, zu
    7483
    7584       USE control_parameters,                                                 &
     
    7786
    7887       USE indices,                                                            &
    79            ONLY:  nzb, nzt
     88           ONLY:  ngp_sums_ls, nzb, nz, nzt
    8089
    8190       USE kinds
    8291
     92       USE statistics,                                                         &
     93           ONLY:  sums_ls_l
     94
    8395
    8496       IMPLICIT NONE
    8597
    86        CHARACTER(100) ::  chmess              !:
    87        CHARACTER(1)   ::  hash                !:
    88 
    89        INTEGER(iwp) ::  ierrn                 !:
    90        INTEGER(iwp) ::  finput = 90           !:
    91        INTEGER(iwp) ::  k                     !:
    92        INTEGER(iwp) ::  t                     !:
    93 
    94        REAL(wp) ::  fac                       !:
    95        REAL(wp) ::  highheight                !:
    96        REAL(wp) ::  highug_vert               !:
    97        REAL(wp) ::  highvg_vert               !:
    98        REAL(wp) ::  highwsubs_vert            !:
    99        REAL(wp) ::  lowheight                 !:
    100        REAL(wp) ::  lowug_vert                !:
    101        REAL(wp) ::  lowvg_vert                !:
    102        REAL(wp) ::  lowwsubs_vert             !:
    103        REAL(wp) ::  r_dummy                   !:
    104 
    105        ALLOCATE( p_surf(0:nlsf), pt_surf(0:nlsf), q_surf(0:nlsf),         &
    106                  qsws_surf(0:nlsf), shf_surf(0:nlsf), time_vert(0:nlsf),  &
    107                  time_surf(0:nlsf), ug_vert(nzb:nzt+1,0:nlsf),            &
    108                  vg_vert(nzb:nzt+1,0:nlsf), wsubs_vert(nzb:nzt+1,0:nlsf) )
    109 
    110        p_surf     = 0.0_wp;  pt_surf  = 0.0_wp;  q_surf    = 0.0_wp
    111        qsws_surf  = 0.0_wp;  shf_surf = 0.0_wp;  time_vert = 0.0_wp
    112        time_surf  = 0.0_wp;  ug_vert  = 0.0_wp;  vg_vert   = 0.0_wp
    113        wsubs_vert = 0.0_wp
    114 
     98       CHARACTER(100) ::  chmess      !:
     99       CHARACTER(1)   ::  hash        !:
     100
     101       INTEGER(iwp) ::  ierrn         !:
     102       INTEGER(iwp) ::  finput = 90   !:
     103       INTEGER(iwp) ::  k             !:
     104       INTEGER(iwp) ::  nt             !:
     105
     106       REAL(wp) ::  fac               !:
     107       REAL(wp) ::  highheight        !:
     108       REAL(wp) ::  highug_vert       !:
     109       REAL(wp) ::  highvg_vert       !:
     110       REAL(wp) ::  highwsubs_vert    !:
     111       REAL(wp) ::  lowheight         !:
     112       REAL(wp) ::  lowug_vert        !:
     113       REAL(wp) ::  lowvg_vert        !:
     114       REAL(wp) ::  lowwsubs_vert     !:
     115       REAL(wp) ::  highpt_lsa        !:
     116       REAL(wp) ::  lowpt_lsa         !:
     117       REAL(wp) ::  highq_lsa         !:
     118       REAL(wp) ::  lowq_lsa          !:
     119       REAL(wp) ::  highpt_subs       !:
     120       REAL(wp) ::  lowpt_subs        !:
     121       REAL(wp) ::  highq_subs        !:
     122       REAL(wp) ::  lowq_subs         !:
     123       REAL(wp) ::  r_dummy           !:
     124
     125       ALLOCATE( p_surf(0:nlsf), pt_lsa(nzb:nzt+1,0:nlsf),                     &
     126                 pt_subs(nzb:nzt+1,0:nlsf), pt_surf(0:nlsf),                   &
     127                 q_lsa(nzb:nzt+1,0:nlsf), q_subs(nzb:nzt+1,0:nlsf),            &
     128                 q_surf(0:nlsf), qsws_surf(0:nlsf), shf_surf(0:nlsf),          &
     129                 time_vert(0:nlsf), time_surf(0:nlsf),                         &
     130                 ug_vert(nzb:nzt+1,0:nlsf), vg_vert(nzb:nzt+1,0:nlsf),         &
     131                 wsubs_vert(nzb:nzt+1,0:nlsf) )
     132
     133       p_surf = 0.0_wp; pt_lsa = 0.0; pt_subs = 0.0; pt_surf = 0.0_wp
     134       q_lsa = 0.0; q_subs = 0.0; q_surf = 0.0_wp; qsws_surf = 0.0_wp
     135       shf_surf = 0.0_wp; time_vert = 0.0_wp; time_surf = 0.0_wp;
     136       ug_vert = 0.0_wp; vg_vert = 0.0_wp; wsubs_vert = 0.0_wp
     137
     138!
     139!--    Array for storing large scale forcing and nudging tendencies at each
     140!--    timestep for data output
     141       ALLOCATE( sums_ls_l(nzb:nzt+1,0:7) )
     142       sums_ls_l = 0.0_wp
     143
     144       ngp_sums_ls = (nz+2)*6
    115145
    116146       OPEN ( finput, FILE='LSF_DATA', STATUS='OLD', &
     
    136166!
    137167!--    Surface values are read in
    138        t     = 0
     168       nt     = 0
    139169       ierrn = 0
    140170
    141        DO WHILE ( time_surf(t) < end_time )
    142           t = t + 1
    143           READ ( finput, *, IOSTAT = ierrn ) time_surf(t), shf_surf(t), &
    144                                              qsws_surf(t), pt_surf(t),  &
    145                                              q_surf(t), p_surf(t)
     171       DO WHILE ( time_surf(nt) < end_time )
     172          nt = nt + 1
     173          READ ( finput, *, IOSTAT = ierrn ) time_surf(nt), shf_surf(nt),      &
     174                                             qsws_surf(nt), pt_surf(nt),       &
     175                                             q_surf(nt), p_surf(nt)
    146176
    147177          IF ( ierrn < 0 )  THEN
     
    156186       IF ( time_surf(1) > end_time )  THEN
    157187          WRITE ( message_string, * ) 'No time dependent surface variables in ',&
    158                                      '&LSF_DATA for end of run found - ',  &
     188                                     '&LSF_DATA for end of run found - ',      &
    159189                                     'lsf_surf is set to FALSE'
    160190          CALL message( 'ls_forcing', 'PA0371', 0, 0, 0, 6, 0 )
     
    171201!--    Profiles of ug, vg and w_subs are read in (large scale forcing)
    172202
    173        t = 0
    174        DO WHILE ( time_vert(t) < end_time )
    175           t = t + 1
     203       nt = 0
     204       DO WHILE ( time_vert(nt) < end_time )
     205          nt = nt + 1
    176206          hash = "#"
    177207          ierrn = 1 ! not zero
     
    180210!--       from there onwards the profiles will be read
    181211          DO WHILE ( .NOT. ( hash == "#" .AND. ierrn == 0 ) )
    182              READ ( finput, *, IOSTAT=ierrn ) hash, time_vert(t)
     212             READ ( finput, *, IOSTAT=ierrn ) hash, time_vert(nt)
    183213             IF ( ierrn < 0 )  THEN
    184214                WRITE( message_string, * ) 'No time dependent vertical profiles',&
     
    188218          ENDDO
    189219
    190           IF ( t == 1 .AND. time_vert(t) > end_time ) EXIT
    191 
    192           READ ( finput, *, IOSTAT=ierrn ) lowheight, lowug_vert, lowvg_vert, &
    193                                            lowwsubs_vert
     220          IF ( nt == 1 .AND. time_vert(nt) > end_time ) EXIT
     221
     222          READ ( finput, *, IOSTAT=ierrn ) lowheight, lowug_vert, lowvg_vert,  &
     223                                           lowwsubs_vert, lowpt_lsa,           &
     224                                           lowq_lsa, lowpt_subs, lowq_subs
    194225          IF ( ierrn /= 0 )  THEN
    195226             message_string = 'errors in file LSF_DATA'
     
    197228          ENDIF
    198229
    199           READ ( finput, *, IOSTAT=ierrn ) highheight, highug_vert, highvg_vert, &
    200                                            highwsubs_vert
     230          READ ( finput, *, IOSTAT=ierrn ) highheight, highug_vert,            &
     231                                           highvg_vert, highwsubs_vert,        &
     232                                           highpt_lsa, highq_lsa,              &
     233                                           highpt_subs, highq_subs
    201234     
    202235          IF ( ierrn /= 0 )  THEN
     
    212245                lowvg_vert    = highvg_vert
    213246                lowwsubs_vert = highwsubs_vert
     247                lowpt_lsa     = highpt_lsa
     248                lowq_lsa      = highq_lsa
     249                lowpt_subs    = highpt_subs
     250                lowq_subs     = highq_subs
    214251
    215252                ierrn = 0
    216                 READ ( finput, *, IOSTAT=ierrn ) highheight, highug_vert, &
    217                                                  highvg_vert, highwsubs_vert
     253                READ ( finput, *, IOSTAT=ierrn ) highheight, highug_vert,      &
     254                                                 highvg_vert, highwsubs_vert,  &
     255                                                 highpt_lsa, highq_lsa,        &
     256                                                 highpt_subs, highq_subs
    218257
    219258                IF ( ierrn /= 0 )  THEN
    220                    message_string = 'errors in file LSF_DATA'
    221                    CALL message( 'ls_forcing', 'PA0369', 1, 2, 0, 6, 0 )
     259                   WRITE( message_string, * ) 'zu(nzt+1) = ', zu(nzt+1), 'm ', &
     260                        'is higher than the maximum height in LSF_DATA which ',&
     261                        'is ', lowheight, 'm. Interpolation on PALM ',         &
     262                        'grid is not possible.'
     263                   CALL message( 'ls_forcing', 'PA0395', 1, 2, 0, 6, 0 )
    222264                ENDIF
    223265
     
    228270             fac = (highheight-zu(k))/(highheight - lowheight)
    229271
    230              ug_vert(k,t)    = fac*lowug_vert    + (1-fac)*highug_vert
    231              vg_vert(k,t)    = fac*lowvg_vert    + (1-fac)*highvg_vert
    232              wsubs_vert(k,t) = fac*lowwsubs_vert + (1-fac)*highwsubs_vert
     272             ug_vert(k,nt)    = fac*lowug_vert    + (1.0_wp-fac)*highug_vert
     273             vg_vert(k,nt)    = fac*lowvg_vert    + (1.0_wp-fac)*highvg_vert
     274             wsubs_vert(k,nt) = fac*lowwsubs_vert + (1.0_wp-fac)*highwsubs_vert
     275
     276             pt_lsa(k,nt)     = fac*lowpt_lsa     + (1.0_wp-fac)*highpt_lsa
     277             q_lsa(k,nt)      = fac*lowq_lsa      + (1.0_wp-fac)*highq_lsa
     278             pt_subs(k,nt)    = fac*lowpt_subs    + (1.0_wp-fac)*highpt_subs
     279             q_subs(k,nt)     = fac*lowq_subs     + (1.0_wp-fac)*highq_subs
    233280
    234281          ENDDO
     
    241288 
    242289       IF ( time_vert(1) > end_time )  THEN
    243           WRITE ( message_string, * ) 'Time dependent large scale profile ',&
    244                              'forcing from&LSF_DATA sets in after end of ' ,&
     290          WRITE ( message_string, * ) 'Time dependent large scale profile ',   &
     291                             'forcing from&LSF_DATA sets in after end of ' ,   &
    245292                             'simulation - lsf_vert is set to FALSE'
    246293          CALL message( 'ls_forcing', 'PA0373', 0, 0, 0, 6, 0 )
     
    266313       USE kinds
    267314
    268 
    269315       IMPLICIT NONE
    270316
    271        INTEGER(iwp) ::  t                     !:
     317       INTEGER(iwp) ::  nt                     !:
    272318
    273319       REAL(wp)             :: fac            !:
     
    276322!
    277323!--    Interpolation in time of LSF_DATA at the surface
    278        t = 1
    279        DO WHILE ( time > time_surf(t) )
    280           t = t + 1
     324       nt = 1
     325       DO WHILE ( time > time_surf(nt) )
     326          nt = nt + 1
    281327       ENDDO
    282        IF ( time /= time_surf(t) )  THEN
    283          t = t - 1
    284        ENDIF
    285 
    286        fac = ( time -time_surf(t) ) / ( time_surf(t+1) - time_surf(t) )
     328       IF ( time /= time_surf(nt) )  THEN
     329         nt = nt - 1
     330       ENDIF
     331
     332       fac = ( time -time_surf(nt) ) / ( time_surf(nt+1) - time_surf(nt) )
    287333
    288334       IF ( ibc_pt_b == 0 )  THEN
     
    290336!--       In case of Dirichlet boundary condition shf must not
    291337!--       be set - it is calculated via MOST in prandtl_fluxes
    292           pt_surface = pt_surf(t) + fac * ( pt_surf(t+1) - pt_surf(t) )
     338          pt_surface = pt_surf(nt) + fac * ( pt_surf(nt+1) - pt_surf(nt) )
    293339
    294340       ELSEIF ( ibc_pt_b == 1 )  THEN
     
    296342!--       In case of Neumann boundary condition pt_surface is needed for
    297343!--       calculation of reference density
    298           shf        = shf_surf(t) + fac * ( shf_surf(t+1) - shf_surf(t) )
    299           pt_surface = pt_surf(t) + fac * ( pt_surf(t+1) - pt_surf(t) )
     344          shf        = shf_surf(nt) + fac * ( shf_surf(nt+1) - shf_surf(nt) )
     345          pt_surface = pt_surf(nt) + fac * ( pt_surf(nt+1) - pt_surf(nt) )
    300346
    301347       ENDIF
     
    305351!--       In case of Dirichlet boundary condition qsws must not
    306352!--       be set - it is calculated via MOST in prandtl_fluxes
    307           q_surface = q_surf(t) + fac * ( q_surf(t+1) - q_surf(t) )
     353          q_surface = q_surf(nt) + fac * ( q_surf(nt+1) - q_surf(nt) )
    308354
    309355       ELSEIF ( ibc_q_b == 1 )  THEN
    310356
    311           qsws = qsws_surf(t) + fac * ( qsws_surf(t+1) - qsws_surf(t) )
    312 
    313        ENDIF
    314 
    315        surface_pressure = p_surf(t) + fac * ( p_surf(t+1) - p_surf(t) )
     357          qsws = qsws_surf(nt) + fac * ( qsws_surf(nt+1) - qsws_surf(nt) )
     358
     359       ENDIF
     360
     361       surface_pressure = p_surf(nt) + fac * ( p_surf(nt+1) - p_surf(nt) )
    316362
    317363    END SUBROUTINE ls_forcing_surf
     
    328374       USE kinds
    329375
    330 
    331376       IMPLICIT NONE
    332377
    333        INTEGER(iwp) ::  t                     !:
     378       INTEGER(iwp) ::  nt                     !:
    334379
    335380       REAL(wp)             ::  fac           !:
     
    338383!
    339384!--    Interpolation in time of LSF_DATA for ug, vg and w_subs
    340        t = 1
    341        DO WHILE ( time > time_vert(t) )
    342           t = t + 1
     385       nt = 1
     386       DO WHILE ( time > time_vert(nt) )
     387          nt = nt + 1
    343388       ENDDO
    344        IF ( time /= time_vert(t) )  THEN
    345          t = t - 1
    346        ENDIF
    347 
    348        fac = ( time-time_vert(t) ) / ( time_vert(t+1)-time_vert(t) )
    349 
    350        ug     = ug_vert(:,t) + fac * ( ug_vert(:,t+1) - ug_vert(:,t) )
    351        vg     = vg_vert(:,t) + fac * ( vg_vert(:,t+1) - vg_vert(:,t) )
     389       IF ( time /= time_vert(nt) )  THEN
     390         nt = nt - 1
     391       ENDIF
     392
     393       fac = ( time-time_vert(nt) ) / ( time_vert(nt+1)-time_vert(nt) )
     394
     395       ug     = ug_vert(:,nt) + fac * ( ug_vert(:,nt+1) - ug_vert(:,nt) )
     396       vg     = vg_vert(:,nt) + fac * ( vg_vert(:,nt+1) - vg_vert(:,nt) )
    352397
    353398       IF ( large_scale_subsidence )  THEN
    354           w_subs = wsubs_vert(:,t) + fac * ( wsubs_vert(:,t+1) - wsubs_vert(:,t) )
     399          w_subs = wsubs_vert(:,nt)                                            &
     400                   + fac * ( wsubs_vert(:,nt+1) - wsubs_vert(:,nt) )
    355401       ENDIF
    356402
     
    358404
    359405
     406!------------------------------------------------------------------------------!
     407! Call for all grid points
     408!------------------------------------------------------------------------------!
     409    SUBROUTINE ls_advec ( time, prog_var )
     410
     411       USE arrays_3d,                                                          &
     412           ONLY:  pt_lsa, pt_subs, q_lsa, q_subs, tend, time_vert       
     413       
     414       USE control_parameters,                                                 &
     415           ONLY:  large_scale_subsidence, use_subsidence_tendencies
     416       
     417       USE indices
     418       
     419       USE kinds
     420
     421       IMPLICIT NONE
     422
     423       CHARACTER (LEN=*) ::  prog_var   !:
     424
     425       REAL(wp), INTENT(in)  :: time    !:
     426       REAL(wp) :: fac                  !: 
     427
     428       INTEGER(iwp) ::  i               !:
     429       INTEGER(iwp) ::  j               !:
     430       INTEGER(iwp) ::  k               !:
     431       INTEGER(iwp) ::  nt               !:
     432
     433!
     434!--    Interpolation in time of LSF_DATA
     435       nt = 1
     436       DO WHILE ( time > time_vert(nt) )
     437          nt = nt + 1
     438       ENDDO
     439       IF ( time /= time_vert(nt) )  THEN
     440         nt = nt - 1
     441       ENDIF
     442
     443       fac = ( time-time_vert(nt) ) / ( time_vert(nt+1)-time_vert(nt) )
     444
     445!
     446!--    Add horizontal large scale advection tendencies of pt and q
     447       SELECT CASE ( prog_var )
     448
     449          CASE ( 'pt' )
     450
     451             DO  i = nxl, nxr
     452                DO  j = nys, nyn
     453                   DO  k = nzb_u_inner(j,i)+1, nzt
     454                      tend(k,j,i) = tend(k,j,i) + pt_lsa(k,nt)                 &
     455                                    + fac * ( pt_lsa(k,nt+1) - pt_lsa(k,nt) )
     456                   ENDDO
     457                ENDDO
     458             ENDDO
     459
     460          CASE ( 'q' )
     461
     462             DO  i = nxl, nxr
     463                DO  j = nys, nyn
     464                   DO  k = nzb_u_inner(j,i)+1, nzt
     465                      tend(k,j,i) = tend(k,j,i) + q_lsa(k,nt)                  &
     466                                    + fac * ( q_lsa(k,nt+1) - q_lsa(k,nt) )
     467                   ENDDO
     468                ENDDO
     469             ENDDO
     470
     471       END SELECT
     472
     473!
     474!--    Subsidence of pt and q with prescribed subsidence tendencies
     475       IF ( large_scale_subsidence .AND. use_subsidence_tendencies )  THEN
     476
     477          SELECT CASE ( prog_var )
     478
     479             CASE ( 'pt' )
     480
     481                DO  i = nxl, nxr
     482                   DO  j = nys, nyn
     483                      DO  k = nzb_u_inner(j,i)+1, nzt
     484                         tend(k,j,i) = tend(k,j,i) + pt_subs(k,nt) + fac *     &
     485                                       ( pt_subs(k,nt+1) - pt_subs(k,nt) )
     486                      ENDDO
     487                   ENDDO
     488                ENDDO
     489 
     490             CASE ( 'q' )
     491
     492                DO  i = nxl, nxr
     493                   DO  j = nys, nyn
     494                      DO  k = nzb_u_inner(j,i)+1, nzt
     495                         tend(k,j,i) = tend(k,j,i) + q_subs(k,nt) + fac *      &
     496                                       ( q_subs(k,nt+1) - q_subs(k,nt) )
     497                      ENDDO
     498                   ENDDO
     499                ENDDO
     500
     501          END SELECT
     502
     503       ENDIF
     504
     505    END SUBROUTINE ls_advec
     506
     507
     508!------------------------------------------------------------------------------!
     509! Call for grid point i,j
     510!------------------------------------------------------------------------------!
     511    SUBROUTINE ls_advec_ij ( i, j, time, prog_var )
     512
     513       USE arrays_3d,                                                          &
     514           ONLY:  pt_lsa, pt_subs, q_lsa, q_subs, tend, time_vert       
     515       
     516       USE control_parameters,                                                 &
     517           ONLY:  large_scale_subsidence, use_subsidence_tendencies
     518       
     519       USE indices
     520       
     521       USE kinds
     522
     523       IMPLICIT NONE
     524
     525       CHARACTER (LEN=*) ::  prog_var   !:
     526
     527       REAL(wp), INTENT(in)  :: time    !:
     528       REAL(wp) :: fac                  !:
     529
     530       INTEGER(iwp) ::  i               !:
     531       INTEGER(iwp) ::  j               !:
     532       INTEGER(iwp) ::  k               !:
     533       INTEGER(iwp) ::  nt               !:
     534
     535!
     536!--    Interpolation in time of LSF_DATA
     537       nt = 1
     538       DO WHILE ( time > time_vert(nt) )
     539          nt = nt + 1
     540       ENDDO
     541       IF ( time /= time_vert(nt) )  THEN
     542         nt = nt - 1
     543       ENDIF
     544
     545       fac = ( time-time_vert(nt) ) / ( time_vert(nt+1)-time_vert(nt) )
     546
     547!
     548!--    Add horizontal large scale advection tendencies of pt and q
     549       SELECT CASE ( prog_var )
     550
     551          CASE ( 'pt' )
     552
     553             DO  k = nzb_u_inner(j,i)+1, nzt
     554                tend(k,j,i) = tend(k,j,i) + pt_lsa(k,nt)                       &
     555                              + fac * ( pt_lsa(k,nt+1) - pt_lsa(k,nt) )
     556             ENDDO
     557
     558          CASE ( 'q' )
     559
     560             DO  k = nzb_u_inner(j,i)+1, nzt
     561                tend(k,j,i) = tend(k,j,i) + q_lsa(k,nt)                        &
     562                              + fac * ( q_lsa(k,nt+1) - q_lsa(k,nt) )
     563             ENDDO
     564
     565       END SELECT
     566
     567!
     568!--    Subsidence of pt and q with prescribed profiles
     569       IF ( large_scale_subsidence .AND. use_subsidence_tendencies )  THEN
     570
     571          SELECT CASE ( prog_var )
     572
     573             CASE ( 'pt' )
     574
     575                DO  k = nzb_u_inner(j,i)+1, nzt
     576                   tend(k,j,i) = tend(k,j,i) + pt_subs(k,nt) + fac *           &
     577                                 ( pt_subs(k,nt+1) - pt_subs(k,nt) )
     578                ENDDO
     579 
     580             CASE ( 'q' )
     581
     582                DO  k = nzb_u_inner(j,i)+1, nzt
     583                   tend(k,j,i) = tend(k,j,i) + q_subs(k,nt) + fac *            &
     584                                 ( q_subs(k,nt+1) - q_subs(k,nt) )
     585                ENDDO
     586
     587          END SELECT
     588
     589       ENDIF
     590
     591    END SUBROUTINE ls_advec_ij
     592
     593
    360594 END MODULE ls_forcing_mod
Note: See TracChangeset for help on using the changeset viewer.