Back to home page

MITgcm

 
 

    


File indexing completed on 2023-04-15 05:09:32 UTC

view on githubraw file Latest commit b0b45f23 on 2023-04-14 18:44:36 UTC
fddb7fab2a Jean*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_OPTIONS.h"
                0003 
4ef02e4efb Ed H*0004 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
3229b9eb2f Jean*0005 C     files.
                0006 
fddb7fab2a Jean*0007 CBOP
                0008 C     !ROUTINE: PACKAGES_WRITE_PICKUP
4ef02e4efb Ed H*0009 
fddb7fab2a Jean*0010 C     !INTERFACE:
f13d62f97b Jean*0011       SUBROUTINE PACKAGES_WRITE_PICKUP(
528fbbe5ca Jean*0012      I                    permPickup, suffix,
3229b9eb2f Jean*0013      I                    myTime, myIter, myThid )
4ef02e4efb Ed H*0014 
                0015 C     !DESCRIPTION:
                0016 C     Write pickup files for each package which needs it to restart.
                0017 C     This routine (S/R PACKAGES_WRITE_PICKUP) calls per-package
                0018 C     write-pickup (or checkpoint) routines.  It writes both
3229b9eb2f Jean*0019 C     "rolling-pickup" files (ckptA,ckptB) and permanent pickup.
fddb7fab2a Jean*0020 
8f92343d9b Jean*0021 C     !CALLING SEQUENCE:
                0022 C     PACKAGES_WRITE_PICKUP
                0023 C       |
                0024 C       |-- GAD_WRITE_PICKUP
                0025 C       |
                0026 C       |-- CD_CODE_WRITE_PICKUP
                0027 C       |
                0028 C       |-- OBCS_WRITE_PICKUP
                0029 C       |
                0030 C       |-- GGL90_WRITE_PICKUP
                0031 C       |
b0b45f2373 Ou W*0032 C       |-- GMREDI_WRITE_PICKUP
                0033 C       |
8f92343d9b Jean*0034 C       |-- BBL_WRITE_PICKUP
                0035 C       |
                0036 C       |-- CHEAPAML_WRITE_PICKUP
                0037 C       |
                0038 C       |-- FLT_WRITE_PICKUP
                0039 C       |
                0040 C       |-- PTRACERS_WRITE_PICKUP
                0041 C       |
                0042 C       |-- GCHEM_WRITE_PICKUP
                0043 C       |
                0044 C       |-- STREAMICE_WRITE_PICKUP
                0045 C       |
148dd84005 jm-c 0046 C       |-- SHELFICE_WRITE_PICKUP
                0047 C       |
                0048 C       |-- SEAICE_WRITE_PICKUP
                0049 C       |
8f92343d9b Jean*0050 C       |-- THSICE_WRITE_PICKUP
                0051 C       |
                0052 C       |-- LAND_WRITE_PICKUP
                0053 C       |
                0054 C       |-- ATM_PHYS_WRITE_PICKUP
                0055 C       |
                0056 C       |-- FIZHI_WRITE_PICKUP
                0057 C       |-- FIZHI_WRITE_VEGTILES
                0058 C       |-- FIZHI_WRITE_DATETIME
                0059 C       |
                0060 C       |-- DIAGNOSTICS_WRITE_PICKUP
                0061 C       |
                0062 C       |-- CPL_WRITE_PICKUP
                0063 C       |
b0b45f2373 Ou W*0064 C       |-- ECCO_WRITE_PICKUP
                0065 C       |
8f92343d9b Jean*0066 C       |-- MYPACKAGE_WRITE_PICKUP
                0067 
fddb7fab2a Jean*0068 C     !USES:
                0069       IMPLICIT NONE
                0070 #include "SIZE.h"
                0071 #include "EEPARAMS.h"
                0072 #include "PARAMS.h"
9fafc42509 Jean*0073 #include "RESTART.h"
fddb7fab2a Jean*0074 
                0075 C     !INPUT/OUTPUT PARAMETERS:
3229b9eb2f Jean*0076 C     permPickup :: Is or is not a permanent pickup.
528fbbe5ca Jean*0077 C     suffix     :: pickup-name suffix
3229b9eb2f Jean*0078 C     myTime     :: Current time of simulation ( s )
                0079 C     myIter     :: Iteration number
                0080 C     myThid     :: Thread number for this instance of the routine.
                0081       LOGICAL permPickup
528fbbe5ca Jean*0082       CHARACTER*(*) suffix
4ef02e4efb Ed H*0083       _RL     myTime
f13d62f97b Jean*0084       INTEGER myIter
                0085       INTEGER myThid
