/[MITgcm]/MITgcm/pkg/aim_v23/aim_do_physics.F
ViewVC logotype

Diff of /MITgcm/pkg/aim_v23/aim_do_physics.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.9 by jmc, Mon Feb 14 00:43:25 2005 UTC revision 1.17 by dfer, Mon Jun 15 13:40:03 2009 UTC
# Line 6  C $Name$ Line 6  C $Name$
6  CBOP  CBOP
7  C     !ROUTINE: AIM_DO_PHYSICS  C     !ROUTINE: AIM_DO_PHYSICS
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )        SUBROUTINE AIM_DO_PHYSICS( myTime, myIter, myThid )
10                                          
11  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
12  C     *==================================================================*  C     *==================================================================*
13  C     | S/R AIM_DO_PHYSICS  C     | S/R AIM_DO_PHYSICS
# Line 45  C-- Physics package Line 45  C-- Physics package
45    
46  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
47  C     == Routine arguments ==  C     == Routine arguments ==
48  C     bi,bj  - Tile index  C     myTime    :: Current time in simulation (s)
49  C     myTime - Current time of simulation ( s )  C     myIter    :: Current iteration number
50  C     myIter - Current iteration number in simulation  C     myThid    :: My Thread Id. number
51  C     myThid - Number of this instance of the routine        _RL     myTime
52        INTEGER bi, bj, myIter, myThid        INTEGER myIter
53        _RL myTime        INTEGER myThid
54  CEOP  CEOP
55    
56  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
57  C     == Local variables ==  C     == Local variables ==
58  C     I,J,K,I2      - Loop counters  C     bi,bj      :: Tile indices
59  C     tYear         - Fraction into year  C     i,j,k,I2   :: Loop counters
60  C     Katm          - Atmospheric K index  C     tYear      :: Fraction into year
61  C     prcAtm   :: total precip from the atmosphere [kg/m2/s]  C     aim_sWght0 :: weight for time interpolation of surface BC
62  C     evpAtm   :: evaporation to the atmosphere [kg/m2/s] (>0 if evaporate)  C     aim_sWght1 :: 0/1 = time period before/after the current time
63  C     flxSW    :: net Short-Wave heat flux into the ocean (+=down) [W/m2]  C     prcAtm     :: total precip from the atmosphere [kg/m2/s]
64        INTEGER I,J,K,I2        INTEGER bi,bj
65  c     INTEGER Katm        INTEGER i,j,k,I2
66        _RL     tYear, yearLength        _RL     tYear, yearLength
67          _RL     aim_sWght0, aim_sWght1
68        _RL prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
69        _RL evpAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
70        _RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  #ifdef ALLOW_AIM_CO2
71          CALL AIM_DO_CO2( myTime, myIter, myThid )
72    #endif
73    
74    C--   Start loops on tile indices
75          DO bj=myByLo(myThid),myByHi(myThid)
76           DO bi=myBxLo(myThid),myBxHi(myThid)
77    
78  C_jmc: Because AIM physics LSC is not applied in the stratosphere (top level),  C_jmc: Because AIM physics LSC is not applied in the stratosphere (top level),
79  C      ==> move water wapor from the stratos to the surface level.  C      ==> move water wapor from the stratos to the surface level.
# Line 81  C      ==> move water wapor from the str Line 88  C      ==> move water wapor from the str
88         ENDDO         ENDDO
89        ENDDO        ENDDO
90    
91    #ifdef ALLOW_THSICE
92          IF ( useThSIce ) THEN
93    C-    do sea-ice advection before setting any surface BC.
94            CALL THSICE_DO_ADVECT(
95         I                         bi, bj, myTime, myIter, myThid )
96          ENDIF
97    #endif /* ALLOW_THSICE */
98    
99  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
100    
101  C-    Physics package needs to know time of year as a fraction  C-    Physics package needs to know time of year as a fraction
102        yearLength = 86400.*360.        yearLength = 86400.*360.
103        tYear = mod(myTime/yearLength, 1. _d 0)        tYear = MOD(myTime/yearLength, 1. _d 0)
 c     tYear = myTime/(86400.*360.) -  
 c    &        FLOAT(INT(myTime/(86400.*360.)))  
