Ignore:
Timestamp:
Dec 14, 2017 5:12:51 PM (4 years ago)
Author:
kanani
Message:

Merge of branch palm4u into trunk

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/poismg_mod.f90

    r2298 r2696  
    11!> @file poismg.f90
    22!------------------------------------------------------------------------------!
    3 ! This file is part of PALM.
     3! This file is part of the PALM model system.
    44!
    55! PALM is free software: you can redistribute it and/or modify it under the
     
    2525! -----------------
    2626! $Id$
     27! - Large-scale forcing implemented (MS)
     28!
     29! 2298 2017-06-29 09:28:18Z raasch
    2730! sendrecv_in_background related parts removed
    2831!
     
    9699 MODULE poismg_mod
    97100 
     101    USE control_parameters,                                                    &
     102        ONLY:  grid_level, force_bound_l, force_bound_n, force_bound_r,        &
     103               force_bound_s, forcing, inflow_l, inflow_n, inflow_r, inflow_s, &
     104               nest_bound_l, nest_bound_n, nest_bound_r, nest_bound_s,         &
     105               outflow_l, outflow_n, outflow_r, outflow_s
    98106
    99107    USE cpulog,                                                                &
     
    274282
    275283       USE control_parameters,                                                 &
    276            ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    277                   inflow_n, inflow_r, inflow_s, nest_bound_l, nest_bound_n,    &
    278                   nest_bound_r, nest_bound_s, outflow_l, outflow_n, outflow_r, &
    279                   outflow_s
    280 
     284           ONLY:  bc_lr_cyc, bc_ns_cyc, ibc_p_b, ibc_p_t
    281285       USE grid_variables,                                                     &
    282286           ONLY:  ddx2_mg, ddy2_mg
     
    347351
    348352       IF ( .NOT. bc_lr_cyc )  THEN
    349           IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     353          IF ( inflow_l  .OR.  outflow_l  .OR.  nest_bound_l  .OR.             &
     354               force_bound_l )  THEN
    350355             r(:,:,nxl_mg(l)-1) = r(:,:,nxl_mg(l))
    351356          ENDIF
    352           IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     357          IF ( inflow_r  .OR.  outflow_r  .OR.  nest_bound_r  .OR.             &
     358               force_bound_r )  THEN
    353359             r(:,:,nxr_mg(l)+1) = r(:,:,nxr_mg(l))
    354360          ENDIF
     
    356362
    357363       IF ( .NOT. bc_ns_cyc )  THEN
    358           IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     364          IF ( inflow_n  .OR.  outflow_n  .OR.  nest_bound_n  .OR.             &
     365               force_bound_n )  THEN
    359366             r(:,nyn_mg(l)+1,:) = r(:,nyn_mg(l),:)
    360367          ENDIF
    361           IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     368          IF ( inflow_s  .OR.  outflow_s  .OR.  nest_bound_s  .OR.             &
     369               force_bound_s )  THEN
    362370             r(:,nys_mg(l)-1,:) = r(:,nys_mg(l),:)
    363371          ENDIF
     
    398406
    399407       USE control_parameters,                                                 &
    400            ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    401                   inflow_n, inflow_r, inflow_s, nest_bound_l, nest_bound_n,    &
    402                   nest_bound_r, nest_bound_s, outflow_l, outflow_n, outflow_r, &
    403                   outflow_s
     408           ONLY:  bc_lr_cyc, bc_ns_cyc, ibc_p_b, ibc_p_t
    404409
    405410       USE indices,                                                            &
     
    481486!--    Horizontal boundary conditions
    482487       IF ( .NOT. bc_lr_cyc )  THEN
    483           IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     488          IF ( inflow_l  .OR.  outflow_l  .OR.  nest_bound_l  .OR.             &
     489               force_bound_l )  THEN
    484490             f_mg(:,:,nxl_mg(l)-1) = f_mg(:,:,nxl_mg(l))
    485491          ENDIF
    486           IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     492          IF ( inflow_r  .OR.  outflow_r  .OR.  nest_bound_r  .OR.             &
     493               force_bound_r )  THEN
    487494             f_mg(:,:,nxr_mg(l)+1) = f_mg(:,:,nxr_mg(l))
    488495          ENDIF
     
    490497
    491498       IF ( .NOT. bc_ns_cyc )  THEN
    492           IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     499          IF ( inflow_n  .OR.  outflow_n  .OR.  nest_bound_n  .OR.             &
     500               force_bound_n )  THEN
    493501             f_mg(:,nyn_mg(l)+1,:) = f_mg(:,nyn_mg(l),:)
    494502          ENDIF
    495           IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     503          IF ( inflow_s  .OR.  outflow_s  .OR.  nest_bound_s  .OR.             &
     504               force_bound_s )  THEN
    496505             f_mg(:,nys_mg(l)-1,:) = f_mg(:,nys_mg(l),:)
    497506          ENDIF
     
    535544
    536545       USE control_parameters,                                                 &
    537            ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    538                   inflow_n, inflow_r, inflow_s, nest_bound_l, nest_bound_n,    &
    539                   nest_bound_r, nest_bound_s, outflow_l, outflow_n,            &
    540                   outflow_r, outflow_s
    541 
     546           ONLY:  bc_lr_cyc, bc_ns_cyc, ibc_p_b, ibc_p_t
    542547       USE indices,                                                            &
    543548           ONLY:  nxl_mg, nxr_mg, nys_mg, nyn_mg, nzb, nzt_mg
     
    652657
    653658       IF ( .NOT. bc_lr_cyc )  THEN
    654           IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     659          IF ( inflow_l  .OR.  outflow_l  .OR.  nest_bound_l  .OR.             &
     660               force_bound_l )  THEN
    655661             temp(:,:,nxl_mg(l)-1) = temp(:,:,nxl_mg(l))
    656662          ENDIF
    657           IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     663          IF ( inflow_r  .OR.  outflow_r  .OR.  nest_bound_r  .OR.             &
     664               force_bound_r )  THEN
    658665             temp(:,:,nxr_mg(l)+1) = temp(:,:,nxr_mg(l))
    659666          ENDIF
     
    661668
    662669       IF ( .NOT. bc_ns_cyc )  THEN
    663           IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     670          IF ( inflow_n  .OR.  outflow_n  .OR.  nest_bound_n  .OR.             &
     671               force_bound_n )  THEN
    664672             temp(:,nyn_mg(l)+1,:) = temp(:,nyn_mg(l),:)
    665673          ENDIF
    666           IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     674          IF ( inflow_s  .OR.  outflow_s  .OR.  nest_bound_s  .OR.             &
     675               force_bound_s )  THEN
    667676             temp(:,nys_mg(l)-1,:) = temp(:,nys_mg(l),:)
    668677          ENDIF
     
    705714
    706715       USE control_parameters,                                                 &
    707            ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    708                   inflow_n, inflow_r, inflow_s, nest_bound_l, nest_bound_n,    &
    709                   nest_bound_r, nest_bound_s, ngsrb, outflow_l, outflow_n,     &
    710                   outflow_r, outflow_s
     716           ONLY:  bc_lr_cyc, bc_ns_cyc, ibc_p_b, ibc_p_t, ngsrb
    711717
    712718       USE grid_variables,                                                     &
     
    961967
    962968             IF ( .NOT. bc_lr_cyc )  THEN
    963                 IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     969                IF ( inflow_l  .OR.  outflow_l  .OR.  nest_bound_l  .OR.       &
     970                     force_bound_l )  THEN
    964971                   p_mg(:,:,nxl_mg(l)-1) = p_mg(:,:,nxl_mg(l))
    965972                ENDIF
    966                 IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     973                IF ( inflow_r  .OR.  outflow_r  .OR.  nest_bound_r  .OR.       &
     974                     force_bound_r )  THEN
    967975                   p_mg(:,:,nxr_mg(l)+1) = p_mg(:,:,nxr_mg(l))
    968976                ENDIF
     
    970978
    971979             IF ( .NOT. bc_ns_cyc )  THEN
    972                 IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     980                IF ( inflow_n  .OR.  outflow_n  .OR.  nest_bound_n  .OR.       &
     981                     force_bound_n )  THEN
    973982                   p_mg(:,nyn_mg(l)+1,:) = p_mg(:,nyn_mg(l),:)
    974983                ENDIF
    975                 IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     984                IF ( inflow_s  .OR.  outflow_s  .OR.  nest_bound_s  .OR.       &
     985                     force_bound_s )  THEN
    976986                   p_mg(:,nys_mg(l)-1,:) = p_mg(:,nys_mg(l),:)
    977987                ENDIF
     
    13891399       USE control_parameters,                                                 &
    13901400           ONLY:  bc_lr_dirrad, bc_lr_raddir, bc_ns_dirrad, bc_ns_raddir,      &
    1391                   gamma_mg, grid_level, grid_level_count, ibc_p_b, ibc_p_t,    &
    1392                   inflow_l, inflow_n, inflow_r, inflow_s, maximum_grid_level,  &
    1393                   mg_switch_to_pe0_level, mg_switch_to_pe0, nest_domain,       &
    1394                   nest_bound_l, nest_bound_n, nest_bound_r, nest_bound_s,      &
    1395                   ngsrb, outflow_l, outflow_n, outflow_r, outflow_s
     1401                  gamma_mg, grid_level_count, ibc_p_b, ibc_p_t,                &
     1402                  maximum_grid_level,  mg_switch_to_pe0_level,                 &
     1403                  mg_switch_to_pe0, nest_domain, ngsrb
    13961404
    13971405       USE indices,                                                            &
     
    15441552                nest_bound_l = .TRUE.
    15451553                nest_bound_r = .TRUE.
     1554             ELSEIF ( forcing )  THEN
     1555                force_bound_l = .TRUE.
     1556                force_bound_r = .TRUE.
    15461557             ENDIF
    15471558
     
    15591570                nest_bound_s = .TRUE.
    15601571                nest_bound_n = .TRUE.
     1572             ELSEIF ( forcing )  THEN
     1573                force_bound_s = .TRUE.
     1574                force_bound_n = .TRUE.
    15611575             ENDIF
    15621576
     
    16261640             outflow_n = .FALSE.;  outflow_s = .FALSE.
    16271641!
    1628 !--          In case of nesting, restore lateral boundary conditions
     1642!--          In case of nesting or forcing, restore lateral boundary conditions
    16291643             IF ( nest_domain )  THEN
    16301644                nest_bound_l = .FALSE.
     
    16321646                nest_bound_s = .FALSE.
    16331647                nest_bound_n = .FALSE.     
     1648             ENDIF
     1649             IF ( forcing )  THEN
     1650                force_bound_l = .FALSE.
     1651                force_bound_r = .FALSE.
     1652                force_bound_s = .FALSE.
     1653                force_bound_n = .FALSE.     
    16341654             ENDIF
    16351655
     
    16411661                ELSEIF ( nest_domain )  THEN
    16421662                   nest_bound_l = .TRUE.
     1663                ELSEIF ( forcing )  THEN
     1664                   force_bound_l = .TRUE.
    16431665                ENDIF
    16441666             ENDIF
     
    16511673                ELSEIF ( nest_domain )  THEN
    16521674                   nest_bound_r = .TRUE.
     1675                ELSEIF ( forcing )  THEN
     1676                   force_bound_r = .TRUE.
    16531677                ENDIF
    16541678             ENDIF
     
    16611685                ELSEIF ( nest_domain )  THEN
    16621686                   nest_bound_s = .TRUE.
     1687                ELSEIF ( forcing )  THEN
     1688                   force_bound_s = .TRUE.
    16631689                ENDIF
    16641690             ENDIF
     
    16711697                ELSEIF ( nest_domain )  THEN
    16721698                   nest_bound_n = .TRUE.
     1699                ELSEIF ( forcing )  THEN
     1700                   force_bound_n = .TRUE.
    16731701                ENDIF
    16741702             ENDIF
     
    18211849       USE control_parameters,                                                 &
    18221850           ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t,          &
    1823                   inflow_l, inflow_n, inflow_r, inflow_s, maximum_grid_level,  &
    1824                   mg_switch_to_pe0_level, outflow_l, outflow_n, outflow_r,     &
    1825                   outflow_s, synchronous_exchange
     1851                  maximum_grid_level,                                          &
     1852                  mg_switch_to_pe0_level, synchronous_exchange
    18261853
    18271854       USE indices,                                                            &
Note: See TracChangeset for help on using the changeset viewer.