Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
809c36b928 Patr*0001 #include "SEAICE_OPTIONS.h"
610bf19d8b Jean*0002 #ifdef ALLOW_EXF
                0003 # include "EXF_OPTIONS.h"
                0004 #endif
809c36b928 Patr*0005 
eb9c144150 Jean*0006 CBOP 0
01b88d49f4 Jean*0007 C !ROUTINE: SEAICE_OUTPUT
eb9c144150 Jean*0008 
                0009 C !INTERFACE:
                0010       SUBROUTINE SEAICE_OUTPUT( myTime, myIter, myThid )
                0011 
                0012 C     !DESCRIPTION:
                0013 C     *==========================================================*
                0014 C     | SUBROUTINE SEAICE_OUTPUT
b7411f1a84 Jean*0015 C     | o Do SEAICE output (including Monitor and OBCS output)
eb9c144150 Jean*0016 C     *==========================================================*
                0017 
                0018 C     !USES:
809c36b928 Patr*0019       IMPLICIT NONE
                0020 
                0021 C     === Global variables ===
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
                0025 #include "FFIELDS.h"
ccaa3c61f4 Patr*0026 #include "SEAICE_SIZE.h"
809c36b928 Patr*0027 #include "SEAICE_PARAMS.h"
                0028 #include "SEAICE.h"
ccaa3c61f4 Patr*0029 #include "SEAICE_TRACER.h"
ae1fb66b64 Dimi*0030 #ifdef ALLOW_EXF
                0031 # include "EXF_FIELDS.h"
                0032 #endif
809c36b928 Patr*0033 
eb9c144150 Jean*0034 C     !INPUT PARAMETERS:
                0035 C     myTime :: my time in simulation ( s )
                0036 C     myIter :: my Iteration number
                0037 C     myThid :: my Thread Id number
809c36b928 Patr*0038       _RL     myTime
                0039       INTEGER myIter
                0040       INTEGER myThid
                0041 
8c50aa8796 Jean*0042 C     !FUNCTIONS:
                0043       LOGICAL  DIFFERENT_MULTIPLE
                0044       EXTERNAL DIFFERENT_MULTIPLE
                0045 
eb9c144150 Jean*0046 C     !LOCAL VARIABLES:
                0047       CHARACTER*(10) suff
e54fe3e1f9 Gael*0048 #ifdef ALLOW_SITRACER
ccaa3c61f4 Patr*0049       CHARACTER*(13) pref
01b88d49f4 Jean*0050       INTEGER iTracer
eb9c144150 Jean*0051 #endif
                0052 #ifdef ALLOW_MNC
b22b541fe9 Ed H*0053       CHARACTER*(1) pf
eb9c144150 Jean*0054 #endif /* ALLOW_MNC */
                0055 CEOP
b22b541fe9 Ed H*0056 
809c36b928 Patr*0057       IF (SEAICEwriteState) THEN
                0058 
ec1f837e9d Ed H*0059         IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
bef2403f36 Jean*0060      &    .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
                0061      &                               myTime.EQ.startTime  )
ec1f837e9d Ed H*0062      &       ) THEN
8a685a2f38 Jean*0063 
de859229b1 Ed H*0064 #ifdef ALLOW_MNC
ec1f837e9d Ed H*0065           IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
8c50aa8796 Jean*0066             IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
                0067               pf(1:1) = 'D'
                0068             ELSE
                0069               pf(1:1) = 'R'
                0070             ENDIF
ec1f837e9d Ed H*0071             CALL MNC_CW_SET_UDIM('sice', -1, myThid)
                0072             CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
                0073             CALL MNC_CW_SET_UDIM('sice', 0, myThid)
                0074             CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
                0075             CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
                0076      &           myTime,myThid)
6e2f4e58fa Mart*0077 #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
                0078             IF ( SEAICEuseEVP ) THEN
