Changeset 12639


Ignore:
Timestamp:
2020-04-01T13:06:26+02:00 (7 months ago)
Author:
smasson
Message:

r4.0-HEAD: avoid to use unassociated pointers in bdydta, see #2429

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/BDY/bdydta.F90

    r12548 r12639  
    120120                  END DO 
    121121               ENDIF 
    122                IF( dta_bdy(jbdy)%lneed_dyn2d) THEN  
     122               IF( dta_bdy(jbdy)%lneed_dyn2d .AND. ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN   ! no SIZE with a unassociated pointer 
    123123                  igrd = 2 
    124124                  DO ib = 1, SIZE(dta_bdy(jbdy)%u2d)   ! u2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 
     
    232232         ! tidal harmonic forcing ONLY: initialise arrays 
    233233         IF( nn_dyn2d_dta(jbdy) == 2 ) THEN   ! we did not read ssh, u/v2d  
    234             IF( dta_alias%lneed_ssh   ) dta_alias%ssh(:) = 0._wp 
    235             IF( dta_alias%lneed_dyn2d ) dta_alias%u2d(:) = 0._wp 
    236             IF( dta_alias%lneed_dyn2d ) dta_alias%v2d(:) = 0._wp 
     234            IF( dta_alias%lneed_ssh   .AND. ASSOCIATED(dta_alias%ssh) ) dta_alias%ssh(:) = 0._wp 
     235            IF( dta_alias%lneed_dyn2d .AND. ASSOCIATED(dta_alias%u2d) ) dta_alias%u2d(:) = 0._wp 
     236            IF( dta_alias%lneed_dyn2d .AND. ASSOCIATED(dta_alias%v2d) ) dta_alias%v2d(:) = 0._wp 
    237237         ENDIF 
    238238 
     
    241241            ! 
    242242            igrd = 2                       ! zonal velocity 
    243             dta_alias%u2d(:) = 0._wp       ! compute barotrope zonal velocity and put it in u2d 
    244243            DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    245244               ii   = idx_bdy(jbdy)%nbi(ib,igrd) 
    246245               ij   = idx_bdy(jbdy)%nbj(ib,igrd) 
     246               dta_alias%u2d(ib) = 0._wp   ! compute barotrope zonal velocity and put it in u2d 
    247247               DO ik = 1, jpkm1 
    248248                  dta_alias%u2d(ib) = dta_alias%u2d(ib) + e3u_n(ii,ij,ik) * umask(ii,ij,ik) * dta_alias%u3d(ib,ik) 
     
    254254            END DO 
    255255            igrd = 3                       ! meridional velocity 
    256             dta_alias%v2d(:) = 0._wp       ! compute barotrope meridional velocity and put it in v2d 
    257256            DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    258257               ii   = idx_bdy(jbdy)%nbi(ib,igrd) 
    259258               ij   = idx_bdy(jbdy)%nbj(ib,igrd) 
     259               dta_alias%v2d(ib) = 0._wp   ! compute barotrope meridional velocity and put it in v2d 
    260260               DO ik = 1, jpkm1 
    261261                  dta_alias%v2d(ib) = dta_alias%v2d(ib) + e3v_n(ii,ij,ik) * vmask(ii,ij,ik) * dta_alias%v3d(ib,ik) 
     
    285285 
    286286#if defined key_si3 
    287          IF( dta_alias%lneed_ice ) THEN 
     287         IF( dta_alias%lneed_ice .AND. idx_bdy(jbdy)%nblen(1) > 0 ) THEN 
    288288            ! fill temperature and salinity arrays 
    289289            IF( TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' )   bf_alias(jp_bdyt_i)%fnow(:,1,:) = rice_tem (jbdy) 
Note: See TracChangeset for help on using the changeset viewer.