Ignore:
Timestamp:
Jun 20, 2017 9:51:42 AM (7 years ago)
Author:
schwenkel
Message:

implementation of new bulk microphysics scheme

File:
1 edited

Legend:

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

    r2233 r2292  
    2525! -----------------
    2626! $Id$
     27! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
     28! includes two more prognostic equations for cloud drop concentration (nc) 
     29! and cloud water content (qc).
     30!
     31! 2233 2017-05-30 18:08:54Z suehring
    2732!
    2833! 2232 2017-05-30 17:47:52Z suehring
     
    239244
    240245       USE arrays_3d,                                                          &
    241            ONLY:  diss_l_e, diss_l_nr, diss_l_pt, diss_l_q, diss_l_qr,         &
    242                   diss_l_s, diss_l_sa, diss_l_u, diss_l_v, diss_l_w,  flux_l_e,&
    243                   flux_l_nr, flux_l_pt, flux_l_q, flux_l_qr, flux_l_s,         &
    244                   flux_l_sa, flux_l_u, flux_l_v, flux_l_w, diss_s_e, diss_s_nr,&
    245                   diss_s_pt, diss_s_q, diss_s_qr, diss_s_s, diss_s_sa,         &
    246                   diss_s_u, diss_s_v, diss_s_w, flux_s_e, flux_s_nr, flux_s_pt,&
    247                   flux_s_q, flux_s_qr, flux_s_s, flux_s_sa, flux_s_u, flux_s_v,&
    248                   flux_s_w
     246           ONLY:  diss_l_e, diss_l_nc, diss_l_nr, diss_l_pt, diss_l_q,         &
     247                  diss_l_qc, diss_l_qr, diss_l_s, diss_l_sa, diss_l_u,         &
     248                  diss_l_v, diss_l_w, flux_l_e, flux_l_nc, flux_l_nr,          &
     249                  flux_l_pt, flux_l_q, flux_l_qc, flux_l_qr, flux_l_s,         &
     250                  flux_l_sa, flux_l_u, flux_l_v, flux_l_w, diss_s_e,           &
     251                  diss_s_nc,  diss_s_nr, diss_s_pt, diss_s_q, diss_s_qc,       &
     252                  diss_s_qr, diss_s_s, diss_s_sa, diss_s_u, diss_s_v,          &
     253                  diss_s_w, flux_s_e, flux_s_nc, flux_s_nr, flux_s_pt,         &
     254                  flux_s_q, flux_s_qc, flux_s_qr, flux_s_s, flux_s_sa,         &
     255                  flux_s_u, flux_s_v, flux_s_w
    249256
    250257       USE constants,                                                          &
     
    254261       USE control_parameters,                                                 &
    255262           ONLY:  cloud_physics, humidity, loop_optimization,                  &
    256                   passive_scalar, microphysics_seifert,                        &
     263                  passive_scalar, microphysics_morrison, microphysics_seifert, &
    257264                  ocean, ws_scheme_mom, ws_scheme_sca
    258265
     
    265272
    266273       USE statistics,                                                         &
    267            ONLY:  sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsnrs_ws_l,&
    268                   sums_wspts_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l,            &
    269                   sums_wsss_ws_l, sums_wssas_ws_l,  sums_wsss_ws_l,            &
    270                   sums_wsus_ws_l, sums_wsvs_ws_l 
     274           ONLY:  sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,&
     275                  sums_wsnrs_ws_l,sums_wspts_ws_l, sums_wsqcs_ws_l,            &
     276                  sums_wsqrs_ws_l, sums_wsqs_ws_l, sums_wsss_ws_l,             &
     277                  sums_wssas_ws_l,  sums_wsss_ws_l, sums_wsus_ws_l,            &
     278                  sums_wsvs_ws_l
     279 
    271280
    272281!
     
    309318             ALLOCATE( sums_wsss_ws_l(nzb:nzt+1,0:threads_per_task-1) )
    310319             sums_wsss_ws_l = 0.0_wp
     320          ENDIF
     321
     322          IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     323             ALLOCATE( sums_wsqcs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
     324             ALLOCATE( sums_wsncs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
     325             sums_wsqcs_ws_l = 0.0_wp
     326             sums_wsncs_ws_l = 0.0_wp
    311327          ENDIF
    312328
     
    372388                ALLOCATE( flux_l_s(nzb+1:nzt,nys:nyn,0:threads_per_task-1),    &
    373389                          diss_l_s(nzb+1:nzt,nys:nyn,0:threads_per_task-1) )
    374              ENDIF             
     390             ENDIF
     391
     392             IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     393                ALLOCATE( flux_s_qc(nzb+1:nzt,0:threads_per_task-1),           &
     394                          diss_s_qc(nzb+1:nzt,0:threads_per_task-1),           &
     395                          flux_s_nc(nzb+1:nzt,0:threads_per_task-1),           &
     396                          diss_s_nc(nzb+1:nzt,0:threads_per_task-1) )
     397                ALLOCATE( flux_l_qc(nzb+1:nzt,nys:nyn,0:threads_per_task-1),   &
     398                          diss_l_qc(nzb+1:nzt,nys:nyn,0:threads_per_task-1),   &
     399                          flux_l_nc(nzb+1:nzt,nys:nyn,0:threads_per_task-1),   &
     400                          diss_l_nc(nzb+1:nzt,nys:nyn,0:threads_per_task-1) )
     401             ENDIF                 
    375402
    376403             IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     
    10131040       USE control_parameters,                                                 &
    10141041           ONLY:  cloud_physics, humidity, passive_scalar, ocean,              &
    1015                   microphysics_seifert, ws_scheme_mom, ws_scheme_sca
     1042                  microphysics_morrison, microphysics_seifert, ws_scheme_mom,  &
     1043                  ws_scheme_sca
    10161044
    10171045       USE kinds
    10181046
    10191047       USE statistics,                                                         &
    1020            ONLY:  sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsnrs_ws_l,&
    1021                   sums_wspts_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l,            &
    1022                   sums_wsss_ws_l, sums_wssas_ws_l,  sums_wsus_ws_l,            &
    1023                   sums_wsvs_ws_l 
     1048           ONLY:  sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,&
     1049                  sums_wsnrs_ws_l, sums_wspts_ws_l, sums_wsqcs_ws_l,           &
     1050                  sums_wsqrs_ws_l, sums_wsqs_ws_l, sums_wsss_ws_l,             &
     1051                  sums_wssas_ws_l, sums_wsus_ws_l, sums_wsvs_ws_l     
     1052                   
    10241053
    10251054       IMPLICIT NONE
     
    10401069          IF ( humidity       )  sums_wsqs_ws_l = 0.0_wp
    10411070          IF ( passive_scalar )  sums_wsss_ws_l = 0.0_wp
     1071          IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     1072             sums_wsqcs_ws_l = 0.0_wp
     1073             sums_wsncs_ws_l = 0.0_wp
     1074          ENDIF
    10421075          IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    10431076             sums_wsqrs_ws_l = 0.0_wp
     
    10811114
    10821115       USE statistics,                                                         &
    1083            ONLY:  hom, sums_wsnrs_ws_l, sums_wspts_ws_l, sums_wsqrs_ws_l,      &
    1084                   sums_wsqs_ws_l, sums_wssas_ws_l, sums_wsss_ws_l,             &
    1085                   weight_substep
     1116           ONLY:  hom, sums_wsncs_ws_l, sums_wsnrs_ws_l, sums_wspts_ws_l,      &
     1117                  sums_wsqcs_ws_l,  sums_wsqrs_ws_l, sums_wsqs_ws_l,           &
     1118                  sums_wssas_ws_l, sums_wsss_ws_l, weight_substep   
     1119                 
    10861120
    10871121       IMPLICIT NONE
     
    15531587             ENDDO
    15541588
     1589          CASE ( 'qc' )
     1590
     1591             DO  k = nzb, nzt
     1592                sums_wsqcs_ws_l(k,tn)  = sums_wsqcs_ws_l(k,tn) +               &
     1593                    ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
     1594                                * ( w(k,j,i) - hom(k,1,3,0)                 )  &
     1595                    + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )  &
     1596                                *   ABS( w(k,j,i) - hom(k,1,3,0)            )  &
     1597                    ) * weight_substep(intermediate_timestep_count)
     1598             ENDDO
     1599
     1600
    15551601          CASE ( 'qr' )
    15561602
    15571603             DO  k = nzb, nzt
    15581604                sums_wsqrs_ws_l(k,tn)  = sums_wsqrs_ws_l(k,tn) +               &
     1605                    ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
     1606                                * ( w(k,j,i) - hom(k,1,3,0)                 )  &
     1607                    + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )  &
     1608                                *   ABS( w(k,j,i) - hom(k,1,3,0)            )  &
     1609                    ) * weight_substep(intermediate_timestep_count)
     1610             ENDDO
     1611
     1612          CASE ( 'nc' )
     1613
     1614             DO  k = nzb, nzt
     1615                sums_wsncs_ws_l(k,tn)  = sums_wsncs_ws_l(k,tn) +               &
    15591616                    ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
    15601617                                * ( w(k,j,i) - hom(k,1,3,0)                 )  &
     
    30893146       USE statistics,                                                        &
    30903147           ONLY:  hom, sums_wspts_ws_l, sums_wsqs_ws_l, sums_wssas_ws_l,      &
    3091                   sums_wsqrs_ws_l, sums_wsnrs_ws_l, sums_wsss_ws_l,           &
    3092                   weight_substep
     3148                  sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsncs_ws_l,          &
     3149                  sums_wsnrs_ws_l, sums_wsss_ws_l, weight_substep 
     3150                 
     3151
    30933152
    30943153       IMPLICIT NONE
     
    35503609                            ) * weight_substep(intermediate_timestep_count)
    35513610                    ENDDO
     3611                 CASE ( 'qc' )
     3612                    DO  k = nzb, nzt
     3613                       sums_wsqcs_ws_l(k,tn)  = sums_wsqcs_ws_l(k,tn)          &
     3614                          + ( flux_t(k)                                        &
     3615                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
     3616                                * ( w(k,j,i) - hom(k,1,3,0)                 )  &
     3617                            + diss_t(k)                                        &
     3618                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )  &
     3619                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )  &
     3620                            ) * weight_substep(intermediate_timestep_count)
     3621                    ENDDO
    35523622                 CASE ( 'qr' )
    35533623                    DO  k = nzb, nzt
    35543624                       sums_wsqrs_ws_l(k,tn)  = sums_wsqrs_ws_l(k,tn)          &
     3625                          + ( flux_t(k)                                        &
     3626                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
     3627                                * ( w(k,j,i) - hom(k,1,3,0)                 )  &
     3628                            + diss_t(k)                                        &
     3629                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )  &
     3630                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )  &
     3631                            ) * weight_substep(intermediate_timestep_count)
     3632                    ENDDO
     3633                 CASE ( 'nc' )
     3634                    DO  k = nzb, nzt
     3635                       sums_wsncs_ws_l(k,tn)  = sums_wsncs_ws_l(k,tn)          &
    35553636                          + ( flux_t(k)                                        &
    35563637                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )  &
Note: See TracChangeset for help on using the changeset viewer.