Changeset 1762 for palm/trunk/SOURCE/poismg_fast.f90
- Timestamp:
- Feb 25, 2016 12:31:13 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/poismg_fast.f90
r1683 r1762 19 19 ! Current revisions: 20 20 ! ----------------- 21 ! 21 ! Introduction of nested domain feature 22 22 ! 23 23 ! Former revisions: … … 240 240 USE control_parameters, & 241 241 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, & 243 244 outflow_n, outflow_r, outflow_s, topography 244 245 … … 393 394 394 395 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 397 402 ENDIF 398 403 399 404 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 402 411 ENDIF 403 412 … … 434 443 USE control_parameters, & 435 444 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, & 437 447 outflow_n, outflow_r, outflow_s, topography 438 448 … … 635 645 636 646 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 639 653 ENDIF 640 654 641 655 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 644 662 ENDIF 645 663 … … 679 697 USE control_parameters, & 680 698 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, & 682 701 outflow_r, outflow_s 683 702 … … 790 809 791 810 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 794 817 ENDIF 795 818 796 819 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 799 826 ENDIF 800 827 … … 832 859 USE control_parameters, & 833 860 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, & 835 863 outflow_l, outflow_n, outflow_r, outflow_s, topography 836 864 … … 1411 1439 CALL special_exchange_horiz( p_mg, color ) 1412 1440 1413 1414 IF ( inflow_l .OR. outflow_l ) THEN1441 IF ( .NOT. bc_lr_cyc ) THEN 1442 IF ( inflow_l .OR. outflow_l .OR. nest_bound_l ) THEN 1415 1443 p_mg(:,:,nxl_mg(l)-1) = p_mg(:,:,nxl_mg(l)) 1416 1444 ENDIF 1417 IF ( inflow_r .OR. outflow_r ) THEN1445 IF ( inflow_r .OR. outflow_r .OR. nest_bound_r ) THEN 1418 1446 p_mg(:,:,nxr_mg(l)+1) = p_mg(:,:,nxr_mg(l)) 1419 1447 ENDIF … … 1421 1449 1422 1450 IF ( .NOT. bc_ns_cyc ) THEN 1423 IF ( inflow_n .OR. outflow_n ) THEN1451 IF ( inflow_n .OR. outflow_n .OR. nest_bound_n ) THEN 1424 1452 p_mg(:,nyn_mg(l)+1,:) = p_mg(:,nyn_mg(l),:) 1425 1453 ENDIF 1426 IF ( inflow_s .OR. outflow_s ) THEN1454 IF ( inflow_s .OR. outflow_s .OR. nest_bound_s ) THEN 1427 1455 p_mg(:,nys_mg(l)-1,:) = p_mg(:,nys_mg(l),:) 1428 1456 ENDIF … … 1913 1941 gamma_mg, grid_level, grid_level_count, ibc_p_b, ibc_p_t, & 1914 1942 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 1917 1946 1918 1947 USE indices, & … … 2062 2091 outflow_l = .TRUE. 2063 2092 outflow_r = .FALSE. 2093 ELSEIF ( nest_domain ) THEN 2094 nest_bound_l = .TRUE. 2095 nest_bound_r = .TRUE. 2064 2096 ENDIF 2065 2097 … … 2074 2106 outflow_n = .TRUE. 2075 2107 outflow_s = .FALSE. 2108 ELSEIF ( nest_domain ) THEN 2109 nest_bound_s = .TRUE. 2110 nest_bound_n = .TRUE. 2076 2111 ENDIF 2077 2112 … … 2146 2181 ELSEIF ( bc_lr_raddir ) THEN 2147 2182 outflow_l = .TRUE. 2183 ELSEIF ( nest_domain ) THEN 2184 nest_bound_l = .TRUE. 2148 2185 ENDIF 2149 2186 ENDIF … … 2154 2191 ELSEIF ( bc_lr_raddir ) THEN 2155 2192 inflow_r = .TRUE. 2193 ELSEIF ( nest_domain ) THEN 2194 nest_bound_r = .TRUE. 2156 2195 ENDIF 2157 2196 ENDIF … … 2162 2201 ELSEIF ( bc_ns_raddir ) THEN 2163 2202 inflow_s = .TRUE. 2203 ELSEIF ( nest_domain ) THEN 2204 nest_bound_s = .TRUE. 2164 2205 ENDIF 2165 2206 ENDIF … … 2170 2211 ELSEIF ( bc_ns_raddir ) THEN 2171 2212 outflow_n = .TRUE. 2213 ELSEIF ( nest_domain ) THEN 2214 nest_bound_n = .TRUE. 2172 2215 ENDIF 2173 2216 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.