﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
867	Impotant: Miscellaneous Update	arango		"Several changes are made to support new capabilities that will be released in the future. It is a safeguard for uniformity between official and research repositories.

* '''mod_scalars.F:''' Added '''LreadFRC''' and '''LreadQCK''' switches that will be used in adjoint-based applications when '''NL_BULK_FLUXES''' is activated to process basic state, nonlinear surface fluxes from the '''QCK''' instead of the '''FWD''' (or '''HIS''') NetCDF file. This change is needed for coupled 4D-Var applications.

* '''cgradient.F:'''  Corrected the reading of the converged Ritz eigenvalues in routine '''cg_read'''.  We need to have:
 {{{
!
!  Read in converged Ritz eigenvalues.
!
      CALL netcdf_get_fvar (ng, model, DAV(ng)%name,                    &
     &                      'Ritz', Ritz,                               &
     &                      ncid = DAV(ng)%ncid,                        &
     &                      start = (/1/),                              &
     &                      total = (/Ninner/))
      IF (FoundError(exit_flag, NoError, __LINE__,                      &
     &               __FILE__)) RETURN
}}}

* '''initial.F:''' Corrected a shared-memory bug in the scaling of the nesting interpolation weights with the !Land/Sea masking. We need to have:
 {{{
!
!-----------------------------------------------------------------------
!  If nesting and Land/Sea masking, scale horizontal interpolation
!  weights to account for land contact points.
!-----------------------------------------------------------------------
!
      DO ng=1,Ngrids
        CALL nesting (ng, iNLM, nmask)
      END DO
}}}
 instead of
 {{{
!
!-----------------------------------------------------------------------
!  If nesting and Land/Sea masking, scale horizontal interpolation
!  weights to account for land contact points.
!-----------------------------------------------------------------------
!
      DO ng=1,Ngrids
        DO tile=first_tile(ng),last_tile(ng),+1
          CALL nesting (ng, iNLM, nmask)
        END DO
!$OMP BARRIER
      END DO


}}}
 Many thanks to Andy Moore for bringing this to my attention.

* '''extract_obs.F:''' A new CPP option '''ALLOW_BOTTOM_OBS''' is introduced to avoid rejecting observations (default behavior) in the lower bottom grid cell ('''k=1'''). That is, between '''-h < Zobs < Adepth(:,:,1)'''. 
 {{{
#  ifndef ALLOW_BOTTOM_OBS
!
!  Reject observations that lie in the lower bottom grid cell (k=1) to
!  avoid clustering due shallowing of bathymetry during smoothing and
!  coarse level half-thickness (-h < Zobs < Adepth(:,:,1)) in deep
!  water.
!
            IF ((Zobs(iobs).gt.0.0_r8).and.(Zobs(iobs).le.1.0_r8)) THEN
              ObsVetting(iobs)=0.0_r8
            END IF
#  endif
}}}

* '''edit_multifile.F:'''  Added loading I/O structure '''QCK''' into '''BLK''':
 {{{
!
!  Load QCK information into the BLK structure so it can be used to
!  process the NLM background surface forcing to be read and processed
!  by the TLM, RPM, and ADM kernels.
!
          CASE ('QCK2BLK')
            IF (ndefQCK(ng).gt.0) THEN
              IF (QCK(ng)%ncid.ne.-1) THEN
                CALL netcdf_close (ng, iNLM, QCK(ng)%ncid)
              END IF
              Nfiles=ntimes(ng)/ndefQCK(ng)
              IF (nQCK(ng).eq.ndefQCK(ng)) Nfiles=Nfiles+1
              CALL edit_file_struct (ng, Nfiles, BLK)
              DO ifile=1,Nfiles
                BLK(ng)%files(ifile)=TRIM(QCK(ng)%files(ifile))
              END DO
              BLK(ng)%name=TRIM(BLK(ng)%files(1))
            ELSE
              BLK(ng)%ncid=-1
              BLK(ng)%name=TRIM(QCK(ng)%name)
              BLK(ng)%files(1)=TRIM(QCK(ng)%name)
            END IF

}}}

* '''stdinp_mod.F:''' Updated '''stdinp_unit''' function to take into account the different standard input script and unit in coupling applications.
 {{{
!
!-----------------------------------------------------------------------
!  Determine ROMS standard input unit.
!-----------------------------------------------------------------------
#ifdef DISTRIBUTE
!
!  In distributed-memory configurations, the input physical parameters
!  script is opened as a regular file.  It is read and processed by all
!  parallel nodes.  This is to avoid a very complex broadcasting of the
!  input parameters to all nodes.
# ifdef MODEL_COUPLING
!  However, in ESM coupling, the submission argument is 'coupling.in'
!  and the Iname was read and processed in the coupling configuration
!  elsewhere.
# endif
!
      InpUnit=1
# ifndef MODEL_COUPLING
      IF (localPET.eq.0) CALL my_getarg (1, Iname)
      CALL mp_bcasts (1, 1, Iname)
# endif
      OPEN (InpUnit, FILE=TRIM(Iname), FORM='formatted', STATUS='old',  &
     &      ERR=10)
      GotFile=.TRUE.
}}}

* '''makefile:''' The ROMS executable logically so the BIN macro value can be overwritten in the build script.
 {{{
#--------------------------------------------------------------------------
#  Set ROMS/TOMS executable file name.
#--------------------------------------------------------------------------

ifdef USE_DEBUG
  BIN ?= $(BINDIR)/romsG
else
 ifdef USE_MPI
   BIN ?= $(BINDIR)/romsM
 else
  ifdef USE_OpenMP
    BIN ?= $(BINDIR)/romsO
  else
    BIN ?= $(BINDIR)/romsS
  endif
 endif
endif
}}}


* '''nesting.F:'''  Added missing IF-directives in '''fine2coarse''' to avoid uncessary exchanges."	upgrade	closed	major	Release ROMS/TOMS 3.9	Nonlinear	3.9	Done		
