C $Header: /u/gcmpack/MITgcm/model/src/packages_init_variables.F,v 1.100 2017/02/21 00:57:47 jmc Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" #ifdef ALLOW_AUTODIFF # include "AUTODIFF_OPTIONS.h" #endif #ifdef ALLOW_CTRL # include "CTRL_OPTIONS.h" #endif CBOP C !ROUTINE: PACKAGES_INIT_VARIABLES C !INTERFACE: SUBROUTINE PACKAGES_INIT_VARIABLES( myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE PACKAGES_INIT_VARIABLES C | o Does initialisation of package-related variable data C *==========================================================* C \ev C !CALLING SEQUENCE: C PACKAGES_INIT_VARIABLES C | C |-- DIAGNOSTICS_INIT_VARIA C | C |-- OFFLINE_INIT_VARIA C | C |-- GAD_INIT_VARIA C | C |-- CD_CODE_INI_VARS C | C |-- PP81_INIT_VARIA C | C |-- KL10_INIT_VARIA C | C |-- MY82_INIT_VARIA C | C |-- GGL90_INIT_VARIA C | C |-- KPP_INIT_VARIA C | C |-- GMREDI_INIT_VARIA C | C |-- BBL_INIT_VARIA C | C |-- DWNSLP_INIT_VARIA C | C |-- EXF_INIT_VARIA C | C |-- BULKF_INIT_VARIA C | C |-- EBM_INI_VARS C | C |-- CHEAPAML_INIT_VARIA C | C |-- FLT_INIT_VARIA C | C |-- PTRACERS_INIT_VARIA C | C |-- LONGSTEP_INIT_VARIA C | C |-- GCHEM_INIT_VARI C | C |-- RBCS_INIT_VARIA C | C |-- MATRIX_INIT_VARIA C | C |-- FRAZIL_INIT_VARIA C | C |-- SEAICE_INIT_VARIA C | C |-- SALT_PLUME_INIT_VARIA C | C |-- SHELFICE_INIT_VARIA C | C |-- STREAMICE_INIT_VARIA C | C |-- ICEFRONT_INIT_VARIA C | C |-- THSICE_INI_VARS C | C |-- LAND_INI_VARS C | C |-- ATM2D_INIT_VARS C | C |-- ATM_PHYS_INIT_VARIA C | C |-- FIZHI_INI_VARS C | C |-- REGRID_INIT_VARIA C | C |-- LAYERS_INIT_VARIA C | C |-- NEST_CHILD_INIT_VARIA C |-- NEST_PARENT_INIT_VARIA C | C |-- CPL_INI_VARS C | C |-- MYPACKAGE_INIT_VARIA C | C |-- SMOOTH_INIT_VARIA C |-- PROFILES_INIT_VARIA C |-- ECCO_INIT_VARIA C |-- CTRL_INIT_VARIABLES C | C |-- OBCS_INIT_VARIABLES C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #ifdef ALLOW_AUTODIFF # include "DYNVARS.h" # include "tamc.h" # include "tamc_keys.h" #endif C !INPUT/OUTPUT PARAMETERS: C === Routine arguments === C myThid :: my Thread Id number INTEGER myThid CEOP #ifdef ALLOW_DEBUG IF (debugMode) & CALL DEBUG_ENTER('PACKAGES_INIT_VARIABLES',myThid) #endif /* ALLOW_DEBUG */ #ifdef ALLOW_DIAGNOSTICS IF ( useDiagnostics ) THEN CALL DIAGNOSTICS_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_DIAGNOSTICS */ #ifdef ALLOW_OFFLINE C-- Here we call OFFLINE_INIT_VARIA (which calls OFFLINE_FIELDS_LOAD) C before other {PKG}_init_varia, closer to where main pickup-file C are usually read-in (but skipped when using pkg/offline) # ifndef ALLOW_AUTODIFF IF ( useOFFLINE ) THEN # endif CALL OFFLINE_INIT_VARIA( myThid ) # ifndef ALLOW_AUTODIFF ENDIF # endif #endif /* ALLOW_OFFLINE */ #ifdef ALLOW_GENERIC_ADVDIFF IF ( useGAD ) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('GAD_INIT_VARIA',myThid) # endif CALL GAD_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_GENERIC_ADVDIFF */ #ifdef ALLOW_CD_CODE C-- Initialize CD_CODE variables: C- note(jmc): before packaging CD_CODE, was done within ini_fields (=called before), C therefore call CD-ini-vars before others pkg. IF (useCDscheme) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('CD_CODE_INI_VARS',myThid) # endif CALL CD_CODE_INI_VARS( myThid ) ENDIF #endif /* ALLOW_CD_CODE */ #ifdef ALLOW_PP81 C-- Initialize PP81 vertical mixing scheme. IF (usePP81) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('PP81_INIT_VARIA',myThid) # endif CALL PP81_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_PP81 */ #ifdef ALLOW_KL10 C-- Initialize KL10 vertical mixing scheme. IF (useKL10) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('KL10_INIT_VARIA',myThid) # endif CALL KL10_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_KL10 */ #ifdef ALLOW_MY82 C-- Initialize MY82 vertical mixing scheme. IF (useMY82) THEN CALL MY82_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_MY82 */ #ifdef ALLOW_GGL90 C-- Initialize GGL90 vertical mixing scheme. IF (useGGL90) THEN #ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('GGL90_INIT_VARIA',myThid) #endif CALL GGL90_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_GGL90 */ #ifdef ALLOW_KPP C-- Initialize KPP vertical mixing scheme. IF (useKPP) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('KPP_INIT_VARIA',myThid) # endif CALL KPP_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_KPP */ #ifdef ALLOW_GMREDI C-- Initialize GM/Redi parameterization IF (useGMRedi) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('GMREDI_INIT_VARIA',myThid) # endif CALL GMREDI_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_GMREDI */ #ifdef ALLOW_BBL IF ( useBBL ) THEN CALL BBL_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_BBL */ #ifdef ALLOW_DOWN_SLOPE IF ( useDOWN_SLOPE ) THEN CALL DWNSLP_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_DOWN_SLOPE */ #ifdef ALLOW_EXF IF (useEXF) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('EXF_INIT_VARIA',myThid) # endif CALL EXF_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_EXF */ #ifdef ALLOW_BULK_FORCE IF (useBulkForce) THEN CALL BULKF_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_BULK_FORCE */ #ifdef ALLOW_EBM # ifdef ALLOW_AUTODIFF_TAMC CADJ STORE theta = tapelev_init, key = 1 # endif IF (useEBM) THEN CALL EBM_INI_VARS( myThid ) ENDIF #endif /* ALLOW_EBM */ #ifdef ALLOW_CHEAPAML IF (useCheapAML) THEN CALL CHEAPAML_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_CHEAPAML */ #ifdef ALLOW_FLT C-- Initialise float position IF ( useFLT ) THEN CALL FLT_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_FLT */ #ifdef ALLOW_PTRACERS # ifndef ALLOW_AUTODIFF IF ( usePTRACERS ) THEN # endif # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('PTRACERS_INIT_VARIA',myThid) # endif CALL PTRACERS_INIT_VARIA( myThid ) # ifdef ALLOW_LONGSTEP # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('LONGSTEP_INIT_VARIA',myThid) # endif CALL LONGSTEP_INIT_VARIA( myThid ) # endif /* ALLOW_LONGSTEP */ # ifndef ALLOW_AUTODIFF ENDIF # endif #endif /* ALLOW_PTRACERS */ #ifdef ALLOW_GCHEM IF (useGCHEM) THEN CALL GCHEM_INIT_VARI( myThid ) ENDIF #endif /* ALLOW_GCHEM */ #ifdef ALLOW_RBCS IF ( useRBCS ) THEN CALL RBCS_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_RBCS */ #ifdef ALLOW_MATRIX IF ( useMATRIX ) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('MATRIX_INIT',myThid) # endif CALL MATRIX_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_MATRIX */ #ifdef ALLOW_FRAZIL IF (useFRAZIL) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('FRAZIL_INIT_VARIA',myThid) # endif CALL FRAZIL_INIT_VARIA( myThid) ENDIF #endif /* ALLOW_FRAZIL */ #ifdef ALLOW_SEAICE C-- Initialize SEAICE model. IF (useSEAICE) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('SEAICE_INIT_VARIA',myThid) # endif CALL SEAICE_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_SEAICE */ #ifdef ALLOW_SALT_PLUME IF ( useSALT_PLUME ) THEN CALL SALT_PLUME_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_SALT_PLUME */ #ifdef ALLOW_SHELFICE IF (useShelfIce) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('SHELFICE_INIT_VARIA',myThid) # endif CALL SHELFICE_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_SHELFICE */ #ifdef ALLOW_STREAMICE IF (useStreamIce) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('STREAMICE_INIT_VARIA',myThid) # endif CALL STREAMICE_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_STREAMICE */ #ifdef ALLOW_ICEFRONT IF (useICEFRONT) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('ICEFRONT_INIT_VARIA',myThid) # endif CALL ICEFRONT_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_ICEFRONT */ #ifdef ALLOW_THSICE IF (useThSIce) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('THSICE_INI_VARS',myThid) # endif CALL THSICE_INI_VARS( myThid) ENDIF #endif /* ALLOW_THSICE */ #ifdef ALLOW_LAND IF ( useLAND ) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('LAND_INI_VARS',myThid) # endif CALL LAND_INI_VARS( myThid ) ENDIF #endif /* ALLOW_LAND */ #ifdef ALLOW_ATM2D IF (useAtm2d) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('ATM2D_INIT_VARS',myThid) # endif CALL ATM2D_INIT_VARS( myThid ) ENDIF #endif /* ALLOW_ATM2D */ #ifdef ALLOW_ATM_PHYS IF (useAtm_Phys) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('ATM_PHYS_INIT_VARIA',myThid) # endif CALL ATM_PHYS_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_ATM_PHYS */ #ifdef ALLOW_FIZHI C Initialize FIZHI state variables IF (useFIZHI) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('FIZHI_INIT_VARS',myThid) # endif CALL FIZHI_INIT_VARS( myThid ) ENDIF #endif /* ALLOW_FIZHI */ #ifdef ALLOW_REGRID IF ( useREGRID ) THEN CALL REGRID_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_REGRID */ #ifdef ALLOW_LAYERS IF ( useLayers ) THEN CALL LAYERS_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_LAYERS */ #ifdef ALLOW_NEST_CHILD C-- Initialize NEST in CHILD configuration IF (useNEST_CHILD) THEN #ifdef ALLOW_DEBUG IF (debugMode) & CALL DEBUG_CALL('NEST_CHILD_INIT_VARIA',myThid) #endif CALL NEST_CHILD_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_NEST_CHILD */ #ifdef ALLOW_NEST_PARENT C-- Initialize NEST in PARENT configuration IF (useNEST_PARENT) THEN #ifdef ALLOW_DEBUG IF (debugMode) & CALL DEBUG_CALL('NEST_PARENT_INIT',myThid) #endif CALL NEST_PARENT_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_NEST_PARENT */ #ifdef COMPONENT_MODULE IF (useCoupler) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('CPL_INI_VARS',myThid) # endif CALL CPL_INI_VARS( myThid ) ENDIF #endif /* COMPONENT_MODULE */ #ifdef ALLOW_MYPACKAGE IF ( useMYPACKAGE ) THEN CALL MYPACKAGE_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_MYPACKAGE */ #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE theta = tapelev_init, key = 1 CADJ STORE salt = tapelev_init, key = 1 # ifdef ALLOW_DIFFKR_CONTROL CADJ STORE diffkr = tapelev_init, key = 1 # endif #endif /* ALLOW_AUTODIFF_TAMC */ C-- Initialise pkg/smooth #ifdef ALLOW_SMOOTH IF (useSMOOTH) THEN CALL SMOOTH_INIT_VARIA(myThid) ENDIF #endif /* ALLOW_SMOOTH */ C-- Initialise pkg/profiles #ifdef ALLOW_PROFILES IF (usePROFILES) THEN CALL PROFILES_INIT_VARIA( myThid ) ENDIF #endif /* ALLOW_PROFILES */ C-- Initialise pkg/ecco (and related pkgs components) #ifdef ALLOW_ECCO IF ( useECCO ) CALL ECCO_INIT_VARIA( myThid ) #endif C-- Initialise pkg/ctl (and related pkgs components) #ifdef ALLOW_CTRL IF (useCTRL) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('CTRL_INIT_VARIABLES',myThid) # endif CALL CTRL_INIT_VARIABLES ( myThid ) ENDIF #endif /* ALLOW_CTRL */ #ifdef ALLOW_OBCS C-- put this call in last position (needs to come after few {PKG}_init_varia) IF (useOBCS) THEN # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('OBCS_INIT_VARIABLES',myThid) # endif CALL OBCS_INIT_VARIABLES( myThid ) ENDIF #endif /* ALLOW_OBCS */ #ifdef ALLOW_DEBUG IF (debugMode) & CALL DEBUG_LEAVE('PACKAGES_INIT_VARIABLES',myThid) #endif /* ALLOW_DEBUG */ RETURN END