[Ncep.list.wwatch3.discussion-group] WWIII Notes - Weds, May 18, 2018

Jessica Meixner - NOAA Federal jessica.meixner at noaa.gov
Wed Jun 20 21:34:23 UTC 2018


WWIII Notes - Weds, May 16, 2018

Hi Everyone,

Here are the very belated meeting notes from May when we had a discussion
lead by Aron Roland.

Updates on projects intended for next public release:

   -

   I have confirmed with everyone that their intended projects are all
   listed as “versions” on the raodmap on redmine:
   https://vlab.ncep.noaa.gov/redmine/projects/emc-ww3/roadmap and that
   November is a good time for a public release.
   -

   6.XX Bit Reproducibility
   <https://vlab.ncep.noaa.gov/redmine/versions/1381>

-- First issue has been narrowed down to be caused during the
reconciliation between two grids with the same rank.  MPI barriers seem to
be helping.

-- Still have other issues: ww3_gint, ww3_tp2.5 mod_defs are not
bit-reproducible, point output in multigird

   -

   6.XX Namelist format for input files
   <https://vlab.ncep.noaa.gov/redmine/versions/1353>

-- A commit is ready for the master adding netcdf pre/post, shel namelist

-- Mickael is now working on grid

   -

   No other Updates


Here are the action items for moving forward after the discussion lead by
Aron Roland:


*1. Design for replacing go to error statements:  *
More descriptive errors than for situations like this where the following
two lines of code produce the same error messages:

       READ(NDS,NML=OUTS,END=801,ERR=802,IOSTAT=J)

     READ(NDS,NML=MISC,END=801,ERR=802,IOSTAT=J)

Which both print out the same error message “ERROR IN READNL”, not which
namelist.


A proposed alternative would be to do:

      READ(NDS,NML=MISC,END=801,IOSTAT=J)

Error message with a GO TO, for example in ww3_bound.ftn:

    ! Checks consistency of NK

     IF (NKI.GT.NK) GOTO 2008

2008 CONTINUE

     WRITE (NDSE,1008) NK, NKI

     CALL EXTCDE ( 68 )

1008 FORMAT (/' *** WAVEWATCH III ERROR IN W3BOUND: '/               &

              ' ILLEGAL NK, NK =',I3,' DIFFERS FROM NKI =',I3/   &

              ' IT WILL BE MANAGED SOON BY SPCONV')

Sometimes many errors we will have the same “GOTO 2008”

A proposed alternative would be to do:

! Checks consistency of NK

     IF (NKI.GT.NK)

          WRITE (NDSE,1008) NK, NKI !note 1008 should only be used once

          CALL EXTCDE ( 68 )

      END IF


*2. Proposed design for Interface for data types:*

   1.

      This would be to remove the “USE   XXX” and instead create and pass
      data structures into subroutines, for example:

       w3srce(igrid(i)%src_type)

instead of

   w3srce(var1,var2,var3)

   1.

      The thought would be to start with w3srce.
      2.

      We should keep in mind the needs for these data types for data
      assimilation requirements in the Joint Effort for Data assimilation
      Integration (JEDI) that NOAA is involved with. JEDI requires that the
      geometry and the fields have to be independent.  Specifically this
      means:
      1.

         geometry (whatever I need to allocate my variables): nlon, nlat,
         nfrq, ndir, grid(s), spec_grid(s).
         2.

         fields  (whatever needed to run the assimilation): In principle,
         the content of the restart file.
         3.

         etc     (whatever is useful for specific tasks): the content of
         the moddef. If this can be separated into multiple structures
according to
         the content, e.g. coordinates, constants, physic_package_ related
         variables, etc.


*3. Moving allocates earlier: *

   1.

      Can make branch now
      2.

      Start w/ data modules w3*datmd.ftn
      3.

      Example:

         IF ( FLCUR  ) THEN

             ALLOCATE ( WADATS(IMOD)%CA0(NSEA) ,           &

                        WADATS(IMOD)%CAI(NSEA) ,          &

                        WADATS(IMOD)%CD0(NSEA) ,          &

                        WADATS(IMOD)%CDI(NSEA) ,          &

                        STAT=ISTAT )

!AR: If u really want to check the status of the allocation u must put this
call after initialization! Now it means nothing ...

             CHECK_ALLOC_STATUS ( ISTAT )

           END IF

Instead:

 IF ( FLCUR  ) THEN

             ALLOCATE ( WADATS(IMOD)%CA0(NSEA)); WADATS(IMOD)%CA0(NSEA)=0.0
(appropraite kind)

CHECK_ALLOC_STATUS ( ISTAT )


,           &

                        WADATS(IMOD)%CAI(NSEA) ,          &

                        WADATS(IMOD)%CD0(NSEA) ,          &

                        WADATS(IMOD)%CDI(NSEA) ,          &

                        STAT=ISTAT )

!AR: If u really want to check the status of the allocation u must put this
call after initialization! Now it means nothing ...

             CHECK_ALLOC_STATUS ( ISTAT )

           END IF

   1.

      Plot of memory spikes and how to use memcheck, will be forthcoming
      from Aron.

*4. CPP Flags: *

   1.

      The proposed time frame for this would be after public release,
      because it will be best to do this when as little development as possible
      is going on.  We need to remember to consider the projects that did not
      make it into the public release.

*5. File handles:*

   1.

      This is for the write statements and opening files.  We need to be
      careful with this for when in coupled systems.

*6. Data assimilation update needs, from Stelios: *

   1.

      Above data structures would be helpful as well as a slightly more
      compartmentalized wminit that separates data initialization from geometry
      initialization.



I have started a wiki page for all of these topics.  Please see:
https://vlab.ncep.noaa.gov/redmine/projects/emc-ww3/wiki/Proposed_strategies_for_code_improvements

Best,
Jessica

-- 
Jessica Meixner
NCEP/EMC
NOAA Center for Weather and Climate Prediction
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.lstsrv.ncep.noaa.gov/pipermail/ncep.list.wwatch3.discussion-group/attachments/20180620/31b3a72e/attachment-0001.html 


More information about the Ncep.list.wwatch3.discussion-group mailing list