Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:37:20 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d676f916b2 Jean*0001 #include "AIM_OPTIONS.h"
                0002 
444c1ec05b Jean*0003 CBOP
                0004 C     !ROUTINE: AIM_INITIALISE
                0005 C     !INTERFACE:
d676f916b2 Jean*0006       SUBROUTINE AIM_INITIALISE( myThid )
89bfa1dc29 Jean*0007 
444c1ec05b Jean*0008 C     !DESCRIPTION: \bv
d676f916b2 Jean*0009 C     *==================================================================*
                0010 C     | S/R AIM_INITIALISE
                0011 C     *==================================================================*
                0012 C     | Initialisation of AIM atmospheric physics package :
                0013 C     | 1) call iniphys (=> set parameters to default value)
444c1ec05b Jean*0014 C     | 2) read AIM parameters
d676f916b2 Jean*0015 C     *==================================================================*
444c1ec05b Jean*0016 C     \ev
                0017 C     !USES:
d676f916b2 Jean*0018       IMPLICIT NONE
                0019 
444c1ec05b Jean*0020 C     === Global variables ===
                0021 #include "SIZE.h"
d676f916b2 Jean*0022 #include "EEPARAMS.h"
                0023 #include "PARAMS.h"
                0024 #include "GRID.h"
65007c221b Jean*0025 #include "SURFACE.h"
                0026 #include "AIM_PARAMS.h"
                0027 #include "AIM_FFIELDS.h"
                0028 c #include "AIM_GRID.h"
444c1ec05b Jean*0029 c #include "AIM_DIAGS.h"
d676f916b2 Jean*0030 
444c1ec05b Jean*0031 C     !INPUT/OUTPUT PARAMETERS:
d676f916b2 Jean*0032 C     == Routine arguments ==
89bfa1dc29 Jean*0033 C     myThid :: my Thread Id. number
d676f916b2 Jean*0034       INTEGER myThid
                0035 
                0036 #ifdef ALLOW_AIM
444c1ec05b Jean*0037 C     !LOCAL VARIABLES:
d676f916b2 Jean*0038 C     == Local variables ==
444c1ec05b Jean*0039 C     HSG     :: Cell face in vertical
                0040 C     pGround :: Lower boundary pressure
                0041 C     bi,bj   :: Tile indices
                0042 C     i, j, k :: Loop counters
d676f916b2 Jean*0043       _RL HSG(0:Nr)
e71a2c0f64 Jean*0044       _RL pGround, tmpPgrnd, tmpVar
444c1ec05b Jean*0045       INTEGER bi, bj
                0046       INTEGER i, j, k
d676f916b2 Jean*0047       INTEGER Katm
444c1ec05b Jean*0048 CEOP
                0049 
                0050 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0051 
                0052       _BEGIN_MASTER(myThid )
d676f916b2 Jean*0053 
65007c221b Jean*0054 C--  Set default value for atmos. physics parameters:
                0055       pGround = atm_Po
                0056       DO k=1,Nr
                0057        Katm = _KD2KA( k )
                0058        HSG(Katm) = rF(k)/pGround
d676f916b2 Jean*0059       ENDDO
65007c221b Jean*0060        k=Nr+1
                0061        Katm = _KD2KA( k )
                0062        HSG(Katm) = rF(k)/pGround
d676f916b2 Jean*0063 
da270080e0 Mart*0064       _END_MASTER( myThid )
d676f916b2 Jean*0065 
                0066 C--   set default value for all atmos. physics parameter:
444c1ec05b Jean*0067       CALL INPHYS( HSG, myThid )
d676f916b2 Jean*0068 
65007c221b Jean*0069 C--   Read AIM parameters (from file data.aimphys):
                0070       CALL AIM_READPARMS( myThid )
                0071 
d676f916b2 Jean*0072 C--   set energy fractions in LW bands as a function of temperature:
                0073 C     initialize common block RADFIX (originally called from FORDATE in SPEEDY)