dfc84e52b6 Mart*0079              CALL MNC_CW_RL_W(pf,'sice',0,0,'si_sigma1',
6e2f4e58fa Mart*0080      &            seaice_sigma1,myThid)
dfc84e52b6 Mart*0081              CALL MNC_CW_RL_W(pf,'sice',0,0,'si_sigma2',
6e2f4e58fa Mart*0082      &            seaice_sigma2,myThid)
dfc84e52b6 Mart*0083              CALL MNC_CW_RL_W(pf,'sice',0,0,'si_sigma12',
6e2f4e58fa Mart*0084      &            seaice_sigma12,myThid)
                0085             ENDIF
                0086 #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
772590b63c Mart*0087             CALL MNC_CW_RL_W(pf,'sice',0,0,'si_UICE',uIce,myThid)
                0088             CALL MNC_CW_RL_W(pf,'sice',0,0,'si_VICE',vIce,myThid)
b5d9cb1403 Jean*0089             IF ( .NOT.useThSIce ) THEN
                0090              CALL MNC_CW_RL_W(pf,'sice',0,0,'si_HEFF',hEff,myThid)
                0091              CALL MNC_CW_RL_W(pf,'sice',0,0,'si_AREA',area,myThid)
86b84a92fc Patr*0092 #ifdef SEAICE_ITD
610bf19d8b Jean*0093 c           CALL MNC_CW_RL_W(pf,'sice',0,0,'si_HEFFITD',HEFFITD,myThid)
                0094 c           CALL MNC_CW_RL_W(pf,'sice',0,0,'si_AREAITD',AREAITD,myThid)
86b84a92fc Patr*0095 #endif
b5d9cb1403 Jean*0096             ENDIF
2a4b53eed1 Jean*0097 #ifdef ALLOW_EXF
99586206be Jean*0098             CALL MNC_CW_RL_W(pf,'sice',0,0,'si_UWIND',uwind,myThid)
                0099             CALL MNC_CW_RL_W(pf,'sice',0,0,'si_VWIND',vwind,myThid)
2a4b53eed1 Jean*0100 #endif
b22b541fe9 Ed H*0101             CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
                0102             CALL MNC_CW_RS_W(pf,'sice',0,0,'fv',fv,myThid)
                0103             CALL MNC_CW_RS_W(pf,'sice',0,0,'EmPmR',EmPmR,myThid)
                0104             CALL MNC_CW_RS_W(pf,'sice',0,0,'Qnet',Qnet,myThid)
                0105             CALL MNC_CW_RS_W(pf,'sice',0,0,'Qsw',Qsw,myThid)
ec1f837e9d Ed H*0106           ENDIF
eb9c144150 Jean*0107 #endif /* ALLOW_MNC */
ec1f837e9d Ed H*0108           IF (SEAICE_dump_mdsio) THEN
af20bc5e19 Jean*0109             IF ( rwSuffixType.EQ.0 ) THEN
                0110               WRITE(suff,'(I10.10)') myIter
                0111             ELSE
                0112               CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
                0113             ENDIF
bef2403f36 Jean*0114             IF ( myIter.NE.nIter0 ) THEN
2a4b53eed1 Jean*0115 #ifdef ALLOW_EXF
99586206be Jean*0116              CALL WRITE_FLD_XY_RL('UWIND.',suff,uwind,myIter,myThid)
                0117              CALL WRITE_FLD_XY_RL('VWIND.',suff,vwind,myIter,myThid)
2a4b53eed1 Jean*0118 #endif
eb9c144150 Jean*0119              CALL WRITE_FLD_XY_RS('FU.',suff,fu,myIter,myThid)
                0120              CALL WRITE_FLD_XY_RS('FV.',suff,fv,myIter,myThid)
                0121              CALL WRITE_FLD_XY_RS('EmPmR.',suff,EmPmR,myIter,myThid)
                0122              CALL WRITE_FLD_XY_RS('Qnet.',suff,Qnet,myIter,myThid)
                0123              CALL WRITE_FLD_XY_RS('Qsw.',suff,Qsw,myIter,myThid)
