Opened 3 years ago

Last modified 8 months ago

#1858 assigned Bug

bug when reading external data in BDY?

Reported by: clem Owned by: davestorkey
Priority: low Milestone:
Component: BDY Version: trunk
Severity: minor Keywords:
Cc:

Description (last modified by nemo)

I am wondering if there is a problem in BDY when reading external files with option ln_full_vel_array = .FALSE.

In bdydta.F90 (~line 266), data from external files are read as follows:

IF( PRESENT(jit) ) THEN

  IF( ln_full_vel_array(ib_bdy) ) THEN
    CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  &
       & kit=jit, kt_offset=time_offset , jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy)  )
  ELSE
    CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  &
       & kit=jit, kt_offset=time_offset  )
  ENDIF

ELSE

  CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), &
    & map=nbmap_ptr(jstart:jend), kt_offset=time_offset, jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy) )

ENDIF

It looks to me that below the ELSE statement, there is a missing IF( ln_full_vel_array(ib_bdy) )
Can someone confirm or refute?

Commit History (0)

(No commits)

Change History (6)

comment:1 Changed 2 years ago by clevy

  • Owner changed from nemo to davestorkey

comment:2 in reply to: ↑ description Changed 2 years ago by jchanut

  • Severity set to minor

First note that the case "( PRESENT(jit)) =T" never occurs in the code anymore. This is a remaining part of the former update of boundary conditions at each barotropic time step. Some cleaning would be needed here.

The problem I see is that with "runoff" boundary conditions ONLY (this a tracer boundary condition, which is not really, well, understandable) the code never considers the the ln_full_vel_array flag so that 2d transport as input is always expected. 

Replying to clem:

I am wondering if there is a problem in BDY when reading external files with option ln_full_vel_array = .FALSE.

In bdydta.F90 (~line 266), data from external files are read as follows:

IF( PRESENT(jit) ) THEN

IF( ln_full_vel_array(ib_bdy) ) THEN
CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  &
& kit=jit, kt_offset=time_offset , jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy)  )
ELSE
CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  &
& kit=jit, kt_offset=time_offset  )
ENDIF

ELSE

CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), &
& map=nbmap_ptr(jstart:jend), kt_offset=time_offset, jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy) )

ENDIF

It looks to me that below the ELSE statement, there is a missing IF( ln_full_vel_array(ib_bdy) )
Can someone confirm or refute?

Last edited 2 years ago by nemo (previous) (diff)

comment:3 Changed 2 years ago by nemo

  • Description modified (diff)
  • task_status set to Not known

comment:4 Changed 19 months ago by clevy

  • Status changed from new to assigned

comment:5 Changed 19 months ago by clevy

Should be checked and eventually changes in dev_merge_2017 for now, as the future trunk

comment:6 Changed 8 months ago by jchanut

  • Component changed from OCE to BDY
Note: See TracTickets for help on using tickets.