Difference between revisions of "Kpp-oasis-mct"

 
Line 252: Line 252:
 
**<span style="font-family:monospace">ummodel/cfg/bld.cfg</span>'''
 
**<span style="font-family:monospace">ummodel/cfg/bld.cfg</span>'''
 
Add:
 
Add:
<syntaxhighlight>
+
<syntaxhighlight lang=text>
 
excl_dep                                              USE::mod_oasis_kinds
 
excl_dep                                              USE::mod_oasis_kinds
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 264: Line 264:
 
Runtime Crash:
 
Runtime Crash:
  
<syntaxhighlight>
+
<syntaxhighlight lang=text>
 
NEMO_NPROC  CICE_NPROC
 
NEMO_NPROC  CICE_NPROC
 
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Latest revision as of 22:38, 11 December 2019

Template:Stub This is a stub page and needs expansion

Couple KPP to UM using OASIS3-MCT

Changes to KPP

+++ Makefile    (working copy)
-FFLAGS=-fpp -xHost -O3 -r8 -I. -traceback -fp-model precise
+FFLAGS=-fpp -xHost -O3 -r8 -I. -traceback -fp-model precise -diag-disable 10010

-OASIS3_LIB=-lpsmile.MPI1 -lmpp_io
+OASIS3_LIB=-lpsmile.MPI1 -lmct -lmpeu -lscrip

+++ steves_3D_ocn.f     (working copy)
-      use mod_prism_proto
+      use mod_oasis

-      call prism_get_localcomm_proto(kpp_mpi_comm,mpierr)
+      call oasis_get_localcomm(kpp_mpi_comm,mpierr)

+++ init_oasis3.f       (working copy)
-      USE mod_kinds_model
-      USE mod_prism_proto
-      USE mod_prism_def_partition_proto
-      USE mod_prism_put_proto
-      USE mod_prism_get_proto
-      USE mod_prism_grids_writing
+      USE mod_oasis_kinds
+      USE mod_oasis

-      CALL prism_init_comp_proto(il_comp_id, cp_modnam, ierror)
-      IF (ierror .NE. PRISM_Ok) THEN
+      CALL oasis_init_comp(il_comp_id, cp_modnam, ierror)
+      IF (ierror .NE. OASIS_Ok) THEN
          WRITE(nuout,*) 'KPP: Received error from ',
-     +        'PRISM_Init_Comp_Proto = ',ierror
-         CALL prism_abort_proto(il_comp_id,'KPP init_oasis3.f','abort1')
+     +        'OASIS_Init_Comp_Proto = ',ierror
+         CALL oasis_abort(il_comp_id,'KPP init_oasis3.f','abort1')
          ! Can/should we call MIXED_ABORT here as well?
       ELSE
-         WRITE(nuout,*) 'KPP: Successful call to PRISM_Init_Comp_Proto'
+         WRITE(nuout,*) 'KPP: Successful call to OASIS_Init_Comp_Proto'
       ENDIF

       ! Get local communicator
-      CALL prism_get_localcomm_proto(il_commlocal,ierror)
-      IF (ierror .NE. PRISM_Ok) THEN
+      CALL oasis_get_localcomm(il_commlocal,ierror)
+      IF (ierror .NE. OASIS_Ok) THEN
          WRITE(nuout,*) 'KPP: Received error from ',
-     +        'PRISM_Get_LocalComm_Proto = ',ierror
+     +        'OASIS_Get_LocalComm_Proto = ',ierror
       ELSE
          WRITE(nuout,*) 'KPP: Successfully received local communicator'
       ENDIF
@@ -81,15 +81,15 @@

       ! Define the grids used by KPP (for master processor only)
       IF (il_rank .EQ. 0) THEN
-         CALL prism_start_grids_writing(il_flag)
+         CALL oasis_start_grids_writing(il_flag)
          IF (il_flag .EQ. 1) THEN
       ! Will we ever need to do this?  Do we need to support it?
             WRITE(nuout,*) 'KPP: il_flag=1, so we will write ',