bef2403f36 Jean*0124             ENDIF
772590b63c Mart*0125             CALL WRITE_FLD_XY_RL( 'UICE.',suff,uIce,myIter,myThid)
                0126             CALL WRITE_FLD_XY_RL( 'VICE.',suff,vIce,myIter,myThid)
b5d9cb1403 Jean*0127             IF ( .NOT.useThSIce ) THEN
                0128              CALL WRITE_FLD_XY_RL( 'HEFF.',suff,hEff,myIter,myThid)
                0129              CALL WRITE_FLD_XY_RL( 'AREA.',suff,area,myIter,myThid)
                0130              CALL WRITE_FLD_XY_RL( 'HSNOW.',suff,HSNOW,myIter,myThid)
86b84a92fc Patr*0131 #ifdef SEAICE_ITD
b5d9cb1403 Jean*0132              CALL WRITE_FLD_3D_RL( 'HEFFITD.', suff, nITD, HEFFITD,
                0133      &                             myIter, myThid )
                0134              CALL WRITE_FLD_3D_RL( 'AREAITD.', suff, nITD, AREAITD,
                0135      &                             myIter, myThid )
                0136              CALL WRITE_FLD_3D_RL('HSNOWITD.', suff, nITD, HSNOWITD,
                0137      &                             myIter, myThid )
86b84a92fc Patr*0138 #endif
a98c4b8072 Ian *0139 #ifdef SEAICE_VARIABLE_SALINITY
b5d9cb1403 Jean*0140              CALL WRITE_FLD_XY_RL( 'HSALT.',suff,HSALT,myIter,myThid)
fdfa8e151f Dimi*0141 #endif
e54fe3e1f9 Gael*0142 #ifdef ALLOW_SITRACER
b5d9cb1403 Jean*0143              DO iTracer = 1, SItrNumInUse
                0144               WRITE(pref,'(A8,I2.2,A1)') 'SITRACER', iTracer, '.'
                0145               CALL WRITE_FLD_XY_RL(
                0146      &             pref,suff,
                0147      &             SItracer(1-OLx,1-OLy,1,1,iTracer),
                0148      &             myIter, myThid )
                0149              ENDDO
f681b7f5d4 Dimi*0150 #endif
b5d9cb1403 Jean*0151             ENDIF
6e2f4e58fa Mart*0152 #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
                0153             IF ( SEAICEuseEVP ) THEN
dfc84e52b6 Mart*0154              CALL WRITE_FLD_XY_RL('SIGMA1.',suff,seaice_sigma1,
6e2f4e58fa Mart*0155      &            myIter,myThid)
dfc84e52b6 Mart*0156              CALL WRITE_FLD_XY_RL('SIGMA2.',suff,seaice_sigma2,
6e2f4e58fa Mart*0157      &            myIter,myThid)
dfc84e52b6 Mart*0158              CALL WRITE_FLD_XY_RL('SIGMA12.',suff,seaice_sigma12,
6e2f4e58fa Mart*0159      &            myIter,myThid)
                0160             ENDIF
                0161 #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
eb9c144150 Jean*0162 C--   end SEAICE_dump_mdsio block
ec1f837e9d Ed H*0163           ENDIF
8a685a2f38 Jean*0164 
eb9c144150 Jean*0165         ENDIF
809c36b928 Patr*0166       ENDIF
                0167 
                0168 C----------------------------------------------------------------
                0169 
9baf699ab7 Jean*0170 C--   do SEAICE monitor output : print some statistics about seaice fields
                0171       CALL SEAICE_MONITOR( myTime, myIter, myThid )
                0172 
1ffb1fabff Jean*0173 C--   do SEAICE Open-Boundary output
                0174       IF ( useOBCS ) CALL SEAICE_OBCS_OUTPUT( myTime, myIter, myThid )
                0175 
809c36b928 Patr*0176       RETURN
                0177       END