444c1ec05b Jean*0074       _BEGIN_MASTER(myThid )
                0075        CALL RADSET( myThid )
da270080e0 Mart*0076       _END_MASTER( myThid )
d676f916b2 Jean*0077 
65007c221b Jean*0078 C--   Set truncSurfP : used to correct for truncation (because of hFacMin)
                0079 C      of surface reference pressure Ro_surf that affects Surf.Temp.
46ac67bdf3 Jean*0080       CALL INI_P_GROUND(1, topoZ, truncSurfP, myThid )
65007c221b Jean*0081       DO bj = myByLo(myThid), myByHi(myThid)
                0082        DO bi = myBxLo(myThid), myBxHi(myThid)
                0083         DO j=1,sNy
                0084          DO i=1,sNx
e71a2c0f64 Jean*0085           tmpPgrnd = truncSurfP(i,j,bi,bj)
                0086           tmpVar   = Ro_surf(i,j,bi,bj)
                0087           tmpPgrnd = MIN( tmpPgrnd, atm_Po )
                0088           truncSurfP(i,j,bi,bj) = ( tmpVar/tmpPgrnd )**atm_kappa
65007c221b Jean*0089          ENDDO
                0090         ENDDO
                0091         IF (aim_useMMsurfFc .AND. aim_surfPotTemp) THEN
                0092          DO j=1,sNy
                0093           DO i=1,sNx
e71a2c0f64 Jean*0094            tmpVar   = Ro_surf(i,j,bi,bj)
                0095            truncSurfP(i,j,bi,bj) = ( tmpVar/atm_Po )**atm_kappa
65007c221b Jean*0096           ENDDO
                0097          ENDDO
                0098         ENDIF
                0099        ENDDO
                0100       ENDDO
444c1ec05b Jean*0101 
4b996cbf32 Jean*0102 C--   Initialise Land Fraction (in AIM_FFIELDS.h):
d676f916b2 Jean*0103       DO bj = myByLo(myThid), myByHi(myThid)
                0104        DO bi = myBxLo(myThid), myBxHi(myThid)
4b996cbf32 Jean*0105         DO j=1-Oly,sNy+Oly
444c1ec05b Jean*0106          DO i=1-Olx,sNx+Olx
4b996cbf32 Jean*0107           aim_landFr   (i,j,bi,bj) = 0.
                0108          ENDDO
3a474aa258 Jean*0109         ENDDO
d676f916b2 Jean*0110        ENDDO
                0111       ENDDO
4b996cbf32 Jean*0112 
                0113       IF ( aim_LandFile .NE. ' '  ) THEN
444c1ec05b Jean*0114          _BARRIER
4b996cbf32 Jean*0115          CALL READ_REC_XY_RS(aim_LandFile,aim_landFr,1,nIter0,myThid)
89bfa1dc29 Jean*0116 C-    better to fill land fraction overlap (likely to be needed for sea-ice)
                0117          CALL EXCH_XY_RS( aim_landFr, myThid )
4b996cbf32 Jean*0118       ENDIF
d676f916b2 Jean*0119 
ad0ca66649 Ed H*0120 #ifdef ALLOW_MNC
                0121       IF (useMNC) THEN
                0122         CALL AIM_MNC_INIT( myThid )
                0123       ENDIF
                0124 #endif /*  ALLOW_MNC  */
                0125 
5cbcb662ee Andr*0126 #ifdef ALLOW_DIAGNOSTICS
444c1ec05b Jean*0127       IF ( useDiagnostics ) THEN
                0128         CALL AIM_DIAGNOSTICS_INIT( myThid )
                0129       ENDIF
5cbcb662ee Andr*0130 #endif
                0131 
444c1ec05b Jean*0132 C--   Everyone else must wait for the parameters to be set
                0133       _BARRIER
                0134 
d676f916b2 Jean*0135 #endif /* ALLOW_AIM */
                0136 
                0137       RETURN
                0138       END