-     +           'grids for PRISM'
-            CALL prism_terminate_grids_writing()
+     +           'grids for OASIS'
+            CALL oasis_terminate_grids_writing()
          ELSE
             WRITE(nuout,*) 'KPP: il_flag/=1, so we will not write ',
-     +           'grids for PRISM'
+     +           'grids for OASIS'
          ENDIF
       ENDIF

@@ -103,12 +103,12 @@
       il_paral ( clim_offset   ) = 0
       il_paral ( clim_length   ) = NX_GLOBE*NY_GLOBE

-      CALL prism_def_partition_proto(il_part_id,il_paral,ierror)
-      IF (ierror.NE.PRISM_Ok) THEN
+      CALL oasis_def_partition(il_part_id,il_paral,ierror)
+      IF (ierror.NE.OASIS_Ok) THEN
          WRITE(nuout,*) 'KPP: Received error from ',
-     +        'PRISM_Def_Partition_Proto = ',ierror
+     +        'OASIS_Def_Partition_Proto = ',ierror
       ELSE
-         WRITE(nuout,*) 'KPP: Called PRISM_Def_Partition_Proto'
+         WRITE(nuout,*) 'KPP: Called OASIS_Def_Partition_Proto'
       ENDIF

 #ifdef TOYCLIM /* For the OASIS3 toy model - Exchange 1D fields */
@@ -136,15 +136,15 @@
       cl_writ(6)='SVNOCEAN'

       DO i=1,jpfldout
-         CALL prism_def_var_proto(il_var_id_out(i),cl_writ(i),
-     +        il_part_id,il_var_nodims,PRISM_Out,il_var_shape,
-     +        PRISM_Real,ierror)
-         IF (ierror.NE.PRISM_Ok) THEN
+         CALL oasis_def_var(il_var_id_out(i),cl_writ(i),
+     +        il_part_id,il_var_nodims,OASIS_Out,il_var_shape,
+     +        OASIS_Real,ierror)
+         IF (ierror.NE.OASIS_Ok) THEN
             WRITE(nuout,*) 'KPP: Received error from ',
-     +           'PRISM_Def_Var_Proto = ',ierror,'for variable ',
+     +           'OASIS_Def_Var_Proto = ',ierror,'for variable ',
      +           cl_writ(i),' (output field)'
          ELSE
-            WRITE(nuout,*) 'KPP: Called PRISM_Def_Var_Proto for ',
+            WRITE(nuout,*) 'KPP: Called OASIS_Def_Var_Proto for ',
      +           'variable ',cl_writ(i),' (output field)'
          ENDIF
       ENDDO
@@ -163,25 +163,25 @@
       cl_read(11)='TAUY'

       DO i=1,jpfldin
-         CALL prism_def_var_proto(il_var_id_in(i),cl_read(i),
-     +        il_part_id,il_var_nodims,PRISM_In,il_var_shape,
-     +        PRISM_Real,ierror)
-         IF (ierror.NE.PRISM_Ok) THEN
+         CALL oasis_def_var(il_var_id_in(i),cl_read(i),
+     +        il_part_id,il_var_nodims,OASIS_In,il_var_shape,
+     +        OASIS_Real,ierror)
+         IF (ierror.NE.OASIS_Ok) THEN
             WRITE(nuout,*) 'KPP: Received error from ',
-     +           'PRISM_Def_Var_Proto = ',ierror,'for variable',
+     +           'OASIS_Def_Var_Proto = ',ierror,'for variable',
      +           cl_read(i),' (input field)'
          ELSE
-            WRITE(nuout,*) 'KPP: Called PRISM_Def_Var_Proto for ',
+            WRITE(nuout,*) 'KPP: Called OASIS_Def_Var_Proto for ',
      +           'variable ',cl_read(i),' (input field)'
          ENDIF
       ENDDO

-      CALL prism_enddef_proto(ierror)
-      IF (ierror.NE.PRISM_Ok) THEN
+      CALL oasis_enddef(ierror)
+      IF (ierror.NE.OASIS_Ok) THEN
          WRITE(nuout,*) 'KPP: Received error from ',
