Back to home page

MITgcm

 
 

    


File indexing completed on 2025-11-07 06:08:54 UTC

view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
fc7306ba7d Jean*0001 #include "THSICE_OPTIONS.h"
                0002 
87ea84cac6 Jean*0003 CBOP
c3c45044a0 Jean*0004 C     !ROUTINE: THSICE_OUTPUT
87ea84cac6 Jean*0005 C     !INTERFACE:
c3c45044a0 Jean*0006       SUBROUTINE THSICE_OUTPUT( myTime, myIter, myThid )
87ea84cac6 Jean*0007 
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
c3c45044a0 Jean*0010 C     | S/R THSICE_OUTPUT
                0011 C     | o general routine for ThSIce output
87ea84cac6 Jean*0012 C     *==========================================================*
c3c45044a0 Jean*0013 C     | - write time-average & snap-shot output
                0014 C     | - call monitor to write global quantities
87ea84cac6 Jean*0015 C     *==========================================================*
                0016 C     \ev
                0017 
                0018 C     !USES:
fc7306ba7d Jean*0019       IMPLICIT NONE
                0020 
                0021 C     === Global variables ===
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
                0025 #include "THSICE_PARAMS.h"
87ea84cac6 Jean*0026 #include "THSICE_VARS.h"
fc7306ba7d Jean*0027 
87ea84cac6 Jean*0028 C     !INPUT/OUTPUT PARAMETERS:
fc7306ba7d Jean*0029 C     == Routine arguments ==
c3c45044a0 Jean*0030 C     myTime :: Current time of simulation ( s )
                0031 C     myIter :: Iteration number
                0032 C     myThid :: my Thread Id number
fc7306ba7d Jean*0033       _RL     myTime
                0034       INTEGER myIter
                0035       INTEGER myThid
87ea84cac6 Jean*0036 CEOP
fc7306ba7d Jean*0037 
                0038 #ifdef ALLOW_THSICE
                0039 
a444616fe4 Jean*0040 C     !FUNCTIONS:
94a46dfe0d Jean*0041       LOGICAL  DIFFERENT_MULTIPLE
                0042       EXTERNAL DIFFERENT_MULTIPLE
a444616fe4 Jean*0043 
                0044 C     !LOCAL VARIABLES:
af20bc5e19 Jean*0045       CHARACTER*(10) suff
7c9cf9d5bc Jean*0046 #ifdef ALLOW_MNC
df4e8f7bcf Ed H*0047       INTEGER i
                0048       CHARACTER*(MAX_LEN_MBUF) mncf
b22b541fe9 Ed H*0049       CHARACTER*(1) pf
df4e8f7bcf Ed H*0050 #endif
fc7306ba7d Jean*0051 
                0052 C     Dump a snap-shot of main state variables:
332055f833 Jean*0053       IF (
b17871c70b Jean*0054      &     DIFFERENT_MULTIPLE( thSIce_diagFreq, myTime, deltaTClock )
                0055      &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
                0056      &                             myTime.EQ.startTime  )
                0057      &   ) THEN
60671ed2f5 Jean*0058 
d68d315665 Jean*0059         IF ( thSIce_snapshot_mdsio .AND.
                0060      &       ( myTime.NE.startTime .OR. .NOT.thSIce_skipThermo
                0061      &                             .OR. .NOT.useCoupler )
                0062      &     ) THEN
332055f833 Jean*0063 
af20bc5e19 Jean*0064           IF ( rwSuffixType.EQ.0 ) THEN
                0065             WRITE(suff,'(I10.10)') myIter
                0066           ELSE
                0067             CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
                0068           ENDIF
332055f833 Jean*0069 
df4e8f7bcf Ed H*0070           CALL WRITE_FLD_XY_RL('ice_fract.',  suff,iceMask,
                0071      &         myIter,myThid)
c06c141378 Jean*0072           CALL WRITE_FLD_XY_RL('ice_iceH.',   suff,iceHeight,
df4e8f7bcf Ed H*0073      &         myIter,myThid)
c06c141378 Jean*0074           CALL WRITE_FLD_XY_RL('ice_snowH.',  suff,snowHeight,
df4e8f7bcf Ed H*0075      &         myIter,myThid)
                0076           CALL WRITE_FLD_XY_RL('ice_Tsrf.',   suff,Tsrf,
                0077      &         myIter,myThid)
                0078           CALL WRITE_FLD_XY_RL('ice_Tice1.',  suff,Tice1,
                0079      &         myIter,myThid)
                0080           CALL WRITE_FLD_XY_RL('ice_Tice2.',  suff,Tice2,
                0081      &         myIter,myThid)
                0082           CALL WRITE_FLD_XY_RL('ice_Qice1.',  suff,Qice1,
                0083      &         myIter,myThid)
                0084           CALL WRITE_FLD_XY_RL('ice_Qice2.',  suff,Qice2,
                0085      &         myIter,myThid)
                0086           CALL WRITE_FLD_XY_RL('ice_snowAge.',suff,snowAge,
                0087      &         myIter,myThid)
