[MITgcm-devel] pdaf in mitgcm

Martin Losch Martin.Losch at awi.de
Thu Jun 15 14:12:50 EDT 2017


Yes, would need to go into CCP_EEOPTIONS.h. I want to have the least incision, so Iam going for use_pdaf instead of allow_ ... etc. I hope that's Ok.
Martin 

> On 14. Jun 2017, at 21:24, gael forget <gforget at mit.edu> wrote:
> 
> Hi Martin,
> sounds good to me too. 
> Cheers,
> Gael
> 
>> On Jun 14, 2017, at 11:41 AM, Jean-Michel Campin <jmc at mit.edu> wrote:
>> 
>> Hi Martin,
>> 
>> I think it would be good to have this checked-in.
>> I did not look too much to the details but the option:
>> USE_PDAF
>> would have to be defined in CPP_EEOPTIONS.h I guess ?
>> 
>> Cheers,
>> Jean-Michel
>> 
>>> On Tue, Jun 13, 2017 at 02:52:45PM +0200, Martin Losch wrote:
>>> Hi all,
>>> we use a sequential data assimilation framework (PDAF: http://pdaf.awi.de/trac/wiki) with the MITgcm. It requires minimal changes to the code (in eeboot_minimal.F and the_main_loop.F), where PDAF routines are called (currently enclosed with new CPP flag USE_PDAF). PDAF is freely available and Lars (the developer) will post example applications with the MITgcm very soon.
>>> 
>>> I would like to add our version of eeboot_minimal.F and the_main_loop.F to main repository, so that it is easier to maintain PDAF+MITgcm for use.
>>> 
>>> Any objections,
>>> 
>>> Martin
>>> 
>>> PS. below are the differences to current code (contextual diff):
>>> 
>>> Index: model/src/the_main_loop.F
>>> ===================================================================
>>> RCS file: /u/gcmpack/MITgcm/model/src/the_main_loop.F,v
>>> retrieving revision 1.181
>>> diff -u -r1.181 the_main_loop.F
>>> --- model/src/the_main_loop.F    20 Mar 2017 19:38:16 -0000    1.181
>>> +++ model/src/the_main_loop.F    13 Jun 2017 12:34:49 -0000
>>> @@ -1,5 +1,5 @@
>>> C $Header: /u/gcmpack/MITgcm/model/src/the_main_loop.F,v 1.181 2017/03/20 19:38:16 mmazloff Exp $
>>> -C $Name:  $
>>> +C $Name: BASE $
>>> 
>>> #include "PACKAGES_CONFIG.h"
>>> #include "CPP_OPTIONS.h"
>>> @@ -340,6 +340,13 @@
>>> c     >>>>>>>>>>>>>>>>>>>>>>>>>>>   LOOP   <<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> c     >>>>>>>>>>>>>>>>>>>>>>>>>>>  STARTS  <<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> 
>>> +#ifdef USE_PDAF
>>> +c     Initialize PDAF
>>> +      CALL TIMER_START('INIT_PDAF           [THE_MAIN_LOOP]', myThid)
>>> +      CALL init_pdaf( nIter0, myTime, myIter, myThid )
>>> +      CALL TIMER_STOP ('INIT_PDAF           [THE_MAIN_LOOP]', myThid)
>>> +#endif
>>> +
>>> c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> #ifndef ALLOW_OPENAD
>>> # ifdef ALLOW_AUTODIFF
>>> @@ -609,6 +616,13 @@
>>>      CALL MAIN_DO_LOOP( iloop, myTime, myIter, myThid )
>>>      CALL TIMER_STOP ('MAIN_DO_LOOP        [THE_MAIN_LOOP]', myThid)
>>> 
>>> +#ifdef USE_PDAF
>>> +C     PDAF analysis step
>>> +      CALL TIMER_START('ASSIMILATE_PDAF     [THE_MAIN_LOOP]', myThid)
>>> +      CALL assimilate_pdaf( myTime, myIter, myThid )
>>> +      CALL TIMER_STOP ('ASSIMILATE_PDAF     [THE_MAIN_LOOP]', myThid)
>>> +#endif
>>> +
>>> c--     >>> Loop body end <<<
>>> #ifndef ALLOW_OPENAD
>>> # ifdef ALLOW_AUTODIFF
>>> 
>>> Index: eesupp/src/eeboot_minimal.F
>>> ===================================================================
>>> RCS file: /u/gcmpack/MITgcm/eesupp/src/eeboot_minimal.F,v
>>> retrieving revision 1.29
>>> diff -u -r1.29 eeboot_minimal.F
>>> --- eesupp/src/eeboot_minimal.F    28 Jan 2017 18:39:06 -0000    1.29
>>> +++ eesupp/src/eeboot_minimal.F    13 Jun 2017 12:35:37 -0000
>>> @@ -1,5 +1,5 @@
>>> C $Header: /u/gcmpack/MITgcm/eesupp/src/eeboot_minimal.F,v 1.29 2017/01/28 18:39:06 jmc Exp $
>>> -C $Name:  $
>>> +C $Name: BASE $
>>> 
>>> #include "PACKAGES_CONFIG.h"
>>> #include "CPP_EEOPTIONS.h"
>>> @@ -48,7 +48,11 @@
>>> C     fNam       :: Used to build file name for standard and error output.
>>> C     msgBuf     :: Used to build messages for printing.
>>>      INTEGER myThid
>>> +#ifdef USE_PDAF
>>> +      CHARACTER*18 fNam
>>> +#else
>>>      CHARACTER*13 fNam
>>> +#endif /* USE_PDAF */
>>>      CHARACTER*(MAX_LEN_MBUF) msgBuf
>>> #ifdef ALLOW_USE_MPI
>>> C     mpiRC      :: Error code reporting variable used with MPI.
>>> @@ -61,6 +65,9 @@
>>> #if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
>>>      INTEGER mpiMyWid, color
>>> #endif
>>> +#ifdef USE_PDAF
>>> +      INTEGER mpi_task_id
>>> +#endif /* USE_PDAF */
>>> #endif /* ALLOW_USE_MPI */
>>> CEOP
>>> 
>>> @@ -124,6 +131,13 @@
>>>       ENDIF
>>> 
>>>       doReport = .FALSE.
>>> +#ifdef USE_PDAF
>>> +C     initialize PDAF
>>> +C     for more output increase second parameter from 1 to 2
>>> +       CALL init_parallel_pdaf(0, 1, MPI_COMM_MODEL, MPI_COMM_MODEL,
>>> +     &      mpi_task_id)
>>> +#endif /* USE_PDAF */
>>> +
>>> #ifdef ALLOW_OASIS
>>> C      add a 1rst preliminary call EESET_PARAMS to set useOASIS
>>> C      (needed to decide either to call OASIS_INIT or not)
>>> @@ -169,7 +183,11 @@
>>>        GOTO 999
>>>       ENDIF
>>>       myProcId = mpiMyId
>>> +#ifdef USE_PDAF
>>> +       WRITE(myProcessStr,'(I4.4,A1,I4.4)') mpi_task_id,'.',myProcId
>>> +#else
>>>       WRITE(myProcessStr,'(I4.4)') myProcId
>>> +#endif /* USE_PDAF */
>>>       mpiPidIo = myProcId
>>>       pidIO    = mpiPidIo
>>>       IF ( mpiPidIo .EQ. myProcId ) THEN
>>> @@ -177,8 +195,14 @@
>>>        IF( myProcId .EQ. 0 ) THEN
>>> #endif
>>>         WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:4)
>>> +#ifdef USE_PDAF
>>> +         WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:9)
>>> +#endif
>>>         OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
>>>         WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:4)
>>> +#ifdef USE_PDAF
>>> +         WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:9)
>>> +#endif
>>>         OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
>>> #ifdef SINGLE_DISK_IO
>>>        ELSE
>>> 
>>> 
>>> _______________________________________________
>>> MITgcm-devel mailing list
>>> MITgcm-devel at mitgcm.org
>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>> 
>> _______________________________________________
>> MITgcm-devel mailing list
>> MITgcm-devel at mitgcm.org
>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel



More information about the MITgcm-devel mailing list