- Timestamp:
- 2017-11-22T15:38:33+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r8563 r8787 48 48 49 49 #if defined key_lim3 50 LOGICAL :: ll_bdylim3 ! determine whether ice input is 1cat (F) or Xcat (T) type50 INTEGER :: nice_cat ! number of categories in the input file 51 51 INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 52 52 #endif … … 175 175 176 176 #if defined key_lim3 177 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 177 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN ! set ice to initial values 178 178 ilen1(:) = nblen(:) 179 179 IF( dta%ll_a_i ) THEN … … 343 343 ENDIF 344 344 #if defined key_lim3 345 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) 346 CALL ice_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 347 & dta_bdy(ib_bdy)%h_i, dta_bdy(ib_bdy)%h_s, dta_bdy(ib_bdy)%a_i ) 345 IF( cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN 346 IF( nice_cat == 1 ) THEN ! case input cat = 1 347 CALL ice_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 348 & dta_bdy(ib_bdy)%h_i , dta_bdy(ib_bdy)%h_s , dta_bdy(ib_bdy)%a_i ) 349 ELSEIF( nice_cat /= 1 .AND. nice_cat /= jpl ) THEN ! case input cat /=1 and /=jpl 350 CALL ice_var_itd2( bf(jfld_hti)%fnow(:,1,:), bf(jfld_hts)%fnow(:,1,:), bf(jfld_ai)%fnow(:,1,:), & 351 & dta_bdy(ib_bdy)%h_i , dta_bdy(ib_bdy)%h_s , dta_bdy(ib_bdy)%a_i ) 352 ENDIF 348 353 ENDIF 349 354 #endif … … 413 418 TYPE(OBC_DATA), POINTER :: dta ! short cut 414 419 #if defined key_lim3 415 INTEGER :: zndims ! number of dimensions in an array (i.e. 3 = wo ice cat; 4 = w ice cat) 420 INTEGER :: kndims ! number of dimensions in an array (i.e. 3 = wo ice cat; 4 = w ice cat) 421 INTEGER, DIMENSION(4) :: kdimsz ! size of dimensions 416 422 INTEGER :: inum,id1 ! local integer 417 423 #endif … … 619 625 ! 620 626 CALL iom_open ( clname, inum ) 621 id1 = iom_varid( inum, bn_a_i%clvar, k ndims=zndims, ldstop = .FALSE. )627 id1 = iom_varid( inum, bn_a_i%clvar, kdimsz=kdimsz, kndims=kndims, ldstop = .FALSE. ) 622 628 CALL iom_close ( inum ) 623 629 624 IF ( zndims == 4 ) THEN625 ll_bdylim3 = .TRUE.! Xcat input630 IF ( kndims == 4 ) THEN 631 nice_cat = kdimsz(4) ! Xcat input 626 632 ELSE 627 ll_bdylim3 = .FALSE.! 1cat input633 nice_cat = 1 ! 1cat input 628 634 ENDIF 629 635 ! End test … … 632 638 jfld = jfld + 1 633 639 blf_i(jfld) = bn_a_i 634 ibdy(jfld) = ib_bdy640 ibdy(jfld) = ib_bdy 635 641 igrid(jfld) = 1 636 642 ilen1(jfld) = nblen(igrid(jfld)) 637 IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF643 ilen3(jfld) = nice_cat 638 644 ENDIF 639 645 … … 641 647 jfld = jfld + 1 642 648 blf_i(jfld) = bn_h_i 643 ibdy(jfld) = ib_bdy649 ibdy(jfld) = ib_bdy 644 650 igrid(jfld) = 1 645 651 ilen1(jfld) = nblen(igrid(jfld)) 646 IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF652 ilen3(jfld) = nice_cat 647 653 ENDIF 648 654 649 655 IF( dta%ll_h_s ) THEN 650 656 jfld = jfld + 1 651 652 ibdy(jfld) = ib_bdy657 blf_i(jfld) = bn_h_s 658 ibdy(jfld) = ib_bdy 653 659 igrid(jfld) = 1 654 660 ilen1(jfld) = nblen(igrid(jfld)) 655 IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF661 ilen3(jfld) = nice_cat 656 662 ENDIF 657 663 … … 789 795 ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 790 796 ELSE 791 IF ( ll_bdylim3 ) THEN ! case input is Xcat797 IF ( nice_cat == jpl ) THEN ! case input cat = jpl 792 798 jfld = jfld + 1 793 799 dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) … … 796 802 jfld = jfld + 1 797 803 dta_bdy(ib_bdy)%h_s => bf(jfld)%fnow(:,1,:) 798 ELSE ! case input is 1cat804 ELSE ! case input cat = 1 OR (/=1 and /=jpl) 799 805 jfld_ai = jfld + 1 800 806 jfld_hti = jfld + 2
Note: See TracChangeset
for help on using the changeset viewer.