Custom Query (964 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (550 - 552 of 964)

Ticket Owner Reporter Resolution Summary
#667 arango jcwarner Fixed modify def_his.F/wrt_his.F for writing wetdry_mask_psi
Description

Need to modify def_his.F to allow wetdry_psi_mask to be read during a restart and written out to the history NetCDF file. This is discussed on the forum but here are some details for modifications to def_his.F:

  • In my solution, firstly add the declaration statement to line 55 in def_his.F:
      integer :: p2dgrd(3)
  • Then insert the following codes to line 301:
!
!  Define dimension vectors for staggered type variables at PSI-points.
!
        p2dgrd(1)=DimIDs( 4)
        p2dgrd(2)=DimIDs( 8)
        p2dgrd(3)=DimIDs(12)

  • Then, insert the following codes to line 458 ( inside #ifdef WET_DRY ... #endif statement):
!
!  Define wet/dry mask on PSI-points.
!
        Vinfo( 1)=Vname(1,idPwet)
        Vinfo( 2)=Vname(2,idPwet)
        Vinfo( 3)=Vname(3,idPwet)
        Vinfo( 9)='land'
        Vinfo(10)='water'
        Vinfo(14)=Vname(4,idPwet)
        Vinfo(16)=Vname(1,idtime)
        Vinfo(22)='coordinates'
        Aval(5)=REAL(Iinfo(1,idPwet,ng),r8)
        status=def_var(ng, iNLM, HIS(ng)%ncid, HIS(ng)%Vid(idPwet),     &
     &                 NF_FOUT, nvd3, p2dgrd, Aval, Vinfo, ncname,      &
     &                 SetFillVal = .FALSE.)
        IF (exit_flag.ne.NoError) RETURN

  • Similarly, insert the following codes to line 154 ( inside #ifdef WET_DRY ... #endif statement) in wrt_his.F:
!
!  Write out wet/dry mask at PSI-points.
!
      scale=1.0_r8
      gtype=gfactor*p2dvar
      status=nf_fwrite2d(ng, iNLM, HIS(ng)%ncid, HIS(ng)%Vid(idPwet),   &
     &                   HIS(ng)%Rindex, gtype,                         &
     &                   LBi, UBi, LBj, UBj, scale,                     &
# ifdef MASKING
     &                   GRID(ng) % pmask,                              &
# endif
     &                   GRID(ng) % pmask_wet,                          &
     &                   SetFillVal = .FALSE.)
      IF (status.ne.nf90_noerr) THEN
        IF (Master) THEN
          WRITE (stdout,10) TRIM(Vname(1,idPwet)), HIS(ng)%Rindex
        END IF
        exit_flag=3
        ioerror=status
        RETURN
      END IF
  • Also need to add in def_his.F around line 2383:
          ELSE IF (TRIM(var_name(i)).eq.TRIM(Vname(1,idPwet))) THEN
            got_var(idPwet)=.TRUE.
            HIS(ng)%Vid(idPwet)=var_id(i)
  • and near line 2786
        IF (.not.got_var(idPwet)) THEN
          IF (Master) WRITE (stdout,60) TRIM(Vname(1,idPwet)),          &
     &                                  TRIM(ncname)
          exit_flag=3
          RETURN
        END IF
#668 arango rtopper Fixed check_multifile picks wrong BRY and FRC file after restart
Description

After a restart, check_multifile picks the wrong BRY and FRC input files if the first file does not contain the data for the starting time (time(ng))

Lines 74-88 of check_multifile.F in ROMS/Utilities:

!  Set the appropriate file counter to use during initialization or
!  restart.
!
          Fcount=0
          IF (Lcheck) THEN
            DO ifile=1,Nfiles
              Tmin=Tscale*BRY(i,ng)%time_min(ifile)
              IF (time(ng).ge.Tmin) THEN
                Fcount=ifile
                EXIT
              END IF
            END DO
          ELSE
            Fcount=1
          END IF

If the restart time is greater than the TMIN of the first input file, IF (time(ng).ge.Tmin) THEN is TRUE, and the EXIT statement is triggered after the first input file is set to be read. However, if first input file doesn't contain time(ng) the first file will still be set. The model will produce an error while trying to read the input files because it can't find the data corresponding to time(ng) in the input file.

If you remove the EXIT statement, the other input files will also be checked and the last file that still has time(ng).ge. TMIN will be used.

Remove the EXIT from line 83 (for boundary multifile input) and line 156 (for forcing multifile input) and the model will pick the right input file, even after a restart.

#669 arango arango Done New option LIMIT_STFLX_COOLING
Description

A new option LIMIT_STFLX_COOLING is introduced in routine set_vbc to supress surface cooling if the model surface temperature is at freezing point (-2 Celsius) or below and the net heat flux is cooling. This can be used in the absent of a sea-ice model to limit cooling in shallow coastal areas, for example.

The following code is added to set_vbc.F:

#  ifdef LIMIT_STFLX_COOLING
!
!-----------------------------------------------------------------------
!  If net heat flux is cooling and SST is at freezing point or below
!  then suppress further cooling. Note: stflx sign convention is that
!  positive means heating the ocean (J Wilkin).
!-----------------------------------------------------------------------
!
!  Below the surface heat flux stflx(:,:,itemp) is ZERO if cooling AND
!  the SST is cooler that the threshold.  The value is retained if
!  warming.
!
!    cff3 = 0      if SST warmer than threshold (cff1) - change nothing
!    cff3 = 1      if SST colder than threshold (cff1)
!
!    0.5*(cff2-ABS(cff2)) = 0                        if flux is warming
!                         = stflx(:,:,itemp)         if flux is cooling
!
      cff1=-2.0_r8              ! nominal SST threshold to cease cooling
      DO j=JstrR,JendR
        DO i=IstrR,IendR
          cff2=stflx(i,j,itemp)
          cff3=0.5_r8*(1.0_r8+SIGN(1.0_r8,cff1-t(i,j,N(ng),nrhs,itemp)))
          stflx(i,j,itemp)=cff2-cff3*0.5_r8*(cff2-ABS(cff2))
        END DO
      END DO
#  endif

This option is also added to the tangent linear, representer, and adjoint versions of set_vbc.F.

This option was requested by our users at NOAA and it is working well in their coastal applications. Many thanks to John Wilkin for helping coding this limit in the surface net heat flux.

Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.