7 |
C !ROUTINE: AIM_INITIALISE |
C !ROUTINE: AIM_INITIALISE |
8 |
C !INTERFACE: |
C !INTERFACE: |
9 |
SUBROUTINE AIM_INITIALISE( myThid ) |
SUBROUTINE AIM_INITIALISE( myThid ) |
10 |
|
|
11 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
12 |
C *==================================================================* |
C *==================================================================* |
13 |
C | S/R AIM_INITIALISE |
C | S/R AIM_INITIALISE |
17 |
C | 2) read AIM parameters |
C | 2) read AIM parameters |
18 |
C *==================================================================* |
C *==================================================================* |
19 |
C \ev |
C \ev |
|
|
|
20 |
C !USES: |
C !USES: |
21 |
IMPLICIT NONE |
IMPLICIT NONE |
22 |
|
|
30 |
#include "AIM_FFIELDS.h" |
#include "AIM_FFIELDS.h" |
31 |
c #include "AIM_GRID.h" |
c #include "AIM_GRID.h" |
32 |
c #include "AIM_DIAGS.h" |
c #include "AIM_DIAGS.h" |
|
#ifdef ALLOW_MNC |
|
|
#include "MNC_PARAMS.h" |
|
|
#endif |
|
33 |
|
|
34 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
35 |
C == Routine arguments == |
C == Routine arguments == |
36 |
C myThid :: my Thread Id number |
C myThid :: my Thread Id. number |
37 |
INTEGER myThid |
INTEGER myThid |
38 |
|
|
39 |
#ifdef ALLOW_AIM |
#ifdef ALLOW_AIM |
44 |
C bi,bj :: Tile indices |
C bi,bj :: Tile indices |
45 |
C i, j, k :: Loop counters |
C i, j, k :: Loop counters |
46 |
_RL HSG(0:Nr) |
_RL HSG(0:Nr) |
47 |
_RL pGround, tmpPgrnd |
_RL pGround, tmpPgrnd, tmpVar |
48 |
INTEGER bi, bj |
INTEGER bi, bj |
49 |
INTEGER i, j, k |
INTEGER i, j, k |
50 |
INTEGER Katm |
INTEGER Katm |
54 |
|
|
55 |
_BEGIN_MASTER(myThid ) |
_BEGIN_MASTER(myThid ) |
56 |
|
|
|
C-- Set default value for AIM interface code (AIM_PARAMS.h): |
|
|
aim_useFMsurfBC = .TRUE. |
|
|
aim_useMMsurfFc = .FALSE. |
|
|
aim_surfPotTemp = .FALSE. |
|
|
aim_energPrecip = .FALSE. |
|
|
aim_splitSIOsFx = .FALSE. |
|
|
aim_clrSkyDiag = .FALSE. |
|
|
#ifdef ALLOW_MNC |
|
|
aim_timeave_mnc = timeave_mnc .AND. useMNC |
|
|
aim_snapshot_mnc = snapshot_mnc .AND. useMNC |
|
|
aim_pickup_write_mnc = pickup_write_mnc .AND. useMNC |
|
|
aim_pickup_read_mnc = pickup_read_mnc .AND. useMNC |
|
|
#else |
|
|
aim_timeave_mnc = .FALSE. |
|
|
aim_snapshot_mnc = .FALSE. |
|
|
aim_pickup_write_mnc = .FALSE. |
|
|
aim_pickup_read_mnc = .FALSE. |
|
|
#endif |
|
|
aim_MMsufx = '.bin' |
|
|
aim_MMsufxLength = 4 |
|
|
aim_LandFile = ' ' |
|
|
aim_albFile = ' ' |
|
|
aim_vegFile = ' ' |
|
|
aim_sstFile = ' ' |
|
|
aim_lstFile = ' ' |
|
|
aim_oiceFile = ' ' |
|
|
aim_snowFile = ' ' |
|
|
aim_swcFile = ' ' |
|
|
aim_dragStrato = 0. |
|
|
aim_taveFreq = taveFreq |
|
|
aim_diagFreq = dumpFreq |
|
|
aim_tendFreq = 0. |
|
|
|
|
57 |
C-- Set default value for atmos. physics parameters: |
C-- Set default value for atmos. physics parameters: |
58 |
pGround = atm_Po |
pGround = atm_Po |
59 |
DO k=1,Nr |
DO k=1,Nr |
85 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
86 |
DO j=1,sNy |
DO j=1,sNy |
87 |
DO i=1,sNx |
DO i=1,sNx |
88 |
tmpPgrnd = MIN(truncSurfP(i,j,bi,bj),atm_Po) |
tmpPgrnd = truncSurfP(i,j,bi,bj) |
89 |
truncSurfP(i,j,bi,bj)= |
tmpVar = Ro_surf(i,j,bi,bj) |
90 |
& ( Ro_surf(i,j,bi,bj)/tmpPgrnd )**atm_kappa |
tmpPgrnd = MIN( tmpPgrnd, atm_Po ) |
91 |
|
truncSurfP(i,j,bi,bj) = ( tmpVar/tmpPgrnd )**atm_kappa |
92 |
ENDDO |
ENDDO |
93 |
ENDDO |
ENDDO |
94 |
IF (aim_useMMsurfFc .AND. aim_surfPotTemp) THEN |
IF (aim_useMMsurfFc .AND. aim_surfPotTemp) THEN |
95 |
DO j=1,sNy |
DO j=1,sNy |
96 |
DO i=1,sNx |
DO i=1,sNx |
97 |
truncSurfP(i,j,bi,bj) = |
tmpVar = Ro_surf(i,j,bi,bj) |
98 |
& ( Ro_surf(i,j,bi,bj)/atm_Po )**atm_kappa |
truncSurfP(i,j,bi,bj) = ( tmpVar/atm_Po )**atm_kappa |
99 |
ENDDO |
ENDDO |
100 |
ENDDO |
ENDDO |
101 |
ENDIF |
ENDIF |
116 |
IF ( aim_LandFile .NE. ' ' ) THEN |
IF ( aim_LandFile .NE. ' ' ) THEN |
117 |
_BARRIER |
_BARRIER |
118 |
CALL READ_REC_XY_RS(aim_LandFile,aim_landFr,1,nIter0,myThid) |
CALL READ_REC_XY_RS(aim_LandFile,aim_landFr,1,nIter0,myThid) |
119 |
|
C- better to fill land fraction overlap (likely to be needed for sea-ice) |
120 |
|
CALL EXCH_XY_RS( aim_landFr, myThid ) |
121 |
ENDIF |
ENDIF |
122 |
|
|
123 |
#ifdef ALLOW_MNC |
#ifdef ALLOW_MNC |