104    
105  C--   Set surface Boundary Conditions for atmos. physics package:  C--   Set surface Boundary Conditions for atmos. physics package:
106  C     (Albedo, Soil moisture, Surf Temp, Land sea mask)  C     (Albedo, Soil moisture, Surf Temp, Land sea mask)
107  C     includes some parts of S/R FORDATE from F.Molteni SPEDDY code (ver23)  C     includes some parts of S/R FORDATE from F.Molteni SPEDDY code (ver23)
108        CALL AIM_SURF_BC( tYear, myTime, myIter, bi, bj, myThid )        CALL AIM_SURF_BC(
109         U                  tYear,
110         O                  aim_sWght0, aim_sWght1,
111         I                  bi, bj, myTime, myIter, myThid )
112    
113  C--   Set surface geopotential: (g * orographic height)  C--   Set surface geopotential: (g * orographic height)
114        DO J=1,sNy        DO j=1,sNy
115         DO I=1,sNx         DO i=1,sNx
116           I2 = I+(J-1)*sNx           I2 = i+(j-1)*sNx
117           PHI0(I2) = gravity*topoZ(i,j,bi,bj)           PHI0(I2) = gravity*topoZ(i,j,bi,bj)
118         ENDDO         ENDDO
119        ENDDO        ENDDO
# Line 114  c_FM  CALL SOL_OZ (SOLC,TYEAR) Line 130  c_FM  CALL SOL_OZ (SOLC,TYEAR)
130  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
131    
132  C-    Compute atmospheric-physics tendencies (call the main AIM S/R)  C-    Compute atmospheric-physics tendencies (call the main AIM S/R)
133        CALL PHY_DRIVER( tYear, myTime, myIter, bi, bj, myThid )        CALL PHY_DRIVER( tYear, useDiagnostics,
134         I                  bi, bj, myTime, myIter, myThid )
135    
136        CALL AIM_AIM2DYN( bi, bj, myTime, myIter, myThid )        CALL AIM_AIM2DYN( bi, bj, myTime, myIter, myThid )
137    
138  #ifdef ALLOW_LAND  #ifdef ALLOW_LAND
139        IF (useLand) THEN        IF (useLand) THEN
140  C-    prepare Surface flux over land for land package  C-    prepare Surface flux over land for land package
141          CALL AIM_AIM2LAND( aim_landFr, bi, bj,          CALL AIM_AIM2LAND( aim_landFr, bi, bj,
142       I                     myTime, myIter, myThid )       I                     myTime, myIter, myThid )
143    
144  C-    Step forward land model  C-    Step forward land model
145          CALL LAND_STEPFWD( aim_landFr, bi, bj,          CALL LAND_STEPFWD( aim_landFr, bi, bj,
146       I                     myTime, myIter, myThid )       I                     myTime, myIter, myThid )
147    
148  C-    Land diagnostics : write snap-shot & cumulate for TimeAve output  C-    Land diagnostics : write snap-shot & cumulate for TimeAve output
149        CALL LAND_DO_DIAGS(  aim_landFr, bi, bj,        CALL LAND_DO_DIAGS(  aim_landFr, bi, bj,
150       I                     myTime, myIter, myThid )       I                     myTime, myIter, myThid )
151    
152        ENDIF        ENDIF
153  #endif /* ALLOW_LAND */  #endif /* ALLOW_LAND */
154    
155  C-    surface fluxes over ocean (ice-free & ice covered)  C-    surface fluxes over ocean (ice-free & ice covered)
156  C       used for diagnostics, thsice package and coupler  C       used for diagnostics, thsice package and coupler
157          CALL AIM_AIM2SIOCE( aim_landFr, fmask1(1,3,myThid),          CALL AIM_AIM2SIOCE( aim_landFr, fmask1(1,3,myThid),
158       O                      prcAtm, evpAtm, flxSW,       O                      prcAtm,
159       I                      bi, bj, myTime, myIter, myThid )       I                      bi, bj, myTime, myIter, myThid )
160    
161  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
# Line 146  C       used for diagnostics, thsice pac Line 163  C       used for diagnostics, thsice pac
163    
164  C-    Step forward sea-ice model  C-    Step forward sea-ice model
165          CALL THSICE_STEP_FWD( bi, bj, 1, sNx, 1, sNy,          CALL THSICE_STEP_FWD( bi, bj, 1, sNx, 1, sNy,
166       I                        prcAtm,       I                        prcAtm,
      U                        evpAtm, flxSW,  
167       I                        myTime, myIter, myThid )       I                        myTime, myIter, myThid )
168    
169  C-    Slab Ocean : step forward ocean mixed-layer temp. & salinity  C-    Slab Ocean : step forward ocean mixed-layer temp. & salinity
170          CALL THSICE_SLAB_OCEAN(          CALL THSICE_SLAB_OCEAN(
171       O                         dTsurf(1,2,myThid),       I                      aim_sWght0, aim_sWght1,
172       I                         bi,bj, myThid )       O                      dTsurf(1,2,myThid),
173         I                      bi, bj, myTime, myIter, myThid )
174    
175          CALL THSICE_AVE( evpAtm, flxSW,          CALL THSICE_AVE(
176       I                   bi, bj, myTime, myIter, myThid )       I                   bi, bj, myTime, myIter, myThid )
177    
178        ENDIF        ENDIF
# Line 163  C-    Slab Ocean : step forward ocean mi Line 180  C-    Slab Ocean : step forward ocean mi
180    
181  #ifdef COMPONENT_MODULE  #ifdef COMPONENT_MODULE
182        IF ( useCoupler ) THEN        IF ( useCoupler ) THEN
183          CALL ATM_STORE_MY_DATA( bi, bj, myIter, myTime, myThid )          CALL ATM_STORE_MY_DATA( bi, bj, myTime, myIter, myThid )
184        ENDIF        ENDIF
185  #endif /* COMPONENT_MODULE */  #endif /* COMPONENT_MODULE */
186    
187  C-    AIM diagnostics : write snap-shot & cumulate for TimeAve output  C-    AIM diagnostics : write snap-shot & cumulate for TimeAve output
188        CALL AIM_DIAGNOSTICS( bi, bj, myTime, myIter, myThid )        CALL AIM_DIAGNOSTICS( bi, bj, myTime, myIter, myThid )
189    
190    C--   end bi,bj loops.
191           ENDDO
192          ENDDO
193  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
194    
195        RETURN        RETURN

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22