** Warning **

Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.

Last-Modified: Sun, 18 May 2024 05:11:33 GMT Content-Type: text/html; charset=utf-8 MITgcm/MITgcm/model/src/do_atmospheric_phys.F
Back to home page

MITgcm

 
 

    


File indexing completed on 2023-09-03 05:09:52 UTC

view on githubraw file Latest commit 74487008 on 2023-09-03 01:50:18 UTC
c8e3a3b543 Jean*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_OPTIONS.h"
7448700841 Mart*0003 c#ifdef ALLOW_AUTODIFF
                0004 c# include "AUTODIFF_OPTIONS.h"
                0005 c#endif
c8e3a3b543 Jean*0006 
                0007 CBOP
                0008 C     !ROUTINE: DO_ATMOSPHERIC_PHYS
                0009 C     !INTERFACE:
                0010       SUBROUTINE DO_ATMOSPHERIC_PHYS(myTime, myIter, myThid)
                0011 C     !DESCRIPTION: \bv
                0012 C     *==========================================================*
067df0e288 Jean*0013 C     | SUBROUTINE DO_ATMOSPHERIC_PHYS
                0014 C     | o Controlling routine for atmospheric physics and
c8e3a3b543 Jean*0015 C     |   parameterization
                0016 C     *==========================================================*
                0017 C     | o originally, part of S/R thermodynamics & forward_step
                0018 C     *==========================================================*
                0019 C     \ev
                0020 
8f92343d9b Jean*0021 C     !CALLING SEQUENCE:
                0022 C     DO_ATMOSPHERIC_PHYS
                0023 C       |
                0024 C       |-- UPDATE_OCEAN_EXPORTS
                0025 C       |-- UPDATE_EARTH_EXPORTS
                0026 C       |-- UPDATE_CHEMISTRY_EXPORTS
                0027 C       |-- FIZHI_WRAPPER
                0028 C       |-- STEP_FIZHI_FG
                0029 C       |-- FIZHI_UPDATE_TIME
                0030 C       |
                0031 C       |-- ATM_PHYS_DRIVER
                0032 C       |
                0033 C       |-- AIM_DO_PHYSICS
                0034 
c8e3a3b543 Jean*0035 C     !USES:
                0036       IMPLICIT NONE
                0037 C     == Global variables ===
                0038 #include "SIZE.h"
                0039 #include "EEPARAMS.h"
                0040 #include "PARAMS.h"
5edeab65c1 Jean*0041 #include "GRID.h"
                0042 #include "DYNVARS.h"
7448700841 Mart*0043 c#ifdef ALLOW_AUTODIFF_TAMC
                0044 c# include "tamc.h"
                0045 c#endif /* ALLOW_AUTODIFF_TAMC */
c8e3a3b543 Jean*0046 
                0047 C     !INPUT/OUTPUT PARAMETERS:
                0048 C     == Routine arguments ==
8440e8ae5d Jean*0049 C     myTime :: Current time in simulation
                0050 C     myIter :: Current iteration number in simulation
                0051 C     myThid :: my Thread Id number
c8e3a3b543 Jean*0052       _RL myTime
                0053       INTEGER myIter
                0054       INTEGER myThid
7418e6b1e6 Jean*0055 CEOP
c8e3a3b543 Jean*0056 
                0057 C     !LOCAL VARIABLES:
                0058 C     == Local variables
5edeab65c1 Jean*0059 C     bi, bj   :: tile indices
                0060 C     i,j,k    :: loop indices
                0061       INTEGER bi, bj
                0062       INTEGER i, j, k
                0063       _RL thetaRef
c8e3a3b543 Jean*0064 
                0065 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0066       IF (debugMode) CALL DEBUG_ENTER('DO_ATMOSPHERIC_PHYS',myThid)
c8e3a3b543 Jean*0067 #endif
067df0e288 Jean*0068 
5edeab65c1 Jean*0069       IF ( fluidIsAir ) THEN
7448700841 Mart*0070 C     These store directives do not seem to be necessary, but we leave
                0071 C     them here as a reminder.
                0072 c#ifdef ALLOW_AUTODIFF_TAMC
                0073 cCADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
                0074 cCADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
                0075 c#endif
