File indexing completed on 2026-10-08 05:08:18 UTC
view on githubraw file Latest commit 27256b2d on 2026-10-07 21:35:21 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
ab42872a05 Alis*0002 #include "CPP_OPTIONS.h"
0003
7b42436b38 Alis*0004 #undef MULTIPLE_RECORD_STATE_FILES
0005
a30418b6b9 Ed H*0006
9366854e02 Chri*0007
3365bdc872 Jean*0008
a30418b6b9 Ed H*0009
9366854e02 Chri*0010
5c43c390b6 Alis*0011 SUBROUTINE WRITE_STATE ( myTime, myIter, myThid )
a30418b6b9 Ed H*0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
3365bdc872 Jean*0025
a30418b6b9 Ed H*0026
0027
0028
0029
0030
3365bdc872 Jean*0031
0032
a30418b6b9 Ed H*0033
0034
3365bdc872 Jean*0035
a30418b6b9 Ed H*0036
0037
3365bdc872 Jean*0038
a30418b6b9 Ed H*0039
0040
0041
0042
ab42872a05 Alis*0043
9366854e02 Chri*0044
0045 IMPLICIT NONE
ab42872a05 Alis*0046 #include "SIZE.h"
0047 #include "EEPARAMS.h"
0048 #include "PARAMS.h"
3365bdc872 Jean*0049 #include "GRID.h"
d1b81ea0bc Jean*0050 #include "DYNVARS.h"
0051 #ifdef ALLOW_NONHYDROSTATIC
0052 #include "NH_VARS.h"
0053 #endif
f31930e56f Ed H*0054 #ifdef ALLOW_MNC
0055 #include "MNC_PARAMS.h"
0056 #endif
8a28092f34 Patr*0057
0fa2023ba5 Jean*0058 LOGICAL DIFFERENT_MULTIPLE
0059 EXTERNAL DIFFERENT_MULTIPLE
ab42872a05 Alis*0060 INTEGER IO_ERRCOUNT
0061 EXTERNAL IO_ERRCOUNT
0062
9366854e02 Chri*0063
ab42872a05 Alis*0064
0065
5c43c390b6 Alis*0066
0067 _RL myTime
ab42872a05 Alis*0068 INTEGER myThid
0069 INTEGER myIter
0070
9366854e02 Chri*0071
7b42436b38 Alis*0072 CHARACTER*(MAX_LEN_MBUF) suff
e508fdf6c2 Patr*0073 INTEGER iRec
7418e6b1e6 Jean*0074 #ifdef ALLOW_MNC
0075 CHARACTER*(1) pf
0076 #endif
9366854e02 Chri*0077
ab42872a05 Alis*0078
3365bdc872 Jean*0079 IF (
0fa2023ba5 Jean*0080 & DIFFERENT_MULTIPLE(dumpFreq,myTime,deltaTClock)
82d0948361 Jean*0081 & .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
0082 & myTime.EQ.startTime )
0083 & ) THEN
a30418b6b9 Ed H*0084 IF ( dumpFreq .EQ. 0.0 ) THEN
0085 iRec = 1
0086 ELSE
8f6bf732a8 Jean*0087 iRec = 1 + NINT( (myTime-startTime) / dumpFreq )
a30418b6b9 Ed H*0088 ENDIF
3365bdc872 Jean*0089
a30418b6b9 Ed H*0090
3365bdc872 Jean*0091
0092
ab42872a05 Alis*0093
a30418b6b9 Ed H*0094
0095 IF (snapshot_mdsio) THEN
ad3a31a87b Jean*0096
7b42436b38 Alis*0097 #ifdef MULTIPLE_RECORD_STATE_FILES
ad3a31a87b Jean*0098
a30418b6b9 Ed H*0099
0100
0101 CALL WRITE_REC_XYZ_RL( 'U', uVel,iRec,myIter,myThid)
0102 CALL WRITE_REC_XYZ_RL( 'V', vVel,iRec,myIter,myThid)
0103 CALL WRITE_REC_XYZ_RL( 'T', theta,iRec,myIter,myThid)
0104 CALL WRITE_REC_XYZ_RL( 'S', salt,iRec,myIter,myThid)
0105 CALL WRITE_REC_XY_RL('Eta',etaN,iRec,myIter,myThid)
0106 CALL WRITE_REC_XYZ_RL( 'W',wVel,iRec,myIter,myThid)
ab42872a05 Alis*0107 #ifdef ALLOW_NONHYDROSTATIC
a30418b6b9 Ed H*0108 IF (nonHydroStatic) THEN
0109 CALL WRITE_REC_XYZ_RL( 'PNH',phi_nh,iRec,myIter,myThid)
0110 ENDIF
7b42436b38 Alis*0111 #endif /* ALLOW_NONHYDROSTATIC */
ad3a31a87b Jean*0112 #ifdef NONLIN_FRSURF
a30418b6b9 Ed H*0113
0114
0115
ad3a31a87b Jean*0116 #endif /* NONLIN_FRSURF */
0117
0118 #else /* MULTIPLE_RECORD_STATE_FILES */
0119
a30418b6b9 Ed H*0120
0121
0122
8f6bf732a8 Jean*0123 IF ( rwSuffixType.EQ.0 ) THEN
0124 WRITE(suff,'(I10.10)') myIter
0125 ELSE
0126 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
0127 ENDIF
60e3924f90 Patr*0128
a30418b6b9 Ed H*0129 CALL WRITE_FLD_XYZ_RL( 'U.',suff,uVel,myIter,myThid)
0130 CALL WRITE_FLD_XYZ_RL( 'V.',suff,vVel,myIter,myThid)
0131 CALL WRITE_FLD_XYZ_RL( 'T.',suff,theta,myIter,myThid)
0132 CALL WRITE_FLD_XYZ_RL( 'S.',suff,salt,myIter,myThid)
0133 CALL WRITE_FLD_XY_RL('Eta.',suff,etaN,myIter,myThid)
0134 CALL WRITE_FLD_XYZ_RL( 'W.',suff,wVel,myIter,myThid)
901f12b7bc Jean*0135 IF ( storePhiHyd4Phys .OR. myIter.NE.nIter0 ) THEN
a30418b6b9 Ed H*0136 CALL WRITE_FLD_XYZ_RL('PH.',suff,totPhiHyd,myIter,myThid)
0137 ENDIF
60e3924f90 Patr*0138
9669509dca Jean*0139 IF ( fluidIsWater .AND. (myIter.NE.nIter0) ) THEN
a30418b6b9 Ed H*0140 CALL WRITE_FLD_XY_RL('PHL.',suff,phiHydLow,myIter,myThid)
0141 ENDIF
7b42436b38 Alis*0142 #ifdef ALLOW_NONHYDROSTATIC
a30418b6b9 Ed H*0143 IF (nonHydroStatic) THEN
982e105a17 Jean*0144 CALL WRITE_FLD_XYZ_RL( 'PNH.',suff,phi_nh,myIter,myThid )
0145 ENDIF
0146 IF ( selectNHfreeSurf.GE.1 ) THEN
0147 CALL WRITE_FLD_XY_RL( 'dPnh.',suff,dPhiNH,myIter,myThid )
a30418b6b9 Ed H*0148 ENDIF
7b42436b38 Alis*0149 #endif /* ALLOW_NONHYDROSTATIC */
ad3a31a87b Jean*0150 #ifdef NONLIN_FRSURF
a30418b6b9 Ed H*0151
0152
0153
ad3a31a87b Jean*0154 #endif /* NONLIN_FRSURF */
0155
7b42436b38 Alis*0156 #endif /* MULTIPLE_RECORD_STATE_FILES */
ab42872a05 Alis*0157
a30418b6b9 Ed H*0158 ENDIF
ab42872a05 Alis*0159
3bd1ac0e4a Ed H*0160 #ifdef ALLOW_MNC
a30418b6b9 Ed H*0161 IF (useMNC .AND. snapshot_mnc) THEN
60111aef93 Ed H*0162
0163 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
0164 pf(1:1) = 'D'
0165 ELSE
0166 pf(1:1) = 'R'
0167 ENDIF
0168
a30418b6b9 Ed H*0169
0170 CALL MNC_CW_SET_UDIM('state', -1, myThid)
987ff12cb6 Ed H*0171 CALL MNC_CW_RL_W_S('D','state',0,0,'T', myTime, myThid)
a30418b6b9 Ed H*0172 CALL MNC_CW_SET_UDIM('state', 0, myThid)
987ff12cb6 Ed H*0173 CALL MNC_CW_I_W_S('I','state',0,0,'iter', myIter, myThid)
0174
60111aef93 Ed H*0175 CALL MNC_CW_RL_W(pf,'state',0,0,'U', uVel, myThid)
0176 CALL MNC_CW_RL_W(pf,'state',0,0,'V', vVel, myThid)
0177 CALL MNC_CW_RL_W(pf,'state',0,0,'Temp', theta, myThid)
0178 CALL MNC_CW_RL_W(pf,'state',0,0,'S', salt, myThid)
0179 CALL MNC_CW_RL_W(pf,'state',0,0,'Eta', etaN, myThid)
0180 CALL MNC_CW_RL_W(pf,'state',0,0,'W', wVel, myThid)
901f12b7bc Jean*0181 IF ( storePhiHyd4Phys .OR. myIter.NE.nIter0 ) THEN
a30418b6b9 Ed H*0182 CALL MNC_CW_SET_UDIM('phiHyd', -1, myThid)
987ff12cb6 Ed H*0183 CALL MNC_CW_RL_W_S('D','phiHyd',0,0,'T',myTime,myThid)
a30418b6b9 Ed H*0184 CALL MNC_CW_SET_UDIM('phiHyd', 0, myThid)
987ff12cb6 Ed H*0185 CALL MNC_CW_I_W_S('I','phiHyd',0,0,'iter',myIter,myThid)
60111aef93 Ed H*0186 CALL MNC_CW_RL_W(pf,'phiHyd',0,0,'phiHyd',
a30418b6b9 Ed H*0187 & totPhiHyd, myThid)
0188 ENDIF
9669509dca Jean*0189 IF ( fluidIsWater .AND. (myIter .NE. nIter0) ) THEN
a30418b6b9 Ed H*0190 CALL MNC_CW_SET_UDIM('phiHydLow', -1, myThid)
987ff12cb6 Ed H*0191 CALL MNC_CW_RL_W_S('D','phiHydLow',0,0,'T', myTime, myThid)
0192 CALL MNC_CW_SET_UDIM('phiHydLow', 0, myThid)
0193 CALL MNC_CW_I_W_S('I','phiHydLow',0,0,'iter',myIter,myThid)
60111aef93 Ed H*0194 CALL MNC_CW_RL_W(pf,'phiHydLow',0,0,'phiHydLow',
a30418b6b9 Ed H*0195 & phiHydLow, myThid)
0196 ENDIF
353773d087 Ed H*0197 #ifdef ALLOW_NONHYDROSTATIC
a30418b6b9 Ed H*0198 IF (nonHydroStatic) THEN
60111aef93 Ed H*0199 CALL MNC_CW_RL_W(pf,'state',0,0,'phi_nh',phi_nh,myThid)
a30418b6b9 Ed H*0200 ENDIF
353773d087 Ed H*0201 #endif /* ALLOW_NONHYDROSTATIC */
a30418b6b9 Ed H*0202 ENDIF
353773d087 Ed H*0203 #endif /* ALLOW_MNC */
3365bdc872 Jean*0204
ab42872a05 Alis*0205 ENDIF
0206
0207 RETURN
0208 END