Opened 9 years ago

Last modified 9 years ago

#667 closed bug

modify def_his for wetdry_mask_psi — at Initial Version

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

Description

need to modify def_his to allow wetdry_psi_mask to be read during a restart and written out. this is discussed on https://www.myroms.org/forum/viewtopic.php?f=19&t=3812 but here are some detail for modifications to def_his.F

1) In my solution, firstly add the declaration statement to line 55 in def_his.F: Code:

integer
p2dgrd(3)

Then insert the following codes to line 301:

Code:

! ! 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):

Code:

! ! 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:

Code:

! ! 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

2) near lines 3572 defined WET_DRY (this ifdef is already there)

ELSE IF (TRIM(var_name(i)).eq.TRIM(Vname(1,idPwet))) THEN got_var(idPwet)=.TRUE. HIS(ng)%Vid(idPwet)=var_id(i)

3) near line 4184 defined WET_DRY (this ifdef is already there)

IF (.not.got_var(idPwet)) THEN IF (Master) WRITE (stdout,60) TRIM(Vname(1,idPwet)), & & TRIM(ncname) exit_flag=3 RETURN END IF

Change History (0)

Note: See TracTickets for help on using tickets.