- Timestamp:
- 2019-07-15T15:20:49+02:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydta.F90
r11224 r11268 331 331 LOGICAL :: ln_full_vel ! =T => full velocities in 3D boundary data 332 332 ! ! =F => baroclinic velocities in 3D boundary data 333 INTEGER :: ipk,ipl ! 333 LOGICAL :: ln_zinterp ! =T => requires a vertical interpolation of the bdydta 334 INTEGER :: ipk,ipl ! 334 335 INTEGER :: idvar ! variable ID 335 336 INTEGER :: indims ! number of dimensions of the variable … … 348 349 NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d 349 350 NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s 350 NAMELIST/nambdy_dta/ ln_full_vel 351 NAMELIST/nambdy_dta/ ln_full_vel, ln_zinterp 351 352 !!--------------------------------------------------------------------------- 352 353 ! … … 361 362 ENDIF 362 363 bf(:,:)%clrootname = 'NOT USED' ! default definition used as a flag in fld_read to do nothing. 363 bf(:,:)%ltotvel = .FALSE. ! default definition 364 bf(:,:)%lzint = .FALSE. ! default definition 365 bf(:,:)%ltotvel = .FALSE. ! default definition 364 366 365 367 ! Read namelists … … 521 523 CALL fld_fill( bf_alias, bn_alias, cn_dir, 'bdy_dta', cl3//' '//ctmp1, ctmp2 ) ! use namelist info 522 524 IF( bf_alias(1)%ln_tint ) ALLOCATE( bf_alias(1)%fdta( iszdim, 1, ipk, 2 ) ) 523 bf_alias(1)%imap => idx_bdy(jbdy)%nbmap(1:iszdim,igrd)! associate the mapping used for this bdy524 bf_alias(1)%igrd = igrd! used only for vertical integration of 3D arrays525 bf_alias(1)%imap => idx_bdy(jbdy)%nbmap(1:iszdim,igrd) ! associate the mapping used for this bdy 526 bf_alias(1)%igrd = igrd ! used only for vertical integration of 3D arrays 525 527 bf_alias(1)%ltotvel = ln_full_vel ! T if u3d is full velocity 528 bf_alias(1)%lzint = ln_zinterp ! T if it requires a vertical interpolation 526 529 ENDIF 527 530 -
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/SBC/fldread.F90
r11267 r11268 86 86 INTEGER, POINTER, DIMENSION(:) :: imap ! Array of integer pointers to 1D arrays 87 87 LOGICAL :: ltotvel ! total velocity or not (T/F) 88 LOGICAL :: lzint ! T if it requires a vertical interpolation 88 89 END TYPE FLD 89 90 … … 616 617 ! 617 618 IF( ASSOCIATED(sdjf%imap) ) THEN 618 IF( sdjf%ln_tint ) THEN ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), 619 & sdjf% nrec_a(1), sdjf%imap, sdjf%igrd, sdjf%ibdy, sdjf%ltotvel)620 ELSE ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fnow(:,:,: ), 621 & sdjf% nrec_a(1), sdjf%imap, sdjf%igrd, sdjf%ibdy, sdjf%ltotvel)619 IF( sdjf%ln_tint ) THEN ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), & 620 & sdjf%imap, sdjf%igrd, sdjf%ibdy, sdjf%ltotvel, sdjf%lzint ) 621 ELSE ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1), & 622 & sdjf%imap, sdjf%igrd, sdjf%ibdy, sdjf%ltotvel, sdjf%lzint ) 622 623 ENDIF 623 624 ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN … … 676 677 677 678 678 SUBROUTINE fld_map( knum, cdvar, pdta, krec, kmap, kgrd, kbdy, ldtotvel )679 SUBROUTINE fld_map( knum, cdvar, pdta, krec, kmap, kgrd, kbdy, ldtotvel, ldzint ) 679 680 !!--------------------------------------------------------------------- 680 681 !! *** ROUTINE fld_map *** … … 691 692 INTEGER, OPTIONAL , INTENT(in ) :: kgrd ! grid type (t, u, v) 692 693 INTEGER, OPTIONAL , INTENT(in ) :: kbdy ! bdy number 693 LOGICAL, OPTIONAL , INTENT(in ) :: ldtotvel ! true if toal ( = barotrop + barocline) velocity 694 LOGICAL, OPTIONAL , INTENT(in ) :: ldtotvel ! true if total ( = barotrop + barocline) velocity 695 LOGICAL, OPTIONAL , INTENT(in ) :: ldzint ! true if 3D variable requires a vertical interpolation 694 696 !! 695 697 INTEGER :: ipi ! length of boundary data on local process … … 707 709 CHARACTER(LEN=1),DIMENSION(3) :: clgrid 708 710 LOGICAL :: lluld ! is the variable using the unlimited dimension 711 LOGICAL :: llzint ! local value of ldzint 709 712 !!--------------------------------------------------------------------- 710 713 ! … … 714 717 ipj = SIZE( pdta, 2 ) ! must be equal to 1 715 718 ipk = SIZE( pdta, 3 ) 719 ! 720 llzint = .FALSE. 721 IF( PRESENT(ldzint) ) llzint = ldzint 716 722 ! 717 723 idvar = iom_varid( knum, cdvar, kndims = indims, kdimsz = idimsz, lduld = lluld ) … … 739 745 CALL iom_get ( knum, jpdom_unknown, cdvar, zz_read(:,:,:), krec ) ! call iom_get with a 3D file 740 746 ! 741 IF( ipkb /= ipk ) THEN ! boundary data not on model vertical grid : vertical interpolation747 IF( ipkb /= ipk .OR. llzint ) THEN ! boundary data not on model vertical grid : vertical interpolation 742 748 ! 743 749 IF( ipk == jpk .AND. iom_varid(knum,'gdep'//clgrid(kgrd)) /= -1 .AND. iom_varid(knum,'e3'//clgrid(kgrd)) /= -1 ) THEN … … 1179 1185 sdf(jf)%imap => NULL() 1180 1186 sdf(jf)%ltotvel = .FALSE. 1187 sdf(jf)%lzint = .FALSE. 1181 1188 END DO 1182 1189 !
Note: See TracChangeset
for help on using the changeset viewer.