4ef02e4efb Ed H*0086 
                0087 C     !LOCAL VARIABLES:
                0088 CEOP
                0089 
                0090 C     Going to really do some IO. Make everyone except master thread wait.
3365bdc872 Jean*0091 C     this is done within IO routines => no longer needed
                0092 c     _BARRIER
4ef02e4efb Ed H*0093 
9da3c4e8e8 Jean*0094 #ifdef ALLOW_GENERIC_ADVDIFF
                0095 C     Write restart file for 2nd-Order moment (active) Tracers
                0096       IF ( useGAD ) THEN
                0097         CALL GAD_WRITE_PICKUP(
9c02d7d97e Jean*0098      I                 suffix, myTime, myIter, myThid )
9da3c4e8e8 Jean*0099       ENDIF
                0100 #endif /* ALLOW_GENERIC_ADVDIFF */
                0101 
fddb7fab2a Jean*0102 #ifdef ALLOW_CD_CODE
4ef02e4efb Ed H*0103       IF (useCDscheme) THEN
9c02d7d97e Jean*0104         CALL CD_CODE_WRITE_PICKUP( permPickup,
                0105      I                     suffix, myTime, myIter, myThid )
4ef02e4efb Ed H*0106       ENDIF
fddb7fab2a Jean*0107 #endif /* ALLOW_CD_CODE */
                0108 
                0109 #ifdef  ALLOW_OBCS
b746fc2b82 Jean*0110       IF (useOBCS) THEN
                0111         CALL OBCS_WRITE_PICKUP(
                0112      &                  suffix, myTime, myIter, myThid )
                0113       ENDIF
fddb7fab2a Jean*0114 #endif  /* ALLOW_OBCS */
f13d62f97b Jean*0115 
5593e3ac8c Jean*0116 #ifdef  ALLOW_GGL90
                0117       IF ( useGGL90 ) THEN
                0118         CALL GGL90_WRITE_PICKUP( permPickup,
                0119      I                      suffix, myTime, myIter, myThid )
                0120       ENDIF
                0121 #endif  /* ALLOW_GGL90 */
                0122 
b0b45f2373 Ou W*0123 #ifdef ALLOW_GMREDI
                0124       IF ( useGMRedi ) THEN
                0125         CALL GMREDI_WRITE_PICKUP( permPickup,
                0126      I                      suffix, myTime, myIter, myThid )
                0127       ENDIF
                0128 #endif
                0129 
15338fa568 Dimi*0130 #ifdef ALLOW_BBL
                0131       IF (useBBL) THEN
                0132         CALL BBL_WRITE_PICKUP( permPickup,
                0133      I                      suffix, myTime, myIter, myThid )
                0134       ENDIF
                0135 #endif /* ALLOW_MYPACKAGE */
                0136 
5593e3ac8c Jean*0137 #ifdef ALLOW_CHEAPAML
                0138 C     Write restart file for CHEAPAML pkg
                0139       IF ( useCheapAML ) THEN
                0140          CALL CHEAPAML_WRITE_PICKUP( permPickup,
                0141      I                      suffix, myTime, myIter, myThid)
                0142        ENDIF
                0143 #endif /* ALLOW_CHEAPAML */
                0144 
                0145 #ifdef ALLOW_FLT
                0146 C     Write restart file for floats
                0147       IF (useFLT) THEN
                0148         CALL FLT_WRITE_PICKUP(
                0149      &                  suffix, myTime, myIter, myThid )
                0150       ENDIF
                0151 #endif
                0152 
                0153 #ifdef ALLOW_PTRACERS
                0154 C     Write restart file for passive tracers
                0155       IF (usePTRACERS) THEN
                0156         CALL PTRACERS_WRITE_PICKUP( permPickup,
                0157      I                      suffix, myTime, myIter, myThid )
                0158       ENDIF
                0159 #endif /* ALLOW_PTRACERS */
                0160 
                0161 #ifdef ALLOW_GCHEM
                0162 C     Write restart file for GCHEM pkg & GCHEM sub-packages
                0163       IF ( useGCHEM ) THEN
                0164         CALL GCHEM_WRITE_PICKUP( permPickup,
                0165      I                      suffix, myTime, myIter, myThid )
                0166       ENDIF
                0167 #endif
                0168 
680c8438ba Jean*0169 #ifdef ALLOW_STREAMICE
                0170       IF (useStreamIce) THEN
                0171         CALL STREAMICE_WRITE_PICKUP( permPickup,
                0172      I                    suffix, myTime, myIter, myThid )
                0173       ENDIF
                0174 #endif
                0175 
