- Timestamp:
- 2017-10-04T09:19:23+02:00 (7 years ago)
- Location:
- branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY
- Files:
-
- 1 added
- 1 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
r7753 r8586 55 55 REAL(wp), POINTER, DIMENSION(:,:) :: tem 56 56 REAL(wp), POINTER, DIMENSION(:,:) :: sal 57 #if defined key_lim2 58 LOGICAL :: ll_frld 59 LOGICAL :: ll_hicif 60 LOGICAL :: ll_hsnif 61 REAL(wp), POINTER, DIMENSION(:) :: frld 62 REAL(wp), POINTER, DIMENSION(:) :: hicif 63 REAL(wp), POINTER, DIMENSION(:) :: hsnif 64 #elif defined key_lim3 57 #if defined key_lim3 65 58 LOGICAL :: ll_a_i 66 LOGICAL :: ll_h t_i67 LOGICAL :: ll_h t_s59 LOGICAL :: ll_h_i 60 LOGICAL :: ll_h_s 68 61 REAL(wp), POINTER, DIMENSION(:,:) :: a_i !: now ice leads fraction climatology 69 REAL(wp), POINTER, DIMENSION(:,:) :: h t_i!: Now ice thickness climatology70 REAL(wp), POINTER, DIMENSION(:,:) :: h t_s!: now snow thickness62 REAL(wp), POINTER, DIMENSION(:,:) :: h_i !: Now ice thickness climatology 63 REAL(wp), POINTER, DIMENSION(:,:) :: h_s !: now snow thickness 71 64 #endif 72 65 #if defined key_top -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r7861 r8586 13 13 !! 3.6 ! 2012-01 (C. Rousset) add ice boundary conditions for lim3 14 14 !!---------------------------------------------------------------------- 15 !! bdy_dta : read external data along open boundaries from file 16 !! bdy_dta_init : initialise arrays etc for reading of external data 15 17 16 !!---------------------------------------------------------------------- 18 USE timing ! Timing 19 USE oce ! ocean dynamics and tracers 20 USE dom_oce ! ocean space and time domain 21 USE phycst ! physical constants 22 USE bdy_oce ! ocean open boundary conditions 23 USE bdytides ! tidal forcing at boundaries 24 USE fldread ! read input fields 25 USE iom ! IOM library 26 USE in_out_manager ! I/O logical units 27 #if defined key_lim2 28 USE ice_2 29 #elif defined key_lim3 30 USE ice 31 USE limvar ! redistribute ice input into categories 32 #endif 33 USE sbcapr 34 USE sbctide ! Tidal forcing or not 17 !! bdy_dta : read external data along open boundaries from file 18 !! bdy_dta_init : initialise arrays etc for reading of external data 19 !!---------------------------------------------------------------------- 20 USE oce ! ocean dynamics and tracers 21 USE dom_oce ! ocean space and time domain 22 USE phycst ! physical constants 23 USE sbcapr ! atmospheric pressure forcing 24 USE sbctide ! Tidal forcing or not 25 USE bdy_oce ! ocean open boundary conditions 26 USE bdytides ! tidal forcing at boundaries 27 #if defined key_lim3 28 USE ice ! sea-ice variables 29 USE icevar ! redistribute ice input into categories 30 #endif 31 ! 32 USE fldread ! read input fields 33 USE iom ! IOM library 34 USE in_out_manager ! I/O logical units 35 USE timing ! Timing 35 36 36 37 IMPLICIT NONE … … 50 51 51 52 #if defined key_lim3 52 LOGICAL :: ll_bdylim3 ! determine whether ice input is lim2 (F) or lim3(T) type53 LOGICAL :: ll_bdylim3 ! determine whether ice input is 1cat (F) or Xcat (T) type 53 54 INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 54 55 #endif … … 176 177 ENDIF 177 178 178 #if defined key_lim2 179 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 180 ilen1(:) = nblen(:) 181 IF( dta%ll_frld ) THEN 182 igrd = 1 183 DO ib = 1, ilen1(igrd) 184 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 185 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 186 dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1) 187 END DO 188 END IF 189 IF( dta%ll_hicif ) THEN 190 igrd = 1 191 DO ib = 1, ilen1(igrd) 192 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 193 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 194 dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1) 195 END DO 196 END IF 197 IF( dta%ll_hsnif ) THEN 198 igrd = 1 199 DO ib = 1, ilen1(igrd) 200 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 201 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 202 dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1) 203 END DO 204 END IF 205 ENDIF 206 #elif defined key_lim3 179 #if defined key_lim3 207 180 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 208 181 ilen1(:) = nblen(:) … … 217 190 END DO 218 191 ENDIF 219 IF( dta%ll_h t_i ) THEN192 IF( dta%ll_h_i ) THEN 220 193 igrd = 1 221 194 DO jl = 1, jpl … … 223 196 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 224 197 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 225 dta_bdy(ib_bdy)%h t_i (ib,jl) = ht_i(ii,ij,jl) * tmask(ii,ij,1)198 dta_bdy(ib_bdy)%h_i (ib,jl) = h_i(ii,ij,jl) * tmask(ii,ij,1) 226 199 END DO 227 200 END DO 228 201 ENDIF 229 IF( dta%ll_h t_s ) THEN202 IF( dta%ll_h_s ) THEN 230 203 igrd = 1 231 204 DO jl = 1, jpl … … 233 206 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 234 207 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 235 dta_bdy(ib_bdy)%h t_s (ib,jl) = ht_s(ii,ij,jl) * tmask(ii,ij,1)208 dta_bdy(ib_bdy)%h_s (ib,jl) = h_s(ii,ij,jl) * tmask(ii,ij,1) 236 209 END DO 237 210 END DO … … 373 346 ENDIF 374 347 #if defined key_lim3 375 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is lim2 type)376 CALL lim_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), &377 & dta_bdy(ib_bdy)%h t_i, dta_bdy(ib_bdy)%ht_s, dta_bdy(ib_bdy)%a_i )348 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is 1cat) 349 CALL ice_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 350 & dta_bdy(ib_bdy)%h_i, dta_bdy(ib_bdy)%h_s, dta_bdy(ib_bdy)%a_i ) 378 351 ENDIF 379 352 #endif … … 449 422 TYPE(FLD_N) :: bn_tem, bn_sal, bn_u3d, bn_v3d ! 450 423 TYPE(FLD_N) :: bn_ssh, bn_u2d, bn_v2d ! informations about the fields to be read 451 #if defined key_lim2 452 TYPE(FLD_N) :: bn_frld, bn_hicif, bn_hsnif ! 453 #elif defined key_lim3 454 TYPE(FLD_N) :: bn_a_i, bn_ht_i, bn_ht_s 424 #if defined key_lim3 425 TYPE(FLD_N) :: bn_a_i, bn_h_i, bn_h_s 455 426 #endif 456 427 NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d 457 #if defined key_lim2 458 NAMELIST/nambdy_dta/ bn_frld, bn_hicif, bn_hsnif 459 #elif defined key_lim3 460 NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 428 #if defined key_lim3 429 NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s 461 430 #endif 462 431 NAMELIST/nambdy_dta/ ln_full_vel, nb_jpk_bdy … … 475 444 ,nn_dyn3d_dta(ib_bdy) & 476 445 ,nn_tra_dta(ib_bdy) & 477 #if ( defined key_lim2 || defined key_lim3 )446 #if defined key_lim3 478 447 ,nn_ice_lim_dta(ib_bdy) & 479 448 #endif … … 496 465 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 497 466 ENDIF 498 #if ( defined key_lim2 || defined key_lim3 )467 #if defined key_lim3 499 468 IF( cn_ice_lim(ib_bdy) /= 'none' .and. nn_ice_lim_dta(ib_bdy) == 1 ) THEN 500 469 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 … … 637 606 ENDIF 638 607 639 #if defined key_lim 2608 #if defined key_lim3 640 609 ! sea ice 641 610 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 642 643 IF( dta%ll_frld ) THEN 644 jfld = jfld + 1 645 blf_i(jfld) = bn_frld 646 ibdy(jfld) = ib_bdy 647 igrid(jfld) = 1 648 ilen1(jfld) = nblen(igrid(jfld)) 649 ilen3(jfld) = 1 650 ENDIF 651 652 IF( dta%ll_hicif ) THEN 653 jfld = jfld + 1 654 blf_i(jfld) = bn_hicif 655 ibdy(jfld) = ib_bdy 656 igrid(jfld) = 1 657 ilen1(jfld) = nblen(igrid(jfld)) 658 ilen3(jfld) = 1 659 ENDIF 660 661 IF( dta%ll_hsnif ) THEN 662 jfld = jfld + 1 663 blf_i(jfld) = bn_hsnif 664 ibdy(jfld) = ib_bdy 665 igrid(jfld) = 1 666 ilen1(jfld) = nblen(igrid(jfld)) 667 ilen3(jfld) = 1 668 ENDIF 669 670 ENDIF 671 #elif defined key_lim3 672 ! sea ice 673 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 674 ! Test for types of ice input (lim2 or lim3) 611 ! Test for types of ice input (1cat or Xcat) 675 612 ! Build file name to find dimensions 676 613 clname=TRIM( cn_dir )//TRIM(bn_a_i%clname) … … 689 626 690 627 IF ( zndims == 4 ) THEN 691 ll_bdylim3 = .TRUE. ! lim3input628 ll_bdylim3 = .TRUE. ! Xcat input 692 629 ELSE 693 ll_bdylim3 = .FALSE. ! lim2input630 ll_bdylim3 = .FALSE. ! 1cat input 694 631 ENDIF 695 632 ! End test … … 704 641 ENDIF 705 642 706 IF( dta%ll_h t_i ) THEN707 jfld = jfld + 1 708 blf_i(jfld) = bn_h t_i643 IF( dta%ll_h_i ) THEN 644 jfld = jfld + 1 645 blf_i(jfld) = bn_h_i 709 646 ibdy(jfld) = ib_bdy 710 647 igrid(jfld) = 1 … … 713 650 ENDIF 714 651 715 IF( dta%ll_h t_s ) THEN716 jfld = jfld + 1 717 blf_i(jfld) = bn_h t_s652 IF( dta%ll_h_s ) THEN 653 jfld = jfld + 1 654 blf_i(jfld) = bn_h_s 718 655 ibdy(jfld) = ib_bdy 719 656 igrid(jfld) = 1 … … 848 785 ENDIF 849 786 850 #if defined key_lim 2787 #if defined key_lim3 851 788 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 852 789 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 853 ALLOCATE( dta_bdy(ib_bdy)% frld(nblen(1)) )854 ALLOCATE( dta_bdy(ib_bdy)%h icif(nblen(1)) )855 ALLOCATE( dta_bdy(ib_bdy)%h snif(nblen(1)) )790 ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 791 ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 792 ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 856 793 ELSE 857 jfld = jfld + 1 858 dta_bdy(ib_bdy)%frld => bf(jfld)%fnow(:,1,1) 859 jfld = jfld + 1 860 dta_bdy(ib_bdy)%hicif => bf(jfld)%fnow(:,1,1) 861 jfld = jfld + 1 862 dta_bdy(ib_bdy)%hsnif => bf(jfld)%fnow(:,1,1) 863 ENDIF 864 ENDIF 865 #elif defined key_lim3 866 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 867 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 868 ALLOCATE( dta_bdy(ib_bdy)%a_i (nblen(1),jpl) ) 869 ALLOCATE( dta_bdy(ib_bdy)%ht_i(nblen(1),jpl) ) 870 ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 871 ELSE 872 IF ( ll_bdylim3 ) THEN ! case input is lim3 type 873 jfld = jfld + 1 874 dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) 875 jfld = jfld + 1 876 dta_bdy(ib_bdy)%ht_i => bf(jfld)%fnow(:,1,:) 877 jfld = jfld + 1 878 dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 879 ELSE ! case input is lim2 type 794 IF ( ll_bdylim3 ) THEN ! case input is Xcat 795 jfld = jfld + 1 796 dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) 797 jfld = jfld + 1 798 dta_bdy(ib_bdy)%h_i => bf(jfld)%fnow(:,1,:) 799 jfld = jfld + 1 800 dta_bdy(ib_bdy)%h_s => bf(jfld)%fnow(:,1,:) 801 ELSE ! case input is 1cat 880 802 jfld_ai = jfld + 1 881 803 jfld_hti = jfld + 2 882 804 jfld_hts = jfld + 3 883 805 jfld = jfld + 3 884 ALLOCATE( dta_bdy(ib_bdy)%a_i 885 ALLOCATE( dta_bdy(ib_bdy)%h t_i(nblen(1),jpl) )886 ALLOCATE( dta_bdy(ib_bdy)%h t_s(nblen(1),jpl) )887 dta_bdy(ib_bdy)%a_i 888 dta_bdy(ib_bdy)%h t_i(:,:) = 0._wp889 dta_bdy(ib_bdy)%h t_s(:,:) = 0._wp806 ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 807 ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 808 ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 809 dta_bdy(ib_bdy)%a_i(:,:) = 0._wp 810 dta_bdy(ib_bdy)%h_i(:,:) = 0._wp 811 dta_bdy(ib_bdy)%h_s(:,:) = 0._wp 890 812 ENDIF 891 813 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r7646 r8586 29 29 USE lib_mpp ! for mpp_sum 30 30 USE iom ! I/O 31 USE wrk_nemo ! Memory Allocation32 31 USE timing ! Timing 33 32 … … 117 116 ! 118 117 END SUBROUTINE bdy_init 119 118 119 120 120 SUBROUTINE bdy_segs 121 121 !!---------------------------------------------------------------------- … … 129 129 !! ** Input : bdy_init.nc, input file for unstructured open boundaries 130 130 !!---------------------------------------------------------------------- 131 132 ! local variables133 !-------------------134 131 INTEGER :: ib_bdy, ii, ij, ik, igrd, ib, ir, iseg ! dummy loop indices 135 132 INTEGER :: icount, icountr, ibr_max, ilen1, ibm1 ! local integers … … 151 148 INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b ! Flags for boundaries receiving 152 149 INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4) ! Arrays for neighbours coordinates 153 REAL(wp), POINTER, DIMENSION(:,:):: zfmask ! temporary fmask array excluding coastal boundary condition (shlat)150 REAL(wp), TARGET, DIMENSION(jpi,jpj) :: zfmask ! temporary fmask array excluding coastal boundary condition (shlat) 154 151 !! 155 152 CHARACTER(LEN=1) :: ctypebdy ! - - … … 351 348 IF(lwp) WRITE(numout,*) 352 349 353 #if defined key_lim 2354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: '355 SELECT CASE( cn_ice_lim(ib_bdy) )356 350 #if defined key_lim3 351 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 352 SELECT CASE( cn_ice_lim(ib_bdy) ) 353 CASE('none') 357 354 IF(lwp) WRITE(numout,*) ' no open boundary condition' 358 dta_bdy(ib_bdy)%ll_ frld= .false.359 dta_bdy(ib_bdy)%ll_h icif= .false.360 dta_bdy(ib_bdy)%ll_h snif= .false.361 355 dta_bdy(ib_bdy)%ll_a_i = .false. 356 dta_bdy(ib_bdy)%ll_h_i = .false. 357 dta_bdy(ib_bdy)%ll_h_s = .false. 358 CASE('frs') 362 359 IF(lwp) WRITE(numout,*) ' Flow Relaxation Scheme' 363 dta_bdy(ib_bdy)%ll_frld = .true. 364 dta_bdy(ib_bdy)%ll_hicif = .true. 365 dta_bdy(ib_bdy)%ll_hsnif = .true. 366 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 367 END SELECT 368 IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN 369 SELECT CASE( nn_ice_lim_dta(ib_bdy) ) ! 370 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' initial state used for bdy data' 371 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' boundary data taken from file' 372 CASE DEFAULT ; CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 373 END SELECT 374 ENDIF 375 IF(lwp) WRITE(numout,*) 376 #elif defined key_lim3 377 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 378 SELECT CASE( cn_ice_lim(ib_bdy) ) 379 CASE('none') 380 IF(lwp) WRITE(numout,*) ' no open boundary condition' 381 dta_bdy(ib_bdy)%ll_a_i = .false. 382 dta_bdy(ib_bdy)%ll_ht_i = .false. 383 dta_bdy(ib_bdy)%ll_ht_s = .false. 384 CASE('frs') 385 IF(lwp) WRITE(numout,*) ' Flow Relaxation Scheme' 386 dta_bdy(ib_bdy)%ll_a_i = .true. 387 dta_bdy(ib_bdy)%ll_ht_i = .true. 388 dta_bdy(ib_bdy)%ll_ht_s = .true. 389 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 390 END SELECT 360 dta_bdy(ib_bdy)%ll_a_i = .true. 361 dta_bdy(ib_bdy)%ll_h_i = .true. 362 dta_bdy(ib_bdy)%ll_h_s = .true. 363 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 364 END SELECT 391 365 IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN 392 366 SELECT CASE( nn_ice_lim_dta(ib_bdy) ) ! … … 404 378 IF(lwp) WRITE(numout,*) ' Width of relaxation zone = ', nn_rimwidth(ib_bdy) 405 379 IF(lwp) WRITE(numout,*) 406 407 END DO408 409 IF (nb_bdy .gt. 0) THEN380 ! 381 END DO 382 383 IF( nb_bdy > 0 ) THEN 410 384 IF( ln_vol ) THEN ! check volume conservation (nn_volctl value) 411 385 IF(lwp) WRITE(numout,*) 'Volume correction applied at open boundaries' … … 919 893 IF( nbrdta(ib,igrd,ib_bdy) == 1 ) icountr = icountr+1 920 894 ENDIF 921 END DO895 END DO 922 896 idx_bdy(ib_bdy)%nblenrim(igrd) = icountr !: length of rim boundary data on each proc 923 897 idx_bdy(ib_bdy)%nblen (igrd) = icount !: length of boundary data on each proc 924 END DO ! igrd898 END DO ! igrd 925 899 926 900 ! Allocate index arrays for this boundary set 927 901 !-------------------------------------------- 928 902 ilen1 = MAXVAL( idx_bdy(ib_bdy)%nblen(:) ) 929 ALLOCATE( idx_bdy(ib_bdy)%nbi (ilen1,jpbgrd) )930 ALLOCATE( idx_bdy(ib_bdy)%nbj (ilen1,jpbgrd) )931 ALLOCATE( idx_bdy(ib_bdy)%nbr (ilen1,jpbgrd) )932 ALLOCATE( idx_bdy(ib_bdy)%nbd (ilen1,jpbgrd) )933 ALLOCATE( idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) )934 ALLOCATE( idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) )935 ALLOCATE( idx_bdy(ib_bdy)%nbw (ilen1,jpbgrd) )936 ALLOCATE( idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) )937 ALLOCATE(idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) )903 ALLOCATE( idx_bdy(ib_bdy)%nbi (ilen1,jpbgrd) , & 904 & idx_bdy(ib_bdy)%nbj (ilen1,jpbgrd) , & 905 & idx_bdy(ib_bdy)%nbr (ilen1,jpbgrd) , & 906 & idx_bdy(ib_bdy)%nbd (ilen1,jpbgrd) , & 907 & idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) , & 908 & idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) , & 909 & idx_bdy(ib_bdy)%nbw (ilen1,jpbgrd) , & 910 & idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) , & 911 & idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) ) 938 912 939 913 ! Dispatch mapping indices and discrete distances on each processor … … 1148 1122 END DO 1149 1123 1150 END DO1124 END DO 1151 1125 1152 1126 ! ------------------------------------------------------ … … 1212 1186 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 1213 1187 bdyvmask(idx_bdy(ib_bdy)%nbi(ib,igrd), idx_bdy(ib_bdy)%nbj(ib,igrd)) = 0._wp 1214 END DO1215 END DO1188 END DO 1189 END DO 1216 1190 1217 1191 ! For the flagu/flagv calculation below we require a version of fmask without 1218 1192 ! the land boundary condition (shlat) included: 1219 CALL wrk_alloc(jpi,jpj, zfmask )1220 1193 DO ij = 2, jpjm1 1221 1194 DO ii = 2, jpim1 … … 1241 1214 ! flagu = 1 : u is normal to the boundary and is direction is inward 1242 1215 1243 DO igrd = 1, jpbgrd1216 DO igrd = 1, jpbgrd 1244 1217 SELECT CASE( igrd ) 1245 1218 CASE( 1 ) ; pmask => umask (:,:,1) ; i_offset = 0 … … 1346 1319 IF( nb_bdy>0 ) DEALLOCATE( nbidta, nbjdta, nbrdta ) 1347 1320 ! 1348 CALL wrk_dealloc(jpi,jpj, zfmask )1349 !1350 1321 IF( nn_timing == 1 ) CALL timing_stop('bdy_segs') 1351 1322 ! 1352 1323 END SUBROUTINE bdy_segs 1324 1353 1325 1354 1326 SUBROUTINE bdy_ctl_seg … … 1727 1699 END SUBROUTINE bdy_ctl_seg 1728 1700 1701 1729 1702 SUBROUTINE bdy_ctl_corn( ib1, ib2 ) 1730 1703 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.