Opened 4 months ago

Closed 4 months ago

#867 closed upgrade (Done)

Impotant: Miscellaneous Update

Reported by: arango Owned by:
Priority: major Milestone: Release ROMS/TOMS 3.9
Component: Nonlinear Version: 3.9
Keywords: Cc:

Description (last modified by 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.

Change History (1)

comment:1 Changed 4 months ago by arango

  • Description modified (diff)
  • Resolution set to Done
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.