332055f833 Jean*0088           IF ( myTime.NE.startTime ) THEN
7269783f6f Jean*0089             CALL WRITE_FLD_XY_RL('ice_flxAtm.',suff,icFlxAtm,
                0090      &           myIter,myThid)
                0091             CALL WRITE_FLD_XY_RL('ice_frwAtm.',suff,icFrwAtm,
                0092      &           myIter,myThid)
332055f833 Jean*0093           ENDIF
df4e8f7bcf Ed H*0094           IF ( stepFwd_oceMxL ) THEN
                0095             CALL WRITE_FLD_XY_RL('ice_tOceMxL.', suff, tOceMxL,
                0096      &           myIter,myThid)
                0097             CALL WRITE_FLD_XY_RL('ice_sOceMxL.', suff, sOceMxL,
332055f833 Jean*0098      &           myIter,myThid)
df4e8f7bcf Ed H*0099           ENDIF
332055f833 Jean*0100 
df4e8f7bcf Ed H*0101         ENDIF
                0102 
                0103 #ifdef ALLOW_MNC
                0104         IF ( thSIce_snapshot_mnc ) THEN
a444616fe4 Jean*0105           _BARRIER
b22b541fe9 Ed H*0106           IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
                0107             pf(1:1) = 'D'
                0108           ELSE
                0109             pf(1:1) = 'R'
                0110           ENDIF
df4e8f7bcf Ed H*0111           DO i = 1,MAX_LEN_MBUF
                0112             mncf(i:i) = ' '
                0113           ENDDO
                0114 C         C             123456789 12345
                0115           mncf(1:15) = 'thsice_snapshot'
                0116           CALL MNC_CW_SET_UDIM(mncf, -1, myThid)
                0117           CALL MNC_CW_I_W_S('I',mncf,0,0,'iter', myIter, myThid)
                0118           CALL MNC_CW_SET_UDIM(mncf, 0, myThid)
                0119           CALL MNC_CW_RL_W_S('D',mncf,0,0,'T', myTime, myThid)
b22b541fe9 Ed H*0120           CALL MNC_CW_RL_W(pf,mncf,0,0,'iceMask',   iceMask,   myThid)
                0121           CALL MNC_CW_RL_W(pf,mncf,0,0,'iceHeight', iceHeight, myThid)
                0122           CALL MNC_CW_RL_W(pf,mncf,0,0,'snowHeight',snowHeight,myThid)
                0123           CALL MNC_CW_RL_W(pf,mncf,0,0,'Tsrf',      Tsrf,      myThid)
                0124           CALL MNC_CW_RL_W(pf,mncf,0,0,'Tice1',     Tice1,     myThid)
                0125           CALL MNC_CW_RL_W(pf,mncf,0,0,'Tice2',     Tice1,     myThid)
                0126           CALL MNC_CW_RL_W(pf,mncf,0,0,'Qice1',     Qice1,     myThid)
                0127           CALL MNC_CW_RL_W(pf,mncf,0,0,'Qice2',     Qice2,     myThid)
                0128           CALL MNC_CW_RL_W(pf,mncf,0,0,'snowAge',   snowAge,   myThid)
df4e8f7bcf Ed H*0129           IF ( stepFwd_oceMxL ) THEN
b22b541fe9 Ed H*0130             CALL MNC_CW_RL_W(pf,mncf,0,0,'tOceMxL',tOceMxL,myThid)
                0131             CALL MNC_CW_RL_W(pf,mncf,0,0,'sOceMxL',sOceMxL,myThid)
df4e8f7bcf Ed H*0132           ENDIF
a444616fe4 Jean*0133           _BARRIER
df4e8f7bcf Ed H*0134         ENDIF
                0135 #endif  /* ALLOW_MNC */
                0136 
fc7306ba7d Jean*0137       ENDIF
332055f833 Jean*0138 
fc7306ba7d Jean*0139       IF ( thSIce_monFreq.GT. 0. _d 0 )
                0140      &    CALL THSICE_MONITOR( myTime, myIter, myThid )
                0141 
                0142 #endif /* ALLOW_THSICE */
332055f833 Jean*0143 
fc7306ba7d Jean*0144       RETURN
                0145       END