C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_write_pickup.F,v 1.3 2008/05/09 21:43:16 jmc Exp $
C $Name: $
#include "GAD_OPTIONS.h"
CBOP
C !ROUTINE: GAD_WRITE_PICKUP
C !INTERFACE: ==========================================================
SUBROUTINE GAD_WRITE_PICKUP( suff,
I myTime, myIter, myThid )
C !DESCRIPTION:
C Writes current state of 2nd.Order moments to a pickup file
C !USES: ===============================================================
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GAD.h"
#include "GAD_SOM_VARS.h"
#ifdef ALLOW_MNC
#include "MNC_PARAMS.h"
#endif
C !INPUT PARAMETERS: ===================================================
C suff :: suffix for pickup file (eg. ckptA or 0000000010)
C myTime :: model time
C myIter :: time-step number
C myThid :: thread number
CHARACTER*(*) suff
_RL myTime
INTEGER myIter
INTEGER myThid
C !OUTPUT PARAMETERS: ==================================================
C none
#ifdef GAD_ALLOW_TS_SOM_ADV
C === Functions ====
INTEGER ILNBLNK
EXTERNAL
C !LOCAL VARIABLES: ====================================================
C n :: 2nd.O. moment loop index
C iRec :: record number
C fn :: character buffer for creating filename
C prec :: precision of pickup files
C msgBuf :: Informational/error meesage buffer
INTEGER n,prec,iRec,lChar
CHARACTER*(MAX_LEN_FNAM) fn
#ifdef ALLOW_MNC
CHARACTER*(MAX_LEN_MBUF) msgBuf
#endif
CEOP
#ifdef ALLOW_MNC
IF ( useMNC .AND. pickup_write_mnc ) THEN
IF ( tempSOM_Advection .OR. saltSOM_Advection ) THEN
WRITE(msgBuf,'(A)') 'GAD_WRITE_PICKUP: MNC not yet coded',
& ' => write bin file instead'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT, myThid)
ENDIF
ENDIF
#endif /* ALLOW_MNC */
c IF ( pickup_write_mdsio ) THEN
IF ( .TRUE. ) THEN
lChar = ILNBLNK(suff)
IF ( tempSOM_Advection ) THEN
C-- Pot. Temp. 2nd.Order moments
IF ( lChar.EQ.0 ) THEN
WRITE(fn,'(2A)') 'pickup_somT'
ELSE
WRITE(fn,'(2A)') 'pickup_somT.',suff(1:lChar)
ENDIF
prec = precFloat64
C Write 2nd Order moments as consecutive records
DO n=1,nSOM
iRec = n
CALL WRITE_REC_3D_RL( fn, prec, Nr,
I som_T(1-Olx,1-Oly,1,1,1,n),
I iRec, myIter, myThid )
ENDDO
ENDIF
IF ( saltSOM_Advection ) THEN
C-- Salinity 2nd.Order moments
IF ( lChar.EQ.0 ) THEN
WRITE(fn,'(2A)') 'pickup_somS'
ELSE
WRITE(fn,'(2A)') 'pickup_somS.',suff(1:lChar)
ENDIF
prec = precFloat64
C Write 2nd Order moments as consecutive records
DO n=1,nSOM
iRec = n
CALL WRITE_REC_3D_RL( fn, prec, Nr,
I som_S(1-Olx,1-Oly,1,1,1,n),
I iRec, myIter, myThid )
ENDDO
ENDIF
ENDIF
#endif /* GAD_ALLOW_TS_SOM_ADV */
RETURN
END