5edeab65c1 Jean*0076        DO bj=myByLo(myThid),myByHi(myThid)
                0077         DO bi=myBxLo(myThid),myBxHi(myThid)
                0078 
                0079 C--   Compute virtual potential temperature anomaly (including water vapour
                0080 C     effect), stored in rhoInSitu (similar to what is done for oceanic EOS)
                0081           DO k=1,Nr
                0082            IF ( select_rStar.GE.1 .OR. selectSigmaCoord.GE.1 ) THEN
                0083 C-    isothermal (theta=const) reference state
                0084              thetaRef = thetaConst
                0085            ELSE
                0086 C-    horizontally uniform (tRef) reference state
                0087              thetaRef = tRef(k)
                0088            ENDIF
                0089            DO j=1-OLy,sNy+OLy
                0090             DO i=1-OLx,sNx+OLx
                0091              rhoInSitu(i,j,k,bi,bj) =
                0092      &         ( theta(i,j,k,bi,bj)
                0093      &              *( salt(i,j,k,bi,bj)*atm_Rq + oneRL )
                0094      &         - thetaRef )*maskC(i,j,k,bi,bj)
                0095             ENDDO
                0096            ENDDO
                0097           ENDDO
                0098 
                0099         ENDDO
                0100        ENDDO
                0101 #ifdef ALLOW_AUTODIFF
                0102       ELSE
                0103        DO bj=myByLo(myThid),myByHi(myThid)
                0104         DO bi=myBxLo(myThid),myBxHi(myThid)
                0105           DO k=1,Nr
                0106            DO j=1-OLy,sNy+OLy
                0107             DO i=1-OLx,sNx+OLx
                0108               rhoInSitu(i,j,k,bi,bj) = 0.
                0109             ENDDO
                0110            ENDDO
                0111           ENDDO
                0112         ENDDO
                0113        ENDDO
                0114 #endif /* ALLOW_AUTODIFF */
                0115       ENDIF
                0116 
c8e3a3b543 Jean*0117 #ifdef ALLOW_FIZHI
067df0e288 Jean*0118       IF ( useFIZHI ) THEN
                0119         CALL TIMER_START('FIZHI          [DO_ATMOSPHERIC_PHYS]',myThid)
                0120         CALL UPDATE_OCEAN_EXPORTS ( myTime, myIter, myThid )
                0121         CALL UPDATE_EARTH_EXPORTS ( myTime, myIter, myThid )
                0122         CALL UPDATE_CHEMISTRY_EXPORTS ( myTime, myIter, myThid )
                0123         CALL FIZHI_WRAPPER ( myTime, myIter, myThid )
                0124         CALL STEP_FIZHI_FG ( myTime, myIter, myThid, dTtracerLev(1) )
cb205d18b8 Jean*0125         CALL FIZHI_UPDATE_TIME ( myIter, myThid, deltaTClock )
067df0e288 Jean*0126         CALL TIMER_STOP ('FIZHI          [DO_ATMOSPHERIC_PHYS]',myThid)
                0127       ENDIF
123913d7e9 Jean*0128 #endif /* ALLOW_FIZHI */
                0129 
                0130 #ifdef ALLOW_ATM_PHYS
                0131 C     Atmospheric Physics package - Atm_Phys - main driver
                0132       IF ( useAtm_Phys ) THEN
                0133         CALL TIMER_START('ATM_PHYS_DRIVER [DO_ATMOSPHERIC_PHYS]',myThid)
                0134         CALL ATM_PHYS_DRIVER( myTime, myIter, myThid )
                0135         CALL TIMER_STOP( 'ATM_PHYS_DRIVER [DO_ATMOSPHERIC_PHYS]',myThid)
                0136       ENDIF
                0137 #endif /* ALLOW_ATM_PHYS */
c8e3a3b543 Jean*0138 
                0139 #ifdef ALLOW_AIM
067df0e288 Jean*0140       IF ( useAIM ) THEN
c8e3a3b543 Jean*0141 C       AIM - atmospheric intermediate model, physics package code.
                0142 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0143         IF (debugMode) CALL DEBUG_CALL('AIM_DO_PHYSICS',myThid)
c8e3a3b543 Jean*0144 #endif
067df0e288 Jean*0145         CALL TIMER_START('AIM_DO_PHYSICS [DO_ATMOSPHERIC_PHYS]',myThid)
                0146         CALL AIM_DO_PHYSICS( myTime, myIter, myThid )
                0147         CALL TIMER_STOP( 'AIM_DO_PHYSICS [DO_ATMOSPHERIC_PHYS]',myThid)
c8e3a3b543 Jean*0148       ENDIF
                0149 #endif /* ALLOW_AIM */
                0150 
                0151 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0152       IF (debugMode) CALL DEBUG_LEAVE('DO_ATMOSPHERIC_PHYS',myThid)
c8e3a3b543 Jean*0153 #endif
                0154 
                0155       RETURN
                0156       END