Ignore:
Timestamp:
Feb 25, 2016 12:31:13 PM (8 years ago)
Author:
hellstea
Message:

Introduction of nested domain system

File:
1 edited

Legend:

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

    r1683 r1762  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Introduction of nested domain feature
    2222!
    2323! Former revisions:
     
    240240       USE control_parameters,                                                 &
    241241           ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    242                   inflow_n, inflow_r, inflow_s, masking_method, outflow_l,     &
     242                  inflow_n, inflow_r, inflow_s, masking_method, nest_bound_l,  &
     243                  nest_bound_n, nest_bound_r, nest_bound_s, outflow_l,         &
    243244                  outflow_n, outflow_r, outflow_s, topography
    244245
     
    393394
    394395       IF ( .NOT. bc_lr_cyc )  THEN
    395           IF ( inflow_l .OR. outflow_l )  r(:,:,nxl_mg(l)-1) = r(:,:,nxl_mg(l))
    396           IF ( inflow_r .OR. outflow_r )  r(:,:,nxr_mg(l)+1) = r(:,:,nxr_mg(l))
     396          IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     397             r(:,:,nxl_mg(l)-1) = r(:,:,nxl_mg(l))
     398          ENDIF
     399          IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     400             r(:,:,nxr_mg(l)+1) = r(:,:,nxr_mg(l))
     401          ENDIF
    397402       ENDIF
    398403
    399404       IF ( .NOT. bc_ns_cyc )  THEN
    400           IF ( inflow_n .OR. outflow_n )  r(:,nyn_mg(l)+1,:) = r(:,nyn_mg(l),:)
    401           IF ( inflow_s .OR. outflow_s )  r(:,nys_mg(l)-1,:) = r(:,nys_mg(l),:)
     405          IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     406             r(:,nyn_mg(l)+1,:) = r(:,nyn_mg(l),:)
     407          ENDIF
     408          IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     409             r(:,nys_mg(l)-1,:) = r(:,nys_mg(l),:)
     410          ENDIF
    402411       ENDIF
    403412
     
    434443       USE control_parameters,                                                 &
    435444           ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    436                   inflow_n, inflow_r, inflow_s, masking_method, outflow_l,     &
     445                  inflow_n, inflow_r, inflow_s, masking_method, nest_bound_l,  &
     446                  nest_bound_n, nest_bound_r, nest_bound_s, outflow_l,         &
    437447                  outflow_n, outflow_r, outflow_s, topography
    438448
     
    635645
    636646       IF ( .NOT. bc_lr_cyc )  THEN
    637           IF (inflow_l .OR. outflow_l)  f_mg(:,:,nxl_mg(l)-1) = f_mg(:,:,nxl_mg(l))
    638           IF (inflow_r .OR. outflow_r)  f_mg(:,:,nxr_mg(l)+1) = f_mg(:,:,nxr_mg(l))
     647          IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     648             f_mg(:,:,nxl_mg(l)-1) = f_mg(:,:,nxl_mg(l))
     649          ENDIF
     650          IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     651             f_mg(:,:,nxr_mg(l)+1) = f_mg(:,:,nxr_mg(l))
     652          ENDIF
    639653       ENDIF
    640654
    641655       IF ( .NOT. bc_ns_cyc )  THEN
    642           IF (inflow_n .OR. outflow_n)  f_mg(:,nyn_mg(l)+1,:) = f_mg(:,nyn_mg(l),:)
    643           IF (inflow_s .OR. outflow_s)  f_mg(:,nys_mg(l)-1,:) = f_mg(:,nys_mg(l),:)
     656          IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     657             f_mg(:,nyn_mg(l)+1,:) = f_mg(:,nyn_mg(l),:)
     658          ENDIF
     659          IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     660             f_mg(:,nys_mg(l)-1,:) = f_mg(:,nys_mg(l),:)
     661          ENDIF
    644662       ENDIF
    645663
     
    679697       USE control_parameters,                                                 &
    680698           ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    681                   inflow_n, inflow_r, inflow_s, outflow_l, outflow_n,          &
     699                  inflow_n, inflow_r, inflow_s, nest_bound_l, nest_bound_n,    &
     700                  nest_bound_r, nest_bound_s, outflow_l, outflow_n,            &
    682701                  outflow_r, outflow_s
    683702
     
    790809
    791810       IF ( .NOT. bc_lr_cyc )  THEN
    792           IF (inflow_l .OR. outflow_l)  temp(:,:,nxl_mg(l)-1) = temp(:,:,nxl_mg(l))
    793           IF (inflow_r .OR. outflow_r)  temp(:,:,nxr_mg(l)+1) = temp(:,:,nxr_mg(l))
     811          IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
     812             temp(:,:,nxl_mg(l)-1) = temp(:,:,nxl_mg(l))
     813          ENDIF
     814          IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
     815             temp(:,:,nxr_mg(l)+1) = temp(:,:,nxr_mg(l))
     816          ENDIF
    794817       ENDIF
    795818
    796819       IF ( .NOT. bc_ns_cyc )  THEN
    797           IF (inflow_n .OR. outflow_n)  temp(:,nyn_mg(l)+1,:) = temp(:,nyn_mg(l),:)
    798           IF (inflow_s .OR. outflow_s)  temp(:,nys_mg(l)-1,:) = temp(:,nys_mg(l),:)
     820          IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
     821             temp(:,nyn_mg(l)+1,:) = temp(:,nyn_mg(l),:)
     822          ENDIF
     823          IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
     824             temp(:,nys_mg(l)-1,:) = temp(:,nys_mg(l),:)
     825          ENDIF
    799826       ENDIF
    800827
     
    832859       USE control_parameters,                                                 &
    833860           ONLY:  bc_lr_cyc, bc_ns_cyc, grid_level, ibc_p_b, ibc_p_t, inflow_l,&
    834                   inflow_n, inflow_r, inflow_s, masking_method, ngsrb,         &
     861                  inflow_n, inflow_r, inflow_s, masking_method, nest_bound_l,  &
     862                  nest_bound_n, nest_bound_r, nest_bound_s, ngsrb,             &
    835863                  outflow_l, outflow_n, outflow_r, outflow_s, topography
    836864
     
    14111439             CALL special_exchange_horiz( p_mg, color )
    14121440
    1413               IF ( .NOT. bc_lr_cyc )  THEN
    1414                 IF ( inflow_l .OR. outflow_l )  THEN
     1441             IF ( .NOT. bc_lr_cyc )  THEN
     1442                IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
    14151443                   p_mg(:,:,nxl_mg(l)-1) = p_mg(:,:,nxl_mg(l))
    14161444                ENDIF
    1417                 IF ( inflow_r .OR. outflow_r )  THEN
     1445                IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
    14181446                   p_mg(:,:,nxr_mg(l)+1) = p_mg(:,:,nxr_mg(l))
    14191447                ENDIF
     
    14211449
    14221450             IF ( .NOT. bc_ns_cyc )  THEN
    1423                 IF ( inflow_n .OR. outflow_n )  THEN
     1451                IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
    14241452                   p_mg(:,nyn_mg(l)+1,:) = p_mg(:,nyn_mg(l),:)
    14251453                ENDIF
    1426                 IF ( inflow_s .OR. outflow_s )  THEN
     1454                IF ( inflow_s .OR. outflow_s .OR. nest_bound_s )  THEN
    14271455                   p_mg(:,nys_mg(l)-1,:) = p_mg(:,nys_mg(l),:)
    14281456                ENDIF
     
    19131941                  gamma_mg, grid_level, grid_level_count, ibc_p_b, ibc_p_t,    &
    19141942                  inflow_l, inflow_n, inflow_r, inflow_s, maximum_grid_level,  &
    1915                   mg_switch_to_pe0_level, mg_switch_to_pe0, ngsrb, outflow_l,  &
    1916                   outflow_n, outflow_r, outflow_s
     1943                  mg_switch_to_pe0_level, mg_switch_to_pe0, nest_domain,       &
     1944                  nest_bound_l, nest_bound_n, nest_bound_r, nest_bound_s,      &
     1945                  ngsrb, outflow_l, outflow_n, outflow_r, outflow_s
    19171946
    19181947       USE indices,                                                            &
     
    20622091                outflow_l = .TRUE.
    20632092                outflow_r = .FALSE.
     2093             ELSEIF ( nest_domain )  THEN
     2094                nest_bound_l = .TRUE.
     2095                nest_bound_r = .TRUE.
    20642096             ENDIF
    20652097
     
    20742106                outflow_n = .TRUE.
    20752107                outflow_s = .FALSE.
     2108             ELSEIF ( nest_domain )  THEN
     2109                nest_bound_s = .TRUE.
     2110                nest_bound_n = .TRUE.
    20762111             ENDIF
    20772112
     
    21462181                ELSEIF ( bc_lr_raddir )  THEN
    21472182                   outflow_l = .TRUE.
     2183                ELSEIF ( nest_domain )  THEN
     2184                   nest_bound_l = .TRUE.
    21482185                ENDIF
    21492186             ENDIF
     
    21542191                ELSEIF ( bc_lr_raddir )  THEN
    21552192                   inflow_r  = .TRUE.
     2193                ELSEIF ( nest_domain )  THEN
     2194                   nest_bound_r = .TRUE.
    21562195                ENDIF
    21572196             ENDIF
     
    21622201                ELSEIF ( bc_ns_raddir )  THEN
    21632202                   inflow_s  = .TRUE.
     2203                ELSEIF ( nest_domain )  THEN
     2204                   nest_bound_s = .TRUE.
    21642205                ENDIF
    21652206             ENDIF
     
    21702211                ELSEIF ( bc_ns_raddir )  THEN
    21712212                   outflow_n = .TRUE.
     2213                ELSEIF ( nest_domain )  THEN
     2214                   nest_bound_n = .TRUE.
    21722215                ENDIF
    21732216             ENDIF
Note: See TracChangeset for help on using the changeset viewer.