There is a curious difference between COAWST/ROMS(v1175) and trunk/ROMS (v854). The source code for both were obtained last week (July 20 2017).
The problem: I am trying to run the upwelling case in COAWST/ROMS to set up the environment. Both scalar and mpi compiles report an incorrect model configuration (see below). I then tried the estuary test case as a romsonly case in COAWST. It ran fine. However, if I turn off sediments, it fails in the same way as the upwelling case. The upwelling case in trunk/ROMS works fine.
The issue: There is some difference in the COAWST/ROMS setup in the way that Qout control variables are set up so that idsurT is not being defined. From the DO loop variables, it seems that some other part of the code should set up Qout for idsurT for the two active tracers (itemp, isalt) when NT=2. The code below should only define Qout(idsurT) for additional passive tracer variables. The trunk/ROMS model does the definitions; the COAWST/ROMS model does not, unless sediments are turned on in which case MT> NT and the loop in mod_ncparam.F executes.
I could not find the difference between the COAWST/ROMS setup and the trunk/ROMS setup. Maybe someone with more familiarity with the Qout setup can figure this out.
below are code fragments and model runtime output.
Thanks for your help.
John
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
lines in mod_ncparam.F (both COAWST/ROMS and trunk/ROMS)
DO i=NAT+1,MT
varid=varid+1
write(*,*) 'mod_ncparam: varid',varid
IF (varid.gt.MV) THEN
WRITE (stdout,60) MV, varid
STOP
END IF
idsurT(i)=varid
DO ng=1,Ngrids
Fscale(varid,ng)=1.0_r8
Iinfo(1,varid,ng)=r2dvar
END DO
WRITE (Vname(1,varid),'(a,a)') &
& TRIM(ADJUSTL(Vname(1,idTvar(i)))), '_sur'
WRITE (Vname(2,varid),'(a,1x,a)') 'model surface', &
& TRIM(ADJUSTL(Vname(2,idTvar(i))))
WRITE (Vname(3,varid),'(a)') &
& TRIM(ADJUSTL(Vname(3,idTvar(i))))
WRITE (Vname(4,varid),'(a,a)') &
& TRIM(Vname(1,varid)), ', scalar, series'
WRITE (Vname(5,varid),'(a)') &
& TRIM(ADJUSTL(Vname(5,idTvar(i))))
END DO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Run log for scalar compile with "DO i=NAT+1,MT" in nc_param.F
Model Input Parameters: ROMS/TOMS version 3.7
Monday - July 24, 2017 - 10:55:08 AM
-----------------------------------------------------------------------------
mod_ncparam: allocate Qout. NV= 1400
mod_ncparam: allocate idsurT. MT= 2
mod_param: NAT, MT, MV = 2 2 1400
read_phypar: Qout(idsurT)
read_phypar: max(idsurT) == 0
READ_PHYPAR - variable info not yet loaded, idsurT
Elapsed CPU time (seconds):
ROMS/TOMS - Output NetCDF summary for Grid 01:
ROMS/TOMS - Configuration error ..... exit_flag: 5
ERROR: Illegal model configuration.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The mpi compile has the same problem (run on 4 processors)
Model Input Parameters: ROMS/TOMS version 3.7
Monday - July 24, 2017 - 12:13:42 PM
-----------------------------------------------------------------------------
mod_ncparam: allocate Qout. NV= 1400
mod_ncparam: allocate idsurT. MT= 2
mod_ncparam: allocate Qout. NV= 1400
mod_ncparam: allocate idsurT. MT= 2
mod_ncparam: allocate Qout. NV= 1400
mod_ncparam: allocate idsurT. MT= 2
mod_ncparam: allocate Qout. NV= 1400
mod_ncparam: allocate idsurT. MT= 2
mod_param: NAT, MT, MV = 2 2 1400
mod_param: NAT, MT, MV = 2 2 1400
mod_param: NAT, MT, MV = 2 2 1400
mod_param: NAT, MT, MV = 2 2 1400
read_phypar: Qout(idsurT)
read_phypar: max(idsurT) == 0
read_phypar: Qout(idsurT)
read_phypar: max(idsurT) == 0
read_phypar: Qout(idsurT)
read_phypar: max(idsurT) == 0
read_phypar: Qout(idsurT)
read_phypar: max(idsurT) == 0
READ_PHYPAR - variable info not yet loaded, idsurT
Elapsed CPU time (seconds):
ROMS/TOMS - Output NetCDF summary for Grid 01:
ROMS/TOMS - Configuration error ..... exit_flag: 5
ERROR: Illegal model configuration.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The scalar and mpi codes for COAWST/ROMS run fine changing "DO i=NAT+1,MT" to "DO i=1,MT" in nc_param.F
Difference between trunk/ROMS and COAWST/ROMS with Qout
Re: Difference between trunk/ROMS and COAWST/ROMS with Qout
i just made a change in mod_ncparam to add:
< CASE ('idsurT(itemp)')
< idsurT(itemp)=varid
< CASE ('idsurT(isalt)')
< idsurT(isalt)=varid
Ivicia found this out. can you do an update and see if that fixed it?
-john
< CASE ('idsurT(itemp)')
< idsurT(itemp)=varid
< CASE ('idsurT(isalt)')
< idsurT(isalt)=varid
Ivicia found this out. can you do an update and see if that fixed it?
-john
Re: Difference between trunk/ROMS and COAWST/ROMS with Qout
John,
My thanks to Ivicia. Adding the 4 lines fixed the problem. I can run the upwelling case and the estuary test without sediments.
Thanks for the quick response.
I am trying to set up an all analytical test ACC/Atlantic overturning model with sea ice (and maybe ice shelves). I will send you the setup when I get it working.
Thanks again,
John
My thanks to Ivicia. Adding the 4 lines fixed the problem. I can run the upwelling case and the estuary test without sediments.
Thanks for the quick response.
I am trying to set up an all analytical test ACC/Atlantic overturning model with sea ice (and maybe ice shelves). I will send you the setup when I get it working.
Thanks again,
John
- jivica
- Posts: 172
- Joined: Mon May 05, 2003 2:41 pm
- Location: The University of Western Australia, Perth, Australia
- Contact:
Re: Difference between trunk/ROMS and COAWST/ROMS with Qout
Hey both Johns,
Actually it is ivica and not ivicia
and if you remember we met at Canberra last year at IMOS/ACOMO when I showed you some ROMS data assimilation for WA...
Cheers,
Ivica@UWA
Actually it is ivica and not ivicia
and if you remember we met at Canberra last year at IMOS/ACOMO when I showed you some ROMS data assimilation for WA...
Cheers,
Ivica@UWA