/[MITgcm]/MITgcm_contrib/bbl/code/mypackage_write_pickup.F
ViewVC logotype

Annotation of /MITgcm_contrib/bbl/code/mypackage_write_pickup.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Thu Nov 18 04:00:05 2010 UTC (14 years, 7 months ago) by dimitri
Branch: MAIN
This is a first sketch of a bottom boundary layer parameterization
for MITgcm.  The hooks to main model currently reside with pkg/mypackage
and it is temporarily checked in MITgcm_contrib until it clears the
App Store vetting process.  Instructions on running a simple test
integration in a periodic channel are in MITgcm_contrib/bbl/readme.txt
and some output can be viewed using lookat_output.m in same directory.

1 dimitri 1.1 C $Header: $
2     C $Name: $
3    
4     #include "BBL_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: BBL_WRITE_PICKUP
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE MYPACKAGE_WRITE_PICKUP( permPickup,
11     & suff, myTime, myIter, myThid )
12    
13     C !DESCRIPTION:
14     C Writes current state of passive tracers to a pickup file
15    
16     C !USES: ===============================================================
17     IMPLICIT NONE
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21     #include "BBL.h"
22    
23     C !INPUT PARAMETERS: ===================================================
24     C permPickup :: write a permanent pickup
25     C suff :: suffix for pickup file (eg. ckptA or 0000000010)
26     C myTime :: model time
27     C myIter :: time-step number
28     C myThid :: thread number
29     LOGICAL permPickup
30     CHARACTER*(*) suff
31     _RL myTime
32     INTEGER myIter
33     INTEGER myThid
34    
35     C !OUTPUT PARAMETERS: ==================================================
36     C none
37    
38     #ifdef ALLOW_BBL
39    
40     C === Functions ====
41     INTEGER ILNBLNK
42     EXTERNAL ILNBLNK
43    
44     C !LOCAL VARIABLES: ====================================================
45     C j :: loop index / field number
46     C nj :: record number
47     C fp :: pickup-file precision
48     C glf :: local flag for "globalFiles"
49     C fn :: character buffer for creating filename
50     C nWrFlds :: number of fields being written
51     C listDim :: dimension of "wrFldList" local array
52     C wrFldList :: list of written fields
53     C msgBuf :: Informational/error message buffer
54     INTEGER j, nj, fp, lChar
55     LOGICAL glf
56     CHARACTER*(MAX_LEN_FNAM) fn
57     INTEGER listDim, nWrFlds
58     PARAMETER( listDim = 3 )
59     CHARACTER*(8) wrFldList(listDim)
60     CHARACTER*(MAX_LEN_MBUF) msgBuf
61     CEOP
62    
63     lChar = ILNBLNK(suff)
64     IF ( lChar.EQ.0 ) THEN
65     WRITE(fn,'(2A)') 'pickup_bbl'
66     ELSE
67     WRITE(fn,'(2A)') 'pickup_bbl.',suff(1:lChar)
68     ENDIF
69     fp = precFloat64
70     j = 0
71    
72     C Write 2-D fields
73     C record number < 0 : a hack not to write meta files now:
74    
75     j = j + 1
76     CALL WRITE_REC_3D_RL( fn, fp, 1,
77     & bbl_theta, -j, myIter, myThid )
78     IF (j.LE.listDim) wrFldList(j) = 'bblTheta'
79    
80     j = j + 1
81     CALL WRITE_REC_3D_RL( fn, fp, 1,
82     & bbl_salt, -j, myIter, myThid )
83     IF (j.LE.listDim) wrFldList(j) = 'bblSalt'
84    
85     j = j + 1
86     CALL WRITE_REC_3D_RL( fn, fp, 1,
87     & bbl_eta, -j, myIter, myThid )
88     IF (j.LE.listDim) wrFldList(j) = 'bblEta'
89    
90     C--------------------------
91     nWrFlds = j
92     IF ( nWrFlds.GT.listDim ) THEN
93     WRITE(msgBuf,'(2A,I5,A)') 'BBL_WRITE_PICKUP: ',
94     & 'trying to write ',nWrFlds,' fields'
95     CALL PRINT_ERROR( msgBuf, myThid )
96     WRITE(msgBuf,'(2A,I5,A)') 'BBL_WRITE_PICKUP: ',
97     & 'field-list dimension (listDim=',listDim,') too small'
98     CALL PRINT_ERROR( msgBuf, myThid )
99     STOP 'ABNORMAL END: S/R BBL_WRITE_PICKUP (list-size Pb)'
100     ENDIF
101     #ifdef ALLOW_MDSIO
102     C uses this specific S/R to write meta file
103     j = 1
104     nj = ABS(nj)
105     IF ( nWrFlds*Nr .EQ. nj ) THEN
106     j = Nr
107     nj = nWrFlds
108     ENDIF
109     glf = globalFiles
110     CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
111     & 0, 0, j, ' ',
112     & nWrFlds, wrFldList,
113     & 1, myTime,
114     & nj, myIter, myThid )
115     #endif /* ALLOW_MDSIO */
116     C--------------------------
117    
118     #endif /* ALLOW_BBL */
119    
120     RETURN
121     END

  ViewVC Help
Powered by ViewVC 1.1.22