C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_pickup.F,v 1.9 2004/12/27 20:34:11 dimitri Exp $
C $Name: $
#include "SEAICE_OPTIONS.h"
C-- File seaice_pickup.F: Routines to handle reading and writing
C-- sea ice pickup files.
C-- Contents
C-- o SEAICE_READ_PICKUP - Read sea ice pickup file for restarting.
C-- o SEAICE_WRITE_PICKUP - Write out sea ice pickup file.
CStartofinterface
SUBROUTINE SEAICE_READ_PICKUP ( myThid )
C /==========================================================\
C | SUBROUTINE SEAICE_READ_PICKUP |
C | o Read in sea ice pickup file for restarting. |
C |==========================================================|
C \==========================================================/
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "SEAICE.h"
C == Routine arguments ==
C myThid - Thread number for this instance of the routine.
INTEGER myThid
CEndofinterface
C == Local variables ==
CHARACTER*(MAX_LEN_FNAM) fn
C-- Going to do some IO. Make everyone except master thread wait.
_BARRIER
_BEGIN_MASTER( myThid )
C-- Read ice model fields
WRITE(fn,'(A,I10.10)') 'pickup_seaice.',nIter0
#ifdef SEAICE_MULTILEVEL
CALL MDSREADFIELD
& ( fn, precFloat64, 'RL', MULTDIM, TICES, 1, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 1, YNEG , 8, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 1, HSNOW, 9, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, UICE , 4, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, VICE , 5, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, HEFF , 6, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, AREA , 7, myThid )
#else /* SEAICE_MULTILEVEL */
CALL MDSREADFIELD( fn, precFloat64, 'RL', 1, TICE , 1, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 1, YNEG , 2, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 1, HSNOW, 3, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, UICE , 2, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, VICE , 3, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, HEFF , 4, myThid )
CALL MDSREADFIELD( fn, precFloat64, 'RL', 3, AREA , 5, myThid )
#endif /* SEAICE_MULTILEVEL */
_END_MASTER( myThid )
_BARRIER
C-- Update overlap regions
CALL SEAICE_EXCH_UV ( UICE, VICE, myThid )
CALL SEAICE_EXCH ( HEFF, myThid )
CALL SEAICE_EXCH ( AREA, myThid )
_EXCH_XY_R8(TICE , myThid )
_EXCH_XY_R8(YNEG , myThid )
_EXCH_XY_R8(HSNOW, myThid )
RETURN
END
CStartofinterface
SUBROUTINE SEAICE_WRITE_PICKUP (
I prec, lgf, permCheckPoint, myIt, myThid )
C /==========================================================\
C | SUBROUTINE SEAICE_WRITE_PICKUP |
C | o Write sea ice pickup file for restarting. |
C |==========================================================|
C \==========================================================/
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "SEAICE.h"
C == Routine arguments ==
C prec - Precision of pickup file ( precFloat64 )
C lgf - Flag to indicate whether to use global file mode.
C permCheckPoint - Flag indicating whether a permanent checkpoint
C will be written.
C myIt - Iteration number
C myThid - Thread number for this instance of the routine.
INTEGER prec
LOGICAL permCheckPoint
INTEGER myThid
INTEGER myIt
CEndofinterface
C == Local variables ==
CHARACTER*(MAX_LEN_FNAM) fn
LOGICAL lgf
C-- Write model fields
IF ( permCheckPoint ) THEN
WRITE(fn,'(A,I10.10)') 'pickup_seaice.',myIt
ELSE
WRITE(fn,'(A,A)') 'pickup_seaice.',checkPtSuff(nCheckLev)
ENDIF
#ifdef SEAICE_MULTILEVEL
CALL MDSWRITEFIELD
& (fn,prec,lgf,'RL', MULTDIM, TICES,1, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1, YNEG, 8, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1, HSNOW, 9, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, UICE, 4, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, VICE, 5, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, HEFF, 6, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, AREA, 7, myIt,myThid)
#else /* SEAICE_MULTILEVEL */
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1, TICE, 1, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1, YNEG, 2, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 1, HSNOW, 3, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, UICE, 2, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, VICE, 3, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, HEFF, 4, myIt,myThid)
CALL MDSWRITEFIELD(fn,prec,lgf,'RL', 3, AREA, 5, myIt,myThid)
#endif /* SEAICE_MULTILEVEL */
RETURN
END