-     +        'PRISM_enddef_proto = ',ierror
+     +        'OASIS_enddef = ',ierror
       ELSE
-         WRITE(nuout,*) 'KPP: Called PRISM_Enddef_Proto'
+         WRITE(nuout,*) 'KPP: Called OASIS_Enddef_Proto'
       ENDIF

       RETURN

+++ couple_io_oasis3.f  (working copy)
-      USE mod_kinds_model
-      USE mod_prism_proto
-      USE mod_prism_def_partition_proto
-      USE mod_prism_put_proto
-      USE mod_prism_get_proto
-      USE mod_prism_grids_writing
+      USE mod_oasis_kinds
+      USE mod_oasis

@@ -28,6 +28,7 @@
 #include <times.com>
 #include <constants.com>
 #include <initialcon.com>
+      include "mpif.h"
 c
 c     Output variables on the KPP regional grid - returned to
 c     the calling routine (usually <fluxes>).
@@ -64,15 +65,15 @@
-      call prism_get_localcomm_proto(kpp_mpi_comm, ierror)
+      call oasis_get_localcomm(kpp_mpi_comm, ierror)
       if (ierror .ne. 0) then
-        call prism_abort_proto(il_comp_id,
+        call oasis_abort(il_comp_id,
      +      'couple_io_oasis3.f',
      +      'getcomm')
       end if
       call MPI_Comm_rank(kpp_mpi_comm, kpp_mpi_rank, ierror)
       if (ierror .ne. 0) then
-        call prism_abort_proto(il_comp_id,'couple_io_oasis3.f','rank')
+        call oasis_abort(il_comp_id,'couple_io_oasis3.f','rank')
       end if
-            CALL prism_get_proto(il_var_id_in(i),
+            CALL oasis_get(il_var_id_in(i),

-            IF (ierror.NE.PRISM_Ok .and. ierror .LT. PRISM_Recvd) THEN
+            IF (ierror.NE.OASIS_Ok .and. ierror .LT. OASIS_Recvd) THEN

-     +              'PRISM_Get_Proto =',ierror,' receiving variable ',
+     +              'OASIS_Get_Proto =',ierror,' receiving variable ',

-               CALL prism_abort_proto(il_comp_id,'couple_io_oasis3.f',
+               CALL oasis_abort(il_comp_id,'couple_io_oasis3.f',

@@ -191,15 +192,15 @@

-      USE mod_kinds_model
-      USE mod_prism_proto
-      USE mod_prism_def_partition_proto
-      USE mod_prism_put_proto
-      USE mod_prism_get_proto
-      USE mod_prism_grids_writing
+      USE mod_oasis_kinds
+      USE mod_oasis

@@ -418,22 +419,22 @@

-     +     'KPP: Calling PRISM_Put_Proto for variable ' // cl_writ(i) )
-         CALL prism_put_proto(il_var_id_out(i),
+     +     'KPP: Calling OASIS_Put_Proto for variable ' // cl_writ(i) )
+         CALL oasis_put(il_var_id_out(i),

-         IF (ierror.NE.PRISM_Ok.and.ierror.LT.PRISM_Sent) THEN
+         IF (ierror.NE.OASIS_Ok.and.ierror.LT.OASIS_Sent) THEN

-     +        'KPP: Received error from PRISM_Put_Proto =',ierror )
+     +        'KPP: Received error from OASIS_Put_Proto =',ierror )

-            CALL prism_abort_proto(il_comp_id,'couple_io_oasis3.f',
+            CALL oasis_abort(il_comp_id,'couple_io_oasis3.f',

-     +       'KPP: Successfully called PRISM_Put_Proto for variable ' //
+     +       'KPP: Successfully called OASIS_Put_Proto for variable ' //

-      USE mod_kinds_model
-      USE mod_prism_proto
+      USE mod_oasis_kinds
+      USE mod_oasis

-     +     'Calling prism_terminate_proto(ierror)' )
-      CALL prism_terminate_proto(ierror)
+     +     'Calling oasis_terminate(ierror)' )
+      CALL oasis_terminate(ierror)

-     +     'Called prism_terminate_proto(ierror)' )
-      IF (ierror .NE. PRISM_Ok) THEN
+     +     'Called oasis_terminate(ierror)' )
+      IF (ierror .NE. OASIS_Ok) THEN

-     +        'PRISM_Terminate_Proto =',ierror,
+     +        'OASIS_Terminate_Proto =',ierror,

Changes to UM

Mainly the configuration build:

    • ummodel/cfg/bld.cfg

Add:

excl_dep                                               USE::mod_oasis_kinds

and to tool::ldflags}} remove Template:-lmpp io and add {{-lmct -lscrip -lmpeu

    • umrecon/cfg/bld.cfg

to tool::ldflags}} remove Template:-lmpp io and add {{-lmct -lscrip -lmpeu

Current Crash

Runtime Crash:

NEMO_NPROC  CICE_NPROC
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     Version 7.3 template, Unified Model ,  Non-Operational
     Created by UMUI version 7.3
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
PATH used = /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin:
                    /short/w35/hxw599/UM_ROUTDIR//vaapb/bin:/projects/access/umdir/vn7.3/normal/scripts:
                    /projects/access/umdir/vn7.3/normal/exec:/projects/access/umdir/fcm1.4/bin:
                    /projects/access/umdir/vn7.3/normal/utils:/projects/access/umdir/bin:
                    /projects/access/umdir/vn7.3/bin:/projects/access/umdir/umui2.0/bin:
                    /projects/access/bin:/projects/access/umdir/vn7.3/normal/runscripts:
                    /apps/openmpi/wrapper:/apps/openmpi/1.8.2/bin:/apps/x11vnc/0.9.13/bin:
                    /opt/bin:/bin:/usr/bin:/opt/pbs/default/bin:/projects/access/bin/:/home/599/hxw599/bin:.
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     Job started at : Mon Nov  9 15:57:08 AEDT 2015
     Run started from UMUI
     Running from control files in /home/599/hxw599/umui_runs/vaapb-313155649
uamul (collab) - N48 KPP - sea ice
This job is running on machine r76,
using UM directory /projects/access/umdir,
*****'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Starting script :   qsexecute
   Starting time   :   Mon Nov  9 15:57:08 AEDT 2015
*****'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

KPP using 15 processors

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsexecute: Executing setup

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qssetup: Job terminated normally

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsexecute: Executing dump reconfiguration program

*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
RCF Executable : /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qxreconf
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsexecute: Executing model run

*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
UM Executable : /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/vaapb.exe
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

No OASIS3 angles file will be used.
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*
No existing rmp_* file directory specified
Any existing rmp_* files will be removed from
for safety
Generating rmp_* files at run time
NOTE: This will vastly increase your required run time
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*
cp: cannot stat `/short/w35/hxw599/vaapb/kpp-scripts//namcouple': No such file or directory
/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsexecute[888]: /short/w35/hxw599/vaapb/kpp-scripts//kpp_run_pre.ksh: not found [No such file or directory]
readline() on closed filehandle F0 at /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/OASIS3_kpp line 60.
readline() on closed filehandle F1 at /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/OASIS3_kpp line 120.
seconds total = 0
oasis_init_comp: Calling MPI_Init
... line repeated to a total of 48 times == number of UM cores

oasis_init_comp: Not Calling MPI_Init
... line repeated to a total of 15 times == number of KPP cores

forrtl: error (78): process killed (SIGTERM)
... (snip 47 um sigterms and 15 kpp sigterms)

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsexecute[1165]: /short/w35/hxw599/vaapb/kpp-scripts//kpp_run_post.ksh: not found [No such file or directo
ry]
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Ending script   :   qsexecute
   Completion code :   1
   Completion time :   Mon Nov  9 15:57:16 AEDT 2015
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
\n\n\n

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsmaster: Failed in qsexecute in model vaapb
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Starting script :   qsfinal
   Starting time   :   Mon Nov  9 15:57:16 AEDT 2015
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsfinal: Model vaapb - Error: No history files
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Ending script   :   qsfinal
   Completion code :   135
   Completion time :   Mon Nov  9 15:57:16 AEDT 2015
*****''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
\n\n\n

/short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/bin/qsmaster: failed in final in model vaapb
 <<<< Information about How Many Lines of Output follow >>>>
 73  lines in main OUTPUT file.
 0 lines of O/P from pe0.
 <<<<         Lines of Output Information ends          >>>>

 '''*   *   *  ''''''*  ''''''   *   *  ''''''*
*   *  *   *    *    *   *  *   *    *
*   *  *   *    *    *   *  *   *    *
*   *  *   *    *    *   *  *   *    *
*   *  *   *    *    ''''''   *   *    *
*   *  *   *    *    *      *   *    *
*   *  *   *    *    *      *   *    *
*   *  *   *    *    *      *   *    *
 '''*    '''*     *    *       '''*     *

****    '''*   ''''''*         '''*   *   *  ''''''*  ''''''   *   *  ''''''*
*   *  *   *  *            *   *  *   *    *    *   *  *   *    *
*   *  *      *            *   *  *   *    *    *   *  *   *    *
*   *  *      *            *   *  *   *    *    *   *  *   *    *
****   *      ''''''         *   *  *   *    *    ''''''   *   *    *
**     *      *            *   *  *   *    *    *      *   *    *
* *    *      *            *   *  *   *    *    *      *   *    *
*  *   *   *  *            *   *  *   *    *    *      *   *    *
*   *   '''*   *             '''*    '''*     *    *       '''*     *

qsexecute:  %RECONA% Atmosphere reconfiguration step

 =====================================================
 GCOM Version 3.3
 openmpi/1.6.5,intel-fc/12.1.9.293
 Using precision : 64bit INTEGERs and 64bit REALs
 Built at Thu Aug 29 20:23:42 EST 2013
 =====================================================

 Parallel Reconfiguration using                      1  processor(s)
 divided into a LPG with nproc_x=                     1 and nproc_y=
                     1

OPEN:  Claimed 32000512 Bytes (4000064 Words) for Buffering
OPEN:  Buffer Address is                   F6A41040
CLOSE: File /short/w48/bxp565/ancils/lsm_claudia Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/qrparm.soil Closed on Unit 12
CLOSE: File /short/w48/bxp565/ancils/lsm_claudia Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/qrparm.orog Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/cable_vegfrac_N48.anc Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/cable_vegfunc_N48.anc Closed on Unit 12
CLOSE: File /short/w48/bxp565/ancils/lfrac_claudia Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/qrparm.soil.dust Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/TRIP_riv_store_ancil2 Closed on Unit 12
CLOSE: File /projects/access/data/ancil/access-1.3/N48-cal360/riverrouting_access_v2 Closed on Unit 12
CLOSE: File /short/w35/hxw599/UM_ROUTDIR/hxw599/vaapb/vaapb.astart Closed on Unit 11
CLOSE: File /short/w48/dxd565/UM_ROUTDIR/dxd565/ualdd//um-dump.restart Closed on Unit 10

*   *  *     *         '''*   *   *  ''''''*  ''''''   *   *  ''''''*
*   *  '''   '''        *   *  *   *    *    *   *  *   *    *
*   *  * * * *        *   *  *   *    *    *   *  *   *    *
*   *  *  *  *        *   *  *   *    *    *   *  *   *    *
*   *  *     *        *   *  *   *    *    ''''''   *   *    *
*   *  *     *        *   *  *   *    *    *      *   *    *
*   *  *     *        *   *  *   *    *    *      *   *    *
*   *  *     *        *   *  *   *    *    *      *   *    *
 '''*   *     *         '''*    '''*     *    *       '''*     *

USING KPP_PRERUN

qsexecute: %MODEL% output follows:-

UMMACHINE =  ALTIX
false
USING LINUXMPP
ACCESSRUNCMD  -n 48 ./um7.3x : -n 15 ./toyoce
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 0.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
USING KPP_POSTRUN
/short/w35/hxw599/vaapb/kpp-scripts//kpp_run_post.ksh exited with error code 127
0+1 records in
0+1 records out
3787 bytes (3.8 kB) copied, 0.000257916 s, 14.7 MB/s