Custom Query (964 matches)
Results (700 - 702 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#667 | 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:
integer :: p2dgrd(3)
! ! Define dimension vectors for staggered type variables at PSI-points. ! p2dgrd(1)=DimIDs( 4) p2dgrd(2)=DimIDs( 8) p2dgrd(3)=DimIDs(12)
! ! 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
! ! 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
ELSE IF (TRIM(var_name(i)).eq.TRIM(Vname(1,idPwet))) THEN got_var(idPwet)=.TRUE. HIS(ng)%Vid(idPwet)=var_id(i)
IF (.not.got_var(idPwet)) THEN IF (Master) WRITE (stdout,60) TRIM(Vname(1,idPwet)), & & TRIM(ncname) exit_flag=3 RETURN END IF |
|||
#668 | 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 | 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. |