diff --git a/src/OCE/SBC/fldread.F90 b/src/OCE/SBC/fldread.F90 index 221f2be9c87f49492505e4c4a2394867ee4f161c..f7a6d90fa6949a2144e762b1a8634f939fcaf8a3 100644 --- a/src/OCE/SBC/fldread.F90 +++ b/src/OCE/SBC/fldread.F90 @@ -355,6 +355,7 @@ CONTAINS INTEGER :: iw ! index into wgts array INTEGER :: idvar ! variable ID INTEGER :: idmspc ! number of spatial dimensions + REAL(wp) :: zsgn ! sign used in the call to lbc_lbk called by iom_get REAL(wp), DIMENSION(:,:,:), POINTER :: dta_alias ! short cut !!--------------------------------------------------------------------- iaa = sdjf%naa @@ -364,19 +365,23 @@ CONTAINS ENDIF ipk = SIZE( dta_alias, 3 ) ! + IF( LEN_TRIM(sdjf%vcomp) > 0 ) THEN ; zsgn = 1._wp ! geographical vectors -> sign change done later when rotating + ELSE ; zsgn = sdjf%zsgn + ENDIF + ! IF( ASSOCIATED(sdjf%imap) ) THEN ! BDY case CALL fld_map( sdjf%num, sdjf%clvar, dta_alias(:,:,:), sdjf%nrec(1,iaa), & & sdjf%imap, sdjf%igrd, sdjf%ibdy, sdjf%ltotvel, sdjf%lzint, Kmm ) ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN ! On-the-fly interpolation CALL wgt_list( sdjf, iw ) CALL fld_interp( sdjf%num, sdjf%clvar, iw, ipk, dta_alias(:,:,:), sdjf%nrec(1,iaa), sdjf%lsmname ) - CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) + CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, zsgn, kfillmode = jpfillcopy ) ELSE ! default case idvar = iom_varid( sdjf%num, sdjf%clvar ) idmspc = iom_file ( sdjf%num )%ndims( idvar ) IF( iom_file( sdjf%num )%luld( idvar ) ) idmspc = idmspc - 1 ! id of the last spatial dimension CALL iom_get( sdjf%num, jpdom_global, sdjf%clvar, dta_alias(:,:,:), sdjf%nrec(1,iaa), & - & sdjf%cltype, sdjf%zsgn, kfill = jpfillcopy ) + & sdjf%cltype, zsgn, kfill = jpfillcopy ) ENDIF ! sdjf%rotn(iaa) = .false. ! vector not yet rotated