Custom Query (964 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (691 - 693 of 964)

Ticket Owner Reporter Resolution Summary
#830 arango Done Updated Extrapolation Method to ESMF regridding
Description

The ESMF library version 8.0.0 includes new extrapolation methods for unmapped points in the destination field. The routine ESMF_FieldRegridStore includes several new arguments to specify the extrapolation method and associated parameters. The unmapped points can be extrapolated using the nearest source to destination (ESMF_EXTRAPMETHOD_NEAREST_STOD), nearest inverse distance average (ESMF_EXTRAPMETHOD_NEAREST_IDAVG), or creep fill methods (ESMF_EXTRAPMETHOD_NEAREST_CREEP).

  • The coupling metadata input file coupling_esmf.dat was modified to include the new extrapolation methods for an exchanged field:
    !       Cinfo(11)     Field regridding method from source to destination:
    !                       'bilinear'      => bilinear interpolation         
    !                       'patch'         => high-order patch recovery          
    !                       'conservative1' => first-order conservative
    !                       'conservative2' => second-order conservative
    !                       'nearest'       => nearest neighbor interpolation
    !       Cinfo(12)     Field extrapolation method for unmapped points:
    !                       'none'          => no extrapolation
    !                       'nearest'       => nearest source to destination
    !                       'idavg'         => nearest inverse distance average
    !                       'creep'         => creep fill at specified level
    !                       '2steps'        => Turuncoglu's 2 steps extrapolation
    ...
    
    'SST'
      'sea_surface_temperature'                        ! standard name
      'sea surface temperature'
      't(:,:,N,itemp)', 'ROMS'                         ! source variable, ROMS
      'C'                                              ! source units
      'Center'                                         ! source grid-cell
      'tsea', 'COAMPS'                                 ! destination variable, COAMPS
      'K'                                              ! destination units
      'Center'                                         ! destination grid-cell
      'SST'                                            ! DATA Model file variable
      'bilinear'                                       ! regridding method
      'nearest'                                        ! unmapped extrapolation method
      .TRUE.                                           ! connected to coupler
      273.15d0                                         ! importing add offset
      1.0d0                                            ! importing scale
    

  • Standard input script file coupling_esmf.in now includes a new parameter for the creep fill extrapolation:
    ! Internal ESMF parameters (see below for information).
    
       extrapNumLevels =  4     ! number of levels for creep fill extrapolation
    
    which specifies the number of levels for the creep fill extrapolation of unmapped destination points during regridding. After regular regridding, the creep fill method of unmapped points repeatedly moves data from mapped locations to the neighboring unmapped locations by the specified extrapNumLevels amount. For each creeped point, the extrapolation value is the average of the immediate neighbors from regridding. See ESMF Reference Manual (version 8.0 or higher) for ESMF_EXTRAPMETHOD_CREEP flag to ESMF_FieldRegridStore.
  • Added the generic metadata file for COAMPS (coupling_esmf_coamps.dat) and WRF (coupling_esmf_wrf.dat) that can be used to couple to ROMS and DATA components.
#831 arango Fixed IMPORTANT: Fixed weird compiler error
Description

We are getting a weird compiler error with ifort (intel-17.0.4) in a cluster:

stiffness.f90(119): error #6401: The attributes of this name conflict with those made accessible by a USE statement.   [OP_HANDLE]
      character (len=3), dimension(5) :: op_handle
-----------------------------------------^
compilation aborted for stiffness.f90 (code 1)
make: *** [/home/hga/ocean/repository/Projects/indian/Build_roms/stiffness.o] Error 1

when using mp_reduce from distribute.F module. It is a bug in the ifort compiler because the variable op_handle is a dummy argument to the module interface:

      INTERFACE mp_reduce
# ifdef SINGLE_PRECISION
        MODULE PROCEDURE mp_reduce_0dp   ! double-precision reduction
        MODULE PROCEDURE mp_reduce_1dp   ! double-precision reduction
# endif
        MODULE PROCEDURE mp_reduce_0d
        MODULE PROCEDURE mp_reduce_1d
      END INTERFACE mp_reduce

An easy solution is to rename the routine argument from op_handle to handle_op in distribute.F. The compiler thinks that the variable is declared in the module part. Anyway, it a simple variable rename that makes the compiling more robust.

#832 arango Done IMPORTANT: Miscellaneous Update
Description

It is a miscellaneous update that consolidates the research repositories with code distributed to the community. It is done to smooth the transition to significant updates in the future.

  • nl_ocean.h: the logic time-stepping logic in the nonlinear kernel driver was slightly modified for coupling to other models during a RunInterval:
    !
    !-----------------------------------------------------------------------
    !  Time-step nonlinear model over nested grids, if applicable.
    #if defined MODEL_COUPLING && !defined MCT_LIB
    !  Since the ROMS kernel has a delayed output and line diagnostics by
    !  one timestep, subtract an extra value to the report of starting and
    !  ending timestep for clarity. Usually, the model coupling interval
    !  is of the same size as ROMS timestep.
    #endif
    !-----------------------------------------------------------------------
    !
          MyRunInterval=RunInterval
          IF (Master) WRITE (stdout,'(1x)')
          DO ng=1,Ngrids
    #if defined MODEL_COUPLING && !defined MCT_LIB
            NEXTtime=time(ng)+RunInterval
            ENDtime=INItime(ng)+(ntimes(ng)-1)*dt(ng)
            IF ((NEXTtime.eq.ENDtime).and.(ng.eq.1)) THEN
              extra=0                                   ! last time interval
            ELSE
              extra=1
            END IF
            step_counter(ng)=0
            NstrStep=iic(ng)
            NendStep=NstrStep+INT((MyRunInterval)/dt(ng))-extra
            IF (Master) WRITE (stdout,10) 'NL', ng, NstrStep, NendStep
    #else
            IF (Master) WRITE (stdout,10) 'NL', ng, ntstart(ng), ntend(ng)
    #endif
          END DO
    
  • ntimestep.F the above logic about the delayed output need to be accounted when computing the time-stepping parameters:
    #if defined MODEL_COUPLING && !defined MCT_LIB
    !
    !  Set extra step parameter needed to finish the simulation due to ROMS
    !  delayed output until the next half step. If RunInterval (seconds) is
    !  less than full simulation interval because of model coupling, extra=1
    !  for last coupling interval and extra=0 otherwise.
    !
              NEXTtime=time(ng)+RunInterval
              ENDtime=INItime(ng)+(ntimes(ng)-1)*dt(ng)
              IF (NEXTtime.eq.ENDtime) THEN
                extra=1
              ELSE
                extra=0
              END IF
    #else
    !
    !  Here, extra=1, indicates that the RunInterval is the same as
    !  simulation interval.
    !
              extra=1
    #endif
    
  • inp_decode.F: the function load_s1d has an additional input dummy argument (Mgrids) to specify the number of nested grids instead of being specified internally with ROMS Ngrids parameter. It allows this function to be used during coupling when the DATA component is active.
         FUNCTION load_s1d (Nval, Fname, Fdim, line, label, igrid,         &
        &                   Mgrids, Nfiles, S)
    
    Warning: changes need to be done in read_asspar.F and read_phypar.F when load_s1d is called to the addional argument.
  • All the RunSequence ESMF input scripts were modified to account for the next version of the ROMS coupling framework that uses the native nesting capabilities of the NUOPC layer version 8.0.0 and higher. If the timeStep value (in seconds) coupling interval is a wildcard (*) character used for a single outer time loop in the run sequence, then the associated run clock is identical to the driver clock, which is set up in standard input configuration script coupling_esmf.in. For example, we can have a semi-implicit run sequence as follows:
    runSeq::
      @*                         # timeStep = wildcard (*), single time loop
        DATA -> WRF              # DATA to WRF connector
        DATA
        ROMS -> WRF              # ROMS to WRF connector
        WRF
        WRF -> ROMS              # WRF to ROMS connector
        WRF
      @
    ::
    
    where the wildcard character is used to specify the coupling interval. New scripts were added for coupling DATA and ROMS. It is more generic that specifying the value:
    runSeq::
      @300                       # timeStep = 5 min interval, single time loop
        DATA -> WRF              # DATA to WRF connector
        DATA
        ROMS -> WRF              # ROMS to WRF connector
        WRF
        WRF -> ROMS              # WRF to ROMS connector
        ROMS
      @
    ::
    
Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.