c929cf81d0 Dani*0176 #ifdef ALLOW_SHELFICE
                0177       IF (useShelfIce) THEN
                0178         CALL SHELFICE_WRITE_PICKUP( permPickup,
                0179      I                    suffix, myTime, myIter, myThid )
                0180       ENDIF
                0181 #endif
                0182 
148dd84005 jm-c 0183 #ifdef  ALLOW_SEAICE
                0184       IF ( useSEAICE ) THEN
                0185         CALL SEAICE_WRITE_PICKUP( permPickup,
                0186      I                    suffix, myTime, myIter, myThid )
                0187       ENDIF
                0188 #endif  /* ALLOW_SEAICE */
                0189 
fddb7fab2a Jean*0190 #ifdef ALLOW_THSICE
4ef02e4efb Ed H*0191       IF (useThSIce) THEN
9c02d7d97e Jean*0192         CALL THSICE_WRITE_PICKUP( permPickup,
                0193      I                    suffix, myTime, myIter, myThid )
4ef02e4efb Ed H*0194       ENDIF
fddb7fab2a Jean*0195 #endif /* ALLOW_THSICE */
                0196 
                0197 #ifdef ALLOW_LAND
cf701ea57b Ed H*0198 C     Write pickup file for Land package:
4ef02e4efb Ed H*0199       IF (useLand) THEN
9c02d7d97e Jean*0200         CALL LAND_WRITE_PICKUP( permPickup,
                0201      &                  suffix, myTime, myIter, myThid )
4ef02e4efb Ed H*0202       ENDIF
fddb7fab2a Jean*0203 #endif
                0204 
5593e3ac8c Jean*0205 #ifdef ALLOW_ATM_PHYS
                0206       IF ( useAtm_Phys ) THEN
                0207         CALL ATM_PHYS_WRITE_PICKUP( permPickup,
                0208      I                      suffix, myTime, myIter, myThid )
                0209       ENDIF
                0210 #endif /* ALLOW_ATM_PHYS */
                0211 
82a38c92d3 Andr*0212 #ifdef ALLOW_FIZHI
4ef02e4efb Ed H*0213 C     Write pickup file for fizhi package
                0214       IF (usefizhi) THEN
9c02d7d97e Jean*0215         CALL FIZHI_WRITE_PICKUP(suffix,myTime,myIter,myThid)
                0216         CALL FIZHI_WRITE_VEGTILES(suffix,0,myTime,myIter,myThid)
9f2f89bbfd Andr*0217         CALL FIZHI_WRITE_DATETIME(myTime,myIter,myThid)
4ef02e4efb Ed H*0218       ENDIF
82a38c92d3 Andr*0219 #endif
                0220 
ee2e7fad64 Ed H*0221 #ifdef ALLOW_DIAGNOSTICS
                0222 C     Write pickup file for diagnostics package
                0223       IF (useDiagnostics) THEN
9c02d7d97e Jean*0224         CALL DIAGNOSTICS_WRITE_PICKUP( permPickup,
                0225      I                         suffix, myTime, myIter, myThid )
ee2e7fad64 Ed H*0226       ENDIF
                0227 #endif
                0228 
5593e3ac8c Jean*0229 #ifdef  COMPONENT_MODULE
                0230       IF (useCoupler) THEN
                0231         CALL CPL_WRITE_PICKUP(
                0232      &                 suffix, myTime, myIter, myThid )
982e56f950 Jean*0233       ENDIF
5593e3ac8c Jean*0234 #endif  /* COMPONENT_MODULE */
86f14fa6df Jean*0235 
b0b45f2373 Ou W*0236 #ifdef ALLOW_ECCO
                0237       IF (useECCO) THEN
                0238         CALL ECCO_WRITE_PICKUP( permPickup,
                0239      I                      suffix, myTime, myIter, myThid )
                0240       ENDIF
                0241 #endif /* ALLOW_ECCO */
                0242 
ea5f62bbfd Jean*0243 #ifdef ALLOW_MYPACKAGE
                0244       IF (useMYPACKAGE) THEN
                0245         CALL MYPACKAGE_WRITE_PICKUP( permPickup,
8ee80016b8 Jean*0246      I                      suffix, myTime, myIter, myThid )
ea5f62bbfd Jean*0247       ENDIF
                0248 #endif /* ALLOW_MYPACKAGE */
                0249 
3229b9eb2f Jean*0250 C--   Every one else must wait until writing is done.
3365bdc872 Jean*0251 C     this is done within IO routines => no longer needed
                0252 c     _BARRIER
f13d62f97b Jean*0253 
fddb7fab2a Jean*0254       RETURN
                0255       END
4ef02e4efb Ed H*0256 
                0257 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|